
    
 @gA                    
   U d Z ddlmZ ddlZddlmZ ddlmZ ddlmZ ddlmZ ddlmZ dd	lm	Z	 dd
lm
Z
 ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ dd lm Z   ej!        d!e"          Z"ej#        rdd#lm$Z$ dd$lm%Z% dd%lm&Z& dd& e'd          e(fd&dd'dd:Z)	 	 ddd>Z*d&dd?ddCZ+ddEZ,ddHZ-ddKZ.ddLZ/ddOZ0ddPZ1ddQZ2ddRZ3ddSZ4ddTZ5ddWZ6dd[Z7dd_Z8ddaZ9i dbe,e j:        fdce,e j:        fdde1e j:        fdee+e j:        fdfe+e j:        fdge+e j:        fdhe+e j:        fdie+e j:        fdje+e j:        fdke+e j:        fdle+e j:        fdme3e j:        fdne+e j:        fdoe+e j:        fdpe+e j:        fdqe+e j:        fdre*e j:        fi dse+e j:        fdte+e j:        fdue+e j:        fdve- e j;        dFej<        i          fdwe- e j;        dFej=        i          fdxe) e j;        d.ej>        i          fdye) e j;        d.ej?        i          fdze) e j;        d.ej@        i          fd{e) e j;        d.ejA        i          fd|e) e j;        d.ejB        i          fd}e) e j;        d.ejC        i          fd~e) e j;        d.ejD        i          fde) e j;        d.ejE        i          fde) e j;        d.ejF        i          fde) e j;        d.ejG        i          fde) e j;        d.ejH        i          fde) e j;        d.ejI        i          fi de) e j;        d.ejJ        i          fde) e j;        d.ejK        i          fde) e j;        d.ejL        i          fde) e j;        d.ejM        i          fde) e j;        d.ejN        i          fde) e j;        d.ejO        i          fde- e j;        dFejP        i          fde- e j;        dFejQ        i          fde- e j;        dFejR        i          fde- e j;        dFejS        i          fde. e j;        d.ejT        i          fde. e j;        d.ejU        i          fde) e j;        d.ejV        i          fde) e j;        d.ejW        i          fde7e j:        fde4e j:        fde4e j:        fe5e j:        fe6e j:        fe6e j:        fe2e j:        fe/e j:        fe0e j:        fe0e j:        fe0e j:        fe8e j:        fe8e j:        fe9e j:        fdZXdeYd<   dS )z5Default implementation of SQL comparison operations.
    )annotationsN)Any)Callable)Dict)NoReturn)Optional)Tuple)Type)Union   )	coercions)	operators)roles)type_api)and_)BinaryExpression)ClauseElement)CollationClause)CollectionAggregate)ExpressionClauseList)False_)Null)OperatorExpression)or_)True_)UnaryExpression)OperatorType   )exc)util_T)bound)ColumnElement)	custom_op)
TypeEngineF)	negate_opreverse_python_is_types_any_all_exprresult_typeexprColumnElement[Any]opr   objr   r&   Optional[OperatorType]r'   boolr(   Tuple[Type[Any], ...]r)   r*   Optional[TypeEngine[bool]]kwargsreturnOperatorExpression[bool]c                  |t           j        }t          ||t          t          t
          fz             r|t          j        t          j        fv rYt          |t          t          t
          f          r7t          j        | t          j        t          j        |          ||||          S |t          j        t          j        fv r7t          j        | t          j        t          j        |          ||||          S |r#t          j        t          j        |||           }n|t          j        t          j        fv rJt          j        | t          j        t          j        |          t          j        t          j        |          S |t          j        t          j        fv rJt          j        | t          j        t          j        |          t          j        t          j        |          S t)          j        d          t          j        t          j        |||           }|rt          j        || ||||          S t          j        | |||||          S )N)type_negate	modifiers)elementoperatorr+   )r8   r7   z~Only '=', '!=', 'is_()', 'is_not()', 'is_distinct_from()', 'is_not_distinct_from()' operators can be used with None/True/False)r   BOOLEANTYPE
isinstancer   r   r   r   eqner0   r   _construct_for_opr   expectr   ConstExprRoleis_distinct_fromis_not_distinct_fromis_is_notr   ArgumentErrorBinaryElementRole)	r+   r-   r.   r&   r'   r(   r)   r*   r3   s	            U/var/www/piapp/venv/lib/python3.11/site-packages/sqlalchemy/sql/default_comparator.py_boolean_comparerJ   3   s|    *#'4*??@@ :
 ),	---*$v&3
 3
- &7 !4c::!      &*
 
 
 &7 !4c::!       	"#S2D  CC
 ilIM222);$U%8#>>M$+%    	i&6777);$U%8#>>$$=%    'A   #S2D
 
 
  
