
    ,hA0                    \   S 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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\R*                  5      r " S S\R.                  5      r " S S\R.                  5      r\" 5       r\" 5       r " S S5      rSS jrg)zEvaluation functions used **INTERNALLY** by ORM DML use cases.


This module is **private, for internal use by SQLAlchemy**.

.. versionchanged:: 2.0.4 renamed ``EvaluatorCompiler`` to
   ``_EvaluatorCompiler``.

    )annotations)Type   )exc)LoaderCallableStatus)PassiveFlag   )inspect)and_)	operators)Concatenable)Integer)Numeric)warn_deprecatedc                      \ rS rSrSrg)UnevaluatableError%    N)__name__
__module____qualname____firstlineno____static_attributes__r       P/var/www/auris/envauris/lib/python3.13/site-packages/sqlalchemy/orm/evaluator.pyr   r   %   s    r   r   c                       \ rS rSrS rS rSrg)	_NoObject)   c                    g Nr   selfargkws      r   operate_NoObject.operate*       r   c                    g r    r   r!   s      r   reverse_operate_NoObject.reverse_operate-   r'   r   r   Nr   r   r   r   r%   r)   r   r   r   r   r   r   )       r   r   c                       \ rS rSrS rS rSrg)_ExpiredObject1   c                    U $ r    r   r!   s      r   r%   _ExpiredObject.operate2       r   c                    U $ r    r   r!   s      r   r)   _ExpiredObject.reverse_operate5   r2   r   r   Nr+   r   r   r   r.   r.   1   r,   r   r.   c                      \ rS rSrSS jrS rS rS rS rS r	S	 r
S
 rS rS rS rS rS rS rS rS rS rS rS r\r\r\r\r\r\r\r\r\r\r \r!S r"S r#S r$S r%S r&S r'S r(Sr)g)_EvaluatorCompiler=   Nc                    Xl         g r    
target_cls)r"   r:   s     r   __init___EvaluatorCompiler.__init__>   s    $r   c                    U(       a  [        U/UQ76 n[        U SUR                   3S 5      nU(       d!  [        S[	        U5      R
                   35      eU" U5      $ )Nvisit_Cannot evaluate )r   getattr__visit_name__r   typer   )r"   clauseclausesmeths       r   process_EvaluatorCompiler.processA   sa    &+7+Ftvf&;&;%<=tD$"4<#8#8"9:  F|r   c                8    U R                  UR                  5      $ r    )rF   elementr"   rC   s     r   visit_grouping!_EvaluatorCompiler.visit_groupingL   s    ||FNN++r   c                    S $ )Nc                    g r    r   objs    r   <lambda>/_EvaluatorCompiler.visit_null.<locals>.<lambda>P       4r   r   rJ   s     r   
