U
    Mh"                     @  s  U d dl mZ d dlZd dlZd dlZd dlmZmZ d dlZd dl	m
Z
 d dlZd dlZd dlmZ d dlmZ d dlmZmZ d dlmZmZ d	Zd
ed< dZejdeZddddZejdddddZ dddddZ!e j"dddddZ#e j"dddddZ$e j"dddd d!Z%e j"d"ddd#d$Z&e j"d%ddd&d'Z'e j"d(ddd)d*Z(e j"d+ddd,d-Z)e j"d
ddd.d/Z*e j"d0ddd1d2Z+e j"dddd3d4Z,e j"dddd5d6Z-e j"d7ddd8d9Z.e j"d:ddd;d<Z/e j"d=ddd>d?Z0e j"d@dddAdBZ1e j"dCdddDdEZ2e j"dFdddGdHZ3e j"dIdddJdKZ4e j"dLdddMdNZ5dOddPdQdRZ6ej7Z7ej8Z8ej9Z9ej:Z:ej;Z;ej<G dSdT dTej=Z=ej<G dUdV dVej>e= Z>ej?ej@e=e!dWZ@ej<G dXdY dYe=ZAdS )Z    )annotationsN)AnyOptional)graph_building)diagnostics)infra)	decorator	formatter)registration
type_utils
   int_CONTAINER_ITEM_LIMITZonnx_diagnosticsz
torch.onnxboolreturnc                   C  s   t jjjtS N)torch_logging	_internalZ	log_stateZis_artifact_enabled&_ONNX_DIAGNOSTICS_ARTIFACT_LOGGER_NAME r   r   U/var/www/html/venv/lib/python3.8/site-packages/torch/onnx/_internal/fx/diagnostics.py(is_onnx_diagnostics_log_artifact_enabled-   s    
r   r   str)objr   c                 C  s
   t | S r   )r	   format_argumentr   r   r   r   _format_argument3   s    r   c                 C  s   t t| }|| S r   )r   dispatchtype)r   r	   r   r   r   r   8   s    r   ztorch.nn.Modulec                 C  s   d| j j dS )Nztorch.nn.Module()	__class____name__r   r   r   r   _torch_nn_moduleF   s    r%   ztorch.fx.GraphModulec                 C  s   d| j j dS )Nztorch.fx.GraphModule(r!   r"   r   r   r   r   _torch_fx_graph_moduleK   s    r&   ztorch.fx.Nodec                 C  s:   d| j  d| j d}d| jkr(|d S |t| jd  S )Nzfx.Node(z)[z]:valNone)targetopmetar   )r   Znode_stringr   r   r   _torch_fx_nodeP   s    
r,   ztorch.SymBoolc                 C  s   d|  dS )NzSymBool(r!   r   r   r   r   r   _torch_fx_symbolic_boolX   s    r-   ztorch.SymIntc                 C  s   d|  dS )NzSymInt(r!   r   r   r   r   r   _torch_fx_symbolic_int]   s    r.   ztorch.SymFloatc                 C  s   d|  dS )Nz	SymFloat(r!   r   r   r   r   r   _torch_fx_symbolic_floatb   s    r/   ztorch.Tensorc                 C  s   dt | j t| j dS )NzTensor(r!   fx_type_utilsZfrom_torch_dtype_to_abbrZdtype_stringify_shapeshaper   r   r   r   _torch_tensorg   s    r4   c                 C  s   t | S r   r   r   r   r   r   _intl   s    r6   floatc                 C  s   t | S r   r5   r   r   r   r   _floatq   s    r8   c                 C  s   t | S r   r5   r   r   r   r   _boolv   s    r9   c                 C  s   | S r   r   r   r   r   r   _str{   s    r:   zregistration.ONNXFunctionc                 C  s   d| j  d| j d| j dS )Nzregistration.ONNXFunction(z, is_custom=z, is_complex=r!   )Zop_full_nameZ	is_customZ
is_complexr   r   r   r   _registration_onnx_function   s    r;   listc                 C  s\   dt |  d}| s|d S t| D ].\}}|tkr@|d7 } qT|t| d7 }q$|d S )NzList[length=](
None)...,
,
r!   len	enumerater   r   )r   Zlist_stringiitemr   r   r   _list   s    rF   tuplec                 C  s\   dt |  d}| s|d S t| D ].\}}|tkr@|d7 } qT|t| d7 }q$|d S )NzTuple[length=r=   r>   r?   r@   r!   rA   )r   Ztuple_stringrD   rE   r   r   r   _tuple   s    rH   dictc                 C  sj   dt |  d}| s|d S t|  D ]8\}\}}|tkrH|d7 } qb|| dt| d7 }q(|d S )NzDict[length=r=   r>   z...
z: r@   r!   )rB   rC   itemsr   r   )r   Zdict_stringrD   keyvaluer   r   r   _dict   s    rM   ztorch.nn.Parameterc                 C  s   dt | j dS )Nz
Parameter(r!   )r   datar   r   r   r   _torch_nn_parameter   s    rO   z graph_building.TorchScriptTensorc                 C  s   dt | j t| j dS )Nz`TorchScriptTensor()`r0   r   r   r   r   _onnxscript_torch_script_tensor   s    rQ   zonnxscript.OnnxFunctionc                 C  s   d| j  dS )Nz`OnnxFunction(rP   namer   r   r   r   _onnxscript_onnx_function   s    rT   zonnxscript.TracedOnnxFunctionc                 C  s   d| j  dS )Nz`TracedOnnxFunction(rP   rR   r   r   r   r    _onnxscript_traced_onnx_function   s    rU   zOptional[torch.Size])r3   r   c                 C  s(   | d krdS dd dd | D  dS )N [z, c                 s  s   | ]}t |V  qd S r   r5   ).0xr   r   r   	<genexpr>   s     z#_stringify_shape.<locals>.<genexpr>])join)r3   r   r   r   r2      s    r2   c                   @  s6   e Zd ZU ejdedZded< ddddd	d
ZdS )
DiagnosticFinitdefaultlogging.Loggerloggerr   r   r(   )levelmessager   c                 O  s<   | j |r8|| }t r,| j j||f| | j| d S r   )rb   isEnabledForr   logZadditional_messagesappend)selfrc   rd   argskwargsZformatted_messager   r   r   rf      s
    zDiagnostic.logN)	r$   
