U
    s=i  ã                /   @   s*  d Z ddlmZ ddlmZ ddlmZ ddlmZ ddgdd	d
gddgdgg ddddg ddddœdddddddddddddddgddddeegeegeegdddddd d!dd"d#d$œd%œ-Z	d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6gZ
d7d8d9gZd:d;„ Zd<d=„ ZG d>d?„ d?ƒZede	e
ƒZd@dA„ Ze e¡ dS )Ba”  
Settings for REST framework are all namespaced in the REST_FRAMEWORK setting.
For example your project's `settings.py` file might look like this:

REST_FRAMEWORK = {
    'DEFAULT_RENDERER_CLASSES': [
        'rest_framework.renderers.JSONRenderer',
        'rest_framework.renderers.TemplateHTMLRenderer',
    ],
    'DEFAULT_PARSER_CLASSES': [
        'rest_framework.parsers.JSONParser',
        'rest_framework.parsers.FormParser',
        'rest_framework.parsers.MultiPartParser',
    ],
}

This module provides the `api_setting` object, that is used to access
REST framework settings, checking for user settings first, then falling
back to the defaults.
é    )Úsettings)Úsetting_changed)Úimport_string)ÚISO_8601z%rest_framework.renderers.JSONRendererz-rest_framework.renderers.BrowsableAPIRendererz!rest_framework.parsers.JSONParserz!rest_framework.parsers.FormParserz&rest_framework.parsers.MultiPartParserz3rest_framework.authentication.SessionAuthenticationz1rest_framework.authentication.BasicAuthenticationz#rest_framework.permissions.AllowAnyz4rest_framework.negotiation.DefaultContentNegotiationz&rest_framework.metadata.SimpleMetadataNz)rest_framework.schemas.openapi.AutoSchema)ÚuserZanonÚsearchÚorderingÚversionz(django.contrib.auth.models.AnonymousUserz"rest_framework.views.get_view_namez)rest_framework.views.get_view_descriptionz&rest_framework.views.exception_handlerÚnon_field_errorsz*rest_framework.renderers.MultiPartRendererÚ	multipartÚformatÚurlTiè  zMore than {count} items...ÚreadÚdelete)ÚretrieveÚdestroy)-ÚDEFAULT_RENDERER_CLASSESÚDEFAULT_PARSER_CLASSESÚDEFAULT_AUTHENTICATION_CLASSESÚDEFAULT_PERMISSION_CLASSESÚDEFAULT_THROTTLE_CLASSESÚ!DEFAULT_CONTENT_NEGOTIATION_CLASSÚDEFAULT_METADATA_CLASSÚDEFAULT_VERSIONING_CLASSÚDEFAULT_PAGINATION_CLASSÚDEFAULT_FILTER_BACKENDSÚDEFAULT_SCHEMA_CLASSZDEFAULT_THROTTLE_RATESZNUM_PROXIESÚ	PAGE_SIZEZSEARCH_PARAMZORDERING_PARAMÚDEFAULT_VERSIONZALLOWED_VERSIONSZVERSION_PARAMÚUNAUTHENTICATED_USERÚUNAUTHENTICATED_TOKENÚVIEW_NAME_FUNCTIONÚVIEW_DESCRIPTION_FUNCTIONÚEXCEPTION_HANDLERZNON_FIELD_ERRORS_KEYÚTEST_REQUEST_RENDERER_CLASSESZTEST_REQUEST_DEFAULT_FORMATZURL_FORMAT_OVERRIDEZFORMAT_SUFFIX_KWARGZURL_FIELD_NAMEÚDATE_FORMATÚDATE_INPUT_FORMATSÚDATETIME_FORMATÚDATETIME_INPUT_FORMATSÚTIME_FORMATÚTIME_INPUT_FORMATSZUNICODE_JSONZCOMPACT_JSONZSTRICT_JSONZCOERCE_DECIMAL_TO_STRINGZUPLOADED_FILES_USE_URLZHTML_SELECT_CUTOFFZHTML_SELECT_CUTOFF_TEXTZSCHEMA_COERCE_PATH_PKZSCHEMA_COERCE_METHOD_NAMESr   r   r   r   r   r   r   r   r   r   r   r#   r$   r   r    r!   r"   ZPAGINATE_BYZPAGINATE_BY_PARAMZMAX_PAGINATE_BYc                    sD   | dkrdS t | tƒr t| ˆ ƒS t | ttfƒr@‡ fdd„| D ƒS | S )zm
    If the given setting is a string import notation,
    then perform the necessary import or imports.
    Nc                    s   g | ]}t |ˆ ƒ‘qS © )Úimport_from_string)Ú.0Úitem©Úsetting_namer+   úW/var/www/html/mysite/school/venv/lib/python3.8/site-packages/rest_framework/settings.pyÚ
