
    (phJ                     
   S SK r S SKJr  S SKJr  S SKJrJr  S SKJ	r	  S SK
JrJrJrJr  S SKJr  S SKJr  S S	KJr  S S
KJr  S SKJr  S SKJr  S SKJr  / SQr " S S5      r " S S\5      r  " S S\5      r! " S S\5      r"g)    N)Enum)NoneType)
FieldErrorValidationError)connections)ExistsExpressionListFOrderBy)IndexExpression)Exact)Q)Query)DEFAULT_DB_ALIAS)RemovedInDjango60Warning)gettext_lazy)BaseConstraintCheckConstraint
DeferrableUniqueConstraintc                       \ rS rSr\" S5      rSrSrSSSS.S jr\	S 5       r
S rS rS	 rS\4S
 jrS rS rS rSrg)r      u&   Constraint “%(name)s” is violated.Nnameviolation_error_codeviolation_error_messagec                |   Uc)  U(       d"  [        U R                  R                   S35      eXl        Ub  X l        Ub  X0l        OU R                  U l        U(       a_  [        R                  " SU R                  R                   S3[        SS9  [        USS/5       H  u  pVU(       d  M  [        XU5        M     g g )Nz<.__init__() missing 1 required keyword-only argument: 'name'z Passing positional arguments to z is deprecated.   )
stacklevelr   r   )	TypeError	__class____name__r   r   r   default_violation_error_messagewarningswarnr   zipsetattr)selfr   r   r   argsargattrs          O/var/www/html/venv/lib/python3.13/site-packages/django/db/models/constraints.py__init__BaseConstraint.__init__   s     <>>**+ ,# $  	+(<%".+B(+/+O+OD(MM24>>3J3J2K L (	 !0I'JK	3D, L     c                     g)NF r(   s    r,   contains_expressions#BaseConstraint.contains_expressions8   s    r/   c                     [        S5      eNz.This method must be implemented by a subclass.NotImplementedErrorr(   modelschema_editors      r,   constraint_sqlBaseConstraint.constraint_sql<       !"RSSr/   c                     [        S5      er6   r7   r9   s      r,   
create_sqlBaseConstraint.create_sql?   r>   r/   c                     [        S5      er6   r7   r9   s      r,   
remove_sqlBaseConstraint.remove_sqlB   r>   r/   c                     [        S5      er6   r7   )r(   r:   instanceexcludeusings        r,   validateBaseConstraint.validateE   r>   r/   c                 8    U R                   SU R                  0-  $ )Nr   )r   r   r2   s    r,   get_violation_error_message*BaseConstraint.get_violation_error_messageH   s    ++vtyy.AAAr/   c                 R   U R                   R                  < SU R                   R                  < 3nUR                  SS5      nSU R                  0nU R
                  b)  U R
                  U R                  :w  a  U R
                  US'   U R                  b  U R                  US'   USU4$ )N.zdjango.db.models.constraintszdjango.db.modelsr   r   r   r1   )r!   
