ó
    Ñ]jA0  ã                  ó\  • 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)zÕEvaluation 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   ó    ÚU/home/mande/repo/quber/.venv/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)Ú_ExpiredObjecté1   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ä�t˜v f×&;Ñ&;Ð%<Ð=¸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   € Ø�|‰|˜FŸN™NÓ+Ð+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   ø€ Ø‰{Ü!Ð!Ü˜C“LˆEØ—J‘JˆEà—H‘HØ¤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ð �?�?¤:Ø�O‰O˜\×0Ñ0÷$
ñ $
ô %ð#Ø#/×#6Ñ#6Ð"7ð9óð ð
 	×%Ñ%Ô'ð	Ø×0Ñ0°Ñ8×<Ñ<ˆCð ×)Ñ)¨#Ñ.×3Ñ3ˆõ	ð &Ð%øôc ó 	Ü$Ø*¨6¨(Ð3óàðûð	ûô4 ×*Ñ*ó 	Ü$Ø.¨s¨eÐ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º¨v—l‘l 6Ö*¹ˆ
ÐHð �V—_‘_×-Ñ-×4Ñ4°SÓ9Ð:¸.ÐIð 	ô �t tÓ,ˆÞÙ˜Ÿ™¨Ó<Ð<ä$Ø;¸F¿O¹OÐ;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Ÿ   € Ø—L‘L §¡Ó-ˆ	Ø—\‘\ &§,¡,Ó/ˆ
à˜FŸO™O×4Ñ4×;Ñ;¸CÓ@ÐAÀÐLˆÜ�t tÓ,ˆÞÙ˜Ÿ™¨ÀÓGÐGä$Ø"¤4¨£<×#8Ñ#8Ð"9ð :Ø"ŸO™OÐ,ð.óð 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Ò+Ü*Ò*ÞÙØ#×4 u° }’ñ !+ö ØØ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Ò+Ü*Ò*Ø‘] e¬zÒ&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Øá™I c›N©J°s«OÓ<Ð<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_onlyÚ2_EvaluatorCompiler._straight_evaluate_numeric_only  s£   € ð �;‰;×Ñ×*Ñ*ÜÜð3
ó 
ð �\‰\×Ñ×-Ñ-´g¼wÐ5GÓGÜ$Ø1°(×2CÑ2CÐ1Dð EØ#Ÿ[™[×-Ñ-Ð.¨b°·±×1BÑ1BÐ0CðEóð ð
 ×&Ñ& x¸JÓ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   €  1¬JÒ#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©   € ô Ø�K‰K×Ñ×+Ñ+¬\÷
ñ 
ä˜FŸL™L×-Ñ-×<Ñ<¼l×KÑKÜ$ðØ×%Ñ%Ð&ð 'Ø#Ÿ[™[×-Ñ-Ð.¨b°·±×1BÑ1BÐ0Cð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_opÚ0_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ˆ
Ø�?‰?œiŸm™mÒ+õ!ð ˆOÜ Øœt F›|×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ÚEvaluatorCompilerz•Direct 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>   € ØÐ"Ó"Üð<ð ô		
ô "Ð!ä˜w¤x¡lÐ2DÀTÁHÐ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   