
    h(                         d Z ddlZddlZddlZddlZddlZddlmZ ddlZddl	m
Z
 ddlmZ ddlmZ ddlmZmZ dZd	Zd
Z G d de      Z G d de      Z G d d      Z G d d      Z e       Zy)z
Settings and configuration for Django.

Read values from the module specified by the DJANGO_SETTINGS_MODULE environment
variable, and then from django.conf.global_settings; see the global_settings.py
for a list of all possible variables.
    N)Path)global_settings)ImproperlyConfigured)RemovedInDjango40Warning)
LazyObjectemptyDJANGO_SETTINGS_MODULEzZThe PASSWORD_RESET_TIMEOUT_DAYS setting is deprecated. Use PASSWORD_RESET_TIMEOUT instead.zThe DEFAULT_HASHING_ALGORITHM transitional setting is deprecated. Support for it and tokens, cookies, sessions, and signatures that use SHA-1 hashing algorithm will be removed in Django 4.0.c                       e Zd ZdZd Zd Zy)SettingsReferencez
    String subclass which references a current settings value. It's treated as
    the value in memory but serializes to a settings.NAME attribute reference.
    c                 .    t         j                  | |      S N)str__new__selfvaluesetting_names      W/var/www/html/ranktracker/api/venv/lib/python3.12/site-packages/django/conf/__init__.pyr   zSettingsReference.__new__)   s    {{4''    c                     || _         y r   )r   r   s      r   __init__zSettingsReference.__init__,   s
    (r   N)__name__
__module____qualname____doc__r   r    r   r   r   r   $   s    ()r   r   c                        e Zd ZdZddZd Zd Z fdZ fdZe	fdZ
ed        Zed	        Zed
        Zed        Zed        Z xZS )LazySettingsz
    A lazy proxy for either global Django settings or a custom settings object.
    The user can manually configure settings prior to using them. Otherwise,
    Django uses the settings module pointed to by DJANGO_SETTINGS_MODULE.
    c                     t         j                  j                  t              }|s|rd|z  nd}t	        d|dt        d      t        |      | _        y)z
        Load the settings module pointed to by the environment variable. This
        is used the first time settings are needed, if the user hasn't
        configured settings manually.
        z
setting %ssettingsz
Requested zS, but settings are not configured. You must either define the environment variable z8 or call settings.configure() before accessing settings.N)osenvirongetENVIRONMENT_VARIABLEr   Settings_wrapped)r   namesettings_moduledescs       r   _setupzLazySettings._setup6   sP     **..)=>,0L4'jD& -/0 0 !1r   c                 ^    | j                   t        u rydd| j                   j                  iz  S )Nz<LazySettings [Unevaluated]>z$<LazySettings "%(settings_module)s">r(   )r&   r   SETTINGS_MODULEr   s    r   __repr__zLazySettings.__repr__G   s2    ==E!15t}}<<9
 
 	
r   c                     | j                   t        u r| j                  |       t        | j                   |      }|| j                  |<   |S )z<Return the value of a setting and cache it in self.__dict__.)r&   r   r*   getattr__dict__)r   r'   vals      r   __getattr__zLazySettings.__getattr__O   s=    ==E!KKdmmT*!d
r   c                     |dk(  r| j                   j                          n| j                   j                  |d       t        |   ||       y)z
        Set the value of setting. Clear all cached values if _wrapped changes
        (@override_settings does this) or clear single values when set.
        r&   N)r1   clearpopsuper__setattr__r   r'   r   	__class__s      r   r8   zLazySettings.__setattr__W   s@    
 :MM!MMdD)D%(r   c                 \    t         |   |       | j                  j                  |d       y)z3Delete a setting and clear it from cache if needed.N)r7   __delattr__r1   r6   r   r'   r:   s     r   r<   zLazySettings.__delattr__b   s$    D!$%r   c                     | j                   t        urt        d      t        |      }|j	                         D ]0  \  }}|j                         st        d|z        t        |||       2 || _         y)z
        Called to manually configure the settings. The 'default_settings'
        parameter sets where to retrieve any unspecified values from (its
        argument must support attribute access (__getattr__)).
        zSettings already configured.zSetting %r must be uppercase.N)r&   r   RuntimeErrorUserSettingsHolderitemsisupper	TypeErrorsetattr)r   default_settingsoptionsholderr'   r   s         r   	configurezLazySettings.configureg   so     ==%=>>#$45"==? 	)KD%<<> ?$ FGGFD%(	) r   c                 J    | j                  d      r| S ddlm}  |       | S )z
        Add SCRIPT_NAME prefix to relative paths.

        Useful when the app is being served at a subpath and manually prefixing
        subpath to STATIC_URL and MEDIA_URL in settings is inconvenient.
        )zhttp://zhttps:///r   )get_script_prefix)
