§
    eŠtj@0  ã                  ób  — d 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  G d„ dej        ¦  «        Z G d„ dej        ¦  «        Z G d„ dej        ¦  «        Z e¦   «         Z e¦   «         Z G d„ d¦  «        Zdd„ZdS )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                  ó   — e Zd ZdS )ÚUnevaluatableErrorN)Ú__name__Ú
__module__Ú__qualname__© ó    úV/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sqlalchemy/orm/evaluator.pyr   r   $   s   € € € € € Ø€Dr   r   c                  ó   — e Zd Zd„ Zd„ ZdS )Ú	_NoObjectc                ó   — d S ©Nr   ©ÚselfÚargÚkws      r   Úoperatez_NoObject.operate)   ó   € Øˆtr   c                ó   — d S r   r   r   s      r   Úreverse_operatez_NoObject.reverse_operate,   r"   r   N©r   r   r   r!   r$   r   r   r   r   r   (   ó2   € € € € € ðð ð ðð ð ð ð r   r   c                  ó   — e Zd Zd„ Zd„ ZdS )Ú_ExpiredObjectc                ó   — | S r   r   r   s      r   r!   z_ExpiredObject.operate1   ó   € Øˆr   c                ó   — | S r   r   r   s      r   r$   z_ExpiredObject.reverse_operate4   r*   r   Nr%   r   r   r   r(   r(   0   r&   r   r(   c                  óØ   — e Zd Zdd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZeZeZeZeZeZeZeZeZeZeZeZ d„ Z!d„ Z"d„ Z#d„ Z$d„ Z%d„ Z&d„ Z'dS )Ú_EvaluatorCompilerNc                ó   — || _         d S r   )Ú
target_cls)r   r/   s     r   Ú__init__z_EvaluatorCompiler.__init__=   s   € Ø$ˆŒˆˆr   c                ó´   — |rt          |g|¢R Ž }t          | d|j        › �d ¦  «        }|s$t          dt	          |¦  «        j        › �¦  «        ‚ ||¦  «        S )NÚvisit_úCannot evaluate )r   ÚgetattrÚ__visit_name__r   Útyper   )r   ÚclauseÚclausesÚmeths       r   Úprocessz_EvaluatorCompiler.process@   sz   € Øð 	,Ý˜&Ð+ 7Ð+Ð+Ð+ˆFå�tÐ= fÔ&;Ð=Ð=¸tÑDÔDˆØð 	Ý$Ø:¥4¨¡<¤<Ô#8Ð:Ð:ñô ð ð ˆt�F‰|Œ|Ðr   c                ó6   — |                       |j        ¦  «        S r   )r:   Úelement©r   r7   s     r   Úvisit_groupingz!_EvaluatorCompiler.visit_groupingK   s   € Ø�|Š|˜FœNÑ+Ô+Ð+r   c                ó   — d„ S )Nc                ó   — d S r   r   ©Úobjs    r   ú<lambda>z/_EvaluatorCompiler.visit_null.<locals>.<lambda>O   ó   € ˜4€ r   r   r=   s     r   Ú
visit_nullz_EvaluatorCompiler.visit_nullN   ó   € ØÐÐr   c                ó   — d„ S )Nc                ó   — dS )NFr   rA   s    r   rC   z0_EvaluatorCompiler.visit_false.<locals>.<lambda>R   s   € ˜5€ r   r   r=   s     r   Úvisit_falsez_EvaluatorCompiler.visit_falseQ   s   € Ø Ð Ð r   c                ó   — d„ S )Nc                ó   — dS )NTr   rA   s    r   rC   z/_EvaluatorCompiler.visit_true.<locals>.<lambda>U   rD   r   r   r=   s     r   Ú
visit_truez_EvaluatorCompiler.visit_trueT   rF   r   c                ó²  ‡— 	 |j         d         }n%# t          $ r}t          d|› �¦  «        |‚d }~ww xY w| j        r1t	          | j        |j        ¦  «        st          d|j        › �¦  «        ‚|                     ¦   «          	 |j        |         j        }n*# t          j
        $ r}t          d|› �¦  «        |‚d }~ww xY w|j        |         j        Šˆfd„}|S )NÚparentmapperzCannot evaluate column: z0Can't evaluate criteria against alternate class zCannot evaluate expression: c                ó´   •— | €t           S t          | ¦  «        }|j        }‰                     ||t          j        ¬¦  «        }|t          j        u rt          S |S )N)Úpassive)	Ú
