a
    ho                     @   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< ee eddd	Zedd
ddZeej eeeef  dddZeeeeef  dddZdeeeeeef  d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 rNtt   t < tjjjd fdddd  S )Nstrc                      s    fS N r   rr   r   G/var/www/auris/lib/python3.9/site-packages/torch/_logging/structured.py<lambda>       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   )filenamer   c                    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   .   r   )Zmetadata_fnZ
payload_fn)r   addZtorch.fx.graph_moduler   r   r   r   r   r   r   r   r   r   !   s    

r   )tbr   c                 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_framesr   c           	      C   s   ddl m} ddlm} | }|r8t|d|  d  S |  }tj	
tttj	j }tt|D ]>\}}||jvrj|t|| |  t||  }t|  S qjt|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)r*   cppr   c                    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 | ]4}|j d r |j   vs4d|jv s4d|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-   r0   r1   r)   )r*   r=   r-   r!   r   r>   r   get_framework_stackV   s    
rA   )r<   F)__doc__r5   r2   	tracebackcollections.abcr   typingr   r   Ztorch._logging._internalr   r   dictr
   int__annotations__setr   r   r   FrameSummarylistr)   r;   boolrA   r   r   r   r   <module>   s"   " 