visit_null_EvaluatorCompiler.visit_nullO       r   c                    S $ )Nc                    g)NFr   rO   s    r   rQ   0_EvaluatorCompiler.visit_false.<locals>.<lambda>S   s    5r   r   rJ   s     r   visit_false_EvaluatorCompiler.visit_falseR   s      r   c                    S $ )Nc                    g)NTr   rO   s    r   rQ   /_EvaluatorCompiler.visit_true.<locals>.<lambda>V   rS   r   r   rJ   s     r   
visit_true_EvaluatorCompiler.visit_trueU   rV   r   c                  ^  UR                   S   nU R                  (       a=  [	        U R                  UR
                  5      (       d  [        SUR
                   35      eUR                  5          UR                  U   R                  nUR                  U   R                  mU4S jnU$ ! [         a  n[        SU 35      UeS nAff = f! [        R                   a  n[        SU 35      UeS nAff = f)NparentmapperzCannot evaluate column: z0Can't evaluate criteria against alternate class zCannot evaluate expression: c                   > U c  [         $ [        U 5      nUR                  nTR                  X[        R
                  S9nU[        R                  L a  [        $ U$ )N)passive)	
_NO_OBJECTr
   dictgetr   PASSIVE_NO_FETCHr   PASSIVE_NO_RESULT_EXPIRED_OBJECT)rP   statedict_valueimpls       r   get_corresponding_attr?_EvaluatorCompiler.visit_column.<locals>.get_corresponding_attr   sZ    {!!CLEJJEHHk&B&B  E ,>>>&&Lr   )_annotationsKeyErrorr   r:   
issubclassclass__check_configure_columntopropertykeyorm_excUnmappedColumnErrorclass_managerrn   )r"   rC   rb   kerw   errro   rn   s          @r   visit_column_EvaluatorCompiler.visit_columnX   s   	!..~>L ??:OO\00$
 $
 %##/#6#6"79 
 	%%'	008<<C ))#.33	 &%c  	$*6(3	4 ** 	$.se4	s/   B+ 1C +
C	5CC	C4 C//C4c                $    U R                  U5      $ r    visit_clauselistrJ   s     r   visit_tuple_EvaluatorCompiler.visit_tuple       $$V,,r   c                $    U R                  U5      $ r    r   rJ   s     r   visit_expression_clauselist._EvaluatorCompiler.visit_expression_clauselist   r   r   c                .   UR                    Vs/ s H  oR                  U5      PM     nnSWR                  R                  R	                  S5       S3n[        XS 5      nU(       a  U" UR                  X!5      $ [        SUR                   35      es  snf )Nr>   __clauselist_opz)Cannot evaluate clauselist with operator )rD   rF   operatorr   rstripr@   r   )r"   rC   
evaluatorsdispatchrE   s        r   r   #_EvaluatorCompiler.visit_clauselist   s    9?Hvll6*
H V__--44S9:.I 	 tt,<<$;FOO;LM  Is   Bc                j   U R                  UR                  5      nU R                  UR                  5      nSUR                  R                  R                  S5       S3n[        XS 5      nU(       a  U" UR                  X#U5      $ [        S[        U5      R                   SUR                   35      e)Nr>   r   
_binary_opr?    with operator )	rF   leftrightr   r   r   r@   r   rB   )r"   rC   	eval_left
eval_rightr   rE   s         r   visit_binary_EvaluatorCompiler.visit_binary   s    LL-	\\&,,/
FOO44;;C@ALtt,GG$"4<#8#8"9 :"OO,. r   c                   ^ U4S jnU$ )Nc                   > SnT H2  nU" U 5      nU[         L a  [         s  $ U(       a    gU=(       d    US L nM4     U(       a  g gNFTrj   )rP   has_nullsub_evaluaterm   r   s       r   evaluate;_EvaluatorCompiler.visit_or_clauselist_op.<locals>.evaluate   sI    H *$S)O+**#4u} !+ r   r   r"   r   r   rC   r   s     `  r   visit_or_clauselist_op)_EvaluatorCompiler.visit_or_clauselist_op   s    	 r   c                   ^ U4S jnU$ )Nc                x   > T H3  nU" U 5      nU[         L a  [         s  $ U(       a  M%  Ub	  U[        L a    g   g   gr   )rj   re   )rP   r   rm   r   s      r   r   <_EvaluatorCompiler.visit_and_clauselist_op.<locals>.evaluate   sA     *$S)O+**u}(;#  !+ r   r   r   s     `  r   visit_and_clauselist_op*_EvaluatorCompiler.visit_and_clauselist_op   s    
	 r   c                   ^ U4S jnU$ )Nc                   > / nT H;  nU" U 5      nU[         L a  [         s  $ Ub	  U[        L a    g UR                  U5        M=     [        U5      $ r    )rj   re   appendtuple)rP   valuesr   rm   r   s       r   r   A_EvaluatorCompiler.visit_comma_op_clauselist_op.<locals>.evaluate   sQ    F *$S)O+**]ez&9e$ !+ = r   r   r   s     `  r   visit_comma_op_clauselist_op/_EvaluatorCompiler.visit_comma_op_clauselist_op   s    		! r   c                |    UR                   (       a  U R                  XX45      $ [        SUR                  < S35      e)NzCustom operator zR can't be evaluated in Python unless it specifies a callable using `.python_impl`.)python_impl_straight_evaluater   opstringr"   r   r   r   rC   s        r   visit_custom_op_binary_op,_EvaluatorCompiler.visit_custom_op_binary_op   sL     **Z  %"8#4#4"7 8" " r   c                   ^^ UU4S jnU$ )Nc                \   > T" U 5      nT" U 5      nU[         L d	  U[         L a  [         $ X:H  $ r    r   rP   left_val	right_valr   r   s      r   r   7_EvaluatorCompiler.visit_is_binary_op.<locals>.evaluate   3     ~H"3I?*i?.J&&((r   r   r"   r   r   r   rC   r   s     ``  r   visit_is_binary_op%_EvaluatorCompiler.visit_is_binary_op       	) r   c                   ^^ UU4S jnU$ )Nc                \   > T" U 5      nT" U 5      nU[         L d	  U[         L a  [         $ X:g  $ r    r   r   s      r   r   ;_EvaluatorCompiler.visit_is_not_binary_op.<locals>.evaluate   r   r   r   r   s     ``  r   visit_is_not_binary_op)_EvaluatorCompiler.visit_is_not_binary_op   r   r   c                   ^^^ UUU4S jnU$ )Nc                   > T" U 5      nT" U 5      nU[         L d	  U[         L a  [         $ Ub  Uc  g T" T" U 5      T" U 5      5      $ r    r   )rP   r   r   r   r   r   s      r   r   7_EvaluatorCompiler._straight_evaluate.<locals>.evaluate   sM     ~H"3I?*i?.J&&!Y%6IcNJsO<<r   r   r   s    ```  r   r   %_EvaluatorCompiler._straight_evaluate   s    	= r   c                j   UR                   R                  R                  [        [        4;  d.  UR
                  R                  R                  [        [        4;  aF  [        SUR                   SUR                   R                   SUR
                  R                   35      eU R                  XX45      $ )NzCannot evaluate math operator "" for datatypes , )	r   rB   _type_affinityr   r   r   r   r   r   r   s        r   _straight_evaluate_numeric_only2_EvaluatorCompiler._straight_evaluate_numeric_only  s     ;;**3
 
 \\--gw5GG$1(2C2C1D E#[[--.b1B1B0CE 
 &&xJOOr   c                ,    U R                  S UUU5      $ )Nc                     U [         La  X;   $ S $ r    re   abs     r   rQ   :_EvaluatorCompiler.visit_in_op_binary_op.<locals>.<lambda>(  s    1J#6@D@r   r   r   s        r   visit_in_op_binary_op(_EvaluatorCompiler.visit_in_op_binary_op&  s!    &&@	
 	
r   c                ,    U R                  S UUU5      $ )Nc                     U [         La  X;  $ S $ r    r   r   s     r   rQ   >_EvaluatorCompiler.visit_not_in_op_binary_op.<locals>.<lambda>2  s    q
':DDr   r   r   s        r   visit_not_in_op_binary_op,_EvaluatorCompiler.visit_not_in_op_binary_op.  s#     &&D	
 	
r   c                   [        UR                  R                  R                  [        5      (       a3  [        UR
                  R                  R                  [        5      (       dF  [        SUR                   SUR                  R                   SUR
                  R                   35      eU R                  S X#U5      $ )Nz&Cannot evaluate concatenate operator "r   r   c                
    X-   $ r    r   r   s     r   rQ   >_EvaluatorCompiler.visit_concat_op_binary_op.<locals>.<lambda>F  s    r   )	rs   r   rB   r   r   r   r   r   r   r   s        r   visit_concat_op_binary_op,_EvaluatorCompiler.visit_concat_op_binary_op8  s     KK++\
 
FLL--<<lKK$%%& '#[[--.b1B1B0CE  &&	v
 	
r   c                *    U R                  S X#U5      $ )Nc                $    U R                  U5      $ r    )
startswithr   s     r   rQ   B_EvaluatorCompiler.visit_startswith_op_binary_op.<locals>.<lambda>M  s    ar   r   r   s        r   visit_startswith_op_binary_op0_EvaluatorCompiler.visit_startswith_op_binary_opI  s     &&()
 	
r   c                *    U R                  S X#U5      $ )Nc                $    U R                  U5      $ r    )endswithr   s     r   rQ   @_EvaluatorCompiler.visit_endswith_op_binary_op.<locals>.<lambda>T  s    Ar   r   r   s        r   visit_endswith_op_binary_op._EvaluatorCompiler.visit_endswith_op_binary_opP  s     &&&	v
 	
r   c                   ^ U R                  UR                  5      mUR                  [        R                  L a  U4S jnU$ [        S[        U5      R                   SUR                   35      e)Nc                H   > T" U 5      nU[         L a  [         $ Uc  g U(       + $ r    r   )rP   rm   
eval_inners     r   r   0_EvaluatorCompiler.visit_unary.<locals>.evaluate[  s*    "3O+**] y r   r?   r   )rF   rI   r   r   invr   rB   r   )r"   rC   r   r   s      @r   visit_unary_EvaluatorCompiler.visit_unaryW  sd    \\&..1
??imm+! O tF|445 6#__-/
 	
r   c                l   ^ UR                   (       a  UR                  5       mOUR                  mU4S j$ )Nc                   > T$ r    r   )rP   vals    r   rQ   4_EvaluatorCompiler.visit_bindparam.<locals>.<lambda>n  s    3r   )callablerm   )r"   rC   r   s     @r   visit_bindparam"_EvaluatorCompiler.visit_bindparami  s%    ??//#C,,Cr   r9   r    )*r   r   r   r   r;   rF   rK   rT   rZ   r_   r}   r   r   r   r   r   r   r   r   r   r   r   r   visit_add_binary_opvisit_mul_binary_opvisit_sub_binary_opvisit_mod_binary_opvisit_truediv_binary_opvisit_lt_binary_opvisit_le_binary_opvisit_ne_binary_opvisit_gt_binary_opvisit_ge_binary_opvisit_eq_binary_opr   r   r   r   r   r   r   r   r   r   r   r6   r6   =   s    %	, ! 4&l-- P :999=++++++


"


$r   r6   c                `    U S:X  a  [        SS5        [        $ [        S[        < SU < 35      e)NEvaluatorCompilerzDirect use of 'EvaluatorCompiler' is not supported, and this name will be removed in a future release.  '_EvaluatorCompiler' is for internal use onlyz2.0zmodule z has no attribute )r   r6   AttributeErrorr   )names    r   __getattr__r  q  s>    ""< 		
 "!wxl2DTHMNNr   N)r  strreturnzType[_EvaluatorCompiler])__doc__
__future__r   typingr    r   rx   baser   r   r
   sqlr   r   sql.sqltypesr   r   r   utilr   InvalidRequestErrorr   ColumnOperatorsr   r.   re   rj   r6   r  r   r   r   <module>r     s    #   &      ' " " "	00 		)) Y..  [
 "q qh	
Or   