Ë
    ­ÐVhd  ã                   ó    — d dl mZ d dlZd dlmc mZ d dlmZ  edddg«      Z	 G d„ dej                  «      Z G d	„ d
ej                  «      Zy)é    )Ú
namedtupleN)Úreturn_and_correct_aliasingÚFancyNamedTupleÚfooÚbarc                   óZ   — e Zd Zed„ «       Zd„ Zd„ Zd„ Zd„ Zd„ Z	ed„ «       Z
ed„ «       Zy	)
ÚConstantExtraMetadataTensorc                 ó$  — |j                   }i }|j                  «       |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©
ÚshapeÚstrider   r   r   r   r   ÚtorchÚTensorÚ_make_wrapper_subclass)ÚclsÚelemr   Úkwargss       úU/home/dcms/DCMS/lib/python3.12/site-packages/torch/testing/_internal/custom_tensor.pyÚ__new__z#ConstantExtraMetadataTensor.__new__   s‰   € à—
‘
ˆØˆØ ŸK™K›MˆˆyÑØ#'×#6Ñ#6Ó#8ˆÐÑ ØŸ;™;ˆˆxÑØŸ;™;ˆˆxÑØ"&×"4Ñ"4ˆˆÑØŸ*™*ˆˆw‰Ü|‰|×2Ñ2°3¸ÑHÀÑHÐHó    c                 ó    — || _         d| _        y )Né   )r   Úconstant_attribute)Úselfr   s     r   Ú__init__z$ConstantExtraMetadataTensor.__init__   s   € ØˆŒ	Ø"#ˆÕr   c                 ó8   — t        | j                  «      }d|› dS )NzCustomTensor(ú))Úreprr   )r!   Ú
inner_reprs     r   Ú__repr__z$ConstantExtraMetadataTensor.__repr__    s   € Ü˜$Ÿ)™)“_ˆ
Ø˜z˜l¨!Ð,Ð,r   c                 óB   — t        | j                  | j                  «      S ©N)r   r    ©r!   s    r   Úget_complicated_metadataz4ConstantExtraMetadataTensor.get_complicated_metadata$   s   € Ü˜t×6Ñ6¸×8OÑ8OÓPÐPr   c                 ó    — dg| j                   fS ©Nr   ©r    r*   s    r   Ú__tensor_flatten__z.ConstantExtraMetadataTensor.__tensor_flatten__'   s   € Øˆx˜×0Ñ0Ð0Ð0r   c                 ó.   — | xj                   |z  c_         y r)   r.   )r!   Úas     r   Úadd_constantz(ConstantExtraMetadataTensor.add_constant*   s   € Ø×Ò 1Ñ$Ör   c                 ó<   — |€J ‚| d   }t        |«      }||_        |S r-   )r	   r    )Úinner_tensorsÚmetaÚ
outer_sizeÚouter_strider   Úouts         r   Ú__tensor_unflatten__z0ConstantExtraMetadataTensor.__tensor_unflatten__-   s/   € àÐÐÐØ˜VÑ$ˆÜ)¨$Ó/ˆØ!%ˆÔØˆ
r   c                 ót  — |€i }t        j                  t        d„ |«      }t        j                  t        d„ |«      } ||i |¤Ž}t        j                  |«      \  }}	|D 
cg c])  }
t	        |
t
        j                  «      rt        |
«      n|
‘Œ+ }}
t        j                  ||	«      }t        ||||«      S c c}
w )Nc                 ó   — | j                   S r)   ©r   ©Úxs    r   ú<lambda>z@ConstantExtraMetadataTensor.__torch_dispatch__.<locals>.<lambda>:   ó
   € °1·6±6€ r   c                 ó   — | j                   S r)   r<   r=   s    r   r?   z@ConstantExtraMetadataTensor.__torch_dispatch__.<locals>.<lambda>>   r@   r   )	ÚpytreeÚtree_map_onlyr	   Útree_flattenÚ
isinstancer   r   Útree_unflattenr   )r   ÚfuncÚtypesÚargsr   Ú
args_innerÚkwargs_innerÚ	out_innerÚout_inner_flatÚspecÚo_innerÚout_flatr8   s                r   Ú__torch_dispatch__z.ConstantExtraMetadataTensor.__torch_dispatch__5   sÌ   € àˆ>ØˆFÜ×)Ñ)Ü'Ñ)9¸4ó
ˆ
ô ×+Ñ+Ü'Ñ)9¸6ó
ˆñ ˜*Ð5¨Ñ5ˆ	Ü%×2Ñ2°9Ó=Ñˆ˜ð *ö	
ð ô ˜'¤5§<¡<Ô0ô (¨Ô0àñð
ˆð 
ô ×#Ñ# H¨dÓ3ˆÜ*¨4°°v¸sÓCÐCùò
s   Á!.B5N)Ú__name__Ú
__module__Ú__qualname__Ústaticmethodr   r"   r'   r+   r/   r2   r9   ÚclassmethodrQ   © r   r   r	   r	      sZ   „ Øñ	Ió ð	Iò$ò-òQò1ò%ð ñó ðð ñDó ñDr   r	   c                   óT   — e Zd Zed„ «       Zd„ Zd„ Zd„ Zd„ Zed„ «       Z	e
d„ «       Zy)	ÚCustomTensorPlainOutc                 ó$  — |j                   }i }|j                  «       |d<   |j                  «       |d<   |j                  |d<   |j                  |d<   |j
                  |d<   |j                  |d<   t        j                  j                  | |fi |¤ŽS r   r   )r   Úelem1Úelem2r   r   s        r   r   zCustomTensorPlainOut.__new__R   s‰   € à—‘ˆØˆØ!ŸL™L›NˆˆyÑØ#(×#7Ñ#7Ó#9ˆÐÑ Ø Ÿ<™<ˆˆxÑØ Ÿ<™<ˆˆxÑØ"'×"5Ñ"5ˆˆÑØŸ+™+ˆˆw‰Ü|‰|×2Ñ2°3¸ÑHÀÑHÐHr   c                 ó    — || _         || _        y r)   )r[   r\   )r!   r[   r\   s      r   r"   zCustomTensorPlainOut.__init__^   s   € ØˆŒ
