o
    {,h                     @   sL   d dl Z d dlmZ dd Zdd Zdd Ze jd	d
 ZG dd dZdS )    N)
namedtuplec              	   C   s|   z.t | tr	| }nt | tr| d\}}|| f}n| jj| jjf}t|dks,J |W S  t	t
fy=   t	d|  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    r   L/var/www/html/rh/venv/lib/python3.10/site-packages/django/db/models/utils.pymake_model_tuple   s    

r   c                 c   s0    |   D ]\}}|t|r| n|fV  q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vr   r   r   resolve_callables   s   r   c                 C   s   t |  | S N)create_namedtuple_class)namesvaluesr   r   r   unpickle_named_row%   s   r   c                     s&    fdd}t dtd f|ddS )Nc                    s   t  t| ffS r   )r   r   )selfr   r   r   
__reduce__-   s   z+create_namedtuple_class.<locals>.__reduce__Rowr   )r"   	__slots__)typer   )r   r"   r   r!   r   r   )   s   
r   c                       s    e Zd ZdZ fddZ  ZS )
AltersDatazS
    Make subclasses preserve the alters_data attribute on overridden methods.
    c                    sp   t |  D ]&\}}t|r,t|ds,| jD ]}t||d  }r+t|dr)|j|_ nqq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__r   r   r-   <   s   

zAltersData.__init_subclass__)__name__
__module____qualname____doc__r-   __classcell__r   r   r4   r   r&   7   s    r&   )		functoolscollectionsr   r   r   r   	lru_cacher   r&   r   r   r   r   <module>   s    	
