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   úV/var/www/html/premium_crap/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    	
