+
    TjB                     x    R t ^ RIHt ^ RIHtHt  ! R R]4      t ! R R4      t ! R R4      t	 ! R	 R
4      t
R# )z]
Useful auxiliary data structures for query construction. Not useful outside
the SQL domain.
)FullResultSet)INNERLOUTERc                   *   a  ] tR t^
t o RtR tRtV tR# )	MultiJoinz
Used by join construction code to indicate the point at which a
multi-valued join was attempted (if the caller wants to treat that
exceptionally).
c                    Wn         W n        R # Nlevelnames_with_path)self	names_pospath_with_namess   &&&X/var/www/idalgo/venv/lib/python3.14/site-packages/django/db/models/sql/datastructures.py__init__MultiJoin.__init__   s    
.    r	   N)__name__
__module____qualname____firstlineno____doc__r   __static_attributes____classdictcell____classdict__s   @r   r   r   
   s     / /r   r   c                       ] tR t^tRtR# )Empty N)r   r   r   r   r   r   r   r   r   r      s    r   r   c                   b   a  ] tR t^t o RtRR ltR tR t]R 4       t	R t
R tR	 tR
 tRtV tR# )Joina  
Used by sql.Query and sql.SQLCompiler to generate JOIN clauses into the
FROM entry. For example, the SQL generated could be
    LEFT OUTER JOIN "sometable" T1
    ON ("othertable"."sometable_id" = "sometable"."id")

This class is primarily used in Query.alias_map. All entries in alias_map
must be Join compatible by providing the following attributes and methods:
    - table_name (string)
    - table_alias (possible alias for the table, can be None)
    - join_type (can be None for those entries that aren't joined from
      anything)
    - parent_alias (which table is this join's parent, can be None
      similarly to join_type)
    - as_sql()
    - relabeled_clone()
Nc                   Wn         W n        W0n        W@n        VP	                  4       V n        \        ;QJ d    . R  V P
                   4       F  NK  	  5M! R  V P
                   4       4      V n        WPn        W`n	        Wpn
        R# )c              3   V   "   T F  w  rVP                   VP                   3x  K!  	  R # 5ir   )column).0	lhs_field	rhs_fields   &  r   	<genexpr> Join.__init__.<locals>.<genexpr>B   s+      
(8$	 y//0(8s   ')N)
table_nameparent_aliastable_alias	join_typeget_joining_fieldsjoin_fieldstuple	join_cols
join_fieldnullablefiltered_relation)r   r)   r*   r+   r,   r1   r2   r3   s   &&&&&&&&r   r   Join.__init__.   sw     %(&" &88: 
(,(8(8
 
(,(8(8
 

 % !2r   c                t   . p. pVP                   pV P                   F  w  rgVP                  P                  V P                  W`P
                  V4      w  rgVP                  V4      w  rW,          p
VP                  V4      w  rW,          pVP                  V
 RV 24       K  	  V P                  P                  V P
                  V P                  4      pV'       d>   VP                  V4      w  ppVP                  RV,          4       VP                  V4       V P                  '       dI    VP                  V P                  4      w  ppVP                  RV,          4       VP                  V4       V'       g>   \        V P                  RV P                  4      p\        RVP                  ,          4      hRP!                  V4      pV P
                  V P"                  8X  d   RMRV P
                  ,          pV P$                  : RV! V P"                  4      : V: R	V: R
2pVV3#   \         d     Li ; i)z|
Generate the full
   LEFT OUTER JOIN sometable
   ON sometable.somecol = othertable.othercol, params
