o
    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< 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   m/var/www/html/construction_image-detection-poc/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>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	   )torch._guardsr/   torch.utils._tracebackr1   extract_stackr-   extractsummaryospathdirnameinspectgetfiler   sep	enumeratereversedr   r   )	r.   r/   r1   user_tbr%   torch_filepathir+   filtered_tbr   r   r   get_user_stackA   s   
 rC      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_filesr0   )rE   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)   rF   r   r   r,   `   s    
z'get_framework_stack.<locals>.<listcomp>r	   N)%torch.fx.experimental.symbolic_shapesrG   r3   r1   r5   r6   r-   )r.   rE   r1   r%   r   rF   r   get_framework_stackV   s   
rJ   )rD   F)__doc__r:   r7   	tracebackcollections.abcr   typingr   r   torch._logging._internalr   r   dictr
   int__annotations__setr   r   r   FrameSummarylistr-   rC   boolrJ   r   r   r   r   <module>   s*    $