§
    Ë²Åj2
  ã                   ó~   — d dl mZ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ÚOptionalÚTypeN)Ú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                 ób  — |€|                      ¦   «         }|€|                     ¦   «         }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         úSC:\Projects\Historical\venv\Lib\site-packages\torch/testing/_internal/subclasses.pyÚ__new__zWrapperSubclass.__new__   s®   € àÐØŸš™œˆJØÐØŸ8š8™:œ:ˆLàˆØŸHšH™JœJˆˆyÑØ#$×#3Ò#3Ñ#5Ô#5ˆÐÑ Øœ8ˆˆxÑØœ8ˆˆxÑØ"#¤/ˆˆÑØœ'ˆˆw‰ÝŒlÔ1°#°q·v²v±x´xÐJÐJÀ6ÐJÐJˆàˆ
ó    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¥$ t¤v¡,¤,Ð1Ð1Ð1Ð1r   c                 ó   — dgd fS ©Nr   © r(   s    r   Ú__tensor_flatten__z"WrapperSubclass.__tensor_flatten__$   s   € Øˆu�dˆ{Ð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"   r4   s    r   r6   z4WrapperSubclass.__torch_dispatch__.<locals>.<lambda>6   s   € À1Ä3€ 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   € ð 
ð 
ð 
àõ %/¨sµE´LÑ$AÔ$AÐJ�O˜CÑ Ô Ð À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ð
ð 
à!ð
ñ 
ô 
ˆõ Ô# H¨dÑ3Ô3ˆØ8Ð8Ð8Ð8Ð8Ð8à�7ˆ?ˆ?ØˆJå.¨t°T¸6À3Ñ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#   rM   rN   s      r   Ú#__coerce_same_metadata_as_tangent__z3WrapperSubclass.__coerce_same_metadata_as_tangent__F   sJ   € ð �D ¤™LœLÒ(Ð(Ø”6ˆMØ�iÐ'Ð'Ý˜TœV T¤V§\¢\¡^¤^Ñ4Ô4Ð4àˆtr   )NNr!   )Ú__name__Ú
__module__Ú__qualname__Ústaticmethodr   r$   r)   r-   r1   ÚclassmethodrL   r   r   r   rR   r,   r   r   r
   r
      sÑ   € € € € € Øðð ð ñ „\ðð"ð ð ð ð2ð 2ð 2ðð ð ð ð<ð <ñ „\ð<ð ðHð Hñ „[ðHð, GKðð Ø!$ðØ5=¸d´^ðð ð ð ð ð r   r
   )Útypingr   r   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�e”lñ Cô Cð Cð Cð Cr   