_NO_OBJECTr
   ÚdictÚgetr   ÚPASSIVE_NO_FETCHr   ÚPASSIVE_NO_RESULTÚ_EXPIRED_OBJECT)rB   ÚstateÚdict_ÚvalueÚimpls       €r   Úget_corresponding_attrz?_EvaluatorCompiler.visit_column.<locals>.get_corresponding_attr~   s^   ø€ Øˆ{Ý!Ð!Ý˜C‘L”LˆEØ”JˆEà—H’HØ�u¥kÔ&Bð ñ ô ˆEð Õ,Ô>Ð>Ð>Ý&Ð&ØˆLr   )Ú_annotationsÚKeyErrorr   r/   Ú
issubclassÚclass_Ú_check_configureÚ_columntopropertyÚkeyÚorm_excÚUnmappedColumnErrorÚclass_managerrZ   )r   r7   rN   Úkerb   Úerrr[   rZ   s          @r   Úvisit_columnz_EvaluatorCompiler.visit_columnW   sF  ø€ ð	Ø!Ô.¨~Ô>ˆLˆLøÝð 	ð 	ð 	Ý$Ø3¨6Ð3Ð3ñô àðøøøøð	øøøð
 Œ?ð 	¥:ØŒO˜\Ô0ñ$
ô $
ð 	õ %ð9Ø#/Ô#6ð9ð 9ñô ð ð
 	×%Ò%Ñ'Ô'Ð'ð	ØÔ0°Ô8Ô<ˆCˆCøÝÔ*ð 	ð 	ð 	Ý$Ø4¨sÐ4Ð4ñô àðøøøøð	øøøð Ô)¨#Ô.Ô3ˆð	ð 	ð 	ð 	ð 	ð &Ð%s(   ƒ ‘
3›.®3ÂB ÂB=Â%B8Â8B=c                ó,   — |                       |¦  «        S r   ©Úvisit_clauselistr=   s     r   Úvisit_tuplez_EvaluatorCompiler.visit_tuple�   ó   € Ø×$Ò$ VÑ,Ô,Ð,r   c                ó,   — |                       |¦  «        S r   rj   r=   s     r   Úvisit_expression_clauselistz._EvaluatorCompiler.visit_expression_clauselist�   rm   r   c                óè   ‡ — ˆ fd„|j         D ¦   «         }d|j        j                             d¦  «        › d�}t	          ‰ |d ¦  «        }|r ||j        ||¦  «        S t          d|j        › �¦  «        ‚)Nc                ó:   •— g | ]}‰                      |¦  «        ‘ŒS r   )r:   )Ú.0r7   r   s     €r   ú
<listcomp>z7_EvaluatorCompiler.visit_clauselist.<locals>.<listcomp>”   s%   ø€ ÐHÐHÐH¨v�d—l’l 6Ñ*Ô*ÐHÐHÐHr   r2   Ú_Ú_clauselist_opz)Cannot evaluate clauselist with operator )r8   Úoperatorr   Úrstripr4   r   )r   r7   Ú
evaluatorsÚdispatchr9   s   `    r   rk   z#_EvaluatorCompiler.visit_clauselist“   s—   ø€ ØHÐHÐHÐH¸¼ÐHÑHÔHˆ
ð J�V”_Ô-×4Ò4°SÑ9Ô9ÐIÐIÐIð 	õ �t˜X tÑ,Ô,ˆØð 	Ø�4˜œ¨°VÑ<Ô<Ð<å$ØM¸F¼OÐMÐMñô ð r   c                óT  — |                       |j        ¦  «        }|                       |j        ¦  «        }d|j        j                             d¦  «        › d�}t          | |d ¦  «        }|r ||j        |||¦  «        S t          dt          |¦  «        j        › d|j        › �¦  «        ‚)Nr2   rt   Ú
_binary_opr3   ú with operator )	r:   ÚleftÚrightrv   r   rw   r4   r   r6   )r   r7   Ú	eval_leftÚ
eval_rightry   r9   s         r   Úvisit_binaryz_EvaluatorCompiler.visit_binary¡   s·   € Ø—L’L ¤Ñ-Ô-ˆ	Ø—\’\ &¤,Ñ/Ô/ˆ
àL˜FœOÔ4×;Ò;¸CÑ@Ô@ÐLÐLÐLˆÝ�t˜X tÑ,Ô,ˆØð 	Ø�4˜œ¨°JÀÑGÔGÐGå$ð.¥4¨¡<¤<Ô#8ð .ð .Ø"œOð.ð .ñô ð r   c                ó   ‡— ˆfd„}|S )Nc                ón   •— d}‰D ]*} || ¦  «        }|t           u r	t           c S |r dS |p|d u }Œ+|rd S dS ©NFT©rV   )rB   Úhas_nullÚsub_evaluaterY   rx   s       €r   Úevaluatez;_EvaluatorCompiler.visit_or_clauselist_op.<locals>.evaluate°   sn   ø€ ØˆHØ *ð 5ð 5�Ø$˜ SÑ)Ô)�Ø�OÐ+Ð+Ý*Ð*Ð*Ð*Øð  Ø˜4˜4Ø#Ð4 u° }��Øð Ø�tØ�5r   r   ©r   rv   rx   r7   rˆ   s     `  r   Úvisit_or_clauselist_opz)_EvaluatorCompiler.visit_or_clauselist_op¯   s#   ø€ ð	ð 	ð 	ð 	ð 	ð ˆr   c                ó   ‡— ˆfd„}|S )Nc                ór   •— ‰D ]2} || ¦  «        }|t           u r	t           c S |s|�	|t          u r d S  dS Œ3dS r„   )rV   rQ   )rB   r‡   rY   rx   s      €r   rˆ   z<_EvaluatorCompiler.visit_and_clauselist_op.<locals>.evaluateÀ   si   ø€ Ø *ð !ð !�Ø$˜ SÑ)Ô)�Ø�OÐ+Ð+Ý*Ð*Ð*Ð*àð !Ø�}¨µÐ(;Ð(;Ø#˜t˜tØ ˜5˜5ð!ð �4r   r   r‰   s     `  r   Úvisit_and_clauselist_opz*_EvaluatorCompiler.visit_and_clauselist_op¿   s#   ø€ ð
	ð 
	ð 
	ð 
	ð 
	ð ˆr   c                ó   ‡— ˆfd„}|S )Nc                ó°   •— g }‰D ]B} || ¦  «        }|t           u r	t           c S |�	|t          u r d S |                     |¦  «         ŒCt          |¦  «        S r   )rV   rQ   ÚappendÚtuple)rB   Úvaluesr‡   rY   rx   s       €r   rˆ   zA_EvaluatorCompiler.visit_comma_op_clauselist_op.<locals>.evaluateÏ   st   ø€ ØˆFØ *ð %ð %�Ø$˜ SÑ)Ô)�Ø�OÐ+Ð+Ý*Ð*Ð*Ð*Ø�] e­zÐ&9Ð&9Ø˜4˜4Ø—’˜eÑ$Ô$Ð$Ð$Ý˜‘=”=Ð r   r   r‰   s     `  r   Úvisit_comma_op_clauselist_opz/_EvaluatorCompiler.visit_comma_op_clauselist_opÎ   s#   ø€ ð		!ð 		!ð 		!ð 		!ð 		!ð ˆr   c                óp   — |j         r|                      ||||¦  «        S t          d|j        ›d�¦  «        ‚)NzCustom operator zR can't be evaluated in Python unless it specifies a callable using `.python_impl`.)Úpython_implÚ_straight_evaluater   Úopstring©r   rv   r   r€   r7   s        r   Úvisit_custom_op_binary_opz,_EvaluatorCompiler.visit_custom_op_binary_opÜ   s]   € ð Ôð 		Ø×*Ò*Ø˜) Z°ñô ð õ %ð" 8Ô#4ð "ð "ð "ñô ð r   c                ó   ‡‡— ˆˆfd„}|S )Nc                ón   •—  ‰| ¦  «        } ‰| ¦  «        }|t           u s	|t           u rt           S ||k    S r   r…   ©rB   Úleft_valÚ	right_valr   r€   s      €€r   rˆ   z7_EvaluatorCompiler.visit_is_binary_op.<locals>.evaluateë   óC   ø€ Ø �y ‘~”~ˆHØ"˜
 3™œˆIØ�?Ð*Ð*¨i½?Ð.JÐ.JÝ&Ð&Ø˜yÒ(Ð(r   r   ©r   rv   r   r€   r7   rˆ   s     ``  r   Úvisit_is_binary_opz%_EvaluatorCompiler.visit_is_binary_opê   ó)   øø€ ð	)ð 	)ð 	)ð 	)ð 	)ð 	)ð ˆr   c                ó   ‡‡— ˆˆfd„}|S )Nc                ón   •—  ‰| ¦  «        } ‰| ¦  «        }|t           u s	|t           u rt           S ||k    S r   r…   rœ   s      €€r   rˆ   z;_EvaluatorCompiler.visit_is_not_binary_op.<locals>.evaluateõ   rŸ   r   r   r    s     ``  r   Úvisit_is_not_binary_opz)_EvaluatorCompiler.visit_is_not_binary_opô   r¢   r   c                ó   ‡‡‡— ˆˆˆfd„}|S )Nc                óª   •—  ‰| ¦  «        } ‰| ¦  «        }|t           u s	|t           u rt           S |�|€d S  ‰ ‰| ¦  «         ‰| ¦  «        ¦  «        S r   r…   )rB   r�   rž   r   r€   rv   s      €€€r   rˆ   z7_EvaluatorCompiler._straight_evaluate.<locals>.evaluateÿ   sj   ø€ Ø �y ‘~”~ˆHØ"˜
 3™œˆIØ�?Ð*Ð*¨i½?Ð.JÐ.JÝ&Ð&ØÐ! YÐ%6Ø�tà�8˜I˜I c™NœN¨J¨J°s©O¬OÑ<Ô<Ð<r   r   r    s    ```  r   r–   z%_EvaluatorCompiler._straight_evaluateþ   s/   øøø€ ð	=ð 	=ð 	=ð 	=ð 	=ð 	=ð 	=ð ˆr   c                ó  — |j         j        j        t          t          fvs|j        j        j        t          t          fvr1t          d|j        › d|j         j        › d|j        j        › �¦  «        ‚|                      ||||¦  «        S )NzCannot evaluate math operator "ú" for datatypes ú, )	r}   r6   Ú_type_affinityr   r   r~   r   r   r–   r˜   s        r   Ú_straight_evaluate_numeric_onlyz2_EvaluatorCompiler._straight_evaluate_numeric_only  s«   € ð Œ;ÔÔ*ÝÝð3
