
    h8                     n   S SK r S SKJr  S SKJr  S SKJrJrJrJ	r	J
r
Jr  S SKJrJrJrJrJrJrJr  S SKJr  S SKJrJrJr   " S S	\5      r " S
 S5      r " S S\\5      r " S S\\5      r " S S\\5      r " S S\\5      r " S S\\5      r  " S S\\5      r! " S S\\5      r"\\\\ \!\"\S.r#g)    N)EmptyResultSet)models)ColPairsExistsFuncResolvedOuterRefSubqueryValue)ExactGreaterThanGreaterThanOrEqualInIsNullLessThanLessThanOrEqual)Query)ANDOR	WhereNodec                   J    \ rS rSrSrSr\R                  " 5       rS r	S r
Srg)Tuple   T c                 ,    [        U R                  5      $ N)lensource_expressionsselfs    d/var/www/html/tms-backend/venv/lib/python3.13/site-packages/django/db/models/fields/tuple_lookups.py__len__Tuple.__len__   s    4**++    c                 ,    [        U R                  5      $ r   )iterr   r   s    r    __iter__Tuple.__iter__"   s    D++,,r#    N)__name__
__module____qualname____firstlineno__allows_composite_expressionsfunctionr   Fieldoutput_fieldr!   r&   __static_attributes__r(   r#   r    r   r      s"    #' H<<>L,-r#   r   c                   ~   ^  \ rS rSrSrU 4S jrS rS rS rS r	U 4S jr
SU 4S	 jjrU 4S
 jrS rU 4S jrSrU =r$ )TupleLookupMixin&   Tc                    > U R                  5       (       a,  U R                  5         U R                  5         U R                  $ U R                  5         [        TU ]  5         U R                  $ r   )rhs_is_direct_valuecheck_rhs_is_tuple_or_list"check_rhs_length_equals_lhs_length!check_rhs_is_supported_expressionsuperget_prep_lookuprhsr   	__class__s    r    r;    TupleLookupMixin.get_prep_lookup)   sW    ##%%++-335 xx 224G#%xxr#   c                     [        U R                  [        [        45      (       d,  U R	                  5       n[        U R                  < SU S35      eg )N lookup of z must be a tuple or a list)
