a
    Lcòf‚  ã                   @   s\   d dl mZ d dlmZ d dlmZ G dd„ dƒZG dd„ dƒZeƒ Zej	Z	ej
Z
ejZdS )	é    )Úchain)Úfunc_accepts_kwargs)Úis_iterablec                   @   sH   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZdS )ÚTagsz,
    Built-in tags for internal checks.
    ÚadminÚasync_supportÚcachesÚcompatibilityÚdatabaseÚfilesÚmodelsÚsecurityÚsignalsÚsitesÚstaticfilesÚ	templatesÚtranslationÚurlsN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   © r   r   úX/home/httpd/docs/test/DocsMgr/lib/python3.9/site-packages/django/core/checks/registry.pyr      s   r   c                   @   sF   e Zd Zdd„ Zddd„Zddd„Zdd	d
„Zddd„Zddd„ZdS )ÚCheckRegistryc                 C   s   t ƒ | _t ƒ | _d S ©N)ÚsetÚregistered_checksÚdeployment_checks)Úselfr   r   r   Ú__init__   s    zCheckRegistry.__init__Nc                    s6   ‡ ‡‡fdd„}t |ƒr ||ƒS |r.ˆ|f7 ‰|S dS )a  
        Can be used as a function or a decorator. Register given function
        `f` labeled with given `tags`. The function should receive **kwargs
        and return list of Errors and Warnings.

        Example::

            registry = CheckRegistry()
            @registry.register('mytag', 'anothertag')
            def my_check(app_configs, **kwargs):
                # ... perform checks and collect `errors` ...
                return errors
            # or
            registry.register(my_check, 'mytag', 'anothertag')
        c                    s:   t | ƒstdƒ‚ˆ| _ˆ  d¡r&ˆjnˆj}| | ¡ | S )Nz9Check functions must accept keyword arguments (**kwargs).Zdeploy)r   Ú	TypeErrorÚtagsÚgetr   r   Úadd)ÚcheckÚchecks©Úkwargsr   r"   r   r   Úinner2   s    ÿÿý
z%CheckRegistry.register.<locals>.innerN)Úcallable)r   r%   r"   r(   r)   r   r'   r   Úregister!   s    
zCheckRegistry.registerFc           	         s`   g }|   |¡}ˆ dur(‡ fdd„|D ƒ}|D ].}|||d�}t|ƒsPtd| ƒ‚| |¡ q,|S )zS
        Run all registered checks and return list of Errors and Warnings.
        Nc                    s    g | ]}t |jƒ ˆ ¡s|‘qS r   )r   r"   Ú
isdisjoint©Ú.0r%   ©r"   r   r   Ú
<listcomp>U   ó    z,CheckRegistry.run_checks.<locals>.<listcomp>)Úapp_configsÚ	databaseszlThe function %r did not return a list. All functions registered with the checks registry must return a list.)Ú
get_checksr   r!   Úextend)	r   r2   r"   Úinclude_deployment_checksr3   Úerrorsr&   r%   Z
new_errorsr   r/   r   Ú
run_checksG   s    

ÿÿzCheckRegistry.run_checksc                 C   s   ||   |¡v S r   )Útags_available)r   Útagr6   r   r   r   Ú
tag_existsa   s    zCheckRegistry.tag_existsc                 C   s   t t dd„ |  |¡D ƒ¡ƒS )Nc                 s   s   | ]}|j V  qd S r   r/   r-   r   r   r   Ú	<genexpr>f   s   z/CheckRegistry.tags_available.<locals>.<genexpr>)r   r   Úfrom_iterabler4   )r   r   r   r   r   r9   d   s
    
ÿÿzCheckRegistry.tags_availablec                 C   s   t | jƒ}|r| | j¡ |S r   )Úlistr   r5   r   )r   r6   r&   r   r   r   r4   k   s    
zCheckRegistry.get_checks)N)NNFN)F)F)F)	r   r   r   r    r+   r8   r;   r9   r4   r   r   r   r   r      s   
(    û


r   N)Ú	itertoolsr   Zdjango.utils.inspectr   Zdjango.utils.itercompatr   r   r   Úregistryr+   r8   r;   r   r   r   r   Ú<module>   s   V