
    Vh                     v   d dl Z d dlmZ d dlmZ d dlmZ d dlZd dlZd dl	Z	d dl
mZ d dlmZ d dlZd dlmZmZ  ej$                  d      Zi e j(                  d	e j*                  d
e j,                  de j.                  de j0                  de j2                  de j4                  de j6                  de j8                  de j:                  de j<                  de j>                  de j@                  de jB                  de jD                  de jF                  de jH                  dZ% G d de jL                        Z' G d de      Z( G d de'      Z) G d d ejT                        Z+d!e,d"e-d#dfd$Z. G d% d&ej^                        Z0ejb                  d)d#ee2e,      fd'       Z3ejb                  d*d(       Z4y)+    N)tree_map)Optional)Iterator)TorchDispatchMode)WeakTensorKeyDictionary)gather_tracebacksymbolize_tracebacksLoggingTensorbf16f64f32f16c32c64c128i8i16i32i64b8u8f8e4m3fnf8e5m2
f8e4m3fnuz
f8e5m2fnuzc                   ~     e Zd ZU ej                  ed<   dgZej                  Z	e
d        Z fdZedd       Z xZS )r
   elemc                 X   t         j                  j                  | |j                         |j	                         |j                         |j                  |j                  |j                  |j                  dd            }|j                  r|j                         |_        |S ||_        |S )Nrequires_gradF)stridesstorage_offsetdtypelayoutdevicer   )torchTensor_make_wrapper_subclasssizestrider!   r"   r#   r$   getr   detachr   )clsr   argskwargsrs        V/home/dcms/DCMS/lib/python3.12/site-packages/torch/testing/_internal/logging_tensor.py__new__zLoggingTensor.__new__;   s    
 LL//KKM$2E2E2G**T[[;;fjj%.P 0 
 #$// 8<    c                 :    t         |   | j                         S )N)tensor_contents)super__repr__r   )self	__class__s    r0   r6   zLoggingTensor.__repr__K   s    w499+??r2   c                 2     fd} fd} j                         5  t        | |t        ||      i t        ||            }d d d        t        j                  d      j	                  |j
                   d|j                   ||       |S # 1 sw Y   KxY w)Nc                 8    t        |       r| j                  S | S N)
isinstancer   er,   s    r0   unwrapz0LoggingTensor.__torch_dispatch__.<locals>.unwrapP   s    '3/1666Q6r2   c                 L    t        | t        j                        r |       S | S r;   )r<   r%   r&   r=   s    r0   wrapz.LoggingTensor.__torch_dispatch__.<locals>.wrapS   s    '5<<83q6?a?r2   r
   .)contextr   logging	getLoggerinfo
