
    h                     b    S SK r S SKJr  S rS rS r\ R                  S 5       r " S S5      rg)	    N)
namedtuplec                 j    [        U [        5      (       a  U nOf[        U [        5      (       a%  U R                  S5      u  p#X#R	                  5       4nO,U R
                  R                  U R
                  R                  4n[        U5      S:X  d   eU$ ! [        [        4 a    [        SU -  5      ef = f)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       H/var/www/html/env/lib/python3.13/site-packages/django/db/models/utils.pymake_model_tupler      s    
eU##Ks##$)KK$4!I#%5%5%77K++//1G1GGK;1$$$' 
9;@A
 	

s   BB B2c              #   x   #    U R                  5        H"  u  pU[        U5      (       a  U" 5       OU4v   M$     g7f)zd
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      s0     
 **  s   8:c                     [        U 6 " U6 $ N)create_namedtuple_class)namesvaluess     r   unpickle_named_rowr"   %   s    "E*F33    c                  F   ^  U 4S jn[        S[        ST 5      4USS.5      $ )Nc                 *   > [         T[        U 5      44$ r   )r"   r   )selfr    s    r   
__reduce__+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                   ,   ^  \ rS rSrSrU 4S jrSrU =r$ )
AltersData7   zK
Make subclasses preserve the alters_data attribute on overridden methods.
c                 J  > [        U 5      R                  5        Hu  u  p#[        U5      (       d  M  [        US5      (       a  M*  U R                   H;  n[        XBS 5      =n(       d  M  [        US5      (       a  UR                  Ul          Ms     Mw     [        TU ]   " S0 UD6  g )Nalters_datar*   )	varsr   r   hasattr	__bases__getattrr1   super__init_subclass__)clskwargsfn_namefnbasebase_fn	__class__s         r   r7   AltersData.__init_subclass__<   s~    9??,KG||GB$>$>MMD")$">>w>"7M::-4-@-@BN	 * - 	!+F+r#   r*   )__name__
__module____qualname____firstlineno____doc__r7   __static_attributes____classcell__)r>   s   @r   r.   r.   7   s    	, 	,r#   r.   )		functoolscollectionsr   r   r   r"   	lru_cacher   r.   r*   r#   r   <module>rJ      s>     "
.+4 
 
, ,r#   