o
    ?e
                     @   sN   d Z ddlZddlmZ ddlmZ ddlmZ G dd dejZ	dd	 Z
dS )
zConverter for slice operations.    N)	converter)
directives)	templatesc                   @   s(   e Zd ZdZdd Zdd Zdd ZdS )	SliceTransformerzConverts slicing operations to their TF counterpart.

  Currently, relying on the default slice operator that Tensor uses is
  insufficient, because TensorArray and tensor lists use dedicated index read
  and write functions.
  c                 C   sF   t |tjsd S |j}t |tjtjfrd S d}tj||j|j|dS )Nz5
      target = ag__.set_item(target, key, item)
    )targetkeyitem)	
isinstancegast	SubscriptsliceTupleSlicer   replacevalue)selfr   r   stemplate r   n/home/www/facesmatcher.com/pyenv/lib/python3.10/site-packages/tensorflow/python/autograph/converters/slices.py_process_single_assignment    s   z+SliceTransformer._process_single_assignmentc                 C   sD   |  |}t|jdkrtd| |jd |j}|d ur |S |S )N   zmultiple assignmentr   )generic_visitlentargetsNotImplementedErrorr   r   )r   nodereplacementr   r   r   visit_Assign-   s   
zSliceTransformer.visit_Assignc                 C   sl   |  |}|j}t|tjtjfr|S t|jtjs|S | j|j	t
jdtdd}d}tj||j	||dS )NdtypeNone)defaultzq
      ag__.get_item(
          target,
          key,
          opts=ag__.GetItemOpts(element_dtype=dtype))
    )r   r   r   )r   r   r	   r
   r   r   ctxLoadZget_definition_directiver   r   Zset_element_typer   Zreplace_as_expression)r   r   r   r   r   r   r   r   visit_Subscript7   s    

z SliceTransformer.visit_SubscriptN)__name__
__module____qualname____doc__r   r   r$   r   r   r   r   r      s
    
r   c                 C   s   t || S )N)r   visit)r   r"   r   r   r   	transformR   s   r*   )r(   r
   Z tensorflow.python.autograph.corer   Z tensorflow.python.autograph.langr   Z tensorflow.python.autograph.pyctr   ZBaser   r*   r   r   r   r   <module>   s   :