startswithdjango.urlsrK   )r   rK   s     r   _add_script_prefixzLazySettings._add_script_prefixv   s)     89L1*,e44r   c                 &    | j                   t        uS )z9Return True if the settings have already been configured.)r&   r   r-   s    r   
configuredzLazySettings.configured   s     }}E))r   c                    t        j                         }|d   \  }}}}|j                  t        j                  j                  t        j                              s t        j                  t        t        d       | j                  d      S )N   )
stacklevelPASSWORD_RESET_TIMEOUT_DAYS)	tracebackextract_stackrL   r!   pathdirnamedjango__file__warningswarn*PASSWORD_RESET_TIMEOUT_DAYS_DEPRECATED_MSGr   r3   )r   stackfilename_s       r   rU   z(LazySettings.PASSWORD_RESET_TIMEOUT_DAYS   sl    '') ""I!Q""277??6??#CDMM:(
  =>>r   c                 B    | j                  | j                  d            S )N
STATIC_URLrN   r3   r-   s    r   rc   zLazySettings.STATIC_URL   s    &&t'7'7'EFFr   c                 B    | j                  | j                  d            S )N	MEDIA_URLrd   r-   s    r   rf   zLazySettings.MEDIA_URL   s    &&t'7'7'DEEr   r   )r   r   r   r   r*   r.   r3   r8   r<   r   rH   staticmethodrN   propertyrP   rU   rc   rf   __classcell__r:   s   @r   r   r   0   s    
2"
	)&
 *9  5 5 * * ? ? G G F Fr   r   c                       e Zd Zd Zd Zd Zy)r%   c           	         t        t              D ].  }|j                         st        | |t	        t        |             0 || _        t        j                  | j
                        }d}t               | _	        t        |      D ]o  }|j                         st	        ||      }||v r$t        |t        t        f      st        d|z        t        | ||       | j                  j                  |       q | j                  st        d      | j!                  d      rZ| j!                  d      rt        d      t        | d| j"                  dz  dz  dz         t%        j&                  t(        t*               | j!                  d	      rt%        j&                  t,        t*               t/        t0        d
      r| j2                  rt5        d      } |j6                  | j2                  j9                  d       }|j;                         r(|j;                         st=        d| j2                  z        | j2                  t>        j@                  d<   t1        jB                          y y y )N)INSTALLED_APPSTEMPLATE_DIRSLOCALE_PATHSz*The %s setting must be a list or a tuple. z)The SECRET_KEY setting must not be empty.rU   PASSWORD_RESET_TIMEOUTzJPASSWORD_RESET_TIMEOUT_DAYS/PASSWORD_RESET_TIMEOUT are mutually exclusive.<      DEFAULT_HASHING_ALGORITHMtzsetz/usr/share/zoneinforJ   zIncorrect timezone setting: %sTZ)"dirr   rB   rD   r0   r,   	importlibimport_moduleset_explicit_settings
