
    BVh                         d Z ddlZddlmZ ddlmZ ddlmZ dZej                  dej                  dej                  d	iZej                  d
ej                  diZ G d dej                        Zd Zy)zJConverter for logical expressions, e.g. `a and b -> tf.logical_and(a, b)`.    N)	converter)parser)	templatesSAFE_BOOLEAN_OPERAND	ag__.and_z	ag__.not_zag__.or_zag__.eqzag__.not_eqc                   F    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zy)LogicalExpressionTransformerz7Converts logical expressions to corresponding TF calls.c                     t        |      }|t        v r	t        |   S | j                  j                  j                  j                  t        j                  j                        r|t        v r	t        |   S y N)	typeLOGICAL_OPERATORSctxuseroptionsusesr   FeatureEQUALITY_OPERATORS)selfoperatorop_types      j/home/dcms/DCMS/lib/python3.12/site-packages/tensorflow/python/autograph/converters/logical_expressions.py_overload_ofz)LogicalExpressionTransformer._overload_of0   s^    8nG##w''xx}}!!)"3"3"F"FG	&	&!'**    c                 0    t        j                  d|      S )Nzlambda: expr)expr)r   replace_as_expression)r   r   s     r   
_as_lambdaz'LogicalExpressionTransformer._as_lambda9   s    **>EEr   c                 Z    t        j                  dt        j                  |      ||      S )Nzfunc_name(arg1, arg2))	func_namearg1arg2r   r   r   parse_expression)r   r   r    r!   s       r   _as_binary_functionz0LogicalExpressionTransformer._as_binary_function<   s,    **)))4	 r   c                 T    t        j                  d||      }||j                  d<   |S )Nzarg1 is arg2)r    r!   r   )r   r   ops)r   opr    r!   templates        r   _as_binary_operationz1LogicalExpressionTransformer._as_binary_operationC   s/    ..H HLLOOr   c                 X    t        j                  dt        j                  |      |      S )Nzfunc_name(arg))r   argr"   )r   r   r+   s      r   _as_unary_functionz/LogicalExpressionTransformer._as_unary_functionK   s)    **F$;$;I$FCQ Qr   c                 t    | j                  |      }|| j                  |||      S | j                  |||      S r   )r   r)   r$   )r   r'   leftrightoverloads        r   _process_binopz+LogicalExpressionTransformer._process_binopO   sB      $H&&r477##HdE::r   c                 f   | j                  |      }t        t        |j                  |j                              }|j
                  }d }|rb|j                  d      \  }}| j                  |||      }|2| j                  d| j                  |      | j                  |            }n|}|}|rb|J |S )Nr   r   )
generic_visitlistzipr&   comparatorsr.   popr1   r$   r   )r   nodeops_and_compsr.   op_treer'   r/   binary_comparisons           r   visit_Comparez*LogicalExpressionTransformer.visit_CompareU   s    d#DTXXt'7'789M99D G
##A&ib%--b$>		**;+/??7+C+/??;L+MO $d  Nr   c                     | j                  |      }| j                  |j                        }||S | j                  ||j                        S r   )r3   r   r'   r,   operand)r   r8   r0   s      r   visit_UnaryOpz*LogicalExpressionTransformer.visit_UnaryOpl   sH    d#D  )Hk""8T\\::r   c                 2   | j                  |      }|j                  }|j                  j                         }|r]|j                         }| j                  | j	                  |j
                        | j                  |      | j                  |            }|r]|S r   )r3   valuesr7   r$   r   r'   r   )r   r8   node_valuesr/   r.   s        r   visit_BoolOpz)LogicalExpressionTransformer.visit_BoolOpu   s    d#D++KKKOOE
__d&&


DGG
$dood&;
//%
 "e 
 Lr   N)__name__
__module____qualname____doc__r   r   r$   r)   r,   r1   r<   r?   rC    r   r   r	   r	   -   s4    ?FQ;.;	r   r	   c                 :    t        |      }|j                  |       S r   )r	   visit)r8   r   transformers      r   	transformrL      s    ,S1+			4	  r   )rG   gast tensorflow.python.autograph.corer    tensorflow.python.autograph.pyctr   r   r   AndNotOrr   EqNotEqr   Baser	   rL   rH   r   r   <module>rV      sx    Q  6 3 6 .  	HHkHHkGGZ  	GGYJJ Q9>> Qh!r   