
 XG                 @   s   d  d l  m Z d  d l m Z d  d l m Z Gd d   d e  Z Gd d   d e  Z e   Z	 e	 j
 Z
 e	 j Z e	 j Z d S)	    )unicode_literals)chain)is_iterablec               @   sL   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   I/home/ubuntu/projects/ifolica/build/django/django/core/checks/registry.pyr   	   s   r   c               @   sm   e  Z d  Z d d   Z d d d  Z d d d d d  Z d d	 d
  Z d d d  Z d d d  Z d S)CheckRegistryc             C   s   g  |  _  g  |  _ d  S)N)registered_checksdeployment_checks)selfr   r   r   __init__   s    	zCheckRegistry.__init__Nc                s\     j  d d      f d d   } t |  r> | |  S| rT  | f 7 n  | Sd 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 r8 |   j k rZ  j j |   qZ n" |   j k rZ  j j |   n  |  S)Nr   )tagsr   appendr   )check)kwargsr   r   r   r   inner0   s    	
z%CheckRegistry.register.<locals>.innerN)
setdefaultcallable)r   r   r   r   r   r   )r   r   r   r   register   s    	
zCheckRegistry.registerFc                s   g  } |  j  |  }   d k	 r=   f d d   | D } n d d   | D } xF | D]> } | d |  } t |  s t d |   | j |  qW W| S)zS
        Run all registered checks and return list of Errors and Warnings.
        Nc                s>   g  |  ]4 } t  | d   r t | j  t    @r |  q S)r   )hasattrsetr   ).0r   )r   r   r   
<listcomp>H   s   	 z,CheckRegistry.run_checks.<locals>.<listcomp>c             S   s8   g  |  ]. } t  | d   s. t j | j k r |  q S)r   )r#   r   r	   r   )r%   r   r   r   r   r&   M   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errorschecksr   Z
new_errorsr   )r   r   
run_checks@   s    
zCheckRegistry.run_checksc             C   s   | |  j  |  k S)N)tags_available)r   tagr+   r   r   r   
tag_existsX   s    zCheckRegistry.tag_existsc             C   s&   t  t d d   |  j |  D    S)Nc             S   s(   g  |  ] } t  | d   r | j  q S)r   )r#   r   )r%   r   r   r   r   r&   \   s   	 z0CheckRegistry.tags_available.<locals>.<listcomp>)r$   r   r(   )r   r   r   r   r   r/   [   s    zCheckRegistry.tags_availablec             C   s,   t  |  j  } | r( | j |  j  n  | S)N)listr   r*   r   )r   r+   r-   r   r   r   r(   ^   s    zCheckRegistry.get_checks)	r   r   r   r   r"   r.   r1   r/   r(   r   r   r   r   r      s   "r   N)
__future__r   	itertoolsr   Zdjango.utils.itercompatr   objectr   r   registryr"   r.   r1   r   r   r   r   <module>   s   M			