ð 
ð 
ð Œ\ÔÔ-µg½wÐ5GÐGÐGÝ$ðE°(Ô2Cð Eð EØ#œ[Ô-ðEð EØ17´Ô1BðEð Eñô ð ð
 ×&Ò& x°¸JÈÑOÔOÐOr   c                ó4   — |                       d„ |||¦  «        S )Nc                ó    — | t           ur| |v nd S r   ©rQ   ©ÚaÚbs     r   rC   z:_EvaluatorCompiler.visit_in_op_binary_op.<locals>.<lambda>'  s   €  1­JÐ#6Ð#6˜˜a˜˜¸D€ r   ©r–   r˜   s        r   Úvisit_in_op_binary_opz(_EvaluatorCompiler.visit_in_op_binary_op%  s)   € Ø×&Ò&Ø@Ð@ØØØñ	
ô 
ð 	
r   c                ó4   — |                       d„ |||¦  «        S )Nc                ó    — | t           ur| |vnd S r   r¯   r°   s     r   rC   z>_EvaluatorCompiler.visit_not_in_op_binary_op.<locals>.<lambda>1  s   €  qµ
Ð':Ð':˜ !˜˜À€ r   r³   r˜   s        r   Úvisit_not_in_op_binary_opz,_EvaluatorCompiler.visit_not_in_op_binary_op-  s+   € ð ×&Ò&ØDÐDØØØñ	
ô 
ð 	
r   c                ó&  — t          |j        j        j        t          ¦  «        r$t          |j        j        j        t          ¦  «        s1t          d|j        › d|j        j        › d|j        j        › �¦  «        ‚|                      d„ |||¦  «        S )Nz&Cannot evaluate concatenate operator "r©   rª   c                ó   — | |z   S r   r   r°   s     r   rC   z>_EvaluatorCompiler.visit_concat_op_binary_op.<locals>.<lambda>E  s
   € ˜˜Q™€ r   )	r^   r}   r6   r«   r   r~   r   r   r–   r˜   s        r   Úvisit_concat_op_binary_opz,_EvaluatorCompiler.visit_concat_op_binary_op7  s·   € õ ØŒKÔÔ+­\ñ
