
    `f4                        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mZ ddlmZmZ dZd	Zd
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dS )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)RemovedInDjango51WarningRemovedInDjango60Warning)
LazyObjectemptyDJANGO_SETTINGS_MODULEdefaultstaticfileszEThe DEFAULT_FILE_STORAGE setting is deprecated. Use STORAGES instead.zDThe STATICFILES_STORAGE setting is deprecated. Use STORAGES instead.zCThe FORMS_URLFIELD_ASSUME_HTTPS transitional setting is deprecated.c                       e Zd ZdZd Zd ZdS )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                 8    t                               | |          S N)str__new__selfvaluesetting_names      F/var/www/html/env/lib/python3.11/site-packages/django/conf/__init__.pyr   zSettingsReference.__new__.   s    {{4'''    c                     || _         d S r   )r   r   s      r   __init__zSettingsReference.__init__1   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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.
    Nc                     t           j                            t                    }|s$|rd|z  nd}t	          d|dt          d          t          |          | _        dS )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._setup<   su     *..)=>> 	,0@L4''jD&& 44---/   !11r   c                 D    | j         t          u rdS 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__N   s1    =E!!115t}<9
 
 	
r   c                     | j         x}t          u r|                     |           | j         }t          ||          }|dv r||                     |          }n|dk    r|st          d          || j        |<   |S )z<Return the value of a setting and cache it in self.__dict__.>   	MEDIA_URL
STATIC_URLN
SECRET_KEYz)The SECRET_KEY setting must not be empty.)r)   r	   r-   getattr_add_script_prefixr   __dict__)r   r*   r)   vals       r   __getattr__zLazySettings.__getattr__V   s    %H%//KK}Hh%% ...3?))#..CC\!!#!&'RSSS!d
r   c                     |dk    r| j                                          n| j                             |d           t                                          ||           dS )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)r8   clearpopsuper__setattr__)r   r*   r   	__class__s      r   r?   zLazySettings.__setattr__g   s_    
 :M!!!!MdD)))D%(((((r   c                     t                                          |           | j                            |d           dS )z3Delete a setting and clear it from cache if needed.N)r>   __delattr__r8   r=   r   r*   r@   s     r   rB   zLazySettings.__delattr__r   s9    D!!!$%%%%%r   c                    | j         t          urt          d          t          |          }|                                D ]<\  }}|                                st          d|z            t          |||           =|| _         dS )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.configurew   s     =%%=>>>#$455"==?? 	) 	)KD%<<>> H ?$ FGGGFD%((((r   c                 X    |                      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.urlsrQ   )r   rQ   s     r   r7   zLazySettings._add_script_prefix   sK     899 	L111111**,,,ee44r   c                     | j         t          uS )z9Return True if the settings have already been configured.)r)   r	   r0   s    r   
configuredzLazySettings.configured   s     }E))r   c                     t          j                    }|d         \  }}}}|                    t          j                            t          j                            st          j	        ||d           d S d S )N   )
stacklevel)
	tracebackextract_stackrR   r$   pathdirnamedjango__file__warningswarn)r   messagecategorystackfilename_s         r   _show_deprecation_warningz&LazySettings._show_deprecation_warning   sq    ')) ""I!Q""27??6?#C#CDD 	;M'8::::::	; 	;r   c                 l    |                      t          t                     |                     d          S )NDEFAULT_FILE_STORAGE)rg   #DEFAULT_FILE_STORAGE_DEPRECATED_MSGr   r:   r0   s    r   ri   z!LazySettings.DEFAULT_FILE_STORAGE   s7    &&/1I	
 	
 	
  6777r   c                 l    |                      t          t                     |                     d          S )NSTATICFILES_STORAGE)rg   "STATICFILES_STORAGE_DEPRECATED_MSGr   r:   r0   s    r   rl   z LazySettings.STATICFILES_STORAGE   s7    &&.0H	
 	
 	
  5666r   r   )r   r   r   r   r-   r1   r:   r?   rB   r   rN   staticmethodr7   propertyrU   rg   ri   rl   __classcell__r@   s   @r   r!   r!   5   s!        2 2 2 2$
 
 
  "	) 	) 	) 	) 	)& & & & &
 *9     5 5 \5 * * X*; ; ; 8 8 X8 7 7 X7 7 7 7 7r   r!   c                        e Zd Zd Zd Zd ZdS )r(   c           	         t          t                    D ]:}|                                r$t          | |t	          t          |                     ;|| _        t          j        | j                  }d}t                      | _	        t          |          D ]}|                                rmt	          ||          }||v r.t          |t          t          f          st          d|z            t          | ||           | j	                            |           |                     d          rt!          j        t$          t&                     t)          t*          d          r| j        rt/          d          } |j        | j                            d           }|                                r+|                                st7          d| j        z            | j        t8          j        d<   t+          j                     |                     d	          ra|                     d
          rt          d          i | j        t@          d| j!        ii| _        t!          j        tD          tF                     |                     d          ra|                     d
          rt          d          i | j        tH          d| j%        ii| _        t!          j        tL          tF                     |                     d
          rt          | d	| j        '                    t@          i           '                    d                     t          | d| j        '                    tH          i           '                    d                     d S d S )N)ALLOWED_HOSTSINSTALLED_APPSTEMPLATE_DIRSLOCALE_PATHSSECRET_KEY_FALLBACKSz)The %s setting must be a list or a tuple.FORMS_URLFIELD_ASSUME_HTTPStzsetz/usr/share/zoneinforP   zIncorrect timezone setting: %sTZri   STORAGESz5DEFAULT_FILE_STORAGE/STORAGES are mutually exclusive.BACKENDrl   z4STATICFILES_STORAGE/STORAGES are mutually exclusive.)(dirr   rH   rJ   r6   r/   	importlibimport_moduleset_explicit_settings
isinstancelisttupler   addis_overriddenr`   ra   *FORMS_URLFIELD_ASSUME_HTTPS_DEPRECATED_MSGr   hasattrtime	TIME_ZONEr   joinpathsplitexists
ValueErrorr$   r%   rz   r|   DEFAULT_STORAGE_ALIASri   rj   r   STATICFILES_STORAGE_ALIASrl   rm   r&   )r   r+   settingmodtuple_settingssetting_valuezoneinfo_rootzone_info_files           r   r   zSettings.__init__   s   ?++ 	J 	JG   Jgw'H'HIII  /%d&:;;
 #&%%3xx 	5 	5G   
