
    9j
                     x    d dl 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y)    )AnyN)is_fake)	TwoTensor)return_and_correct_aliasingc                   l    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dz  fd
Zy)WrapperSubclassNc                 <   ||j                         }||j                         }i }||d<   |j                         |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         b/media/conek/DATA/Code/OCR/venv/lib/python3.12/site-packages/torch/testing/_internal/subclasses.py__new__zWrapperSubclass.__new__   s    J88:L(y#$#3#3#5 88x88x"#//''wll11#zLVL
    c                     || _         y Nr   )selfr   r   r   s       r   __init__zWrapperSubclass.__init__   s	    r   c                 4    dt        | j                         dS )NzWrapperSubclass())reprr   r!   s    r   __repr__zWrapperSubclass.__repr__!   s    !$tvv,q11r   c                     dgd fS )Nr    r&   s    r   __tensor_flatten__z"WrapperSubclass.__tensor_flatten__$   s    ud{r   c                     |t        d      | d   }t        |      r|t        d      |t        d      t        |||      S )NzExpected meta to be Noner   z"Expected outer_size to not be Nonez$Expected outer_stride to not be None)AssertionErrorr   r   )inner_tensorsmetar   r   r   s        r   __tensor_unflatten__z$WrapperSubclass.__tensor_unflatten__'   sX     !;<<#1:!$%IJJ#$%KLLq*l;;r   c                    |i }t        j                  t        d |      }t        j                  t        d |      } ||i |}t        j                  |      \  }}	|D 
cg c])  }
t	        |
t
        j                        rt        |
      n|
+ }}
t        j                  ||	      }ddlm	} ||u r|S t        ||||      S c c}
w )Nc                     | j                   S r   r    xs    r   <lambda>z4WrapperSubclass.__torch_dispatch__.<locals>.<lambda>7   s
     r   c                     | j                   S r   r    r2   s    r   r4   z4WrapperSubclass.__torch_dispatch__.<locals>.<lambda>9   s
    133 r   r   )cond_op)pytreetree_map_onlyr   tree_flatten
isinstancer   r   tree_unflattentorch._higher_order_ops.condr6   r   )r   functypesargsr   args_akwargs_aout_a
out_a_flatspeco_aout_flatr   r6   s                 r   __torch_dispatch__z"WrapperSubclass.__torch_dispatch__3   s    >F%%o}dK''Of))!..u5
D "
 %/sELL$AOC sJ
 
 ##Hd387?J.tT63GG
s   !.Cexpected_metadataexpected_typec                     |t        | j                        u r| j                  S |t        u r.t        | j                  | j                  j                               S y r   )typer   r   clone)r!   rH   rI   s      r   #__coerce_same_metadata_as_tangent__z3WrapperSubclass.__coerce_same_metadata_as_tangent__I   sC     DL(66Mi'TVVTVV\\^44r   )NNr   )__name__
__module____qualname__staticmethodr   r"   r'   r*   r/   classmethodrG   r   rK   rM   r)   r   r   r   r      sm     "2 	< 	< H H, DH!$59D[r   r   )typingr   r   torch.utils._pytreeutils_pytreer7   torch._subclasses.fake_tensorr   "torch.testing._internal.two_tensorr   torch.utils._python_dispatchr   r   r   r)   r   r   <module>rZ      s,      $ $ 1 8 DFell Fr   