__module____name__)r,   functypesr-   r.   r?   rA   rss   `       r0   __torch_dispatch__z LoggingTensor.__torch_dispatch__N   s    	7	@ [[] 	[$hvt&< YQW@X YZB	[/*//4??2C1T]]O0TVZ\bdfg		[ 	[s   'BB N)rH   rG   __qualname__r%   r&   __annotations__	__slots__
contextlibnullcontextrC   staticmethodr1   r6   classmethodrL   __classcell__)r8   s   @r0   r
   r
   4   sK    
,,I$$G @ 
 
r2   c                       e Zd ZddZy)LoggingTensorModeNc                     |i } ||i |}t        j                  d      j                  |j                   d|j                   |||       |S )Nr
   rB   )rD   rE   rF   rG   rH   )r7   rI   rJ   r-   r.   rK   s         r0   rL   z$LoggingTensorMode.__torch_dispatch__\   sV    >F4"6"/*//4??2C1T]]O0TVZ\bdfg	r2   rM   )rH   rG   rO   rL   rN   r2   r0   rX   rX   [   s    r2   rX   c                   8    e Zd Zej                  j
                  Zy)LoggingTensorReentrantN)rH   rG   rO   r%   	overridesenable_reentrant_dispatchrC   rN   r2   r0   r[   r[   c   s    oo77Gr2   r[   c            
       t    e Zd Zdee   dededee   ddf
dZdej                  de
fd	Zdd
ededefdZd Zy)LoggingTensorHandlerlog_listuse_shortid_for_all_tensors	with_typetracebacks_listreturnNc                     t         j                  j                  |        || _        || _        || _        t               | _        d| _        || _	        y )Nr   )
rD   Handler__init__r`   ra   rc   r   memonext_idrb   )r7   r`   ra   rb   rc   s        r0   rg   zLoggingTensorHandler.__init__h   sE     	  & +F(.+-	"r2   tc                     || j                   vr.| j                  | j                   |<   | xj                  dz  c_        | j                   |   S )N   )rh   ri   )r7   rj   s     r0   _shortidzLoggingTensorHandler._shortids   s;    DII<<DIIaLLLALyy|r2   ac           	      F   | j                   rt        j                  nt        }t	        ||      rid}|rM| j
                  rAdt        |j                      ddj                  t        t        |j                               d}d| j                  |       | }|S t        |      S )N z: [, ]$)ra   r%   r&   r
   r<   rb   _dtype_abbrsr"   joinmapstrshaperm   repr)r7   rn   rb   cond_cls
maybe_typexs         r0   _fmtzLoggingTensorHandler._fmty   s    #'#C#C5<<a"JT^^!,qww"7!8$))CQWWDU:V9WWXY
DMM!$%j\2AH7Nr2   c                     dj                  t        j                   fd|j                  d   D         fd|j                  d   j	                         D                    }t        t        j                   j                  d      |j                  d         } j                  j                  | d	|j                   d
| d        j                  & j                  j                  |j                         y y )Nrr   c              3   \   K   | ]#  }t        t        j                  |             % y wr;   rx   r   r~   ).0rn   r7   s     r0   	<genexpr>z,LoggingTensorHandler.emit.<locals>.<genexpr>   s!     EXdii+,Es   ),r   c           	   3   l   K   | ]+  \  }}| d t        t        j                  |              - yw)=Nr   )r   kvr7   s      r0   r   z,LoggingTensorHandler.emit.<locals>.<genexpr>   s1     Y$!QA3aHTYY2345Ys   14rl   T)rb      z = ())rv   	itertoolschainr-   itemsr   	functoolspartialr~   r`   appendmsgrc   	traceback)r7   recordfmt_argsfmt_retss   `   r0   emitzLoggingTensorHandler.emit   s    99OOEfkk!nEY&++a.BVBVBXY
 I--dii4H&++VW.YzVZZL(1EF+  ''(8(89 ,r2   )F)rH   rG   rO   listrx   boolr   rg   r%   r&   intrm   objectr~   r   rN   r2   r0   r_   r_   g   sm    	# I	#DH	#	#.6tn	#AE	#%,, 3 	f 	 	# 	
:r2   r_   namevarrd   c                 6    t         j                  d| fi |       y )Ninput)loggerrF   )r   r   s     r0   	log_inputr      s    
KK$"c*r2   c                       e Zd ZddZd Zy)GatherTracebackc                 .    || _         || _        || _        y r;   pythonscriptcpp)r7   r   r   r   s       r0   rg   zGatherTraceback.__init__   s    r2   c                 f    t        | j                  | j                  | j                        |_        y)Nr   T)r   r   r   r   r   )r7   r   s     r0   filterzGatherTraceback.filter   s%    +4;;t{{X\X`X`ar2   N)TTF)rH   rG   rO   rg   r   rN   r2   r0   r   r      s    
r2   r   c              #   D  K   |xs |xs |}g }g }t        |d| |r|nd       }t        j                  |       t        j                  t        j
                         dt        _        |r!t        j                  t        |||             	 |r||f n| t        |      }|j                          |j                  |       t        j                  |       y # t        |      }|j                          |j                  |       t        j                  |       w xY ww)NT)rb   ra   rc   Fr   )r_   r   
addHandlersetLevelrD   INFO	propagate	addFilterr   r	   clearextendremoveHandler)	is_mode	python_tb	script_tbcpp_tbcollect_tracebackr`   rc   handlersymbolized_tracebackss	            r0   capture_logsr      s     !8Y8&H!#O"$++<$	G g
OOGLL!F	)QWXY	&O++N 4_ E45W% !5_ E45W%s    BD C AD ADD c              #      K   t               5  t        d| ||      5 }| d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY ww)NT)rX   r   )r   r   r   logss       r0   %capture_logs_with_logging_tensor_moder      sJ     		 l4IvN RV
     s)   A
>2>	A
;	>AA
)FFFF)FFF)5r%   torch.utils._pytreer   typingr   collections.abcr   rD   rR   r   torch.utils._python_dispatchr   torch.utils.weakr   r   torch._C._profilerr   r	   rE   r   bfloat16float64float32float16	complex32	complex64
complex128int8int16int32int64r   uint8float8_e4m3fnfloat8_e5m2float8_e4m3fnuzfloat8_e5m2fnuzru   r&   r
   rX   r[   rf   r_   rx   r   r   Filterr   contextmanagerr   r   r   rN   r2   r0   <module>r      s    (  $    : 4  E			?	+	NNF	MM5 
MM5 
MM5	
 
OOU 
OOU 
f 
JJ 
KK 
KK 
KK 
JJ 
KK 
 
x  
<!" 
<#F%ELL %N) 8] 8':7?? ':R+C +f + +gnn  &S[\`ad\eSf & &4  r2   