
    h                         d dl Z d dlZd dlmZ d dlmZ d dlmZ  G d d      Z G d dej                  e            Z
 G d	 d
      Z G d de
      Zy)    N)import_module)router)QuerySetc                        e Zd ZdZdZdZ fdZ fdZd Zd Z	d Z
d Zed	        Zedd
       Zd Zd ZddZed        Zd Zd Zd Zd Z xZS )BaseManagerr   Fc                 8    t         |   |       }||f|_        |S N)super__new___constructor_args)clsargskwargsobj	__class__s       [/var/www/html/ranktracker/api/venv/lib/python3.12/site-packages/django/db/models/manager.pyr   zBaseManager.__new__   s"    goc"!%v
    c                 z    t         |           | j                          d | _        d | _        d | _        i | _        y r	   )r
   __init___set_creation_countermodelname_db_hintsselfr   s    r   r   zBaseManager.__init__   s6    ""$
	r   c                 `    | j                   j                  j                  d| j                  S )z,Return "app_label.model_label.manager_name"..)r   _metalabelr   r   s    r   __str__zBaseManager.__str__"   s!    ****00$))<<r   c                     | S r	    )r   r   r   s      r   __class_getitem__zBaseManager.__class_getitem__&   s    
r   c                 V   | j                   }t        | dd      r dd|j                  d|j                  ddfS | j                  }| j                  j                  }t        |      }t        ||      st        d|d|d      d|d|d| j                  d	   | j                  d
   fS )z
        Return a 5-tuple of the form (as_manager (True), manager_class,
        queryset_class, args, kwargs).

        Raise a ValueError if the manager is dynamically generated.
        _built_with_as_managerFTNr   zCould not find manager z in zf.
Please note that you need to inherit from managers you dynamically generated with 'from_queryset()'.r      )	_queryset_classgetattr
__module____name__r   r   hasattr
ValueErrorr   )r   qs_classmodule_namer   modules        r   deconstructzBaseManager.deconstruct)   s     ''4159 #..0A0AB  //K>>**D";/F64(  [*  &-&&q)&&q) r   c                     g S r	   r$   )r   r   s     r   checkzBaseManager.checkN   s    	r   c                     d }i }t        j                  |t         j                        D ]A  \  }}t        | |      rt	        |dd       }|s||j                  d      r6 |||      ||<   C |S )Nc                 V      fd}|j                   |_         |j                  |_        |S )Nc                 D     t        | j                               |i |S r	   )r*   get_queryset)r   r   r   r   s      r   manager_methodzPBaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methodT   s%    9wt002D94J6JJr   )r,   __doc__)r   methodr9   s   `  r   create_methodz8BaseManager._get_queryset_methods.<locals>.create_methodS   s'    K&,ooN#%+^^N"!!r   )	predicatequeryset_only_)inspect
getmembers
isfunctionr-   r*   
startswith)r   queryset_classr<   new_methodsr   r;   r>   s          r   _get_queryset_methodsz!BaseManager._get_queryset_methodsQ   s~    	" #..~I[I[\ 		<LD&sD!#FOTBM!64??3;O -dF ;K		< r   c                 ~    || j                   d|j                   }t        || fd|i| j                  |            S )NFromr)   )r,   typerF   )r   rD   
class_names      r   from_querysetzBaseManager.from_querysetg   sL    '*||^5L5LMJJ~)
''7)
  	r   c                     | j                   xs || _         || _        t        ||t        |              |j                  j                  |        y r	   )r   r   setattrManagerDescriptorr   add_manager)r   r   r   s      r   contribute_to_classzBaseManager.contribute_to_classp   s=    II%	
t.t45%r   c                 `    t         j                  | _        t         xj                  dz  c_        y)zn
        Set the creation counter value for this instance and increment the
        class-level copy.
        r(   N)r   creation_counterr!   s    r   r   z!BaseManager._set_creation_counterx   s#    
 !, < <$$)$r   c                     t        j                   |       }|xs | j                  |_        |xs | j                  |_        |S r	   )copyr   r   )r   usinghintsr   s       r   
db_managerzBaseManager.db_manager   s4    iio#488)dkk

r   c                 r    | j                   xs* t        j                  | j                  fi | j                  S r	   )r   r   db_for_readr   r   r!   s    r   dbzBaseManager.db   s)    xxH6--djjHDKKHHr   c                 f    | j                  | j                  | j                  | j                        S )z
        Return a new QuerySet object. Subclasses can override this method to
        customize the behavior of the Manager.
        )r   rU   rV   )r)   r   r   r   r!   s    r   r8   zBaseManager.get_queryset   s(    
 ##$**DHHDKK#XXr   c                 "    | j                         S r	   )r8   r!   s    r   allzBaseManager.all   s       ""r   c                 d    t        || j                        xr | j                  |j                  k(  S r	   )
isinstancer   r   )r   others     r   __eq__zBaseManager.__eq__   s.    udnn- >""e&=&==	
r   c                     t        |       S r	   )idr!   s    r   __hash__zBaseManager.__hash__   s    $xr   r	   )NN)r,   r+   __qualname__rR   auto_createduse_in_migrationsr   r   r"   r%   r2   r4   classmethodrF   rK   rP   r   rW   propertyrZ   r8   r]   ra   rd   __classcell__r   s   @r   r   r   	   s     L =#J  *  &* I IY#
r   r   c                       e Zd Zy)ManagerN)r,   r+   re   r$   r   r   rm   rm      s    r   rm   c                       e Zd Zd ZddZy)rN   c                     || _         y r	   )manager)r   rp   s     r   r   zManagerDescriptor.__init__   s	    r   Nc           	         |t        d|j                  z        |j                  j                  r#t        d|j                  j                  d      |j                  j
                  rQt        d|j                  j                  d|j                  j                  d|j                  j
                  d      |j                  j                  | j                  j                     S )Nz)Manager isn't accessible via %s instanceszManager isn't available; z is abstractzManager isn't available; 'r   z' has been swapped for '')
AttributeErrorr,   r   abstractobject_nameswapped	app_labelmanagers_maprp   r   )r   instancer   s      r   __get__zManagerDescriptor.__get__   s     !Ls||![\\99 		%%"   99 II''II))II%%  yy%%dll&7&788r   r	   )r,   r+   re   r   rz   r$   r   r   rN   rN      s    9r   rN   c                   (     e Zd Z fdZ fdZ xZS )EmptyManagerc                 0    t         |           || _        y r	   )r
   r   r   )r   r   r   s     r   r   zEmptyManager.__init__   s    
r   c                 <    t         |          j                         S r	   )r
   r8   noner   s    r   r8   zEmptyManager.get_queryset   s    w#%**,,r   )r,   r+   re   r   r8   rj   rk   s   @r   r|   r|      s    - -r   r|   )rT   r@   	importlibr   	django.dbr   django.db.models.queryr   r   rK   rm   rN   r|   r$   r   r   <module>r      sN      #  +\ \~	k''1 	9 94-7 -r   