o
    ˷eH                     @   s>   d dl Z d dlmZ dd Zdd Zdd Ze j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   M/var/www/ideatree/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   )	functoolscollectionsr   r   r   r   	lru_cacher   r   r   r   r   <module>   s    	