ó
®â0_c           @   sÓ   d  d l  Z  d  d l Z d  d l m Z d  d l m Z d  d l m Z d  d l m	 Z	 d  d l
 m Z e d e f d „  ƒ  Yƒ Z d	 e j e ƒ f d
 „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d S(   iÿÿÿÿN(   t   import_module(   t   router(   t   QuerySet(   t   six(   t   python_2_unicode_compatiblet   BaseManagerc           B   sÅ   e  Z d  Z e Z e Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 e d „  ƒ Z e d d „ ƒ Z d „  Z d	 „  Z d d d
 „ Z e d „  ƒ Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   i    c         O   s+   t  t |  ƒ j |  ƒ } | | f | _ | S(   N(   t   superR   t   __new__t   _constructor_args(   t   clst   argst   kwargst   obj(    (    s:   /tmp/pip-unpacked-wheel-BAJOf3/django/db/models/manager.pyR      s    c         C   sE   t  t |  ƒ j ƒ  |  j ƒ  d  |  _ d  |  _ d  |  _ i  |  _ d  S(   N(	   R   R   t   __init__t   _set_creation_countert   Nonet   modelt   namet   _dbt   _hints(   t   self(    (    s:   /tmp/pip-unpacked-wheel-BAJOf3/django/db/models/manager.pyR      s    
			c         C   s   d |  j  j j |  j f S(   s.    Return "app_label.model_label.manager_name". s   %s.%s(   R   t   _metat   labelR   (   R   (    (    s:   /tmp/pip-unpacked-wheel-BAJOf3/django/db/models/manager.pyt   __str__%   s    c         C   s¶   |  j  } t |  d t ƒ r> t d d | j | j f d d f S|  j } |  j j } t | ƒ } t	 | | ƒ s‡ t
 d | | f ƒ ‚ n  t d | | f d |  j d |  j d f Sd S(   s¿   
        Returns a 5-tuple of the form (as_manager (True), manager_class,
        queryset_class, args, kwargs).

        Raises a ValueError if the manager is dynamically generated.
        t   _built_with_as_managers   %s.%ss…   Could not find manager %s in %s.
Please note that you need to inherit from managers you dynamically generated with 'from_queryset()'.i    i   N(   t   _queryset_classt   getattrt   Falset   TrueR   t
   __module__t   __name__t	   __class__R    t   hasattrt
   ValueErrorR   (   R   t   qs_classt   module_nameR   t   module(    (    s:   /tmp/pip-unpacked-wheel-BAJOf3/django/db/models/manager.pyt   deconstruct)   s&    		
c         K   s   g  S(   N(    (   R   R   (    (    s:   /tmp/pip-unpacked-wheel-BAJOf3/django/db/models/manager.pyt   checkN   s    c         C   sµ   d „  } i  } t  j r! t j n t j } x„ t j | d | ƒD]m \ } } t |  | ƒ ra q@ n  t | d d  ƒ } | s@ | d  k rš | j	 d ƒ rš q@ n  | | | ƒ | | <q@ W| S(   Nc            s+   ‡  f d †  } | j  | _  | j | _ | S(   Nc            s   t  |  j ƒ  ˆ  ƒ | | Ž  S(   N(   R   t   get_queryset(   R   R
   R   (   R   (    s:   /tmp/pip-unpacked-wheel-BAJOf3/django/db/models/manager.pyt   manager_methodT   s    (   R   t   __doc__(   R   t   methodR(   (    (   R   s:   /tmp/pip-unpacked-wheel-BAJOf3/django/db/models/manager.pyt   create_methodS   s    t	   predicatet   queryset_onlyt   _(
   R   t   PY3t   inspectt
   isfunctiont   ismethodt
   getmembersR    R   R   t
   startswith(   R	   t   queryset_classR+   t   new_methodsR,   R   R*   R-   (    (    s:   /tmp/pip-unpacked-wheel-BAJOf3/django/db/models/manager.pyt   _get_queryset_methodsQ   s    	"!c         C   s[   | d  k r% d |  j | j f } n  i | d 6} | j |  j | ƒ ƒ t | |  f | ƒ S(   Ns   %sFrom%sR   (   R   R   t   updateR7   t   type(   R	   R5   t
   class_namet
   class_dict(    (    s:   /tmp/pip-unpacked-wheel-BAJOf3/django/db/models/manager.pyt   from_queryseti   s    
c         C   sH   |  j  s | |  _  n  | |  _ t | | t |  ƒ ƒ | j j |  ƒ d  S(   N(   R   R   t   setattrt   ManagerDescriptorR   t   add_manager(   R   R   R   (    (    s:   /tmp/pip-unpacked-wheel-BAJOf3/django/db/models/manager.pyt   contribute_to_classs   s
    		c         C   s   t  j |  _ t  j d 7_ d S(   sp   
        Sets the creation counter value for this instance and increments the
        class-level copy.
        i   N(   R   t   creation_counter(   R   (    (    s:   /tmp/pip-unpacked-wheel-BAJOf3/django/db/models/manager.pyR   |   s    c         C   s7   t  j  |  ƒ } | p |  j | _ | p- |  j | _ | S(   N(   t   copyR   R   (   R   t   usingt   hintsR   (    (    s:   /tmp/pip-unpacked-wheel-BAJOf3/django/db/models/manager.pyt
   db_manager„   s    c         C   s   |  j  p t j |  j |  j  S(   N(   R   R   t   db_for_readR   R   (   R   (    (    s:   /tmp/pip-unpacked-wheel-BAJOf3/django/db/models/manager.pyt   dbŠ   s    c         C   s%   |  j  d |  j d |  j d |  j ƒ S(   sŽ   
        Returns a new QuerySet object.  Subclasses can override this method to
        easily customize the behavior of the Manager.
        R   RC   RD   (   R   R   R   R   (   R   (    (    s:   /tmp/pip-unpacked-wheel-BAJOf3/django/db/models/manager.pyR'   ’   s    c         C   s
   |  j  ƒ  S(   N(   R'   (   R   (    (    s:   /tmp/pip-unpacked-wheel-BAJOf3/django/db/models/manager.pyt   all™   s    c         C   s"   t  | |  j ƒ o! |  j | j k S(   N(   t
   isinstanceR   R   (   R   t   other(    (    s:   /tmp/pip-unpacked-wheel-BAJOf3/django/db/models/manager.pyt   __eq__¢   s    c         C   s   |  | k S(   N(    (   R   RJ   (    (    s:   /tmp/pip-unpacked-wheel-BAJOf3/django/db/models/manager.pyt   __ne__¨   s    c         C   s
   t  |  ƒ S(   N(   t   id(   R   (    (    s:   /tmp/pip-unpacked-wheel-BAJOf3/django/db/models/manager.pyt   __hash__«   s    N(   R   R   RA   R   t   auto_createdt   use_in_migrationsR   R   R   R%   R&   t   classmethodR7   R   R<   R@   R   RE   t   propertyRG   R'   RH   RK   RL   RN   (    (    (    s:   /tmp/pip-unpacked-wheel-BAJOf3/django/db/models/manager.pyR      s(   				%										t   Managerc           B   s   e  Z RS(    (   R   R   (    (    (    s:   /tmp/pip-unpacked-wheel-BAJOf3/django/db/models/manager.pyRS   ¯   s   R>   c           B   s   e  Z d  „  Z d d „ Z RS(   c         C   s   | |  _  d  S(   N(   t   manager(   R   RT   (    (    s:   /tmp/pip-unpacked-wheel-BAJOf3/django/db/models/manager.pyR   µ   s    c         C   s˜   | d  k	 r" t d | j ƒ ‚ n  | j j rJ t d | j j f ƒ ‚ n  | j j r„ t d | j j | j j | j j f ƒ ‚ n  | j j |  j	 j
 S(   Ns)   Manager isn't accessible via %s instancess'   Manager isn't available; %s is abstracts:   Manager isn't available; '%s.%s' has been swapped for '%s'(   R   t   AttributeErrorR   R   t   abstractt   object_namet   swappedt	   app_labelt   managers_mapRT   R   (   R   t   instanceR	   (    (    s:   /tmp/pip-unpacked-wheel-BAJOf3/django/db/models/manager.pyt   __get__¸   s    		N(   R   R   R   R   R\   (    (    (    s:   /tmp/pip-unpacked-wheel-BAJOf3/django/db/models/manager.pyR>   ³   s   	t   EmptyManagerc           B   s   e  Z d  „  Z d „  Z RS(   c         C   s    t  t |  ƒ j ƒ  | |  _ d  S(   N(   R   R]   R   R   (   R   R   (    (    s:   /tmp/pip-unpacked-wheel-BAJOf3/django/db/models/manager.pyR   Î   s    c         C   s   t  t |  ƒ j ƒ  j ƒ  S(   N(   R   R]   R'   t   none(   R   (    (    s:   /tmp/pip-unpacked-wheel-BAJOf3/django/db/models/manager.pyR'   Ò   s    (   R   R   R   R'   (    (    (    s:   /tmp/pip-unpacked-wheel-BAJOf3/django/db/models/manager.pyR]   Í   s   	(   RB   R0   t	   importlibR    t	   django.dbR   t   django.db.models.queryR   t   django.utilsR   t   django.utils.encodingR   t   objectR   R<   RS   R>   R]   (    (    (    s:   /tmp/pip-unpacked-wheel-BAJOf3/django/db/models/manager.pyt   <module>   s   £