<listcomp>ª   s     z"perform_import.<locals>.<listcomp>)Ú
isinstanceÚstrr,   ÚlistÚtuple)Úvalr0   r+   r/   r1   Úperform_import    s    

r8   c              
   C   sN   z
t | ƒW S  tk
rH } z d| ||jj|f }t|ƒ‚W 5 d}~X Y nX dS )zA
    Attempt to import a class from a string representation.
    z3Could not import '%s' for API setting '%s'. %s: %s.N)r   ÚImportErrorÚ	__class__Ú__name__)r7   r0   ÚeÚmsgr+   r+   r1   r,   ®   s
    
r,   c                   @   s>   e Zd ZdZddd„Zedd„ ƒZdd„ Zd	d
„ Zdd„ Z	dS )ÚAPISettingsaV  
    A settings object that allows REST Framework settings to be accessed as
    properties. For example:

        from rest_framework.settings import api_settings
        print(api_settings.DEFAULT_RENDERER_CLASSES)

    Any setting with string import paths will be automatically resolved
    and return the class, rather than the string literal.

    Note:
    This is an internal class that is only compatible with settings namespaced
    under the REST_FRAMEWORK name. It is not intended to be used by 3rd-party
    apps, and test helpers like `override_settings` may not work as expected.
    Nc                 C   s0   |r|   |¡| _|pt| _|p t| _tƒ | _d S )N)Ú!_APISettings__check_user_settingsÚ_user_settingsÚDEFAULTSÚdefaultsÚIMPORT_STRINGSÚimport_stringsÚsetÚ_cached_attrs)ÚselfÚuser_settingsrB   rD   r+   r+   r1   Ú__init__É   s
    

zAPISettings.__init__c                 C   s   t | dƒsttdi ƒ| _| jS )Nr@   ÚREST_FRAMEWORK)ÚhasattrÚgetattrr   r@   )rG   r+   r+   r1   rH   Ð   s    
zAPISettings.user_settingsc                 C   st   || j krtd| ƒ‚z| j| }W n tk
rB   | j | }Y nX || jkrXt||ƒ}| j |¡ t| ||ƒ |S )NzInvalid API setting: '%s')	rB   ÚAttributeErrorrH   ÚKeyErrorrD   r8   rF   ÚaddÚsetattr)rG   Úattrr7   r+   r+   r1   Ú__getattr__Ö   s    


zAPISettings.__getattr__c                 C   s*   d}t D ]}||krtd||f ƒ‚q|S )Nz9https://www.django-rest-framework.org/api-guide/settings/zOThe '%s' setting has been removed. Please refer to '%s' for available settings.)ÚREMOVED_SETTINGSÚRuntimeError)rG   rH   ÚSETTINGS_DOCÚsettingr+   r+   r1   Ú__check_user_settingsê   s
    z!APISettings.__check_user_settingsc                 C   s8   | j D ]}t| |ƒ q| j  ¡  t| dƒr4t| dƒ d S )Nr@   )rF   ÚdelattrÚclearrK   )rG   rQ   r+   r+   r1   Úreloadñ   s
    


zAPISettings.reload)NNN)
r;   Ú
__module__Ú__qualname__Ú__doc__rI   ÚpropertyrH   rR   r?   rZ   r+   r+   r+   r1   r>   ¹   s   

r>   c                  O   s   |d }|dkrt  ¡  d S )NrV   rJ   )Úapi_settingsrZ   )ÚargsÚkwargsrV   r+   r+   r1   Úreload_api_settingsü   s    rb   )r]   Údjango.confr   Zdjango.core.signalsr   Údjango.utils.module_loadingr   Úrest_frameworkr   rA   rC   rS   r8   r,   r>   r_   rb   Úconnectr+   r+   r+   r1   Ú<module>   s¸   þýþÿþþþ iï  ÿ@