
    h                     :    d dl mZ d dlmZ dZ G d d      Zd Zy)    )partial)QuerySet)queryset_managerQuerySetManagerc                   &    e Zd ZdZdZeZddZd Zy)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                     |r|| _         y y N)get_queryset)selfqueryset_funcs     Z/var/www/html/eduruby.in/venv/lib/python3.12/site-packages/mongoengine/queryset/manager.py__init__zQuerySetManager.__init__   s     -D     c                 p   || S |j                   j                  d| j                        } |||j                               }| j                  rh| j                  j
                  j                  }|dk(  r| j	                  |      }|S |dk(  r| j	                  ||      }|S t        | j                  ||      }|S )zfDescriptor for instantiating a new QuerySet object when
        Document.objects is accessed.
        queryset_class      )_metagetdefault_get_collectionr
   __code__co_argcountr   )r   instanceownerr   queryset	arg_counts         r   __get__zQuerySetManager.__get__   s     K )94<<H!%)>)>)@A))22>>IA~,,X6
 	 a,,UH=  #4#4#4eXFr   r	   )	__name__
__module____qualname____doc__r
   r   r   r   r    r   r   r   r      s    
 LG.r   r   c                     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   )funcs    r   r   r   2   s     4  r   N)	functoolsr   mongoengine.queryset.querysetr   __all__r   r   r#   r   r   <module>r)      s      2
1' 'T!r   