Øˆ
r   c                 ó   — | j                   S r)   ©r[   r*   s    r   Úget_elemzCustomTensorPlainOut.get_elemb   s   € Øz‰zÐr   c                 óh   — t        | j                  «      }t        | j                  «      }d|› d|› dS )NzCustomTensorPlainOut(z, r$   )r%   r[   r\   )r!   Úinner_repr_1Úinner_repr_2s      r   r'   zCustomTensorPlainOut.__repr__e   s3   € Ü˜DŸJ™JÓ'ˆÜ˜DŸJ™JÓ'ˆØ& | n°B°|°nÀAÐFÐFr   c                 ó   — ddgd fS ©Nr[   r\   rW   r*   s    r   r/   z'CustomTensorPlainOut.__tensor_flatten__j   s   € Ø˜Ð! 4Ð'Ð'r   c                 ó2   — | d   }| d   }t        ||«      }|S re   ©rY   )r4   r5   r6   r7   r[   r\   r8   s          r   r9   z)CustomTensorPlainOut.__tensor_unflatten__m   s'   € à˜gÑ&ˆØ˜gÑ&ˆÜ" 5¨%Ó0ˆØˆ
r   c                 óX  ‡‡— |€i }t        j                  t        d„ |«      }t        j                  t        d„ |«      }t        j                  t        d„ |«      }t        j                  t        d„ |«      } ||i |¤Ž}	 ||i |¤Ž}
t        j                  |	«      \  Š}t        j                  |
«      \  Š}|j                  r5t        j
                  d„ t        ‰‰«      D «       |«      }t        ||||«      S ˆˆfd„t        t        ‰«      «      D «       }t        j
                  ||«      S )Nc                 ó   — | j                   S r)   r_   r=   s    r   r?   z9CustomTensorPlainOut.__torch_dispatch__.<locals>.<lambda>z   ó
   € ¨A¯G©G€ r   c                 ó   — | j                   S r)   r_   r=   s    r   r?   z9CustomTensorPlainOut.__torch_dispatch__.<locals>.<lambda>~   rj   r   c                 ó   — | j                   S r)   ©r\   r=   s    r   r?   z9CustomTensorPlainOut.__torch_dispatch__.<locals>.<lambda>‚   rj   r   c                 ó   — | j                   S r)   rm   r=   s    r   r?   z9CustomTensorPlainOut.__torch_dispatch__.<locals>.<lambda>†   rj   r   c              3   ó:   K  — | ]  \  }}t        ||«      –— Œ y ­wr)   rg   )Ú.0Útensor1Útensor2s      r   ú	<genexpr>z:CustomTensorPlainOut.__torch_dispatch__.<locals>.<genexpr>‘   s#   è ø€ ò á(˜ ô )¨°'×:ñùs   ‚c              3   ó4   •K  — | ]  }‰|   ‰|   z   –— Œ y ­wr)   rW   )rp   ÚixÚout_inner_flat_1Úout_inner_flat_2s     €€r   rs   z:CustomTensorPlainOut.__torch_dispatch__.<locals>.<genexpr>™   s)   øè ø€ ò 
àð ˜RÑ Ð#3°BÑ#7Õ7ñ
ùs   ƒ)
rB   rC   rY   rD   Úis_viewrF   Úzipr   ÚrangeÚlen)r   rG   rH   rI   r   Úargs_inner_1Úkwargs_inner_1Úargs_inner_2Úkwargs_inner_2Úout_inner_1Úout_inner_2rN   Únew_outÚout_newrv   rw   s                 @@r   rQ   z'CustomTensorPlainOut.__torch_dispatch__t   s5  ù€ ð ˆ>ØˆFÜ×+Ñ+Ü Ñ"3°Tó
ˆô  ×-Ñ-Ü Ñ"3°Vó
ˆô ×+Ñ+Ü Ñ"3°Tó
ˆô  ×-Ñ-Ü Ñ"3°Vó
ˆñ ˜LÐ;¨NÑ;ˆÙ˜LÐ;¨NÑ;ˆä!'×!4Ñ!4°[Ó!AÑÐ˜$Ü!'×!4Ñ!4°[Ó!AÑÐ˜$à<Š<Ü×+Ñ+ñä,/Ð0@ÐBRÓ,Sôð óˆGô /¨t°T¸6À7ÓKÐKô
äœCÐ 0Ó1Ó2ô
ˆô
 ×$Ñ$ W¨dÓ3Ð3r   N)rR   rS   rT   rU   r   r"   r`   r'   r/   r9   rV   rQ   rW   r   r   rY   rY   Q   sS   „ Øñ	Ió ð	IòòòGò
(ð ñó ðð ñ)4ó ñ)4r   rY   )Úcollectionsr   r   Útorch.utils._pytreeÚutilsÚ_pytreerB   Útorch.utils._python_dispatchr   r   r   r	   rY   rW   r   r   ú<module>r‰      sN   ðõ #ã ß $Ð $Ý Dñ Ð.°¸°Ó?€ô=D %§,¡,ô =DôDM4˜5Ÿ<™<õ M4r   