o
    Zho                  
   @   s   U d Z ddlZddlZddlZddlmZ ddlmZmZ ddl	Z
i Zeeef ed< e Zee ed< dee defd	d
ZdeddfddZdeej deeeef  fddZdedeeeef  fddZ	ddededeeeef  fddZdS )zG
Utilities for converting data types into structured JSON for dumping.
    N)Sequence)AnyOptionalINTERN_TABLEDUMPED_FILESsreturnc                    sR   d u rdS t d   d u r'tt   t < tjjjd fdddd  S )Nstrc                      s    fS N r   rr   r   H/var/www/auris/lib/python3.10/site-packages/torch/_logging/structured.py<lambda>   s    zintern_string.<locals>.<lambda>T)Zsuppress_context)r   getlentorch_logging	_internaltrace_structured)r   r   r   r   intern_string   s   r   filenamec                    sX   dvrd S t v rd S t  ddlm  tjjjdfdd fddd d S )	NZeval_with_keyr   )_loader	dump_filec                      s   d iS )Nnamer   r   r   r   r   r   +   s   zdump_file.<locals>.<lambda>c                      s
     S r   )
get_sourcer   r   r   r   r   r   .   s   
 )Zmetadata_fnZ
payload_fn)r   addZtorch.fx.graph_moduler   r   r   r   r   r   r   r   r   r   !   s   


r   tbc                 C   s   dd | D }|S )Nc                 S   s&   g | ]}|j |jt|j|jd qS ))liner   r   loc)linenor   r   r   r!   .0framer   r   r   
<listcomp>5   s    z"from_traceback.<locals>.<listcomp>r   )r    r   r   r   r   from_traceback2   s   	r(   
num_framesc           	      C   s   ddl m} ddlm} | }|rt|d|  d  S |  }tj	
tttj	j }tt|D ]\}}||jvrT|t|| |  t||  }t|  S q5t|d|  d  S )Nr   )TracingContextCapturedTracebackr	   )Ztorch._guardsr*   torch.utils._tracebackr,   extract_stackr(   extractsummaryospathdirnameinspectgetfiler   sep	enumeratereversedr   r   )	r)   r*   r,   Zuser_tbr    Ztorch_filepathir&   Zfiltered_tbr   r   r   get_user_stackA   s   
 r:      Fcppc                    sN   ddl m  ddlm} |j|d } fdd|D }t|d|  d S )	zJ
    Returns the traceback for the user stack and the framework stack
    r   uninteresting_filesr+   )r<   c                    s<   g | ]}|j d r|j   vsd|jv sd|jv r|qS )z.pyzat::ztorch::)r   endswithr   r$   r=   r   r   r'   `   s    
z'get_framework_stack.<locals>.<listcomp>r	   N)Z%torch.fx.experimental.symbolic_shapesr>   r-   r,   r/   r0   r(   )r)   r<   r,   r    r   r=   r   get_framework_stackV   s   
r@   )r;   F)__doc__r4   r1   	tracebackcollections.abcr   typingr   r   Ztorch._logging._internalr   r   dictr
   int__annotations__setr   r   r   FrameSummarylistr(   r:   boolr@   r   r   r   r   <module>   s*    $