
    g                     b    d dl Z d dlmZ d Zd Zd Ze j                  d        Z G d d      Zy)	    N)
namedtuplec                 V   	 t        | t              r| }nct        | t              r'| j                  d      \  }}||j	                         f}n,| j
                  j                  | j
                  j                  f}t        |      dk(  sJ |S # t        t        f$ r t        d| z        w xY w)z
    Take a model or a string of the form "app_label.ModelName" and return a
    corresponding ("app_label", "modelname") tuple. If a tuple is passed in,
    assume it's a valid model tuple already and return it unchanged.
    .   z`Invalid model reference '%s'. String model references must be of the form 'app_label.ModelName'.)
isinstancetuplestrsplitlower_meta	app_label
model_namelen
ValueErrorAssertionError)modelmodel_tupler   r   s       n/var/www/python.vincentserveurtest.ovh/public_html/venv/lib/python3.12/site-packages/django/db/models/utils.pymake_model_tupler      s    
eU#Ks#$)KK$4!Iz#Z%5%5%77K++//1G1GGK;1$$$' 
9;@A
 	

s   BB
 
B(c              #   l   K   | j                         D ]  \  }}|t        |      r |       n|f  yw)zp
    Generate key/value pairs for the given mapping where the values are
    evaluated if they're callable.
    N)itemscallable)mappingkvs      r   resolve_callablesr      s1     
 1**  s   24c                      t        |  | S N)create_namedtuple_class)namesvaluess     r   unpickle_named_rowr"   %   s    *"E*F33    c                  D      fd}t        dt        d       f|dd      S )Nc                 *    t         t        |       ffS r   )r"   r   )selfr    s    r   
__reduce__z+create_namedtuple_class.<locals>.__reduce__-   s    !E5;#777r#   Row )r'   	__slots__)typer   )r    r'   s   ` r   r   r   )   s/    8 	E5	!#!3 r#   c                   "     e Zd ZdZ fdZ xZS )
AltersDatazS
    Make subclasses preserve the alters_data attribute on overridden methods.
    c                    t        |       j                         D ]]  \  }}t        |      st        |d      r| j                  D ]0  }t        ||d       x}st        |d      r|j                  |_         ] _ t        |    di | y )Nalters_datar)   )	varsr   r   hasattr	__bases__getattrr/   super__init_subclass__)clskwargsfn_namefnbasebase_fn	__class__s         r   r5   zAltersData.__init_subclass__<   sz    9??,KGR|GB$>MMD")$">>w>"7M:-4-@-@BN	 * - 	!+F+r#   )__name__
__module____qualname____doc__r5   __classcell__)r<   s   @r   r-   r-   7   s    	, 	,r#   r-   )		functoolscollectionsr   r   r   r"   	lru_cacher   r-   r)   r#   r   <module>rE      s>     "
.+4 
 
, ,r#   