__module____qualname__dataclassesfielddiagnostic_loggerrb   __annotations__rf   r   r   r   r   r]      s   
r]   c                      sJ   e Zd ZU ejdedZded< ejdedZ	ded<  fddZ
  ZS )	DiagnosticContextFr^   ra   rb   ztype[Diagnostic]_bound_diagnostic_typec                   s"   | j j| _t st  S | S d S r   )rb   rc   Z_previous_log_levelr   super	__enter__rh   r#   r   r   rt      s    

zDiagnosticContext.__enter__)r$   rk   rl   rm   rn   ro   rb   rp   r]   rr   rt   __classcell__r   r   rv   r   rq      s   
 rq   )Zdiagnostic_typer   c                      s0   e Zd ZU dZded< dd fddZ  ZS )UnsupportedFxNodeDiagnosticNzOptional[torch.fx.Node]unsupported_fx_noder(   r   c                   s    t    | jd krtdd S )Nz&unsupported_fx_node must be specified.)rs   __post_init__ry   
ValueErrorru   rv   r   r   rz      s    

z)UnsupportedFxNodeDiagnostic.__post_init__)r$   rk   rl   ry   rp   rz   rw   r   r   rv   r   rx      s   
rx   )B
__future__r   rm   	functoolsloggingtypingr   r   Z
onnxscriptZ"onnxscript.function_libs.torch_libr   r   Ztorch.fxZtorch.onnx._internalr   Z torch.onnx._internal.diagnosticsr   Z&torch.onnx._internal.diagnostics.infrar   r	   Ztorch.onnx._internal.fxr
   r   r1   r   rp   r   r   ZgetArtifactLoggerro   r   singledispatchr   r   registerr%   r&   r,   r-   r.   r/   r4   r6   r8   r9   r:   r;   rF   rH   rM   rO   rQ   rT   rU   r2   rulesZlevelsZRuntimeErrorWithDiagnosticZ
LazyStringZDiagnosticOptions	dataclassr]   rq   partialZdiagnose_callrx   r   r   r   r   <module>   s     