ó
®â0_c           @  s„   d  d l  m Z d  d l m Z d  d l m Z d e f d „  ƒ  YZ d e f d „  ƒ  YZ e ƒ  Z	 e	 j
 Z
 e	 j Z e	 j Z d S(	   iÿÿÿÿ(   t   unicode_literals(   t   chain(   t   is_iterablet   Tagsc           B  sD   e  Z d  Z d Z d Z d Z d Z d Z d Z d Z	 d Z
 d	 Z RS(
   u,   
    Built-in tags for internal checks.
    u   adminu   cachesu   compatibilityu   databaseu   modelsu   securityu   signalsu	   templatesu   urls(   t   __name__t
   __module__t   __doc__t   admint   cachest   compatibilityt   databaset   modelst   securityt   signalst	   templatest   urls(    (    (    s=   /tmp/pip-unpacked-wheel-BAJOf3/django/core/checks/registry.pyR   	   s   t   CheckRegistryc           B  sS   e  Z d  „  Z d d „ Z d d e d „ Z e d „ Z e d „ Z e d „ Z	 RS(   c         C  s   g  |  _  g  |  _ d  S(   N(   t   registered_checkst   deployment_checks(   t   self(    (    s=   /tmp/pip-unpacked-wheel-BAJOf3/django/core/checks/registry.pyt   __init__   s    	c           sY   ˆ  j  d t ƒ ‡  ‡ ‡ f d †  } t | ƒ r; | | ƒ S| rQ ˆ | f 7‰ n  | Sd S(   u  
        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')
        u   deployc           s^   ˆ |  _  ˆ  d r8 |  ˆ j k rZ ˆ j j |  ƒ qZ n" |  ˆ j k rZ ˆ j j |  ƒ n  |  S(   Nu   deploy(   t   tagsR   t   appendR   (   t   check(   t   kwargsR   R   (    s=   /tmp/pip-unpacked-wheel-BAJOf3/django/core/checks/registry.pyt   inner0   s    	
N(   t
   setdefaultt   Falset   callable(   R   R   R   R   R   (    (   R   R   R   s=   /tmp/pip-unpacked-wheel-BAJOf3/django/core/checks/registry.pyt   register   s    	
c         C  sí   g  } |  j  | ƒ } | d k	 re g  | D]4 } t | d ƒ r( t | j ƒ t | ƒ @r( | ^ q( } n; g  | D]. } t | d ƒ s” t j | j k rl | ^ ql } xF | D]> } | d | ƒ } t | ƒ sØ t d | ƒ ‚ | j	 | ƒ q§ W| S(   uS   
        Run all registered checks and return list of Errors and Warnings.
        u   tagst   app_configsul   The function %r did not return a list. All functions registered with the checks registry must return a list.N(
   t
   get_checkst   Nonet   hasattrt   setR   R   R
   R   t   AssertionErrort   extend(   R   R   R   t   include_deployment_checkst   errorst   checksR   t
   new_errors(    (    s=   /tmp/pip-unpacked-wheel-BAJOf3/django/core/checks/registry.pyt
   run_checks@   s    7.
c         C  s   | |  j  | ƒ k S(   N(   t   tags_available(   R   t   tagR%   (    (    s=   /tmp/pip-unpacked-wheel-BAJOf3/django/core/checks/registry.pyt
   tag_existsX   s    c         C  s>   t  t g  |  j | ƒ D] } t | d ƒ r | j ^ q Œ  ƒ S(   Nu   tags(   R"   R   R   R!   R   (   R   R   R   (    (    s=   /tmp/pip-unpacked-wheel-BAJOf3/django/core/checks/registry.pyR*   [   s    c         C  s,   t  |  j ƒ } | r( | j |  j ƒ n  | S(   N(   t   listR   R$   R   (   R   R%   R'   (    (    s=   /tmp/pip-unpacked-wheel-BAJOf3/django/core/checks/registry.pyR   ^   s    N(
   R   R   R   R    R   R   R)   R,   R*   R   (    (    (    s=   /tmp/pip-unpacked-wheel-BAJOf3/django/core/checks/registry.pyR      s   	"N(   t
   __future__R    t	   itertoolsR   t   django.utils.itercompatR   t   objectR   R   t   registryR   R)   R,   (    (    (    s=   /tmp/pip-unpacked-wheel-BAJOf3/django/core/checks/registry.pyt   <module>   s   M			