
    Evg1                         d dl Z d dlZd dlmZ d dlmZ  edd          Z e ej        d                    Z	 G d d          Z
d	 Zdd
Z	 	 ddZddZd ZdS )    N)
namedtuple)RECURSIVE_RELATIONSHIP_CONSTANTFieldReferencez
to through c                       e Zd Zd Zd ZdS )RegexObjectc                 6    |j         | _         |j        | _        d S N)patternflags)selfobjs     W/var/www/pixelcanvas.ch/venv/lib/python3.11/site-packages/django/db/migrations/utils.py__init__zRegexObject.__init__   s    {Y


    c                 z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r
   )
isinstancer   NotImplementedr   r   )r   others     r   __eq__zRegexObject.__eq__   s7    %-- 	"!!|u},Ju{1JJr   N)__name__
__module____qualname__r   r    r   r   r   r      s7          K K K K Kr   r   c                  d    t           j                                                             d          S )Nz%Y%m%d_%H%M)datetimenowstrftimer   r   r   get_migration_name_timestampr      s%      ""++M:::r   c                 T   t          | t                    r|| t          k    r||t          d          ||fS d| v r/|                     dd          \  }}||                                fS |t          d          ||                                 fS | j        j        | j        j        fS )z
    Turn a model class or model reference string and return a model tuple.

    app_label and model_name are used to resolve the scope of recursive and
    unscoped model relationship.
    NzMapp_label and model_name must be provided to resolve recursive relationships..   zCapp_label must be provided to resolve unscoped model relationships.)	r   strr   	TypeErrorsplitlower_meta	app_label
model_name)modelr(   r)   s      r   resolve_relationr+      s     % (333 J$6/   j((%<<$)KKQ$7$7!Izj..0000U   %++--''; %+"888r   c                 :   |j         }|sdS d}d}t          |j        g| R  |k    r*t          |dd          }||d|v r	||j        s||v r||f}t          |dd          }	|	r$t          |	g| R  |k    r|j        }
||
||
v r||
f}|s|sdS t          ||          S )at  
    Return either False or a FieldReference if `field` references provided
    context.

    False positives can be returned if `reference_field_name` is provided
    without `reference_field` because of the introspection limitation it
    incurs. This should not be an issue when this function is used to determine
    whether or not an optimization can take place.
    FN	to_fieldsthrough)remote_fieldr+   r*   getattrprimary_keythrough_fieldsr   )model_tuplefieldreference_model_tuplereference_field_namereference_fieldr/   references_toreferences_throughr-   r.   r2   s              r   field_referencesr:   5   s     %L uM*9[999=RRRE;55	 (  	!!$,0K, !I--)95MlIt44G @#G:k:::>SSS%4 ( " !N22".!? / u-);<<<r   r   c              #      K   | j                                         D ]=\  }}|j                                        D ]\  }}t          |||g|R  }|r||||fV  >dS )z
    Generator of (model_state, name, field, reference) referencing
    provided context.

    If field_tuple is provided only references to this particular field of
    model_tuple will be generated.
    N)modelsitemsfieldsr:   )stater3   field_tuplestate_model_tuplemodel_statenamer4   	references           r   get_referencesrE   n   s       +0,*<*<*>*> : :&;&-3355 	: 	:KD%(!5+8C  I  :!4	9999	:: :r   c                 D    t          t          | ||          d          duS )z?Return whether `field_tuple` is referenced by any state models.N)nextrE   )r?   r3   r@   s      r   field_is_referencedrH      s#    uk;??FFdRRr   )NN)r   )r   recollectionsr   django.db.models.fields.relatedr   r   typecompileCOMPILED_REGEX_TYPEr   r   r+   r:   rE   rH   r   r   r   <module>rO      s	    				 " " " " " " K K K K K K,l;;d:2:b>>** K K K K K K K K; ; ;9 9 9 9< 6= 6= 6= 6=r: : : :"S S S S Sr   