
    h1                         S SK r S SKrS SKJr  S SKJr  \" SS5      r\" \R                  " S5      5      r	 " S S5      r
S	 rSS
 jr  SS jrSS jrS rg)    N)
namedtuple)RECURSIVE_RELATIONSHIP_CONSTANTFieldReferencez
to through c                        \ rS rSrS rS rSrg)RegexObject   c                 H    UR                   U l         UR                  U l        g N)patternflags)selfobjs     L/var/www/html/env/lib/python3.13/site-packages/django/db/migrations/utils.py__init__RegexObject.__init__   s    {{YY
    c                     [        U[        5      (       d  [        $ U R                  UR                  :H  =(       a    U R                  UR                  :H  $ r   )
isinstancer   NotImplementedr   r   )r   others     r   __eq__RegexObject.__eq__   s:    %--!!||u}},Ju{{1JJr   )r   r   N)__name__
__module____qualname____firstlineno__r   r   __static_attributes__ r   r   r   r      s    Kr   r   c                  \    [         R                   R                  5       R                  S5      $ )Nz%Y%m%d_%H%M)datetimenowstrftimer   r   r   get_migration_name_timestampr$      s"      "++M::r   c                 T   [        U [        5      (       ah  U [        :X  a  Ub  Uc  [        S5      eX4$ SU ;   a%  U R	                  SS5      u  pXR                  5       4$ Uc  [        S5      eXR                  5       4$ U R                  R                  U R                  R                  4$ )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.
zMapp_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_relationr0      s     %33 J$6/  ((%<$)KKQ$7!I..000U  ++-'';;  %++"8"888r   c                    UR                   nU(       d  gSnSn[        UR                  /U Q76 U:X  a5  [        USS5      nUb"  Ub  SU;   a  Ub  UR                  (       d  X8;   a  XX4n[        USS5      n	U	(       a*  [        U	/U Q76 U:X  a  UR
                  n
Ub  U
b  X:;   a  XZ4nU(       d  U(       d  g[        Xg5      $ )aX  
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_fieldr0   r/   getattrprimary_keythrough_fieldsr   )model_tuplefieldreference_model_tuplereference_field_namereference_fieldr4   references_toreferences_throughr2   r3   r7   s              r   field_referencesr?   5   s      %%LM**9[9=RRE;5	 (  	!$,0K0K !-)5MlIt4G#G:k:>SS%44 ( " !2".!?/-<<r   c              #      #    U R                   R                  5        HD  u  p4UR                  R                  5        H!  u  pV[        X6U/UQ76 nU(       d  M  XEXg4v   M#     MF     g7f)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?   )stater8   field_tuplestate_model_tuplemodel_statenamer9   	references           r   get_referencesrJ   n   sf      +0,,*<*<*>&&--335KD(!+8CI y!99 6 +?s   AA&A&c                 2    [        [        XU5      S5      SL$ )z?Return whether `field_tuple` is referenced by any state models.N)nextrJ   )rD   r8   rE   s      r   field_is_referencedrM      s    u;?FdRRr   )NN)r   )r!   recollectionsr   django.db.models.fields.relatedr   r   typecompileCOMPILED_REGEX_TYPEr   r$   r0   r?   rJ   rM   r   r   r   <module>rT      s`     	 " K,l;2::b>* K K;9< 6=r:"Sr   