
    `i	                     z    d dl mZmZ d dlZd dlmc mZ d dlm	Z	 d dl
mZ d dlmZ  G d dej                  ZdS )    )AnyOptionalN)is_fake)	TwoTensor)return_and_correct_aliasingc                       e Zd Zedd            ZddZd Zd Zed             Ze	d             Z
	 dded	ee         fd
ZdS )WrapperSubclassNc                    ||                                 }||                                }i }||d<   |                                |d<   |j        |d<   |j        |d<   |j        |d<   |j        |d<   t          j        j	        | |fi |}|S )Nstridesstorage_offsetdevicelayoutrequires_graddtype)
sizestrider   r   r   r   r   torchTensor_make_wrapper_subclass)clsa
outer_sizeouter_stridekwargsouts         v/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/torch/testing/_internal/subclasses.py__new__zWrapperSubclass.__new__   s    J88::L(y#$#3#3#5#5 8x8x"#/'wl1#zLLVLL
    c                     || _         d S Nr   )selfr   r   r   s       r   __init__zWrapperSubclass.__init__   s    r   c                 2    dt          | j                   dS )NzWrapperSubclass())reprr   r"   s    r   __repr__zWrapperSubclass.__repr__!   s    1$tv,,1111r   c                     dgd fS Nr    r'   s    r   __tensor_flatten__z"WrapperSubclass.__tensor_flatten__$   s    ud{r   c                 j    |J | d         }t          |          r|J |J t          |||          S r*   )r   r	   )inner_tensorsmetar   r   r   s        r   __tensor_unflatten__z$WrapperSubclass.__tensor_unflatten__'   sM    |||#1:: 	,)))+++q*l;;;r   c                 6   |i }t          j        t          d |          }t          j        t          d |          } ||i |}t          j        |          \  }}	d |D             }
t          j        |
|	          }ddlm} ||u r|S t          ||||          S )Nc                     | j         S r    r!   xs    r   <lambda>z4WrapperSubclass.__torch_dispatch__.<locals>.<lambda>4   s     r   c                     | j         S r    r!   r3   s    r   r5   z4WrapperSubclass.__torch_dispatch__.<locals>.<lambda>6   s    13 r   c                 d    g | ]-}t          |t          j                  rt          |          n|.S r+   )
isinstancer   r   r	   ).0o_as     r   
<listcomp>z6WrapperSubclass.__torch_dispatch__.<locals>.<listcomp>:   sF     
 
 
 %/sEL$A$AJOC   s
 
 
r   r   )cond_op)pytreetree_map_onlyr	   tree_flattentree_unflattentorch._higher_order_ops.condr<   r   )r   functypesargsr   args_akwargs_aout_a
out_a_flatspecout_flatr   r<   s                r   __torch_dispatch__z"WrapperSubclass.__torch_dispatch__0   s    >F%o}}dKK'OOf)))!.u55
D
 
!
 
 
 #Hd338888887??J.tT63GGGr   expected_metadataexpected_typec                     |t          | j                  k    r| j        S |t          u r,t          | j        | j                                                  S d S r    )typer   r   clone)r"   rL   rM   s      r   #__coerce_same_metadata_as_tangent__z3WrapperSubclass.__coerce_same_metadata_as_tangent__F   sJ     DLL((6Mi''TVTV\\^^444tr   )NNr    )__name__
__module____qualname__staticmethodr   r#   r(   r,   r0   classmethodrK   r   r   rO   rQ   r+   r   r   r	   r	      s           \"   2 2 2   < < \< H H [H, GK !$5=d^     r   r	   )typingr   r   r   torch.utils._pytreeutils_pytreer=   torch._subclasses.fake_tensorr   "torch.testing._internal.two_tensorr   torch.utils._python_dispatchr   r   r	   r+   r   r   <module>r^      s                     $ $ $ $ $ $ $ $ $ 1 1 1 1 1 1 8 8 8 8 8 8 D D D D D DC C C C Cel C C C C Cr   