clause for this join.
z = z(%s)fieldzaJoin generated an empty ON clause. %s did not yield either joining columns or extra restrictions.z AND   %s z ON ())quote_name_unless_aliasr.   opsprepare_join_on_clauser*   r+   compileappendr1   get_extra_restrictionextendr3   r   getattr
ValueError	__class__joinr)   r,   )r   compiler
connectionjoin_conditionsparamsqnlhsrhslhs_sql
lhs_paramslhs_full_namerhs_sql
rhs_paramsrhs_full_name
extra_cond	extra_sqlextra_paramsdeclared_fieldon_clause_sql	alias_strsqls   &&&                  r   as_sqlJoin.as_sqlL   s    --((HC!~~<<!!3(8(8#HC #+"2"23"7G#0M"*"2"23"7G#0M""m_C#GH ) __::d//

 &.&6&6z&B#I|""6I#56MM,'!!!,*2*:*:4;Q;Q*R'	<  &&v	'9:l+$T__gtON9;I;S;ST   _5""doo5BEDDTDT<T 	 NNt	
 F{- ! s   -H) )H76H7c           
     r   VP                  V P                  V P                  4      pVP                  V P                  V P                  4      pV P                  e   V P                  P	                  V4      pMR pV P                  V P                  VVV P                  V P                  V P                  VR7      # )N)r3   )
getr*   r+   r3   relabeled_clonerD   r)   r,   r1   r2   )r   
change_mapnew_parent_aliasnew_table_aliasr3   s   &&   r   r^   Join.relabeled_clone   s    %>>$*;*;T=N=NO$..)9)94;K;KL!!- $ 6 6 F Fz R $~~OONNOOMM/  
 	
r   c                t    V P                   V P                  V P                  V P                  V P                  3# r   )rD   r)   r*   r1   r3   r   s   &r   identityJoin.identity   s5     NNOOOO""
 	
r   c                l    \        V\        4      '       g   \        # V P                  VP                  8H  # r   )
isinstancer    NotImplementedre   r   others   &&r   __eq__Join.__eq__   s(    %&&!!}}..r   c                ,    \        V P                  4      # r   hashre   rd   s   &r   __hash__Join.__hash__       DMM""r   c                >    V P                  / 4      p\        Vn        V# r   )r^   r   r,   r   news   & r   demoteJoin.demote   s    ""2&
r   c                >    V P                  / 4      p\        Vn        V# r   )r^   r   r,   ru   s   & r   promoteJoin.promote   s    ""2&
r   )	r3   r0   r1   r.   r,   r2   r*   r+   r)   r   )r   r   r   r   r   r   rZ   r^   propertyre   rl   rq   rw   rz   r   r   r   s   @r   r    r       sG     $3<7r
" 
 
/
#
 r   r    c                   ^   a  ] tR t^t o RtRtRtRtR tR t	R t
]R 4       tR tR tR	tV tR# )
	BaseTablez
The BaseTable class is used for base table references in FROM clause. For
example, the SQL "foo" in
    SELECT * FROM "foo" WHERE somecond
could be generated by this class.
Nc                    Wn         W n        R # r   )r)   r+   )r   r)   aliass   &&&r   r   BaseTable.__init__   s    $ r   c                    V P                   V P                  8X  d   R MRV P                   ,          pVP                  V P                  4      pWC,           . 3# )r7   r8   )r+   r)   r;   )r   rF   rG   rX   base_sqls   &&&  r   rZ   BaseTable.as_sql   sL    ""doo5BEDDTDT<T 	 33DOOD#R''r   c                    V P                  V P                  VP                  V P                  V P                  4      4      # r   )rD   r)   r]   r+   )r   r_   s   &&r   r^   BaseTable.relabeled_clone   s3    ~~OOZ^^D,<,<d>N>NO
 	
r   c                H    V P                   V P                  V P                  3# r   )rD   r)   r+   rd   s   &r   re   BaseTable.identity   s    ~~t0@0@@@r   c                l    \        V\        4      '       g   \        # V P                  VP                  8H  # r   )rh   r~   ri   re   rj   s   &&r   rl   BaseTable.__eq__   s(    %++!!}}..r   c                ,    \        V P                  4      # r   ro   rd   s   &r   rq   BaseTable.__hash__   rs   r   )r+   r)   )r   r   r   r   r   r,   r*   r3   r   rZ   r^   r|   re   rl   rq   r   r   r   s   @r   r~   r~      sP      IL!(

 A A/
# #r   r~   N)r   django.core.exceptionsr   django.db.models.sql.constantsr   r   	Exceptionr   r   r    r~   r   r   r   <module>r      s?   
 1 8
/	 
/	 	U Up&# &#r   