U
    Lk7g®  ã                   @   s6   d dl mZ d dlmZ dZG dd„ dƒZdd„ ZdS )	é    )Úpartial)ÚQuerySet)Úqueryset_managerÚQuerySetManagerc                   @   s*   e Zd ZdZdZeZddd„Zdd„ ZdS )r   aç  
    The default QuerySet Manager.

    Custom QuerySet Manager functions can extend this class and users can
    add extra queryset functionality.  Any custom manager methods must accept a
    :class:`~mongoengine.Document` class as its first argument, and a
    :class:`~mongoengine.queryset.QuerySet` as its second argument.

    The method function should return a :class:`~mongoengine.queryset.QuerySet`
    , probably the same one that was passed in, but modified in some way.
    Nc                 C   s   |r
|| _ d S )N)Úget_queryset)ÚselfZqueryset_func© r   ú@/tmp/pip-unpacked-wheel-n1etwkgt/mongoengine/queryset/manager.pyÚ__init__   s    zQuerySetManager.__init__c                 C   sv   |dk	r| S |j  d| j¡}||| ¡ ƒ}| jrr| jjj}|dkrN|  |¡}n$|dkrd|  ||¡}nt| j||ƒ}|S )zfDescriptor for instantiating a new QuerySet object when
        Document.objects is accessed.
        NÚqueryset_classé   é   )Z_metaÚgetÚdefaultZ_get_collectionr   Ú__code__Úco_argcountr   )r   ÚinstanceÚownerr   ZquerysetÚ	arg_countr   r   r	   Ú__get__   s    
zQuerySetManager.__get__)N)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r
   r   r   r   r   r	   r      s
   
r   c                 C   s   t | ƒS )aÁ  Decorator that allows you to define custom QuerySet managers on
    :class:`~mongoengine.Document` classes. The manager must be a function that
    accepts a :class:`~mongoengine.Document` class as its first argument, and a
    :class:`~mongoengine.queryset.QuerySet` as its second argument. The method
    function should return a :class:`~mongoengine.queryset.QuerySet`, probably
    the same one that was passed in, but modified in some way.
    )r   )Úfuncr   r   r	   r   2   s    r   N)Ú	functoolsr   Zmongoengine.queryset.querysetr   Ú__all__r   r   r   r   r   r	   Ú<module>   s   *