Ë
    S²j�
  ã                   ó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         úa/var/www/html/ia-enhanced/venv/lib/python3.12/site-packages/torch/testing/_internal/subclasses.pyÚ__new__zWrapperSubclass.__new__   sž   € àÐØŸ™›ˆJØÐØŸ8™8›:ˆLàˆØ(ˆˆyÑØ#$×#3Ñ#3Ó#5ˆÐÑ ØŸ8™8ˆˆxÑØŸ8™8ˆˆxÑØ"#§/¡/ˆˆÑØŸ'™'ˆˆw‰Ü�l‰l×1Ñ1°#°zÑLÀVÑ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   € Ø!¤$ t§v¡v£, ¨qÐ1Ð1r   c                 ó   — dgd fS )Nr   © r&   s    r   Ú__tensor_flatten__z"WrapperSubclass.__tensor_flatten__$   s   € Øˆu�dˆ{Ð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
   € À1Ç3Á3€ 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ð "ö
àô %/¨s´E·L±LÔ$AŒO˜CÔ ÀsÑJð
ˆð 
ô ×#Ñ# H¨dÓ3ˆÝ8à�7‰?ØˆJä.¨t°T¸6À3Ó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Ñ(Ø—6‘6ˆMØœiÑ'Ü˜TŸV™V T§V¡V§\¡\£^Ó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ñØ!$ðØ59¸D±[ô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�e—l‘lõ Fr   