o
    uvXj%  ã                   @   sÊ   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G dd„ deƒZG dd„ deƒZG dd„ dƒZG d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)ÚRemovedInDjango30WarningÚRemovedInDjango31Warning)Ú
LazyObjectÚemptyÚDJANGO_SETTINGS_MODULEz/The DEFAULT_CONTENT_TYPE setting is deprecated.zqThe FILE_CHARSET setting is deprecated. Starting with Django 3.1, all files read from disk must be UTF-8 encoded.c                   @   s    e Zd ZdZdd„ Zd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                 C   s   t  | |¡S ©N)ÚstrÚ__new__©ÚselfÚvalueÚsetting_name© r   úQ/var/www/html/myproject/venv/lib/python3.10/site-packages/django/conf/__init__.pyr   &   s   zSettingsReference.__new__c                 C   s
   || _ d S r   )r   r   r   r   r   Ú__init__)   ó   
zSettingsReference.__init__N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r   r
   !   s    r
   c                       sv   e Zd ZdZddd„Zdd„ Zdd„ Z‡ fd	d
„Z‡ fdd„Ze	fdd„Z
edd„ ƒZedd„ ƒZedd„ ƒZ‡  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                 C   s>   t j t¡}|s|rd| nd}td|tf ƒ‚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 %s, but settings are not configured. You must either define the environment variable %s or call settings.configure() before accessing settings.N)ÚosÚenvironÚgetÚENVIRONMENT_VARIABLEr   ÚSettingsÚ_wrapped)r   ÚnameÚsettings_moduleÚdescr   r   r   Ú_setup3   s   ýÿzLazySettings._setupc                 C   s   | j tu rdS dd| j ji S )Nz<LazySettings [Unevaluated]>z$<LazySettings "%(settings_module)s">r#   )r!   r   ÚSETTINGS_MODULE©r   r   r   r   Ú__repr__D   s
   
ÿzLazySettings.__repr__c                 C   s.   | j tu r
|  |¡ t| j |ƒ}|| j|< |S )z<Return the value of a setting and cache it in self.__dict__.)r!   r   r%   ÚgetattrÚ__dict__)r   r"   Úvalr   r   r   Ú__getattr__L   s
   


zLazySettings.__getattr__c                    s4   |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)r*   ÚclearÚpopÚsuperÚ__setattr__©r   r"   r   ©Ú	__class__r   r   r0   T   s   zLazySettings.__setattr__c                    s   t ƒ  |¡ | j |d¡ dS )z3Delete a setting and clear it from cache if needed.N)r/   Ú__delattr__r*   r.   ©r   r"   r2   r   r   r4   _   s   zLazySettings.__delattr__c                 K   sB   | j tur	tdƒ‚t|ƒ}| ¡ D ]
\}}t|||ƒ q|| _ 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.N)r!   r   ÚRuntimeErrorÚUserSettingsHolderÚitemsÚsetattr)r   Údefault_settingsÚoptionsÚholderr"   r   r   r   r   Ú	configured   s   

zLazySettings.configurec                 C   s
   | j tuS )z9Return True if the settings have already been configured.)r!   r   r'   r   r   r   Ú
