a
    Sic€  ã                /   @   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g d¢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	g d$¢Z
g d%¢Zd&d'„ Zd(d)„ ZG d*d+„ d+ƒZede	e
ƒZd,d-„ Ze e¡ dS ).a”  
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.BrowsableAPIRenderer)z!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)ÚretrieveZ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_OVERRIDEÚ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_NAMES)r   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u 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+   úS/var/www/html/django/DPS/env/lib/python3.9/site-packages/rest_framework/settings.pyÚ
<listcomp>¨   ó    z"perform_import.<locals>.<listcomp>)Ú
isinstanceÚstrr,   ÚlistÚtuple)Úvalr0   r+   r/   r1   Úperform_importž   s    

r9   c              
   C   sP   z
t | ƒW S  tyJ } z(d| ||jj|f }t|ƒ‚W Y d}~n
d}~0 0 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__)r8   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_settingsrC   rE   r+   r+   r1   Ú__init__Ç   s
    

zAPISettings.__init__c                 C   s   t | dƒsttdi ƒ| _| jS )NrA   ÚREST_FRAMEWORK)ÚhasattrÚgetattrr   rA   )rH   r+   r+   r1   rI   Î   s    
zAPISettings.user_settingsc                 C   sr   || j vrtd| ƒ‚z| j| }W n ty@   | j | }Y n0 || jv rVt||ƒ}| j |¡ t| ||ƒ |S )NzInvalid API setting: '%s')	rC   ÚAttributeErrorrI   ÚKeyErrorrE   r9   rG   ÚaddÚsetattr)rH   Úattrr8   r+   r+   r1   Ú__getattr__Ô   s    


zAPISettings.__getattr__c                 C   s*   d}t D ]}||v 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)rH   rI   ZSETTINGS_DOCÚsettingr+   r+   r1   Z__check_user_settingsè   s
    z!APISettings.__check_user_settingsc                 C   s8   | j D ]}t| |ƒ q| j  ¡  t| dƒr4t| dƒ d S )NrA   )rG   ÚdelattrÚclearrL   )rH   rR   r+   r+   r1   Úreloadï   s
    


zAPISettings.reload)NNN)
r<   Ú
__module__Ú__qualname__Ú__doc__rJ   ÚpropertyrI   rS   r@   rY   r+   r+   r+   r1   r?   ·   s   

r?   c                  O   s   |d }|dkrt  ¡  d S )NrV   rK   )Úapi_settingsrY   )ÚargsÚkwargsrV   r+   r+   r1   Úreload_api_settingsú   s    ra   )r\   Údjango.confr   Zdjango.test.signalsr   Údjango.utils.module_loadingr   Úrest_frameworkr   rB   rD   rT   r9   r,   r?   r^   ra   Úconnectr+   r+   r+   r1   Ú<module>   sŠ   þþÿþþþ h@