
    Vh                         d dl mZ d dlmZ d dlmZ  G d d      Z G d d      Z e       Zej                  Z	ej                  Z
ej                  Zy)	    )Iterable)chain)func_accepts_kwargsc                   L    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Zy)Tagsz,
    Built-in tags for internal checks.
    adminasync_supportcachescommands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        K/home/dcms/DCMS/lib/python3.12/site-packages/django/core/checks/registry.pyr   r      sT     E#MFH#MHEFHGEKIKDr   r   c                   B    e Zd Zd ZddZ	 	 	 	 d	dZd
dZd
dZd
dZy)CheckRegistryc                 @    t               | _        t               | _        y N)setregistered_checksdeployment_checks)selfs    r   __init__zCheckRegistry.__init__   s    !$!$r   Nc                 P      fd}t        |      r ||      S |r|fz  |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                     t        |       st        d      | _        j                  d      rj                  nj
                  }|j                  |        | S )Nz9Check functions must accept keyword arguments (**kwargs).deploy)r   	TypeErrortagsgetr$   r#   add)checkcheckskwargsr%   r+   s     r   innerz%CheckRegistry.register.<locals>.inner3   s^    &u-O  EJ ::h' &&++ 
 JJuLr   )callable)r%   r.   r+   r0   r1   s   ` `` r   registerzCheckRegistry.register"   s/    "	 E?< Lr   c                 "   g }| j                  |      }|4|D cg c])  }t        |j                        j                  |      r(|+ }}|D ];  } |||      }t	        |t
              st        d|z        |j                  |       = |S c c}w )zS
        Run all registered checks and return list of Errors and Warnings.
        )app_configs	databaseszlThe function %r did not return a list. All functions registered with the checks registry must return a list.)
get_checksr"   r+   
isdisjoint
isinstancer   r*   extend)	r%   r5   r+   include_deployment_checksr6   errorsr/   r.   
new_errorss	            r   
run_checkszCheckRegistry.run_checksH   s     !:;)/Xs5::7Q7QRV7WeXFX 	&E;)LJj(3NPUV  MM*%	&  Ys   )BBc                 (    || j                  |      v S r!   )tags_available)r%   tagr;   s      r   
tag_existszCheckRegistry.tag_existsb   s    d))*CDDDr   c                 j    t        t        j                  d | j                  |      D                    S )Nc              3   4   K   | ]  }|j                     y wr!   )r+   ).0r.   s     r   	<genexpr>z/CheckRegistry.tags_available.<locals>.<genexpr>g   s       $

 s   )r"   r   from_iterabler7   )r%   r$   s     r   r@   zCheckRegistry.tags_availablee   s4      (,8I(J  
 	
r   c                 j    t        | j                        }|r|j                  | j                         |S r!   )listr#   r:   r$   )r%   r;   r/   s      r   r7   zCheckRegistry.get_checksl   s,    d,,-$MM$001r   r!   )NNFN)F)	r   r   r   r&   r3   r>   rB   r@   r7   r   r   r   r   r      s0    '$P "'4E
r   r   N)collections.abcr   	itertoolsr   django.utils.inspectr   r   r   registryr3   r>   rB   r   r   r   <module>rN      sO    $  4 ,S Sl ?  
  
r   