o
    j9:j]                  
   @   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 ddlZ	i Z
eeef ed< e Zee ed< dedB 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INTERN_TABLEDUMPED_FILESsreturnc                    sP   d u rdS t   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   `/home/nk/hobo-godmode/plappi-mvp/.venv/lib/python3.10/site-packages/torch/_logging/structured.py<lambda>   s    zintern_string.<locals>.<lambda>T)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 )	N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   
 )metadata_fn
payload_fn)r   add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>6   s    z"from_traceback.<locals>.<listcomp>r   )r$   r   r   r   r   from_traceback3   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   )torch._guardsr.   torch.utils._tracebackr0   extract_stackr,   extractsummaryospathdirnameinspectgetfiler   sep	enumeratereversedr   r   )	r-   r.   r0   user_tbr$   torch_filepathir*   filtered_tbr   r   r   get_user_stackB   s   
 rB      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/   )rD   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(   rE   r   r   r+   a   s    
z'get_framework_stack.<locals>.<listcomp>r   N)%torch.fx.experimental.symbolic_shapesrF   r2   r0   r4   r5   r,   )r-   rD   r0   r$   r   rE   r   get_framework_stackW   s   
rI   )rC   F)__doc__r9   r6   	tracebackcollections.abcr   typingr   torch._logging._internalr   r   dictr	   int__annotations__setr   r   r   FrameSummarylistr,   rB   boolrI   r   r   r   r   <module>   s*    $