o
    c©Zh€  ã                   @   s˜  d Z ddlmZ ddlmZ ddlmZ ddlmZ i dddg“d	g d
¢“dddg“ddg“dg “dd“dd“dd“dd“dg “dd“ddddœ“dd“dd“dd “d!d"“d#d“i d$d“d%d&“d'd(“d)d“d*d+“d,d-“d.d/“d0d1“d2d3dg“d4d5“d6d7“d8d7“d9d:“d;e“d<eg“d=e“d>eg“¥eegd?d?d?d?d?d@dAd?dBdCdDœdEœ¥Z	g dF¢Z
g dG¢ZdHdI„ ZdJdK„ ZG dLdM„ dMƒZede	e
ƒZdNdO„ Ze e¡ dS )Pa”  
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_8601ÚDEFAULT_RENDERER_CLASSESz%rest_framework.renderers.JSONRendererz-rest_framework.renderers.BrowsableAPIRendererÚDEFAULT_PARSER_CLASSES)z!rest_framework.parsers.JSONParserz!rest_framework.parsers.FormParserz&rest_framework.parsers.MultiPartParserÚDEFAULT_AUTHENTICATION_CLASSESz3rest_framework.authentication.SessionAuthenticationz1rest_framework.authentication.BasicAuthenticationÚDEFAULT_PERMISSION_CLASSESz#rest_framework.permissions.AllowAnyÚDEFAULT_THROTTLE_CLASSESÚ!DEFAULT_CONTENT_NEGOTIATION_CLASSz4rest_framework.negotiation.DefaultContentNegotiationÚDEFAULT_METADATA_CLASSz&rest_framework.metadata.SimpleMetadataÚDEFAULT_VERSIONING_CLASSNÚDEFAULT_PAGINATION_CLASSÚDEFAULT_FILTER_BACKENDSÚDEFAULT_SCHEMA_CLASSz)rest_framework.schemas.openapi.AutoSchemaZDEFAULT_THROTTLE_RATES)ÚuserZanonZNUM_PROXIESZ	PAGE_SIZEZSEARCH_PARAMÚsearchZORDERING_PARAMZorderingÚDEFAULT_VERSIONZALLOWED_VERSIONSZVERSION_PARAMÚversionÚUNAUTHENTICATED_USERz(django.contrib.auth.models.AnonymousUserÚUNAUTHENTICATED_TOKENÚVIEW_NAME_FUNCTIONz"rest_framework.views.get_view_nameÚVIEW_DESCRIPTION_FUNCTIONz)rest_framework.views.get_view_descriptionÚEXCEPTION_HANDLERz&rest_framework.views.exception_handlerZNON_FIELD_ERRORS_KEYZnon_field_errorsÚTEST_REQUEST_RENDERER_CLASSESz*rest_framework.renderers.MultiPartRendererZTEST_REQUEST_DEFAULT_FORMATÚ	multipartZURL_FORMAT_OVERRIDEÚformatZFORMAT_SUFFIX_KWARGZURL_FIELD_NAMEÚurlZDATE_FORMATZDATE_INPUT_FORMATSZDATETIME_FORMATZDATETIME_INPUT_FORMATSTiè  zMore than {count} items...ÚreadÚdelete)ÚretrieveÚdestroy)ZTIME_FORMATZ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"   úN/var/www/html/lang_env/lib/python3.10/site-packages/rest_framework/settings.pyÚ
<listcomp>¨   s    z"perform_import.<locals>.<listcomp>)Ú
isinstanceÚstrr#   ÚlistÚtuple)Úvalr'   r"   r&   r(   Úperform_importž   s   

r/   c              
   C   s@   zt | ƒW S  ty } zd| ||jj|f }t|ƒ‚d}~ww )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__)r.   r'   ÚeÚmsgr"   r"   r(   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_settingsr9   r;   r"   r"   r(   Ú__init__Ç   s
   

zAPISettings.__init__c                 C   s   t | dƒsttdi ƒ| _| jS )Nr7   ÚREST_FRAMEWORK)ÚhasattrÚgetattrr   r7   )r>   r"   r"   r(   r?   Î   s   
zAPISettings.user_settingsc                 C   sr   || j vrtd| ƒ‚z| j| }W n ty    | j | }Y nw || jv r+t||ƒ}| j |¡ t| ||ƒ |S )NzInvalid API setting: '%s')	r9   ÚAttributeErrorr?   ÚKeyErrorr;   r/   r=   ÚaddÚsetattr)r>   Úattrr.   r"   r"   r(   Ú__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)r>   r?   ZSETTINGS_DOCÚsettingr"   r"   r(   Z__check_user_settingsè   s   ÿz!APISettings.__check_user_settingsc                 C   s<   | j D ]}t| |ƒ q| j  ¡  t| dƒrt| dƒ d S d S )Nr7   )r=   ÚdelattrÚclearrB   )r>   rH   r"   r"   r(   Úreloadï   s   


ÿzAPISettings.reload)NNN)
r2   Ú
__module__Ú__qualname__Ú__doc__r@   Úpropertyr?   rI   r6   rO   r"   r"   r"   r(   r5   ·   s    

r5   c                  O   s    |d }|dkrt  ¡  d S d S )NrL   rA   )Úapi_settingsrO   )ÚargsÚkwargsrL   r"   r"   r(   Úreload_api_settingsú   s   ÿrW   )rR   Zdjango.confr   Zdjango.test.signalsr   Zdjango.utils.module_loadingr   Zrest_frameworkr   r8   r:   rJ   r/   r#   r5   rT   rW   Úconnectr"   r"   r"   r(   Ú<module>   sÜ    þþúþõÿñîíìëèçäþá#Ý&Ú)×*Ö-Ó.Ò/Ñ2Î3Í6Ê7É:Æ;Å>þÂB¾E»FºG¹J¶KµM³N²Pþ h@