!3
 
 
 	
 "3
 
 
 	
    custom_op[Any]Optional[TypeEngine[Any]]kwc                n    |"|j         r|j         }n|j        rt          j        }t	          | ||f||d|S )Nr'   r*   )return_typeis_comparisonr   r<   _binary_operate)r+   r-   r.   r'   r*   rN   s         rI   _custom_op_operaterT      s`     > 	/.KK 	/".Kb#&K CE  rK   rP   roles.BinaryElementRole[Any]Optional[TypeEngine[_T]]OperatorExpression[_T]c                   t          j        t          j        || |          }|r|| }}n| |}}|#|j                            ||j                  \  }}t          j        |||||          S )Nr+   r;   )r7   r9   )r   rA   r   rH   
comparator_adapt_expressionr   r@   )	r+   r-   r.   r'   r*   rN   coerced_objleftrights	            rI   rS   rS      s     "4"  K  (!4eKe/;; 
 
K /eR{b   rK   otherc                    |t           j        u rt          | |          S |t           j        u rt          | |          S t                      N)r   r   r   NotImplementedErrorr+   r-   r_   rN   s       rI   _conjunction_operaterd      sJ     
Y^D%   	y}		4!###rK   fn2Callable[[ColumnElement[Any]], ColumnElement[Any]]c                     ||           S ra    )r+   r-   re   rN   s       rI   _scalarri      s     2d88OrK   seq_or_selectabler   c                    t          j        t          j        || |          }d|j        v r|j        d         \  }}t          | ||fd|i|S )NrY   in_opsr&   )r   rA   r   InElementRole_annotationsrJ   )r+   r-   rj   r&   rN   s        rI   _in_implro      sz     "(.TB   $111)6x@Ib# /8<>  rK   c                J   t          | j        t          j                  sCt          | j        t          j                  rUt          | j        j        t          j                  r1t          j        t          j	        || |          }t          | ||fi |S t          | ||fi | d S )NrY   )r=   typer   	INDEXABLETypeDecoratorimpl_instancer   rA   r   rH   rS   _unsupported_implrc   s       rI   _getitem_implrv      s     	49h011
1di!788
1 ty.0BCC
1
  #U
 
 
 tR55"555$E00R00000rK   argr   c                0    t          d|j        z            )Nz1Operator '%s' is not supported on this expression)rb   __name__)r+   r-   rw   rN   s       rI   ru   ru      s      >L  rK   c                X    t          | d          r| j        S |                                 S )z%See :meth:`.ColumnOperators.__inv__`.negation_clause)hasattrr{   _negater+   r-   rN   s      rI   	_inv_implr      s.     t&'' ##||~~rK   c                D    t          | t          j        | j                  S )z%See :meth:`.ColumnOperators.__neg__`.r;   r7   )r   r   negrq   r~   s      rI   	_neg_implr     s     4)-tyIIIIrK   c                D    t          | t          j        | j                  S )z)See :meth:`.ColumnOperators.bitwise_not`.r   )r   r   bitwise_not_oprq   r~   s      rI   _bitwise_not_implr     s'    
 y/ty   rK   c           
         t          | t          j        t          j        t
          j        || t          j                  ft          j        |t          j        u rt          j	        nt          j        d|S )z#See :meth:`.ColumnOperators.match`.rY   )r*   r&   )
rJ   r   match_opr   rA   r   rH   r   	MATCHTYPEnot_match_oprc   s       rI   _match_implr     s    
 #'		
 	
 	
 &### ((    rK   c                D    t          | t          j        | j                  S )z&See :meth:`.ColumnOperators.distinct`.r   )r   r   distinct_oprq   r~   s      rI   _distinct_implr   3  s'     y,DI   rK   cleftcrightc                p   t          | t          j        t          j        t
          j        t          j        t          j
        || t          j                  t          j        t          j
        || t          j                  d          ||t          j        u rt          j        nt          j        |          S )z%See :meth:`.ColumnOperators.between`.rY   Fgroupr8   r9   )r   r   _construct_for_listr   r   r   NULLTYPEr   rA   r   rH   
between_opnot_between_op)r+   r-   r   r   rN   s        rI   _between_implr   <  s     0N'"	   '"	   	
 	
 	
" 	%%% ''!/   rK   ColumnElement[str]	collationstrc                ,    t          j        | |          S ra   )r   _create_collation_expression)r+   r-   r   rN   s       rI   _collate_implr   _  s     7iHHHrK   patternflagsOptional[str]c           	         t          | t          j        t          j        || t
          j                  |t
          j        d|i          S )NrY   r   r   )r   r   rA   r   rH   r   comma_opnot_regexp_match_op)r+   r-   r   r   rN   s        rI   _regexp_match_implr   e  sX     #'		
 	
 	
 	,E"   rK   replacementc                *   t          | t          j        t          j        t
          j        t          j        t          j
        || t          j                  t          j        t          j
        || t          j                  d          |d|i          S )NrY   Fr   r   )r9   )r   r   r   r   r   r   r   r   rA   r   rH   )r+   r-   r   r   r   rN   s         rI   _regexp_replace_implr   z  s     0'"+	   '"+	   	
 	
 	
