ó
pÁěVc           @  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' dN d
 6dO d 6dP d 6dQ d 6dR d 6d d 6d d 6dM d 6d d 6dS d 6i dM d 6dM d 6d 6dM d  6dM d! 6d" d# 6d$ d% 6dM d& 6dM d' 6d( d) 6d* d+ 6dM d, 6d- d. 6d/ d0 6d1 d2 6d3 d4 6dT 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 6Z dU Z dH   Z dI   Z dJ e f dK     YZ e dM e e  a dL   Z e j e  dM S(V   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_URLc         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(    (    sq   /opt/seafile/seafile-server-5.1.3/seahub/thirdpart/djangorestframework-3.3.2-py2.7.egg/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   .i˙˙˙˙u3   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(    (    sq   /opt/seafile/seafile-server-5.1.3/seahub/thirdpart/djangorestframework-3.3.2-py2.7.egg/rest_framework/settings.pyR	      s    t   APISettingsc           B  s8   e  Z d  Z d d d d  Z e 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  s4   | r | |  _  n  | p t |  _ | p* t |  _ d  S(   N(   t   _user_settingst   DEFAULTSt   defaultst   IMPORT_STRINGSt   import_strings(   t   selft   user_settingsR!   R#   (    (    sq   /opt/seafile/seafile-server-5.1.3/seahub/thirdpart/djangorestframework-3.3.2-py2.7.egg/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$   (    (    sq   /opt/seafile/seafile-server-5.1.3/seahub/thirdpart/djangorestframework-3.3.2-py2.7.egg/rest_framework/settings.pyR%   ¸   s    c         C  s   | |  j  j   k r( t d |   n  y |  j | } Wn t k
 rY |  j  | } n X| |  j k r{ t | |  } n  t |  | |  | S(   Nu   Invalid API setting: '%s'(   R!   t   keysR   R%   t   KeyErrorR#   R   t   setattr(   R$   t   attrR   (    (    sq   /opt/seafile/seafile-server-5.1.3/seahub/thirdpart/djangorestframework-3.3.2-py2.7.egg/rest_framework/settings.pyt   __getattr__ž   s    N(   R   t
   __module__t   __doc__R   R&   t   propertyR%   R,   (    (    (    sq   /opt/seafile/seafile-server-5.1.3/seahub/thirdpart/djangorestframework-3.3.2-py2.7.egg/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   kwargst   settingt   value(    (    sq   /opt/seafile/seafile-server-5.1.3/seahub/thirdpart/djangorestframework-3.3.2-py2.7.egg/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(   R.   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	   t   objectR   R0   R5   t   connect(    (    (    sq   /opt/seafile/seafile-server-5.1.3/seahub/thirdpart/djangorestframework-3.3.2-py2.7.egg/rest_framework/settings.pyt   <module>   s        



               		+	