isinstancer<   tuplelistget_lhs_str
ValueErrorlookup_namer   lhs_strs     r    r7   +TupleLookupMixin.check_rhs_is_tuple_or_list2   sO    $((UDM22&&(G##&k':TU  3r#   c                     [        U R                  5      nU[        U R                  5      :w  a/  U R                  5       n[	        U R
                  < SU SU S35      eg )NrA    must have z	 elements)r   lhsr<   rE   rF   rG   )r   len_lhsrI   s      r    r8   3TupleLookupMixin.check_rhs_length_equals_lhs_length9   s\    dhh-c$((m#&&(G##&k'+gYiX  $r#   c                     [        U R                  [        [        45      (       dP  U R	                  5       nU R                  R
                  R                  n[        U R                  < SU SU< S35      eg )N subquery lookup of z7 only supports OuterRef and QuerySet objects (received ))	rB   r<   r   r   rE   r>   r)   rF   rG   r   rI   rhs_clss      r    r9   2TupleLookupMixin.check_rhs_is_supported_expressionA   sv    $((%5u$=>>&&(Ghh((11G##&&:7) DIIPSTV  ?r#   c                     [        U R                  [        5      (       a)  [        U R                  R                  R
                  5      $ SR                  S U R                   5       5      nSU S3$ )Nz, c              3   J   #    U H  n[        UR                  5      v   M     g 7fr   )reprname).0fs     r    	<genexpr>/TupleLookupMixin.get_lhs_str.<locals>.<genexpr>N   s     =Hqd166llHs   !#(rR   )rB   rM   r   rX   fieldrY   join)r   namess     r    rE   TupleLookupMixin.get_lhs_strJ   sR    dhh))++,,II=DHH==EugQ<r#   c                    > [        U R                  [        [        45      (       a  [	        U R                  6 $ [
        TU ]  5       $ r   )rB   rM   rC   rD   r   r:   get_prep_lhsr=   s    r    rd   TupleLookupMixin.get_prep_lhsQ   s5    dhh..$((##w#%%r#   c                 x   > [         TU ]  XU5      u  pE[        U R                  [        5      (       d  SU S3nXE4$ )Nr^   rR   )r:   process_lhsrB   rM   r   )r   compiler
connectionrM   sqlparamsr>   s         r    rg   TupleLookupMixin.process_lhsV   s<    g)(D$((E**cU!*C{r#   c           	        > U R                  5       (       an  [        U R                  U R                  5       VVs/ sH+  u  p4[	        US5      (       a  UO[        XCR                  S9PM-     nnnUR                  [        U6 5      $ UR                  U R                  5      u  pg[        U R                  [        5      (       a  SU-  U4$ [        U R                  [        5      (       a  [        TU ]5  X5      $ [        S5      es  snnf )Nas_sqlr0   z(%s)z=Composite field lookups only work with composite expressions.)r6   ziprM   r<   hasattrr
   r0   compiler   rB   r   r   r:   process_rhsrF   )	r   rh   ri   colvalargsrj   rk   r>   s	           r    rs   TupleLookupMixin.process_rhs\   s    ##%% !$DHHdhh 7 !8HC sH-- s1A1ABC !8   ##E4L11"**4884KC$((H--|V++DHHe,,w*8@@ S !s   1Dc                 F    [        U R                  R                   S35      e)Nzp.get_fallback_sql() must be implemented for backends that don't have the supports_tuple_lookups feature enabled.)NotImplementedErrorr>   r)   )r   rh   ri   s      r    get_fallback_sql!TupleLookupMixin.get_fallback_sqlr   s+    !~~&&' (W X
 	
r#   c                 z   > UR                   R                  (       d  U R                  X5      $ [        TU ]  X5      $ r   )featuressupports_tuple_lookupsrz   r:   rn   )r   rh   ri   r>   s      r    rn   TupleLookupMixin.as_sqlx   s2    ""99((>>w~h33r#   r(   r   )r)   r*   r+   r,   r-   r;   r7   r8   r9   rE   rd   rg   rs   rz   rn   r1   __classcell__r>   s   @r    r3   r3   &   s@    #'  &
,
4 4r#   r3   c                   (   ^  \ rS rSrU 4S jrSrU =r$ )
TupleExact~   c                 L  > [        U R                  [        5      (       a  [        [        U ]  X5      $ U R                  X5        [        U R                  U R                  5       VVs/ sH  u  p4[        X45      PM     nnn[        U[        S9nUR                  X5      $ s  snnf N	connector)rB   r<   r   r:   r3   rn   rs   rp   rM   r   r   r   )r   rh   ri   rt   ru   lookupsrootr>   s          r    rz   TupleExact.get_fallback_sql   s    dhh&&)47MM. 47txx3JK3Jxs5?3JKC0{{800 Ls   (B r(   )r)   r*   r+   r,   rz   r1   r   r   s   @r    r   r   ~   s    
1 
1r#   r   c                        \ rS rSrS rS rSrg)TupleIsNull   c                     U R                   n[        U[        [        45      (       a  [	        U5      S:X  a  US   n[        U[
        5      (       a  U$ [        S5      e)N   r   z>The QuerySet value for an isnull lookup must be True or False.)r<   rB   rC   rD   r   boolrF   )r   r<   s     r    r;   TupleIsNull.get_prep_lookup   sQ    hhcE4=))c#h!ma&Cc4  JL
 	
r#   c                     U R                   nU R                   Vs/ sH  n[        XC5      PM     nn[        XS(       a  [        O[
        S9nUR                  X5      $ s  snf r   )r<   rM   r   r   r   r   rn   )r   rh   ri   r<   rt   r   r   s          r    rn   TupleIsNull.as_sql   sN    
 hh/3xx8x6##x8#B3?{{800 9s   Ar(   N)r)   r*   r+   r,   r;   rn   r1   r(   r#   r    r   r      s    
1r#   r   c                       \ rS rSrS rSrg)TupleGreaterThan   c                    U R                  X5        [        R                  " [        [        /5      n[        R                  " [
        [        /5      nU R                   VVs/ sH  n[        S5       H  oePM     M     nnnU R                   VVs/ sH  n[        S5       H  ohPM     M     n	nn[        US S 5      n
[        U	S S 5      n[        U
5      n[        U5      n[        U5      n[        U5      n[        U" XX5      /US9=p[        X5       HI  u  pX[        U5      n[        U5      n[        U" XX5      /US9nUR                  R                  U5        UnMK     UR!                  X5      $ s  snnf s  snnf N   r   rs   	itertoolscycler   r   r   r   rM   ranger<   r%   nextr   rp   childrenappendrn   r   rh   ri   r   
connectorsrt   _	cols_listru   	vals_list	cols_iter	vals_iterlookupr   r   nodechilds                    r    rz   !TupleGreaterThan.get_fallback_sql   sD   . //;"67__b#Y/
$(HH?HSeAhShSH	?$(HH?HSeAhShSH	?3B(	3B(	9o9og$	!1 2iHHI1HC']FZ(Ivc/0IFEMM  'D 2 {{800# @?   !E1E7r(   Nr)   r*   r+   r,   rz   r1   r(   r#   r    r   r          1r#   r   c                       \ rS rSrS rSrg)TupleGreaterThanOrEqual   c                    U R                  X5        [        R                  " [        [        /5      n[        R                  " [
        [        /5      nU R                   VVs/ sH  n[        S5       H  oePM     M     nnnU R                   VVs/ sH  n[        S5       H  ohPM     M     n	nn[        U5      n
[        U	5      n[        U
5      n[        U5      n[        U5      n[        U5      n[        U" XX5      /US9=p[        X5       HI  u  pX[        U5      n[        U5      n[        U" XX5      /US9nUR                  R                  U5        UnMK     UR!                  X5      $ s  snnf s  snnf Nr   r   r   r   s                    r    rz   (TupleGreaterThanOrEqual.get_fallback_sql   s6   . //;"67__b#Y/
$(HH?HSeAhShSH	?$(HH?HSeAhShSH	?O	O	9o9og$	!1 2iHHI1HC']FZ(Ivc/0IFEMM  'D 2 {{800# @?   !E+E1r(   Nr   r(   r#   r    r   r      r   r#   r   c                       \ rS rSrS rSrg)TupleLessThan   c                    U R                  X5        [        R                  " [        [        /5      n[        R                  " [
        [        /5      nU R                   VVs/ sH  n[        S5       H  oePM     M     nnnU R                   VVs/ sH  n[        S5       H  ohPM     M     n	nn[        US S 5      n
[        U	S S 5      n[        U
5      n[        U5      n[        U5      n[        U5      n[        U" XX5      /US9=p[        X5       HI  u  pX[        U5      n[        U5      n[        U" XX5      /US9nUR                  R                  U5        UnMK     UR!                  X5      $ s  snnf s  snnf r   rs   r   r   r   r   r   r   rM   r   r<   r%   r   r   rp   r   r   rn   r   s                    r    rz   TupleLessThan.get_fallback_sql   sD   . //8U"34__b#Y/
$(HH?HSeAhShSH	?$(HH?HSeAhShSH	?3B(	3B(	9o9og$	!1 2iHHI1HC']FZ(Ivc/0IFEMM  'D 2 {{800# @?r   r(   Nr   r(   r#   r    r   r      r   r#   r   c                       \ rS rSrS rSrg)TupleLessThanOrEqual   c                    U R                  X5        [        R                  " [        [        /5      n[        R                  " [
        [        /5      nU R                   VVs/ sH  n[        S5       H  oePM     M     nnnU R                   VVs/ sH  n[        S5       H  ohPM     M     n	nn[        U5      n
[        U	5      n[        U
5      n[        U5      n[        U5      n[        U5      n[        U" XX5      /US9=p[        X5       HI  u  pX[        U5      n[        U5      n[        U" XX5      /US9nUR                  R                  U5        UnMK     UR!                  X5      $ s  snnf s  snnf r   r   r   s                    r    rz   %TupleLessThanOrEqual.get_fallback_sql   s6   . //8U"34__b#Y/
$(HH?HSeAhShSH	?$(HH?HSeAhShSH	?O	O	9o9og$	!1 2iHHI1HC']FZ(Ivc/0IFEMM  'D 2 {{800# @?r   r(   Nr   r(   r#   r    r   r      r   r#   r   c                   R   ^  \ rS rSrU 4S jrS rS rS rU 4S jrU 4S jr	Sr
U =r$ )	TupleIni  c                   > U R                  5       (       a<  U R                  5         U R                  5         U R                  5         U R                  $ U R	                  5         [
        [        U ]  5         U R                  $ r   )	r6   r7   *check_rhs_is_collection_of_tuples_or_lists+check_rhs_elements_length_equals_lhs_lengthcheck_rhs_is_queryr:   r3   r;   r<   r=   s    r    r;   TupleIn.get_prep_lookup  sf    ##%%++-;;=<<>
 xx ##%"D9;xxr#   c                     [        S U R                   5       5      (       d,  U R                  5       n[        U R                  < SU S35      eg )Nc              3   L   #    U H  n[        U[        [        45      v   M     g 7fr   )rB   rC   rD   )rZ   valss     r    r\   ETupleIn.check_rhs_is_collection_of_tuples_or_lists.<locals>.<genexpr>  s     Hxt:dUDM22xs   "$rA   z( must be a collection of tuples or lists)allr<   rE   rF   rG   rH   s     r    r   2TupleIn.check_rhs_is_collection_of_tuples_or_lists  sT    HtxxHHH&&(G##&k' ;: :  Ir#   c                    ^ [        U R                  5      m[        U4S jU R                   5       5      (       d/  U R	                  5       n[        U R                  < SU ST S35      eg )Nc              3   >   >#    U H  nT[        U5      :H  v   M     g 7fr   )r   )rZ   r   rN   s     r    r\   FTupleIn.check_rhs_elements_length_equals_lhs_length.<locals>.<genexpr>(  s     =HD7c$i'Hs   rA   rL   z elements each)r   rM   r   r<   rE   rF   rG   )r   rI   rN   s     @r    r   3TupleIn.check_rhs_elements_length_equals_lhs_length&  sh    dhh-=DHH===&&(G##&k' ;$I^5  >r#   c                     [        U R                  [        [        45      (       dP  U R	                  5       nU R                  R
                  R                  n[        U R                  < SU SU< S35      eg )NrQ   z" must be a Query object (received rR   )	rB   r<   r   r	   rE   r>   r)   rF   rG   rS   s      r    r   TupleIn.check_rhs_is_query/  ss    $((UH$566&&(Ghh((11G##&&:7) D44;;aA  7r#   c                   > U R                  5       (       d  [        [        U ]  X5      $ U R                  nU(       d  [
        e/ nU R                  nU Ht  n[        S U 5       5      (       a  M  UR                  [        [        XV5       VVs/ sH+  u  px[        US5      (       a  UO[        XR                  S9PM-     snn6 5        Mv     U(       d  [
        eUR                  [        U6 5      $ s  snnf )Nc              3   &   #    U H  oS L v   M
     g 7fr   r(   rZ   ru   s     r    r\   &TupleIn.process_rhs.<locals>.<genexpr>H       /$3$;$   rn   ro   )r6   r:   r3   rs   r<   r   rM   anyr   r   rp   rq   r
   r0   rr   )
r   rh   ri   r<   resultrM   r   rt   ru   r>   s
            r    rs   TupleIn.process_rhs8  s    '')))4<XRRhh   hhD /$///MM ),C )7HC  'sH55  !&s9I9I!JK )7	 $   v//s   1C/c                   >^ U R                   nU(       d  [        e[        U[        5      (       a  [        R
                  R                  U4S jUR                  US9R                  5       S    5       5      nUR                  5       nUR                  [        R                  " [        U R                  U5       VVs/ sH  u  pV[        XV5      PM     snn6 5        UR!                  [#        U5      5      $ U R%                  5       (       d  [&        [(        U ]W  X5      $ [-        / [.        S9nU R                  nU Hj  n	[1        S U	 5       5      (       a  M  [        X5       VVs/ sH  u  pV[        XV5      PM     n
nnUR2                  R5                  [-        U
[6        S95        Ml     UR2                  (       d  [        eUR+                  X5      $ s  snnf s  snnf )Nc              3   `   >#    U H$  n[        US    =m[        5      (       a  TOT/v   M&     g7f)r   N)rB   r   )rZ   selectselect_exprs     r    r\   +TupleIn.get_fallback_sql.<locals>.<genexpr>a  s@      6 VF "&)#;;hGG  %' Vs   +.)ri   r   r   c              3   &   #    U H  oS L v   M
     g 7fr   r(   r   s     r    r\   r   y  r   r   )r<   r   rB   r   r   chainfrom_iterableget_compiler
get_selectcloneadd_qr   Qrp   rM   r   rr   r   r6   r:   r3   rn   r   r   r   r   r   r   )r   rh   ri   r<   	rhs_exprsrt   ru   r   rM   r   r   r   r>   s              @r    rz   TupleIn.get_fallback_sql\  sz   hh  c5!!!55 6 "..*.EPPRSTU6 I ))+CII3txx;ST;Sxs5?;STU ##F3K00))++)47MM r*hhD /$///7:3~F~83uS~GFMM  7c!BC  }}  {{800+ U  Gs   <G#Gr(   )r)   r*   r+   r,   r;   r   r   r   rs   rz   r1   r   r   s   @r    r   r     s'    	"0H$1 $1r#   r   )exactgtgteltlteinisnull)$r   django.core.exceptionsr   	django.dbr   django.db.models.expressionsr   r   r   r   r	   r
   django.db.models.lookupsr   r   r   r   r   r   r   django.db.models.sqlr   django.db.models.sql.wherer   r   r   r   r3   r   r   r   r   r   r   r   tuple_lookupsr(   r#   r    <module>r      s     1     ' 9 9	-D 	-U4 U4p1!5 11"F 1,1' 181.0B 181$h 181+_ 18n1 n1d 
"

r#   