B
    ©0H[$  ã               @   sP   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)Úis_iterablec               @   s4   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S )ÚTagsz,
    Built-in tags for internal checks.
    ÚadminÚcachesÚcompatibilityÚdatabaseÚmodelsÚsecurityÚsignalsÚ	templatesÚurlsN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r	   r
   r   r   r   © r   r   ú_C:\Users\HIRONO~1\AppData\Local\Temp\pip-install-6bm3nxem\django\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                sB   ˆ   dd¡ ‡ ‡‡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(apps, **kwargs):
                # ... perform checks and collect `errors` ...
                return errors
            # or
            registry.register(my_check, 'mytag', 'anothertag')
        ÚdeployFc                s(   ˆ| _ ˆ d rˆjnˆj}| | ¡ | S )Nr   )Útagsr   r   Úadd)ÚcheckÚchecks)Úkwargsr   r   r   r   Úinner-   s    
z%CheckRegistry.register.<locals>.innerN)Ú
setdefaultÚcallable)r   r   r   r   r    r   )r   r   r   r   Úregister   s    
zCheckRegistry.registerFc                sr   g }|   |¡}ˆ dk	r*‡ fdd„|D ƒ}ndd„ |D ƒ}x4|D ],}||d�}t|ƒs`td| ƒ‚| |¡ q>W |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>B   s    z,CheckRegistry.run_checks.<locals>.<listcomp>c             S   s   g | ]}t j|jkr|‘qS r   )r   r   r   )r%   r   r   r   r   r&   F   s    )Úapp_configszlThe function %r did not return a list. All functions registered with the checks registry must return a list.)Ú
get_checksr   ÚAssertionErrorÚextend)r   r'   r   Úinclude_deployment_checksÚerrorsr   r   Z
new_errorsr   )r   r   Ú
run_checks:   s    



zCheckRegistry.run_checksc             C   s   ||   |¡kS )N)Útags_available)r   Útagr+   r   r   r   Ú
tag_existsP   s    zCheckRegistry.tag_existsc             C   s   t t dd„ |  |¡D ƒ¡ƒS )Nc             s   s   | ]}|j V  qd S )N)r   )r%   r   r   r   r   ú	<genexpr>U   s    z/CheckRegistry.tags_available.<locals>.<genexpr>)r   r   Úfrom_iterabler(   )r   r   r   r   r   r.   S   s    zCheckRegistry.tags_availablec             C   s   t | jƒ}|r| | j¡ |S )N)Úlistr   r*   r   )r   r+   r   r   r   r   r(   X   s    
zCheckRegistry.get_checks)N)NNF)F)F)F)	r   r   r   r   r#   r-   r0   r.   r(   r   r   r   r   r      s   



r   N)
Ú	itertoolsr   Zdjango.utils.itercompatr   r   r   Úregistryr#   r-   r0   r   r   r   r   Ú<module>   s   J