
    BVh
                     d    d Z ddlZddlmZ ddlmZ ddlmZ  G d dej                        Zd Z	y)	z'Overloads all variable read operations.    N)	converter)anno)	templatesc                   "    e Zd ZdZd Zd Zd Zy)VariableAccessTransformera  Rewrites basic symbol reads.

  This transformer rewrites variable reads with a "read" operator which allows
  tracking activity.

  Example:

  For a basic statement:

      a = b + c

  This is translated to:

      a = ld(b) + ld(c)

  Augmented assignment operations also introduce a `ld` operator:

      a += b

  The assignment target also receives an operator to properly represent the
  read:

      a = ld(a)
      a += ld(b)
  c                     t        j                  |t         j                  j                        s|S t	        |j
                  t        j                        rt        j                  d|      }|S )Nzag__.ld(var_))var_)
r   hasannoStaticORIG_DEFINITIONS
isinstancectxgastLoadr   replace_as_expression)selfnodes     `/home/dcms/DCMS/lib/python3.12/site-packages/tensorflow/python/autograph/converters/variables.py
visit_Namez$VariableAccessTransformer.visit_Name3   sH    <<dkk::;k$((DII&,,_4HdK    c                    | j                  |      }g }|j                  D ].  }t        |t        j                        s|j                  |       0 |s|S g }|D ]J  }d}|j                  t        j                  ||t        j                  |j                  d                    L |j                  D cg c]	  }||vs| }}|r%|j                  t        j                  |             |S c c}w )Nz/
        var_ = ag__.Undefined(var_name)
      )kind)r	   var_name)targets)generic_visitr   r   r   Nameappendextendr   replaceConstantidDelete)r   r   rewrite_targetstgtresultstemplatenremaining_targetss           r   visit_Deletez&VariableAccessTransformer.visit_Delete;   s    d#DO|| $	C	#s#$
 kG J
h nnY&&
t}}SVV$'GI J	J %)LLMqA_4LMMnnT[[):;<N	 Ns   4	C->C-c                     t        |j                  t        j                        r&d}t	        j
                  ||j                  |      }|S | j                  |      }|S )Nz5
        var_ = ag__.ld(var_)
        original
      )r	   original)r   targetr   r   r   r   r   )r   r   r&   s      r   visit_AugAssignz)VariableAccessTransformer.visit_AugAssignT   sS    $++tyy)
h xdkkDId K %dKr   N)__name__
__module____qualname____doc__r   r)   r-    r   r   r   r      s    42	r   r   c                 6    t        |      j                  |       S )N)r   visit)r   r   s     r   	transformr5   `   s    	"3	'	-	-d	33r   )
r1   r    tensorflow.python.autograph.corer    tensorflow.python.autograph.pyctr   r   Baser   r5   r2   r   r   <module>r9      s.    .  6 1 6E	 EP4r   