
    ؄_A                         d dl Z ddlmZ ddlmZ ddlmZ  G d de          Z ed d	D                       Z	 ed
 dD                       Z
 G d de          ZdS )    N   )inspect)util)	operatorsc                       e Zd ZdS )UnevaluatableErrorN)__name__
__module____qualname__     ]/var/www/book.euthymeo.com/html/venv/lib/python3.11/site-packages/sqlalchemy/orm/evaluator.pyr   r      s        Dr   r   c              #   @   K   | ]}t          t          |          V  d S Ngetattrr   .0ops     r   	<genexpr>r      s@        
 Ir     r   )addmulsubdivmodtruedivltlenegtgeeqc              #   @   K   | ]}t          t          |          V  d S r   r   r   s     r   r   r   &   s@        
 Ir     r   )	like_op
notlike_opilike_opnotilike_op
between_opin_opnotin_opendswith_op	concat_opc                   R    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S )EvaluatorCompilerNc                     || _         d S r   )
target_cls)selfr0   s     r   __init__zEvaluatorCompiler.__init__7   s    $r   c                     t          | d|j        z  d           }|s$t          dt          |          j        z             ||          S )Nzvisit_%szCannot evaluate %s)r   __visit_name__r   typer	   )r1   clausemeths      r   processzEvaluatorCompiler.process:   sV    tZ&*??FF 	$$tF||'<<   tF||r   c                 6    |                      |j                  S r   )r8   elementr1   r6   s     r   visit_groupingz EvaluatorCompiler.visit_groupingB   s    ||FN+++r   c                     d S )Nc                     d S r   r   objs    r   <lambda>z.EvaluatorCompiler.visit_null.<locals>.<lambda>F       4 r   r   r;   s     r   
visit_nullzEvaluatorCompiler.visit_nullE       r   c                     d S )Nc                     dS )NFr   r?   s    r   rA   z/EvaluatorCompiler.visit_false.<locals>.<lambda>I   s    5 r   r   r;   s     r   visit_falsezEvaluatorCompiler.visit_falseH   s       r   c                     d S )Nc                     dS )NTr   r?   s    r   rA   z.EvaluatorCompiler.visit_true.<locals>.<lambda>L   rB   r   r   r;   s     r   
visit_truezEvaluatorCompiler.visit_trueK   rD   r   c                    d|j         v rX|j         d         }| j        r1t          | j        |j                  st	          d|j        z            |j        |         j        }nS|j        }| j        r3|t          | j                  j        v rt          j
        d|z             nt	          d|z            t          j        |          fdS )Nparentmapperz2Can't evaluate criteria against alternate class %szEvaluating non-mapped column expression '%s' onto ORM instances; this is a deprecated use case.  Please make use of the actual mapped columns in ORM-evaluated UPDATE / DELETE expressions.zCannot evaluate column: %sc                      |           S r   r   )r@   get_corresponding_attrs    r   rA   z0EvaluatorCompiler.visit_column.<locals>.<lambda>i   s    11#66 r   )_annotationsr0   
issubclassclass_r   _columntopropertykeyr   column_attrsr   warnoperator
attrgetter)r1   r6   rL   rS   rN   s       @r   visit_columnzEvaluatorCompiler.visit_columnN   s   V000!.~>L z!4( (  )H")*   08<CC*CP74?33@@@	3 6<<    ))E)NOOO!)!4S!9!966666r   c                     t          t          | j        |j                            |j        t
          j        u rfd}n0|j        t
          j        u rfd}nt          d|j        z            |S )Nc                 J    d}D ]} ||           }|r dS |p|d u }|rd S dS NFTr   )r@   has_nullsub_evaluatevalue
evaluatorss       r   evaluatez4EvaluatorCompiler.visit_clauselist.<locals>.evaluateo   sW     $. 9 9L(L--E $#tt'85D=HH  4ur   c                 <    D ]} ||           }|s| d S  dS dS r[   r   )r@   r]   r^   r_   s      r   r`   z4EvaluatorCompiler.visit_clauselist.<locals>.evaluate|   sH    $. % %L(L--E  % =#'44$uu% tr   z+Cannot evaluate clauselist with operator %s)	listmapr8   clausesrV   r   or_and_r   )r1   r6   r`   r_   s      @r   visit_clauselistz"EvaluatorCompiler.visit_clauselistk   s    #dlFN;;<<
?im++	 	 	 	 	 	 _	..      %=O   r   c                 J   t          t          | j        |j        |j        g                    \  |j        t          j        u rfd}nRt          j        u rfd}n=t          v rfd}n,t          dt          |          j        d|j                  |S )Nc                 4     |            |           k    S r   r   r@   	eval_left
eval_rights    r   r`   z0EvaluatorCompiler.visit_binary.<locals>.evaluate        y~~C88r   c                 4     |            |           k    S r   r   rj   s    r   r`   z0EvaluatorCompiler.visit_binary.<locals>.evaluate   rm   r   c                 x     |           } |           }||d S   |            |                     S r   r   )r@   left_val	right_valrk   rl   rV   s      r   r`   z0EvaluatorCompiler.visit_binary.<locals>.evaluate   sO    $9S>>&JsOO	#y'84x		#

3@@@r   Cannot evaluate  with operator )rb   rc   r8   leftrightrV   r   is_isnot_straight_opsr   r5   r	   )r1   r6   r`   rk   rl   rV   s      @@@r   visit_binaryzEvaluatorCompiler.visit_binary   s    $v{FL9::!
 !
	: ?y}$$9 9 9 9 9 9 9 ((9 9 9 9 9 9 9 &&A A A A A A A A %$<<(((&//;   r   c                     |                      |j                  |j        t          j        u rfd}|S t          dt          |          j        d|j                  )Nc                 (     |           }|d S | S r   r   )r@   r^   
eval_inners     r   r`   z/EvaluatorCompiler.visit_unary.<locals>.evaluate   s"    "
3=4 y r   rr   rs   )r8   r:   rV   r   invr   r5   r	   )r1   r6   r`   r|   s      @r   visit_unaryzEvaluatorCompiler.visit_unary   sw    \\&.11
?im++! ! ! ! ! O  F||$$$foo7
 
 	
r   c                 T    |j         r|                                 n|j        fdS )Nc                     S r   r   )r@   vals    r   rA   z3EvaluatorCompiler.visit_bindparam.<locals>.<lambda>   s    3 r   )callabler^   )r1   r6   r   s     @r   visit_bindparamz!EvaluatorCompiler.visit_bindparam   s1    ? 	//##CC,Cr   r   )r	   r
   r   r2   r8   r<   rC   rG   rJ   rX   rg   ry   r~   r   r   r   r   r.   r.   6   s        % % % %  , , ,     ! ! !     7 7 7:  B  >
 
 
     r   r.   )rV    r   r   sqlr   	Exceptionr   setrx   _notimplemented_opsobjectr.   r   r   r   <module>r      s                     	 	 	 	 	 	 	 	       & c  
      J J J J J J J J J Jr   