
    h                         d Z  G d d      Zy))QueryFieldListc                   F    e Zd ZdZdZdZdeddfdZd Zd Zd	 Z	d
 Z
d Zy)r   z@Object that handles combinations of .only() and .exclude() calls       NFc                     || _         t        |xs g       | _        t        |xs g       | _        d| _        || _        i | _        y)a|  The QueryFieldList builder

        :param fields: A list of fields used in `.only()` or `.exclude()`
        :param value: How to handle the fields; either `ONLY` or `EXCLUDE`
        :param always_include: Any fields to always_include eg `_cls`
        :param _only_called: Has `.only()` been called?  If so its a set of fields
           otherwise it performs a union.
        N)valuesetfieldsalways_include_id_only_calledslice)selfr	   r   r
   r   s        ]/var/www/html/eduruby.in/venv/lib/python3.12/site-packages/mongoengine/queryset/field_list.py__init__zQueryFieldList.__init__
   sC     
&,B'!."6B7(
    c                    t        |j                  t              rJ|j                  D ]  }|j                  | j                  |<    | j                  s|j                  | _        n| j                  s+|j                  | _        |j                  | _        i | _        n| j                  | j
                  u rs|j                  | j
                  u r[| j                          | j                  r,| j                  j                  |j                        | _        nM|j                  | _        n:| j                  | j                  u rS|j                  | j                  u r;| j                  j                  |j                        | _        | j                          n| j                  | j
                  u rH|j                  | j                  u r0| xj                  |j                  z  c_        | j                          no| j                  | j                  u rW|j                  | j
                  u r?| j
                  | _        |j                  | j                  z
  | _        | j                          d|j                  v r|j                  | _
        | j                  r| j                  | j
                  u rp| j                  rdt        | j                  j                               t        | j                        k7  rJ| j                  j                  | j                        | _        n| xj                  | j                  z  c_        t        |dd      rd| _        | S )Nr   r   FT)
isinstancer   dictr	   r   ONLY_clean_slicer   unionEXCLUDEr   r
   sortedkeysgetattr)r   ffields      r   __add__zQueryFieldList.__add__   s0   aggt$ ,$%GG

5!,;;hh((DKDJDJZZ499$DII)=  "kk//9hhZZ4<<'AGGt||,C++++AHH5DKZZ499$DLL)@KK188#KZZ4<<'AGGtyy,@DJ((T[[0DKAHHwwDHzzTYY&4;;$**//+,t{{0CC"&++"3"3D4G4G"HDKt2221ne, $Dr   c                 ,    t        | j                        S N)boolr	   r   s    r   __bool__zQueryFieldList.__bool__E   s    DKK  r   c                     | j                   D ci c]  }|| j                   }}| j                  r|j                  | j                         | j                  | j                  |d<   |S c c}w )Nr   )r	   r   r   updater   )r   r   
field_lists      r   as_dictzQueryFieldList.as_dictH   s_    59[[AEeTZZ'A
A::djj)88 $Ju Bs   A)c                 R    t               | _        i | _        | j                  | _        y r    )r   r	   r   r   r   r"   s    r   resetzQueryFieldList.resetP   s    e
YY
r   c                     | j                   rCt        | j                   j                               | j                  z
  D ]  }| j                   |=  y y r    )r   r   r   r	   )r   r   s     r   r   zQueryFieldList._clean_sliceU   sB    ::TZZ__./$++= &JJu%& r   )__name__
__module____qualname____doc__r   r   r   r   r#   r'   r)   r    r   r   r   r      s9    JDG d$'R!
&r   r   N)__all__r   r/   r   r   <module>r1      s   
T& T&r   