
    Evg                     f    d dl Z d dlmZ d Zd Zd Ze j        d             Z G d d          ZdS )	    N)
namedtuplec                 h   	 t          | t                    r| }n\t          | t                    r/|                     d          \  }}||                                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       S/var/www/pixelcanvas.ch/venv/lib/python3.11/site-packages/django/db/models/utils.pymake_model_tupler      s    
eU## 	HKKs## 	H$)KK$4$4!Iz#Z%5%5%7%77KK+/1GGK;1$$$$' 
 
 
9;@A
 
 	

s   B
B $B1c              #   |   K   |                                  D ]$\  }}|t          |          r
 |            n|fV  %dS )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      sV      
  + +1******+ +    c                      t          |  | S N)create_namedtuple_class)namesvaluess     r   unpickle_named_rowr#   %   s    *"E*F33r   c                  T      fd}t          dt          d           f|dd          S )Nc                 4    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    )   sN    8 8 8 8 8 	E5	!	!#!3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          |                                           D ]_\  }}t          |          rKt          |d          s;| j        D ]3}t          ||d           x}rt          |d          r|j        |_         n4` t                      j        di | d S )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__<   s    99??,, 	 	KGR|| GB$>$> M  D")$">">>w "7M:: A-4-@BN
 	"!++F+++++r   )__name__
__module____qualname____doc__r5   __classcell__)r<   s   @r   r-   r-   7   sB         	, 	, 	, 	, 	, 	, 	, 	, 	,r   r-   )		functoolscollectionsr   r   r   r#   	lru_cacher    r-   r)   r   r   <module>rE      s        " " " " " "
 
 
.+ + +4 4 4 
 
 
, , , , , , , , , ,r   