U
    7h                     @   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| }n6t | tr8| d\}}|| f}n| jj| jjf}t|dksXt	|W S  t
t	fk
r   t
d|  Y nX dS )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'.N)
isinstancetuplestrsplitlower_meta	app_label
model_namelenAssertionError
ValueError)modelZmodel_tupler   r    r   P/var/www/formularioweb/env/lib/python3.8/site-packages/django/db/models/utils.pymake_model_tuple   s    

r   c                 c   s.   |   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                    sl   t |  D ]L\}}t|rt|ds| jD ]*}t||d  }r,t|drR|j|_ qq,qt jf | d S )Nalters_data)	varsr   r   hasattr	__bases__getattrr&   super__init_subclass__)clskwargsfn_namefnbaseZbase_fn	__class__r   r   r,   <   s    

zAltersData.__init_subclass__)__name__
__module____qualname____doc__r,   __classcell__r   r   r2   r   r%   7   s   r%   )		functoolscollectionsr   r   r   r   	lru_cacher   r%   r   r   r   r   <module>   s   	
