
    [hCA                    
   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'dd9Z)	 	 ddd=Z*d&dd>ddBZ+ddDZ,ddGZ-ddJZ.ddKZ/ddNZ0ddOZ1ddPZ2ddQZ3ddRZ4ddSZ5ddVZ6ddZZ7dd^Z8dd`Z9i dae,e j:        fdbe,e j:        fdce1e j:        fdde+e 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dle3e j:        fdme+e j:        fdne+e j:        fdoe+e j:        fdpe+e j:        fdqe*e j:        fi dre+e j:        fdse+e j:        fdte+e j:        fdue- e j;        dEej<        i          fdve- e j;        dEej=        i          fdwe) e j;        d.ej>        i          fdxe) e j;        d.ej?        i          fdye) e j;        d.ej@        i          fdze) 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de) 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;        dEejP        i          fde- e j;        dEejQ        i          fde- e j;        dEejR        i          fde- e j;        dEe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result_typeexprColumnElement[Any]opr   objr   r&   Optional[OperatorType]r'   boolr(   Tuple[Type[Any], ...]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 | j        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*   )r7   r6   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ner/   r   _construct_for_opr   expectr   ConstExprRoleis_distinct_fromis_not_distinct_from_is_collection_aggregateis_is_notr   ArgumentErrorBinaryElementRole)r*   r,   r-   r&   r'   r(   r)   r2   s           p/var/www/api.easyaligner.net/htdocs/venv_linux/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:   )r6   r8   )r   r@   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   r@   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   r@   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      ;bkI  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:   r6   )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   r@   r   rH   r   	MATCHTYPEnot_match_oprc   s       rI   _match_implr     s    
 #'		
 	
 	
 & Y''' ""#    rK   c                D    t          | t          j        | j                  S )z&See :meth:`.ColumnOperators.distinct`.r   )r   r   distinct_oprq   r~   s      rI   _distinct_implr   4  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r7   r8   )r   r   _construct_for_listr   r   r   NULLTYPEr   r@   r   rH   
between_opnot_between_op)r*   r,   r   r   rN   s        rI   _between_implr   =  s     0N'"	   '"	   	
 	
 	
" 	 Y))) $$%3   rK   ColumnElement[str]	collationstrc                ,    t          j        | |          S ra   )r   _create_collation_expression)r*   r,   r   rN   s       rI   _collate_implr   b  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   r@   r   rH   r   comma_opnot_regexp_match_op)r*   r,   r   r   rN   s        rI   _regexp_match_implr   h  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   )r8   )r   r   r   r   r   r   r   r   r@   r   rH   )r*   r,   r   r   r   rN   s         rI   _regexp_replace_implr   }  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=   rB   rC   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'   r/   r(   r0   r)   r1   r2   r   r3   r4   )FN)r*   r+   r,   rL   r-   r   r'   r/   r)   rM   rN   r   r3   r+   )r*   r+   r,   r   r-   rU   r'   r/   r)   rV   rN   r   r3   rW   )
r*   r+   r,   r   r_   r   rN   r   r3   r+   )
r*   r+   r,   r   re   rf   rN   r   r3   r+   )r*   r+   r,   r   rj   r   r&   r   rN   r   r3   r+   )
r*   r+   r,   r   rw   r   rN   r   r3   r   )r*   r+   r,   r   rN   r   r3   r+   )r*   r+   r,   r   r   r   r   r   rN   r   r3   r+   )
r*   r   r,   r   r   r   rN   r   r3   r   )r*   r   r,   r   r   r   r   r   rN   r   r3   r+   )r*   r+   r,   r   r   r   r   r   r   r   rN   r   r3   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   r/   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>   rC   rB   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[
 [
 [
 [
 [
 [
D -1    0 ,0     8$ $ $ $      $1 1 1 1    
 
 
 
J J J J      0   " " " "J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   