ô 
ð 	å˜FœLÔ-Ô<½lÑKÔKð	õ %ðEØÔ%ðEð Eà#œ[Ô-ðEð Eà17´Ô1BðEð Eñô ð ð ×&Ò&ØÐ 	¨:°vñ
ô 
ð 	
r   c                ó4   — |                       d„ |||¦  «        S )Nc                ó,   — |                       |¦  «        S r   )Ú
startswithr°   s     r   rC   zB_EvaluatorCompiler.visit_startswith_op_binary_op.<locals>.<lambda>L  s   € ˜Ÿš a™œ€ r   r³   r˜   s        r   Úvisit_startswith_op_binary_opz0_EvaluatorCompiler.visit_startswith_op_binary_opH  s(   € ð ×&Ò&Ø(Ð(¨)°ZÀñ
ô 
ð 	
r   c                ó4   — |                       d„ |||¦  «        S )Nc                ó,   — |                       |¦  «        S r   )Úendswithr°   s     r   rC   z@_EvaluatorCompiler.visit_endswith_op_binary_op.<locals>.<lambda>S  s   € ˜Ÿš A™œ€ r   r³   r˜   s        r   Úvisit_endswith_op_binary_opz._EvaluatorCompiler.visit_endswith_op_binary_opO  s(   € ð ×&Ò&Ø&Ð&¨	°:¸vñ
ô 
ð 	
r   c                óÄ   ‡— |                       |j        ¦  «        Š|j        t          j        u rˆfd„}|S t          dt          |¦  «        j        › d|j        › �¦  «        ‚)Nc                óH   •—  ‰| ¦  «        }|t           u rt           S |€d S | S r   r…   )rB   rY   Ú
eval_inners     €r   rˆ   z0_EvaluatorCompiler.visit_unary.<locals>.evaluateZ  s3   ø€ Ø"˜
 3™œ�Ø�OÐ+Ð+Ý*Ð*Ø�]Ø˜4Ø �yÐ r   r3   r|   )r:   r<   rv   r   Úinvr   r6   r   )r   r7   rˆ   rÅ   s      @r   Úvisit_unaryz_EvaluatorCompiler.visit_unaryV  s€   ø€ Ø—\’\ &¤.Ñ1Ô1ˆ
