
    k"g                         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                   H    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y)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        T/var/www/html/djangosite/lib/python3.12/site-packages/django/core/checks/registry.pyr   r      sO     E#MF#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>.inner2   s^    &u-O  EJ ::h' &&++ 
 JJuLr   )callable)r$   r-   r*   r/   r0   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$   r4   r*   include_deployment_checksr5   errorsr.   r-   
new_errorss	            r   
run_checkszCheckRegistry.run_checksG   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_existsa   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>f   s       $

 s   )r!   r   from_iterabler6   )r$   r#   s     r   r?   zCheckRegistry.tags_availabled   s4      (,8I(J  
 	
r   c                 j    t        | j                        }|r|j                  | j                         |S r    )listr"   r9   r#   )r$   r:   r.   s      r   r6   zCheckRegistry.get_checksk   s,    d,,-$MM$001r   r    )NNFN)F)	r   r   r   r%   r2   r=   rA   r?   r6   r   r   r   r   r      s0    '$P "'4E
r   r   N)collections.abcr   	itertoolsr   django.utils.inspectr   r   r   registryr2   r=   rA   r   r   r   <module>rM      sO    $  4 *S Sl ?  
  
r   