5 'W 5 5n,,Z!D%=6 6, /CgM   g}555'++G444;<< 	M:(  
 4!! 
	dn 
	 !!677M3]3T^5I5I#5N5NON##%% Tn.C.C.E.E T !ADN!RSSS  $~BJtJLLL455 		Y!!*-- *K  -%	43L'M DM M=?WXXX344 		X!!*-- *J  -)It7O+P DM M<>VWWWj)) 
	&!!"7<<@@KK  
 %!!";R@@DDYOO    
	 
	r   c                     || j         v S r   )r   )r   r   s     r   r   zSettings.is_overridden	  s    $111r   c                 0    d| j         j        | j        dz  S )Nz<%(cls)s "%(settings_module)s">)clsr+   )r@   r   r/   r0   s    r   r1   zSettings.__repr__  s'    0>*#34
 4
 
 	
r   N)r   r   r   r   r   r1   r   r   r   r(   r(      sE        R R Rh2 2 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 )
rF   z$Holder for user configured settings.Nc                 @    t                      | j        d<   || _        dS )z
        Requests for configuration variables not in this class are satisfied
        from the module specified in default_settings (if possible).
        _deletedN)r   r8   rK   )r   rK   s     r   r   zUserSettingsHolder.__init__  s"    
 %(EEj! 0r   c                 t    |                                 r	|| j        v rt          t          | j        |          S r   )rH   r   AttributeErrorr6   rK   )r   r*   s     r   r:   zUserSettingsHolder.__getattr__"  s7    ||~~ 	!!6!6  t,d333r   c                    | j                             |           |dk    r5d| j        i| j        t          <   t          j        t          t                     |dk    r5d| j	        i| j        t          <   t          j        t          t                     |dk    rt          j        t          t                     t                                          ||           |dk    r| j                            t                    x}r6t                                          d|                    d                     n"| j                            t          ddi           | j                            t                    x}r7t                                          d|                    d                     d S | j                            t          ddi           d S d S )Nri   r}   rl   ry   r|   z+django.core.files.storage.FileSystemStoragez5django.contrib.staticfiles.storage.StaticFilesStorage)r   discardri   r|   r   r`   ra   rj   r   rl   r   rm   r   r   r>   r?   r&   
setdefault)r   r*   r   default_file_storagestaticfiles_storager@   s        r   r?   zUserSettingsHolder.__setattr__'  s   d###)))444DM/0 M=?WXXX(((438DM34 M<>VWWW000M:(   	D%(((:'+}'8'89N'O'OO# ##*,@,D,DY,O,O    (() MN   '+m&7&78Q&R&RR" ##)+>+B+B9+M+M     ((-!S     r   c                     | j                             |           t          | |          r#t                                          |           d S d S r   )r   r   r   r>   rB   rC   s     r   rB   zUserSettingsHolder.__delattr__R  sS    $4 	&GG%%%%%	& 	&r   c                 p     t           fdg  j        t           j                  D                       S )Nc              3   .   K   | ]}|j         v|V  d S r   )r   ).0sr   s     r   	<genexpr>z-UserSettingsHolder.__dir__.<locals>.<genexpr>X  s<       
 
%% %%%%
 
r   )sortedr8   r~   rK   r0   s   `r   __dir__zUserSettingsHolder.__dir__W  sR     
 
 
 
Bt}Bs4+@'A'AB
 
 
 
 
 	
r   c                 r    || j         v }|| j        v } t          | j        dd           |          }|p|p|S )Nr   c                     dS )NFr   )r   s    r   <lambda>z2UserSettingsHolder.is_overridden.<locals>.<lambda>b  s    e r   )r   r8   r6   rK   )r   r   deletedset_locallyset_on_defaults        r   r   z UserSettingsHolder.is_overridden^  sX    T]*.
!?OO
 

  7+77r   c                 $    dd| j         j        iz  S )Nz	<%(cls)s>r   )r@   r   r0   s    r   r1   zUserSettingsHolder.__repr__f  s    4>*
 
 	
r   )r   r   r   r   r/   r   r:   r?   rB   r   r   r1   rp   rq   s   @r   rF   rF     s        .. O1 1 14 4 4
) ) ) ) )V& & & & &

 
 
8 8 8
 
 
 
 
 
 
r   rF   )r   r   r$   r   rZ   r`   pathlibr   r^   django.confr   django.core.exceptionsr   django.utils.deprecationr   r   django.utils.functionalr   r	   r'   r   r   rj   rm   r   r   r   r!   r(   rF   r#   r   r   r   <module>r      s        				              ' ' ' ' ' ' 7 7 7 7 7 7 W W W W W W W W 5 5 5 5 5 5 5 5/ ! )  L $
 K # J +

) 
) 
) 
) 
) 
) 
) 
)|7 |7 |7 |7 |7: |7 |7 |7~\
 \
 \
 \
 \
 \
 \
 \
~V
 V
 V
 V
 V
 V
 V
 V
r <>>r   