
    ^f                        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dH ZdI Z G dJ dK          Z ede	e
          ZdL Z ej        e           dS )Ma  
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.AutoSchemaDEFAULT_THROTTLE_RATES)useranonNUM_PROXIES	PAGE_SIZESEARCH_PARAMsearchORDERING_PARAMorderingDEFAULT_VERSIONALLOWED_VERSIONS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_handlerNON_FIELD_ERRORS_KEYnon_field_errorsTEST_REQUEST_RENDERER_CLASSESz*rest_framework.renderers.MultiPartRendererTEST_REQUEST_DEFAULT_FORMAT	multipartURL_FORMAT_OVERRIDEformatFORMAT_SUFFIX_KWARGURL_FIELD_NAMEurlDATE_FORMATDATE_INPUT_FORMATSDATETIME_FORMATDATETIME_INPUT_FORMATSTi  zMore than {count} items...readdelete)retrievedestroy)TIME_FORMATTIME_INPUT_FORMATSUNICODE_JSONCOMPACT_JSONSTRICT_JSONCOERCE_DECIMAL_TO_STRINGUPLOADED_FILES_USE_URLHTML_SELECT_CUTOFFHTML_SELECT_CUTOFF_TEXTSCHEMA_COERCE_PATH_PKSCHEMA_COERCE_METHOD_NAMES)r   r   r	   r
   r   r   r   r   r   r   r   r#   r&   r   r    r!   r"   )PAGINATE_BYPAGINATE_BY_PARAMMAX_PAGINATE_BYc                     | dS t          | t                    rt          |           S t          | t          t          f          rfd| D             S | S )zm
    If the given setting is a string import notation,
    then perform the necessary import or imports.
    Nc                 0    g | ]}t          |          S  )import_from_string).0itemsetting_names     I/var/www/html/env/lib/python3.11/site-packages/rest_framework/settings.py
<listcomp>z"perform_import.<locals>.<listcomp>   s$    GGG4"466GGG    )
isinstancestrrG   listtuple)valrJ   s    `rK   perform_importrS      sh    
 {t	C		 H!#|444	C$	'	' HGGGG3GGGGJrM   c           
          	 t          |           S # t          $ r-}d| d|d|j        j        d|d	}t          |          d}~ww xY w)zA
    Attempt to import a class from a string representation.
    zCould not import 'z' for API setting 'z'. z: .N)r   ImportError	__class____name__)rR   rJ   emsgs       rK   rG   rG      sq    S!!!    GJssLLLZ[ZeZnZnZnpqpqpqr#s    
A(AAc                   B    e Zd ZdZddZed             Zd Zd Z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                     |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_settingsra   rc   s       rK   __init__zAPISettings.__init__   sL     	L"&"<"<]"K"KD ,H,> UUrM   c                 f    t          | d          st          t          di           | _        | j        S )Nr_   REST_FRAMEWORK)hasattrgetattrr   r_   )rf   s    rK   rg   zAPISettings.user_settings   s4    t-.. 	J")(4Db"I"ID""rM   c                    || j         vrt          d|z            	 | j        |         }n# t          $ r | j         |         }Y nw xY w|| j        v rt          ||          }| j                            |           t          | ||           |S )NzInvalid API setting: '%s')	ra   AttributeErrorrg   KeyErrorrc   rS   re   addsetattr)rf   attrrR   s      rK   __getattr__zAPISettings.__getattr__   s    t}$$ !<t!CDDD	&$T*CC 	& 	& 	&-%CCC	&
 4&&& d++C 	t$$$dC   
s   + AAc                 R    d}t           D ]}||v rt          d|d|d          |S )Nz9https://www.django-rest-framework.org/api-guide/settings/zThe 'z-' setting has been removed. Please refer to 'z' for available settings.)REMOVED_SETTINGSRuntimeError)rf   rg   SETTINGS_DOCsettings       rK   __check_user_settingsz!APISettings.__check_user_settings   si    R' 	P 	PG-''"lxxx  BN  BN  BN  $O  P  P  P (rM   c                     | j         D ]}t          | |           | j                                          t          | d          rt          | d           d S d S )Nr_   )re   delattrclearrk   )rf   rr   s     rK   reloadzAPISettings.reload   sp    & 	  	 DD$  """4)** 	,D*+++++	, 	,rM   )NNN)
rX   
__module____qualname____doc__rh   propertyrg   rs   r^   r}   rF   rM   rK   r\   r\      sz         # # # # # # X#
  (  , , , , ,rM   r\   c                  X    |d         }|dk    rt                                            d S d S )Nrx   rj   )api_settingsr}   )argskwargsrx   s      rK   reload_api_settingsr      s8    YG""" #"rM   )r   django.confr   django.test.signalsr   django.utils.module_loadingr   rest_frameworkr   r`   rb   ru   rS   rG   r\   r   r   connectrF   rM   rK   <module>r      s   ( !           / / / / / / 5 5 5 5 5 5 # # # # # #d/7!d    d %=;'d !-#d$ %d& ()_'d( F)d* +d0 1d2 r3d8 G9d>  ?dF 4GdL MdR HSdT jUdZ t[d d\ ]d^ Y_dd Fedf Tgdl >mdn  !Lodt Audv .wd| $4/&}dD ";EdJ 8KdL 8MdN eOdT 8UdV 8*WdZ x[d\ xj]d d` #*  $" ; "# #Ad d dP  ,   
    =, =, =, =, =, =, =, =,@ {4>::    + , , , , ,rM   