" 	E")   rK   r   r   invaddmulsubdivmodbitwise_xor_opbitwise_or_opbitwise_and_opr   bitwise_lshift_opbitwise_rshift_optruedivfloordivr$   json_path_getitem_opjson_getitem_op	concat_opany_opall_opltler?   gtger>   rC   rD   like_opilike_opnot_like_opnot_ilike_opcontains_opicontains_opstartswith_opistartswith_opendswith_opiendswith_opdesc_opasc_opnulls_first_opnulls_last_opin_op	not_in_oprE   rF   collater   r   )r   r   r   r   getitemlshiftrshiftcontainsregexp_match_opr   regexp_replace_opzDict[str, Tuple[Callable[..., ColumnElement[Any]], util.immutabledict[str, Union[OperatorType, Callable[..., ColumnElement[Any]]]]]]operator_lookup)r+   r,   r-   r   r.   r   r&   r/   r'   r0   r(   r1   r)   r0   r*   r2   r3   r   r4   r5   )FN)r+   r,   r-   rL   r.   r   r'   r0   r*   rM   rN   r   r4   r,   )r+   r,   r-   r   r.   rU   r'   r0   r*   rV   rN   r   r4   rW   )
r+   r,   r-   r   r_   r   rN   r   r4   r,   )
r+   r,   r-   r   re   rf   rN   r   r4   r,   )r+   r,   r-   r   rj   r   r&   r   rN   r   r4   r,   )
r+   r,   r-   r   rw   r   rN   r   r4   r   )r+   r,   r-   r   rN   r   r4   r,   )r+   r,   r-   r   r   r   r   r   rN   r   r4   r,   )
r+   r   r-   r   r   r   rN   r   r4   r   )r+   r   r-   r   r   r   r   r   rN   r   r4   r,   )r+   r,   r-   r   r   r   r   r   r   r   rN   r   r4   r,   )Z__doc__
__future__r   typingr   r   r   r   r   r	   r
   r    r   r   r   r   elementsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r    TypeVarr!   TYPE_CHECKINGr#   r$   r%   rq   r0   rJ   rT   rS   rd   ri   ro   rv   ru   r   r   r   r   r   r   r   r   r   
EMPTY_DICTimmutabledict_create_any_create_allr   r   r>   r   r   r?   rD   rC   r   r   r   r   not_contains_opnot_icontains_opnot_startswith_opnot_istartswith_opnot_endswith_opnot_iendswith_op_create_desc_create_asc_create_nulls_first_create_nulls_lastr   r   rE   rF   r   __annotations__rh   rK   rI   <module>r      s     # " " " " "                                                                                & & & & & & # # # # # # % % % % % % ) ) ) ) ) ) * * * * * *             ( ( ( ( ( (             % % % % % % # # # # # #            V^D$$$	 %''''''$$$$$$$$$$$$ )-/3tDzz4.@.2\
 \
 \
 \
 \
 \
F -1    0 ,0     8$ $ $ $      $1 1 1 1    
 
 
 
J J J J      ,          FI I I I   *   TA
!4?3A	 $/2A 
It'A 
OT_-	A
 
OT_-A 
OT_-A 
OT_-A 
OT_-A 8A ot7A 8A ($/:A /4?;A /4?;A 1A  $/2!A" $do6#A A$ _do>%A& 9'A( /4?3)A* D"5"ABCC+A2 D"5"ABCC3A: 	/T/il0KLL
M;A< 	/T/il0KLL
M=A> 	/T/il0KLL
M?A@ 	/T/il0KLL
MAAB 	/T/il0KLL
MCAD 	/T/il0KLL
MEAF K)GHIIGAN K)CDEEOAV K)>?@@WA^ K)?@AA_Af K):;<<gAn K);<==oA A Av K)BCDDwA~ K)CDEEAF K)DEFFGAN K)EFGGOAV K)BCDDWA^ K)CDEE_Af D/">?@@gAn D/"=>??oAv D/"EFGGwA~ D/"DEFFAF K)<=>>GAN K9::OAV 
K788WA^ K)9:;;_Af t/gAh do.iAj [$/2kA Al #DO4 $/2$do6t't/ $/2 $/2"DO4*DO<.@.@AA A A  I I I I I IrK   