o
    0h"                     @  s  U d dl m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 erKd dlZd	Zd
ed< dZe
jdeZdZddZejd[ddZ d[ddZ!e j"d\ddZ#e j"d]ddZ$e j"d^d d!Z%e j"d_d#d$Z&e j"d`d&d'Z'e j"dad)d*Z(e j"dbd,d-Z)e j"dcd.d/Z*e j"ddd1d2Z+e j"ded3d4Z,e j"dfd5d6Z-e j"dgd8d9Z.e j"dhd;d<Z/e j"did>d?Z0e j"djdAdBZ1e j"dkdDdEZ2e j"dldGdHZ3e j"dmdJdKZ4e j"dndMdNZ5dodQdR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 )p    )annotationsN)AnyTYPE_CHECKING)graph_building)diagnostics)infra)	decorator	formatter)registration
type_utils
   int_CONTAINER_ITEM_LIMITonnx_diagnosticsz
torch.onnxreturnboolc                   C  s   t jjjtS N)torch_logging	_internal	log_stateis_artifact_enabled&_ONNX_DIAGNOSTICS_ARTIFACT_LOGGER_NAME r   r   W/var/www/vscode/kcb/lib/python3.10/site-packages/torch/onnx/_internal/fx/diagnostics.py(is_onnx_diagnostics_log_artifact_enabled.   s   
r   objr   strc                 C  s
   t | S r   )r	   format_argumentr   r   r   r   _format_argument4   s   
