
O'^c           @  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 l	 m
 Z
 d d l m Z i+ d[ d
 6d\ d 6d] d 6d^ d 6d_ d 6d d 6d d 6dZ d 6d d 6d` d 6i dZ d 6dZ d 6d 6dZ d  6dZ d! 6d" d# 6d$ d% 6dZ d& 6dZ d' 6d( d) 6d* d+ 6dZ d, 6d- d. 6d/ d0 6d1 d2 6d3 d4 6da d6 6d7 d8 6d9 d: 6d9 d; 6d< d= 6e
 d> 6e
 f d? 6e
 d@ 6e
 f dA 6e
 dB 6e
 f dC 6e dD 6e dE 6e dF 6e dG 6dH dI 6dJ dK 6e dL 6i dM dN 6dO dP 6dQ 6Z db Z dc Z dU   Z dV   Z dW e f dX     YZ e dZ e e  a dY   Z e j e  dZ S(d   uj  
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.TemplateHTMLRenderer',
    )
}

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.
i(   t   unicode_literals(   t   settings(   t   setting_changed(   t   six(   t   ISO_8601(   t	   importlibu%   rest_framework.renderers.JSONRendereru-   rest_framework.renderers.BrowsableAPIRendereru   DEFAULT_RENDERER_CLASSESu!   rest_framework.parsers.JSONParseru!   rest_framework.parsers.FormParseru&   rest_framework.parsers.MultiPartParseru   DEFAULT_PARSER_CLASSESu3   rest_framework.authentication.SessionAuthenticationu1   rest_framework.authentication.BasicAuthenticationu   DEFAULT_AUTHENTICATION_CLASSESu#   rest_framework.permissions.AllowAnyu   DEFAULT_PERMISSION_CLASSESu   DEFAULT_THROTTLE_CLASSESu4   rest_framework.negotiation.DefaultContentNegotiationu!   DEFAULT_CONTENT_NEGOTIATION_CLASSu&   rest_framework.metadata.SimpleMetadatau   DEFAULT_METADATA_CLASSu   DEFAULT_VERSIONING_CLASSu.   rest_framework.pagination.PageNumberPaginationu   DEFAULT_PAGINATION_CLASSu   DEFAULT_FILTER_BACKENDSu   useru   anonu   DEFAULT_THROTTLE_RATESu   NUM_PROXIESu	   PAGE_SIZEu   searchu   SEARCH_PARAMu   orderingu   ORDERING_PARAMu   DEFAULT_VERSIONu   ALLOWED_VERSIONSu   versionu   VERSION_PARAMu(   django.contrib.auth.models.AnonymousUseru   UNAUTHENTICATED_USERu   UNAUTHENTICATED_TOKENu"   rest_framework.views.get_view_nameu   VIEW_NAME_FUNCTIONu)   rest_framework.views.get_view_descriptionu   VIEW_DESCRIPTION_FUNCTIONu&   rest_framework.views.exception_handleru   EXCEPTION_HANDLERu   non_field_errorsu   NON_FIELD_ERRORS_KEYu*   rest_framework.renderers.MultiPartRendereru   TEST_REQUEST_RENDERER_CLASSESu	   multipartu   TEST_REQUEST_DEFAULT_FORMATu   formatu   URL_FORMAT_OVERRIDEu   FORMAT_SUFFIX_KWARGu   urlu   URL_FIELD_NAMEu   DATE_FORMATu   DATE_INPUT_FORMATSu   DATETIME_FORMATu   DATETIME_INPUT_FORMATSu   TIME_FORMATu   TIME_INPUT_FORMATSu   UNICODE_JSONu   COMPACT_JSONu   COERCE_DECIMAL_TO_STRINGu   UPLOADED_FILES_USE_URLi  u   HTML_SELECT_CUTOFFu   More than {count} items...u   HTML_SELECT_CUTOFF_TEXTu   SCHEMA_COERCE_PATH_PKu   readu   retrieveu   deleteu   destroyu   SCHEMA_COERCE_METHOD_NAMESu   PAGINATE_BYu   PAGINATE_BY_PARAMu   MAX_PAGINATE_BYc         C  sh   |  d k r d St |  t j  r/ t |  |  St |  t t f  rd g  |  D] } t | |  ^ qK S|  S(   um   
    If the given setting is a string import notation,
    then perform the necessary import or imports.
    N(   t   Nonet
   isinstanceR   t   string_typest   import_from_stringt   listt   tuple(   t   valt   setting_namet   item(    (    s9   /tmp/pip-unpacked-wheel-62FVgP/rest_framework/settings.pyt   perform_import   s     c         C  s   yM |  j  d  } d j | d   | d } } t j |  } t | |  SWnA t t f k
 r } d |  | | j j | f } t |   n Xd S(   uA   
    Attempt to import a class from a string representation.
    u   .iu3   Could not import '%s' for API setting '%s'. %s: %s.N(	   t   splitt   joinR   t   import_modulet   getattrt   ImportErrort   AttributeErrort	   __class__t   __name__(   R   R   t   partst   module_patht
   class_namet   modulet   et   msg(    (    s9   /tmp/pip-unpacked-wheel-62FVgP/rest_framework/settings.pyR	      s    t   APISettingsc           B  sA   e  Z d  Z d d d d  Z e d    Z d   Z d   Z RS(   uV  
    A settings object, that allows API 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.
    c         C  s=   | r |  j  |  |  _ n  | p$ t |  _ | p3 t |  _ d  S(   N(   t!   _APISettings__check_user_settingst   _user_settingst   DEFAULTSt   defaultst   IMPORT_STRINGSt   import_strings(   t   selft   user_settingsR"   R$   (    (    s9   /tmp/pip-unpacked-wheel-62FVgP/rest_framework/settings.pyt   __init__   s    c         C  s.   t  |  d  s' t t d i   |  _ n  |  j S(   Nu   _user_settingsu   REST_FRAMEWORK(   t   hasattrR   R   R    (   R%   (    (    s9   /tmp/pip-unpacked-wheel-62FVgP/rest_framework/settings.pyR&      s    c         C  s   | |  j  k r" t d |   n  y |  j | } Wn t k
 rS |  j  | } n X| |  j k ru t | |  } n  t |  | |  | S(   Nu   Invalid API setting: '%s'(   R"   R   R&   t   KeyErrorR$   R   t   setattr(   R%   t   attrR   (    (    s9   /tmp/pip-unpacked-wheel-62FVgP/rest_framework/settings.pyt   __getattr__   s    c         C  s@   d } x3 t  D]+ } | | k r t d | | f   q q W| S(   Nu8   http://www.django-rest-framework.org/api-guide/settings/uO   The '%s' setting has been removed. Please refer to '%s' for available settings.(   t   REMOVED_SETTINGSt   RuntimeError(   R%   R&   t   SETTINGS_DOCt   setting(    (    s9   /tmp/pip-unpacked-wheel-62FVgP/rest_framework/settings.pyt   __check_user_settings   s
    N(	   R   t
   __module__t   __doc__R   R'   t   propertyR&   R,   R   (    (    (    s9   /tmp/pip-unpacked-wheel-62FVgP/rest_framework/settings.pyR      s
   
	c          O  s:   | d | d } } | d k r6 t  | t t  a n  d  S(   Nu   settingu   valueu   REST_FRAMEWORK(   R   R!   R#   t   api_settings(   t   argst   kwargsR0   t   value(    (    s9   /tmp/pip-unpacked-wheel-62FVgP/rest_framework/settings.pyt   reload_api_settings   s    N(   u%   rest_framework.renderers.JSONRendereru-   rest_framework.renderers.BrowsableAPIRenderer(   u!   rest_framework.parsers.JSONParseru!   rest_framework.parsers.FormParseru&   rest_framework.parsers.MultiPartParser(   u3   rest_framework.authentication.SessionAuthenticationu1   rest_framework.authentication.BasicAuthentication(   u#   rest_framework.permissions.AllowAny(    (    (   u*   rest_framework.renderers.MultiPartRendereru%   rest_framework.renderers.JSONRenderer(   u   DEFAULT_RENDERER_CLASSESu   DEFAULT_PARSER_CLASSESu   DEFAULT_AUTHENTICATION_CLASSESu   DEFAULT_PERMISSION_CLASSESu   DEFAULT_THROTTLE_CLASSESu!   DEFAULT_CONTENT_NEGOTIATION_CLASSu   DEFAULT_METADATA_CLASSu   DEFAULT_VERSIONING_CLASSu   DEFAULT_PAGINATION_CLASSu   DEFAULT_FILTER_BACKENDSu   EXCEPTION_HANDLERu   TEST_REQUEST_RENDERER_CLASSESu   UNAUTHENTICATED_USERu   UNAUTHENTICATED_TOKENu   VIEW_NAME_FUNCTIONu   VIEW_DESCRIPTION_FUNCTION(   u   PAGINATE_BYu   PAGINATE_BY_PARAMu   MAX_PAGINATE_BY(   R3   t
   __future__R    t   django.confR   t   django.test.signalsR   t   django.utilsR   t   rest_frameworkR   t   rest_framework.compatR   R   t   TrueR!   R#   R-   R   R	   t   objectR   R5   R9   t   connect(    (    (    s9   /tmp/pip-unpacked-wheel-62FVgP/rest_framework/settings.pyt   <module>   s        


               		2	