configuredq   s   
zLazySettings.configuredc                 C   óF   t  ¡ }|d \}}}}| tj tj¡¡stj	t
tdd� |  d¡S )Néþÿÿÿé   ©Ú
stacklevelÚDEFAULT_CONTENT_TYPE)Ú	tracebackÚextract_stackÚ
startswithr   ÚpathÚdirnameÚdjangoÚ__file__ÚwarningsÚwarnÚ#DEFAULT_CONTENT_TYPE_DEPRECATED_MSGr   r,   ©r   ÚstackÚfilenameÚ_line_numberÚ_function_nameÚ_textr   r   r   rD   v   ó   ý
z!LazySettings.DEFAULT_CONTENT_TYPEc                 C   r?   )Nr@   rA   rB   ÚFILE_CHARSET)rE   rF   rG   r   rH   rI   rJ   rK   rL   rM   ÚFILE_CHARSET_DEPRECATED_MSGr   r,   rO   r   r   r   rV   „   rU   zLazySettings.FILE_CHARSETr   )r   r   r   r   r%   r(   r,   r0   r4   r   r=   Úpropertyr>   rD   rV   Ú__classcell__r   r   r2   r   r   -   s    


r   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )r    c                 C   sB  t tƒD ]}| ¡ rt| |tt|ƒƒ q|| _t | j¡}d}tƒ | _	t |ƒD ](}| ¡ rOt||ƒ}||v rCt
|ttfƒsCtd| ƒ‚t| ||ƒ | j	 |¡ q'| jsWtdƒ‚|  d¡rbt tt¡ |  d¡rmt tt¡ ttdƒr�| jrŸtdƒ}|j| j d¡Ž }| ¡ r‘| ¡ s‘td	| j ƒ‚| jtj d
< t !¡  d S d S d S )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.rD   rV   Útzsetz/usr/share/zoneinfoú/zIncorrect timezone setting: %sÚTZ)"Údirr   Úisupperr9   r)   r&   Ú	importlibÚimport_moduleÚsetÚ_explicit_settingsÚ
isinstanceÚlistÚtupler   ÚaddÚ
SECRET_KEYÚis_overriddenrL   rM   rN   r   rW   r   ÚhasattrÚtimeÚ	TIME_ZONEr   ÚjoinpathÚsplitÚexistsÚ
ValueErrorr   r   r]   )r   r#   ÚsettingÚmodÚtuple_settingsÚsetting_valueÚzoneinfo_rootÚzone_info_filer   r   r   r   ”   s@   €
ÿ€

özSettings.__init__c                 C   s
   || j v S r   )re   )r   rs   r   r   r   rk   Ã   r   zSettings.is_overriddenc                 C   s   d| j j| jdœ S )Nz<%(cls)s "%(settings_module)s">)Úclsr#   )r3   r   r&   r'   r   r   r   r(   Æ   s   þzSettings.__repr__N)r   r   r   r   rk   r(   r   r   r   r   r    “   s    /r    c                       sX   e Zd ZdZdZdd„ Zdd„ Z‡ fdd„Z‡ fd	d
„Zdd„ Z	dd„ Z
dd„ Z‡  ZS )r7   z$Holder for user configured settings.Nc                 C   s   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)rd   r*   r:   )r   r:   r   r   r   r   Ó   s   
zUserSettingsHolder.__init__c                 C   s   || j v rt‚t| j|ƒS r   )rz   ÚAttributeErrorr)   r:   r5   r   r   r   r,   Û   s   
zUserSettingsHolder.__getattr__c                    sH   | j  |¡ |dkrt tt¡ n
|dkrt tt¡ tƒ  	||¡ d S )NrD   rV   )
rz   ÚdiscardrL   rM   rN   r   rW   r   r/   r0   r1   r2   r   r   r0   à   s   zUserSettingsHolder.__setattr__c                    s*   | j  |¡ t| |ƒrtƒ  |¡ d S d S r   )rz   ri   rl   r/   r4   r5   r2   r   r   r4   è   s   
ÿzUserSettingsHolder.__delattr__c                    s&   t ‡ fdd„g ˆ j¢tˆ jƒ¢D ƒƒS )Nc                 3   s   � | ]
}|ˆ j vr|V  qd S r   )rz   )Ú.0Úsr'   r   r   Ú	<genexpr>î   s   € 
ÿþz-UserSettingsHolder.__dir__.<locals>.<genexpr>)Úsortedr*   r`   r:   r'   r   r'   r   Ú__dir__í   s   ÿzUserSettingsHolder.__dir__c                 C   s6   || j v }|| jv }t| jddd„ ƒ|ƒ}|p|p|S )Nrk   c                 S   s   dS )NFr   )r~   r   r   r   Ú<lambda>ö   s    z2UserSettingsHolder.is_overridden.<locals>.<lambda>)rz   r*   r)   r:   )r   rs   ÚdeletedÚset_locallyÚset_on_defaultr   r   r   rk   ó   s   

z UserSettingsHolder.is_overriddenc                 C   s   dd| j ji S )Nz	<%(cls)s>ry   )r3   r   r'   r   r   r   r(   ù   s   ÿzUserSettingsHolder.__repr__)r   r   r   r   r&   r   r,   r0   r4   r�   rk   r(   rY   r   r   r2   r   r7   Í   s    r7   )r   rb   r   rm   rE   rL   Úpathlibr   rJ   Údjango.confr   Údjango.core.exceptionsr   Údjango.utils.deprecationr   r   Údjango.utils.functionalr   r   r   rN   rW   r   r
   r   r    r7   r   r   r   r   r   Ú<module>   s*    ÿf:
2