r    c                 C  s   t t| }|| S r   )r    dispatchtype)r   r	   r   r   r   r   9   s   r   torch.nn.Modulec                 C     d| j j dS )Nztorch.nn.Module()	__class____name__r   r   r   r   _torch_nn_moduleG      r)   torch.fx.GraphModulec                 C  r$   )Nztorch.fx.GraphModule(r%   r&   r   r   r   r   _torch_fx_graph_moduleL   r*   r,   torch.fx.Nodec                 C  s:   d| j  d| j d}d| jvr|d S |t| jd  S )Nzfx.Node(z)[z]:valNone)targetopmetar   )r   node_stringr   r   r   _torch_fx_nodeQ   s   
r4   torch.SymBoolc                 C     d|  dS )NzSymBool(r%   r   r   r   r   r   _torch_fx_symbolic_boolY      r7   torch.SymIntc                 C  r6   )NzSymInt(r%   r   r   r   r   r   _torch_fx_symbolic_int^   r8   r:   torch.SymFloatc                 C  r6   )Nz	SymFloat(r%   r   r   r   r   r   _torch_fx_symbolic_floatc   r8   r<   torch.Tensorc                 C     dt | j t| j dS )NzTensor(r%   fx_type_utilsfrom_torch_dtype_to_abbrdtype_stringify_shapeshaper   r   r   r   _torch_tensorh      rE   c                 C     t | S r   r   r   r   r   r   _intm      rI   floatc                 C  rG   r   rH   r   r   r   r   _floatr   rJ   rL   c                 C  rG   r   rH   r   r   r   r   _boolw   rJ   rM   c                 C  s   | S r   r   r   r   r   r   _str|   s   rN   registration.ONNXFunctionc                 C  s   d| j  d| j d| j dS )Nzregistration.ONNXFunction(z, is_custom=z, is_complex=r%   )op_full_name	is_custom
is_complexr   r   r   r   _registration_onnx_function   s   rS   listc                 C  b   dt |  d}| s|d S t| D ]\}}|tkr#|d7 } |d S |t| d7 }q|d S )NzList[length=](
None)...,
,
r%   len	enumerater   r   )r   list_stringiitemr   r   r   _list      r`   tuplec                 C  rU   )NzTuple[length=rV   rW   rX   rY   r%   rZ   )r   tuple_stringr^   r_   r   r   r   _tuple   ra   rd   dictc                 C  sp   dt |  d}| s|d S t|  D ]\}\}}|tkr'|d7 } |d S || dt| d7 }q|d S )NzDict[length=rV   rW   z...
z: rY   r%   )r[   r\   itemsr   r   )r   dict_stringr^   keyvaluer   r   r   _dict   s   rj   torch.nn.Parameterc                 C  s   dt | j dS )Nz
Parameter(r%   )r   datar   r   r   r   _torch_nn_parameter   s   rm    graph_building.TorchScriptTensorc                 C  r>   )Nz`TorchScriptTensor()`r?   r   r   r   r   _onnxscript_torch_script_tensor   rF   rp   onnxscript.OnnxFunctionc                 C     d| j  dS )Nz`OnnxFunction(ro   namer   r   r   r   _onnxscript_onnx_function      ru   onnxscript.TracedOnnxFunctionc                 C  rr   )Nz`TracedOnnxFunction(ro   rs   r   r   r   r    _onnxscript_traced_onnx_function   rv   rx   rD   torch.Size | Nonec                 C  s(   | d u rdS dd dd | D  dS )N [z, c                 s  s    | ]}t |V  qd S r   rH   ).0xr   r   r   	<genexpr>   s    z#_stringify_shape.<locals>.<genexpr>])join)rD   r   r   r   rC      s   rC   c                   @  s.   e Zd ZU ejdedZded< dddZdS )
DiagnosticFinitdefaultlogging.Loggerloggerlevelr   messager   r   r/   c                 O  sD   | j |r || }t r| j j||fi | | j| d S d S r   )r   isEnabledForr   logadditional_messagesappend)selfr   r   argskwargsformatted_messager   r   r   r      s   zDiagnostic.logN)r   r   r   r   r   r/   )	r(   
__module____qualname__dataclassesfielddiagnostic_loggerr   __annotations__r   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   r   r   ztype[Diagnostic]_bound_diagnostic_typec                   s   | j j| _t st  S | S r   )r   r   _previous_log_levelr   super	__enter__r   r'   r   r   r      s   

zDiagnosticContext.__enter__)r(   r   r   r   r   r   r   r   r   r   r   __classcell__r   r   r   r   r      s   
 r   )diagnostic_typer   c                      s,   e Zd ZU dZded< d fddZ  ZS )	UnsupportedFxNodeDiagnosticNztorch.fx.Node | Noneunsupported_fx_noder   r/   c                   s    t    | jd u rtdd S )Nz&unsupported_fx_node must be specified.)r   __post_init__r   
ValueErrorr   r   r   r   r      s   

z)UnsupportedFxNodeDiagnostic.__post_init__)r   r/   )r(   r   r   r   r   r   r   r   r   r   r   r      s   
 r   )r   r   )r   r   r   r   )r   r#   r   r   )r   r+   r   r   )r   r-   r   r   )r   r5   r   r   )r   r9   r   r   )r   r;   r   r   )r   r=   r   r   )r   r   r   r   )r   rK   r   r   )r   r   r   r   )r   r   r   r   )r   rO   r   r   )r   rT   r   r   )r   rb   r   r   )r   re   r   r   )r   rk   r   r   )r   rn   r   r   )r   rq   r   r   )r   rw   r   r   )rD   ry   r   r   )B
__future__r   r   	functoolstypingr   r   
onnxscript"onnxscript.function_libs.torch_libr   r   torch.fxtorch.onnx._internalr    torch.onnx._internal.diagnosticsr   &torch.onnx._internal.diagnostics.infrar   r	   torch.onnx._internal.fxr
   r   r@   loggingr   r   r   r   getArtifactLoggerr   r   singledispatchr    r   registerr)   r,   r4   r7   r:   r<   rE   rI   rL   rM   rN   rS   r`   rd   rj   rm   rp   ru   rx   rC   ruleslevelsRuntimeErrorWithDiagnostic
LazyStringDiagnosticOptions	dataclassr   r   partialdiagnose_callr   r   r   r   r   <module>   s   