ØŒ?�iœmÐ+Ð+ð!ð !ð !ð !ð !ð ˆOÝ ð/�t F™|œ|Ô4ð /ð /Ø#œ_ð/ð /ñ
ô 
ð 	
r   c                óT   ‡— |j         r|                      ¦   «         Šn|j        Šˆfd„S )Nc                ó   •— ‰S r   r   )rB   Úvals    €r   rC   z4_EvaluatorCompiler.visit_bindparam.<locals>.<lambda>m  s   ø€ ˜3€ r   )ÚcallablerY   )r   r7   rÊ   s     @r   Úvisit_bindparamz"_EvaluatorCompiler.visit_bindparamh  s1   ø€ ØŒ?ð 	Ø—/’/Ñ#Ô#ˆCˆCà”,ˆCØˆˆˆÐr   r   )(r   r   r   r0   r:   r>   rE   rI   rL   rh   rl   ro   rk   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-   r-   <   sç  € € € € € ð%ð %ð %ð %ð	ð 	ð 	ð,ð ,ð ,ð ð  ð  ð!ð !ð !ð ð  ð  ð4&ð 4&ð 4&ðl-ð -ð -ð-ð -ð -ðð ð ðð ð ðð ð ð ð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðPð Pð Pð :ÐØ9ÐØ9ÐØ9ÐØ=ÐØ+ÐØ+ÐØ+ÐØ+ÐØ+ÐØ+Ðð
ð 
ð 
ð
ð 
ð 
ð
ð 
ð 
ð"
ð 
ð 
ð
ð 
ð 
ð
ð 
ð 
ð$ð ð ð ð r   r-   ÚnameÚstrÚreturnúType[_EvaluatorCompiler]c                óp   — | dk    rt          dd¦  «         t          S t          dt          ›d| ›�¦  «        ‚)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   r-   ÚAttributeErrorr   )rØ   s    r   Ú__getattr__rß   p  sQ   € ØÐ"Ò"Ð"Ýð<ð ñ		
ô 	
ð 	
õ "Ð!åÐM¥xÐMÐMÀTÐMÐMÑNÔNÐNr   N)rØ   rÙ   rÚ   rÛ   )Ú__doc__Ú
__future__r   Útypingr   Ú r   rc   Úbaser   r   r
   Úsqlr   r   Úsql.sqltypesr   r   r   Úutilr   ÚInvalidRequestErrorr   ÚColumnOperatorsr   r(   rQ   rV   r-   rß   r   r   r   ú<module>rê      sñ  ððð ð #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø &Ð &Ð &Ð &Ð &Ð &Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø "Ð "Ð "Ð "Ð "Ð "Ø "Ð "Ð "Ð "Ð "Ð "Ø "Ð "Ð "Ð "Ð "Ð "ð	ð 	ð 	ð 	ð 	˜Ô0ñ 	ô 	ð 	ðð ð ð ð �	Ô)ñ ô ð ðð ð ð ð �YÔ.ñ ô ð ð ˆY‰[Œ[€
Ø �.Ñ"Ô"€ðqð qð qð qð qñ qô qð qðh	
Oð 
Oð 
Oð 
Oð 
Oð 
Or   