isinstancelisttupler   add
SECRET_KEYis_overriddenrU   r\   r]   r^   r   (DEFAULT_HASHING_ALGORITHM_DEPRECATED_MSGhasattrtime	TIME_ZONEr   joinpathsplitexists
ValueErrorr!   r"   rt   )r   r(   settingmodtuple_settingssetting_valuezoneinfo_rootzone_info_files           r   r   zSettings.__init__   s   ?+ 	JG gw'HI	J
  /%%d&:&:;

 #&%3x 	5G  'W 5~-&}tUmD./[^e/effg}5''++G4	5 &'RSS;<!!":;**  D2D4T4TWY4Y\^4^ac4cdMMDF^_9:MMBD\]4!dnn !!67M3]33T^^5I5I#5NON##%n.C.C.E !ADNN!RSS  $~~BJJtJJL '5!r   c                     || j                   v S r   )rz   )r   r   s     r   r   zSettings.is_overridden   s    $1111r   c                 N    d| j                   j                  | j                  dz  S )Nz<%(cls)s "%(settings_module)s">)clsr(   )r:   r   r,   r-   s    r   r.   zSettings.__repr__   s*    0>>**#334
 
 	
r   N)r   r   r   r   r   r.   r   r   r   r%   r%      s    4l2
r   r%   c                   N     e Zd ZdZdZd Zd Z fdZ fdZd Z	d Z
d	 Z xZS )
r@   z$Holder for user configured settings.Nc                 @    t               | j                  d<   || _        y)z
        Requests for configuration variables not in this class are satisfied
        from the module specified in default_settings (if possible).
        _deletedN)ry   r1   rE   )r   rE   s     r   r   zUserSettingsHolder.__init__   s    
 %(Ej! 0r   c                 v    |j                         r|| j                  v rt        t        | j                  |      S r   )rB   r   AttributeErrorr0   rE   )r   r'   s     r   r3   zUserSettingsHolder.__getattr__   s/    ||~!6  t,,d33r   c                    | j                   j                  |       |dk(  r4t        | d|dz  dz  dz         t        j                  t
        t               |dk(  rt        j                  t        t               t        | %  ||       y )NrU   rp   rq   rr   rs   )
r   discardrD   r\   r]   r^   r   r   r7   r8   r9   s      r   r8   zUserSettingsHolder.__setattr__   sp    d#00D2EBJOb4HIMMDF^_..MMBD\]D%(r   c                 t    | j                   j                  |       t        | |      rt        |   |       y y r   )r   r~   r   r7   r<   r=   s     r   r<   zUserSettingsHolder.__delattr__   s1    $4G% r   c                 n     t         fdg  j                  t         j                        D              S )Nc              3   >   K   | ]  }|j                   vr|  y wr   )r   ).0sr   s     r   	<genexpr>z-UserSettingsHolder.__dir__.<locals>.<genexpr>  s%      
% 
s   )sortedr1   rv   rE   r-   s   `r   __dir__zUserSettingsHolder.__dir__  s6     
DDT-B-B)CD
 
 	
r   c                     || j                   v }|| j                  v } t        | j                  dd       |      }|xs |xs |S )Nr   c                      y)NFr   )r   s    r   <lambda>z2UserSettingsHolder.is_overridden.<locals>.<lambda>  s    r   )r   r1   r0   rE   )r   r   deletedset_locallyset_on_defaults        r   r   z UserSettingsHolder.is_overridden  sJ    dmm+$--/Y!6!6YZab7+77r   c                 8    dd| j                   j                  iz  S )Nz	<%(cls)s>r   )r:   r   r-   s    r   r.   zUserSettingsHolder.__repr__  s#    4>>**
 
 	
r   )r   r   r   r   r,   r   r3   r8   r<   r   r   r.   ri   rj   s   @r   r@   r@      s0    . O14
)&

8
r   r@   )r   rw   r!   r   rV   r\   pathlibr   rZ   django.confr   django.core.exceptionsr   django.utils.deprecationr   django.utils.functionalr   r   r$   r^   r   r   r   r   r%   r@   r    r   r   r   <module>r      s     	      ' 7 = 5/ & += )	) 	)mF: mF`>
 >
B0
 0
f >r   