
    Nwg                        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       y)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                     | yt        | t              rt        | |      S t        | t        t        f      r| D cg c]  }t        ||       c}S | S c c}w )zm
    If the given setting is a string import notation,
    then perform the necessary import or imports.
    N)
isinstancestrimport_from_stringlisttuple)valsetting_nameitems      N/var/www/horilla/myenv/lib/python3.12/site-packages/rest_framework/settings.pyperform_importrN      sU    
 {	C	!#|44	C$	'CFG4"46GGJ Hs   Ac           
          	 t        |       S # t        $ r3}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__)rJ   rK   emsgs       rM   rG   rG      sI    S!! GJLZ[ZeZeZnZnpqr#s   
 	A	.AA	c                   :    e Zd ZdZddZed        Zd Zd Zd Z	y)	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| j                  |      | _        |xs t        | _        |xs t        | _        t               | _        y )N)!_APISettings__check_user_settings_user_settingsDEFAULTSdefaultsIMPORT_STRINGSimport_stringsset_cached_attrs)selfuser_settingsr\   r^   s       rM   __init__zAPISettings.__init__   s;    "&"<"<]"KD ,H,> U    c                 ^    t        | d      st        t        di       | _        | j                  S )NrZ   REST_FRAMEWORK)hasattrgetattrr   rZ   )ra   s    rM   rb   zAPISettings.user_settings   s+    t-.")(4Db"ID"""rd   c                    || j                   vrt        d|z        	 | j                  |   }|| j                  v rt        ||      }| j                  j                  |       t        | ||       |S # t        $ r | j                   |   }Y ^w xY w)NzInvalid API setting: '%s')	r\   AttributeErrorrb   KeyErrorr^   rN   r`   addsetattr)ra   attrrJ   s      rM   __getattr__zAPISettings.__getattr__   s    t}}$ !<t!CDD	&$$T*C 4&&& d+C 	t$dC 
  	&--%C	&s   A1 1BBc                 L    d}t         D ]  }||v s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)ra   rb   SETTINGS_DOCsettings       rM   __check_user_settingsz!APISettings.__check_user_settings   sG    R' 	PG-'"x  BN  $O  P  P	P rd   c                     | j                   D ]  }t        | |        | j                   j                          t        | d      rt        | d       y y )NrZ   )r`   delattrclearrg   )ra   rn   s     rM   reloadzAPISettings.reload   sN    && 	 DD$	   "4)*D*+ +rd   )NNN)
rS   
__module____qualname____doc__rc   propertyrb   ro   rY   ry    rd   rM   rW   rW      s/    # # #
(,rd   rW   c                  B    |d   }|dk(  rt         j                          y y )Nrt   rf   )api_settingsry   )argskwargsrt   s      rM   reload_api_settingsr      s&    YG"" #rd   )r|   django.confr   django.core.signalsr   django.utils.module_loadingr   rest_frameworkr   r[   r]   rq   rN   rG   rW   r   r   connectr~   rd   rM   <module>r      s  ( ! 0 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^ 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` #*  $" ; "#AdP, 
=, =,@ 4>:   + ,rd   