__module__r"   replacer   r   r#   r   )r(   pathkwargss      r,   deconstructBaseConstraint.deconstructK   s    ..33T^^5L5LM||:<NO$))$((4,,0T0TT040L0LF,-$$0-1-F-FF)*b&!!r/   c                 L    U R                  5       u  pnU R                  " U0 UD6$ N)rT   r!   )r(   _r)   rS   s       r,   cloneBaseConstraint.cloneX   s(    **,~~t.v..r/   )r"   rP   __qualname____firstlineno__rX   r#   r   r   r-   propertyr3   r<   r@   rC   r   rI   rL   rT   rY   __static_attributes__r1   r/   r,   r   r      sm    &'(P&Q#" TSW-8  TTT 15<L TB"/r/   r   c                   v   ^  \ rS rSrSSS.U 4S jjrS rS rS rS rS\	4S	 jr
S
 rU 4S jrU 4S jrSrU =r$ )r   ]   N)r   r   c                j   > Xl         [        USS5      (       d  [        S5      e[        TU ]  UUUS9  g )NconditionalFzACheckConstraint.check must be a Q instance or boolean expression.r   )checkgetattrr    superr-   )r(   rc   r   r   r   r!   s        r,   r-   CheckConstraint.__init__^   sF     
umU33S  	!5$; 	 	
r/   c                    ^ [        USS9nUR                  U R                  5      nUR                  TR                  S9nUR                  UTR                  5      u  pgU[        U4S jU 5       5      -  $ )NFr:   
alias_cols
connectionc              3   F   >#    U  H  nTR                  U5      v   M     g 7frW   quote_value.0pr;   s     r,   	<genexpr>1CheckConstraint._get_check_sql.<locals>.<genexpr>q        HA=44Q77   !)r   build_whererc   get_compilerrk   as_sqltupler(   r:   r;   querywherecompilersqlparamss     `     r,   _get_check_sqlCheckConstraint._get_check_sqll   sj    Ee4!!$**-%%1I1I%Jll8]-E-EFUHHHHHr/   c                 \    U R                  X5      nUR                  U R                  U5      $ rW   )r   
_check_sqlr   r(   r:   r;   rc   s       r,   r<   CheckConstraint.constraint_sqls   s)    ##E9''		599r/   c                 \    U R                  X5      nUR                  XR                  U5      $ rW   )r   _create_check_sqlr   r   s       r,   r@   CheckConstraint.create_sqlw   s)    ##E9..uiiGGr/   c                 8    UR                  XR                  5      $ rW   )_delete_check_sqlr   r9   s      r,   rC   CheckConstraint.remove_sql{   s    ..uii@@r/   c                     UR                  UR                  US9n [        U R                  5      R                  XTS9(       d"  [	        U R                  5       U R                  S9eg ! [         a     g f = f)NmetarG   rH   code)_get_field_value_map_metar   rc   r   rL   r   r   )r(   r:   rF   rG   rH   againsts         r,   rI   CheckConstraint.validate~   ss    //U[['/R	TZZ=&&w&<%446T=V=V  =  		s   A	A& &
A32A3c           	      2   SU R                   R                  < SU R                  < S[        U R                  5      < U R
                  c  SOSU R
                  -  < U R                  b  U R                  U R                  :X  a  SOSU R                  -  < S3	$ )N<z: check=z name=  violation_error_code=%r violation_error_message=%r>)r!   r[   rc   reprr   r   r   r#   r2   s    r,   __repr__CheckConstraint.__repr__   s    NN''JJO ,,4 /$2K2KKL //7//43W3WW  3T5Q5QQR
 	
r/   c                 >  > [        U[        5      (       ay  U R                  UR                  :H  =(       aY    U R                  UR                  :H  =(       a9    U R                  UR                  :H  =(       a    U R
                  UR
                  :H  $ [        TU ]  U5      $ rW   )
isinstancer   r   rc   r   r   re   __eq__r(   otherr!   s     r,   r   CheckConstraint.__eq__   s    e_--		UZZ' RJJ%++-R--1K1KKR 00E4Q4QQ	 w~e$$r/   c                 L   > [         TU ]  5       u  pnU R                  US'   XU4$ )Nrc   )re   rT   rc   r(   rR   r)   rS   r!   s       r,   rT   CheckConstraint.deconstruct   s-    "W02F**w6!!r/   )rc   )r"   rP   r[   r\   r-   r   r<   r@   rC   r   rI   r   r   rT   r^   __classcell__r!   s   @r,   r   r   ]   sK    37QU
 
I:HA 15<L 
$%" "r/   r   c                   "    \ rS rSrSrSrS rSrg)r      deferred	immediatec                 L    U R                   R                   SU R                   3$ )NrO   )r!   r[   _name_r2   s    r,   r   Deferrable.__repr__   s"    ..--.a}==r/   r1   N)r"   rP   r[   r\   DEFERRED	IMMEDIATEr   r^   r1   r/   r,   r   r      s    HI>r/   r   c            
          ^  \ rS rSrSSSSSSSSSS.	U 4S jjr\S 5       rS rS rS	 r	S
 r
S rS rU 4S jrU 4S jrS\4S jrSrU =r$ )r      r1   N)	fieldsr   	condition
deferrableinclude	opclassesnulls_distinctr   r   c       	         0  > U(       d  [        S5      eU
(       d  U(       d  [        S5      eU
(       a  U(       a  [        S5      e[        U[        [        45      (       d  [        S5      eU(       a  U(       a  [        S5      eU(       a  U(       a  [        S5      eU(       a  U(       a  [        S5      eU
(       a  U(       a  [        S5      eU
(       a  U(       a  [        S	5      e[        U[        [        45      (       d  [        S
5      e[        U[        [        [        45      (       d  [        S5      e[        U[        [        45      (       d  [        S5      e[        U[        [        45      (       d  [        S5      eU(       a#  [        U5      [        U5      :w  a  [        S5      e[        U5      U l
        X0l        X@l        U(       a  [        U5      OSU l        X`l        Xpl        [        S U
 5       5      U l        ["        TU ]I  UUU	S9  g )Nz"A unique constraint must be named.zKAt least one field or expression is required to define a unique constraint.z?UniqueConstraint.fields and expressions are mutually exclusive.z0UniqueConstraint.condition must be a Q instance.z4UniqueConstraint with conditions cannot be deferred.z8UniqueConstraint with include fields cannot be deferred.z3UniqueConstraint with opclasses cannot be deferred.z5UniqueConstraint with expressions cannot be deferred.zrUniqueConstraint.opclasses cannot be used with expressions. Use django.contrib.postgres.indexes.OpClass() instead.z:UniqueConstraint.deferrable must be a Deferrable instance.z1UniqueConstraint.include must be a list or tuple.z3UniqueConstraint.opclasses must be a list or tuple.z/UniqueConstraint.nulls_distinct must be a bool.z]UniqueConstraint.fields and UniqueConstraint.opclasses must have the same number of elements.r1   c              3   f   #    U  H'  n[        U[        5      (       a  [        U5      OUv   M)     g 7frW   )r   strr
   )rp   
expressions     r,   rr   ,UniqueConstraint.__init__.<locals>.<genexpr>   s,      !
)
 (
C88AjMjH)s   /1r   )
ValueErrorr   r   r   r   r    listry   boollenr   r   r   r   r   r   expressionsre   r-   )r(   r   r   r   r   r   r   r   r   r   r   r!   s              r,   r-   UniqueConstraint.__init__   s    ABB6%  6Q  )h]33OPPSTTzWXXRSS:TUU9I  *x&<==L  'HdE#:;;OPP)dE]33QRR.8T*:;;MNNVI64  Fm"$)0uW~b",  !
)!
 
 	!5$; 	 	
r/   c                 ,    [        U R                  5      $ rW   )r   r   r2   s    r,   r3   %UniqueConstraint.contains_expressions   s    D$$%%r/   c                   ^ U R                   c  g [        USS9nUR                  U R                   5      nUR                  TR                  S9nUR                  UTR                  5      u  pgU[        U4S jU 5       5      -  $ )NFrh   rj   c              3   F   >#    U  H  nTR                  U5      v   M     g 7frW   rm   ro   s     r,   rr   6UniqueConstraint._get_condition_sql.<locals>.<genexpr>  rt   ru   )r   r   rv   rw   rk   rx   ry   rz   s     `     r,   _get_condition_sql#UniqueConstraint._get_condition_sql   sw    >>!Ee4!!$..1%%1I1I%Jll8]-E-EFUHHHHHr/   c                     U R                   (       d  g / nU R                    H:  n[        U5      nUR                  UR                  5        UR	                  U5        M<     [        U6 R                  [        USS95      $ )NF)ri   )r   r   set_wrapper_classesrk   appendr	   resolve_expressionr   )r(   r:   r;   index_expressionsr   index_expressions         r,   _get_index_expressions'UniqueConstraint._get_index_expressions  sw    **J.z:001I1IJ$$%56 + 01DD%E*
 	
r/   c                    U R                    Vs/ s H  o1R                  R                  U5      PM     nnU R                   Vs/ s H'  o1R                  R                  U5      R                  PM)     nnU R                  X5      nU R                  X5      nUR                  UUU R                  UU R                  UU R                  UU R                  S9	$ s  snf s  snf N)r   r   r   r   r   r   )r   r   	get_fieldr   columnr   r   _unique_sqlr   r   r   r   r(   r:   r;   
field_namer   r   r   r   s           r,   r<   UniqueConstraint.constraint_sql  s    FJkkRk
++''
3kRGK||
GSKK!!*-44| 	 
 ++EA	11%G((IInn#.. ) 

 
	
 S
   $C.Cc                    U R                    Vs/ s H  o1R                  R                  U5      PM     nnU R                   Vs/ s H'  o1R                  R                  U5      R                  PM)     nnU R                  X5      nU R                  X5      nUR                  UUU R                  UU R                  UU R                  UU R                  S9	$ s  snf s  snf r   )r   r   r   r   r   r   r   _create_unique_sqlr   r   r   r   r   s           r,   r@   UniqueConstraint.create_sql&  s    FJkkRk
++''
3kRGK||
GSKK!!*-44| 	 
 ++EA	11%G//IInn#.. 0 

 
	
 S
r   c                 H   U R                  X5      nU R                   Vs/ s H'  oAR                  R                  U5      R                  PM)     nnU R                  X5      nUR                  UU R                  UU R                  UU R                  UU R                  S9$ s  snf r   )r   r   r   r   r   r   _delete_unique_sqlr   r   r   r   )r(   r:   r;   r   r   r   r   s          r,   rC   UniqueConstraint.remove_sql9  s    ++EA	GK||
GSKK!!*-44| 	 
 11%G//IInn#.. 0 	
 		
	
s   .Bc                 6   SU R                   R                  < SU R                  (       d  SOS[        U R                  5      -  < U R                  (       d  SOS[        U R                  5      -  < S[        U R
                  5      -  < U R                  c  SOSU R                  -  < U R                  c  SOSU R                  -  < U R                  (       d  SOS	[        U R                  5      -  < U R                  (       d  SOS
[        U R                  5      -  < U R                  c  SOSU R                  -  < U R                  c  SOSU R                  -  < U R                  b  U R                  U R                  :X  a  SOSU R                  -  < S3$ )Nr   :r   z
 fields=%sz expressions=%sz name=%sz condition=%sz deferrable=%rz include=%sz opclasses=%sz nulls_distinct=%rr   r   r   )r!   r[   r   r   r   r   r   r   r   r   r   r   r   r#   r2   s    r,   r   UniqueConstraint.__repr__J  s^   NN''kkB|d4;;6G'GG&&B,=TEUEU@V,VVdii(..(Bo.NN//)B/?$///QQllBT\\8J(JJnnB/D<P*PP &&. )D,?,??@ ,,4 /$2K2KKL //7//43W3WW  3T5Q5QQR)
 	
r/   c                   > [        U[        5      (       Ga9  U R                  UR                  :H  =(       Ga    U R                  UR                  :H  =(       a    U R                  UR                  :H  =(       a    U R
                  UR
                  :H  =(       a    U R                  UR                  :H  =(       a    U R                  UR                  :H  =(       ax    U R                  UR                  :H  =(       aX    U R                  UR                  L =(       a9    U R                  UR                  :H  =(       a    U R                  UR                  :H  $ [        TU ]5  U5      $ rW   )r   r   r   r   r   r   r   r   r   r   r   r   re   r   r   s     r,   r   UniqueConstraint.__eq__f  s#   e-..		UZZ' 	R 	RKK5<</	RNNeoo5	R OOu'7'77	R LLEMM1		R
 NNeoo5	R $$(9(99	R ''5+?+??	R --1K1KK	R 00E4Q4QQ w~e$$r/   c                   > [         TU ]  5       u  pnU R                  (       a  U R                  US'   U R                  (       a  U R                  US'   U R                  (       a  U R                  US'   U R
                  (       a  U R
                  US'   U R                  (       a  U R                  US'   U R                  b  U R                  US'   XR                  U4$ )Nr   r   r   r   r   r   )	re   rT   r   r   r   r   r   r   r   r   s       r,   rT   UniqueConstraint.deconstructv  s    "W02F;;#{{F8>>"&..F;??#'??F< << $F9>>"&..F;*'+':':F#$%%v--r/   c           	      `   UR                   R                  U5      nU R                  (       a  0 nU R                   H  nU(       a  Xs;   a    g UR                  R	                  U5      n[        X(R                  5      n	U R                  SLa  U	b(  U	S:X  a$  [        U   R                  R                  (       a    g XUR                  '   M     UR                  " S0 UD6nGOKU(       a  U R                   H  n
[        U
S5      (       aC  U
R                  5        H-  n[!        U["        5      (       d  M  UR                  U;   d  M,      g    MW  [!        U
["        5      (       d  Mn  U
R                  U;   d  M    g    UR%                  UR                  US9R'                  5        VVs0 s H  u  p[#        U5      U_M     nnn/ nU R                   HM  n[!        U[(        5      (       a  UR*                  nUR-                  [/        XR1                  U5      5      5        MO     UR                  " U6 nUR3                  UR                  5      nUR4                  R6                  (       d  Ub  UR9                  US9nU R:                  (       d  UR=                  5       (       a  U R                  (       a"  [?        U RA                  5       U RB                  S9eURE                  5        H8  u  nnU H,  nUU L d  M
  [?        URG                  XR                  5      5      e   M:     g g UR%                  UR                  US9n U R:                  [I        UR                  U R:                  5      5      -  RK                  UUS9(       a"  [?        U RA                  5       U RB                  S9eg s  snnf ! [L         a     g f = f)	NFr   flattenr   )pkr   r   r1   )'_default_managerrH   r   r   r   rd   attnamer   r   features!interprets_empty_strings_as_nullsr   filterr   hasattrr   r   r
   r   itemsr   r   r   r   replace_expressions_get_pk_val_stateaddingrG   r   existsr   rL   r   get_constraintsunique_error_messager   rc   r   )r(   r:   rF   rG   rH   querysetlookup_kwargsr   fieldlookup_valuer   exprvaluereplacementsr   model_class_pkconstraints
constraintr   s                      r,   rI   UniqueConstraint.validate  s:   ))//6;;M"kk
z4--j9&x?''u4$,$*'!"(#D#DE ,8ejj)% *&  77H "&"2"2Jz955$.$6$6$8D)$22tyyG7K & %9 $J22z'7Q #3 %-$A$Ag %B %%'%%LE %%%   K((dG,,??D""5/G/G/U#VW	 )
  4H!--ekk:%%.*D''>':H~~  ##)88:!66  +3*B*B*D&E;&1
%-"1 ( = =e[[ Q#  '2 +E ! 33g3VG	NNVHOODNN,K%LLSS5 T  *88:!66 ER  s    N3A&N   
N-,N-)r   r   r   r   r   r   r   )r"   rP   r[   r\   r-   r]   r3   r   r   r<   r@   rC   r   r   rT   r   rI   r^   r   r   s   @r,   r   r      s~     ! $D
 D
L & &I


&
&
"
8% .  15<L L Lr/   r   )#r$   enumr   typesr   django.core.exceptionsr   r   	django.dbr   django.db.models.expressionsr   r	   r
   r   django.db.models.indexesr   django.db.models.lookupsr   django.db.models.query_utilsr   django.db.models.sql.queryr   django.db.utilsr   django.utils.deprecationr   django.utils.translationr   rX   __all__r   r   r   r   r1   r/   r,   <module>r     sj       > ! K K 4 * * , , = 6
QG/ G/TJ"n J"Z> >_~ _r/   