o
    ˜ÄŽi<
  ã                   @   sf   d dl mZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 G dd	„ d	ƒZd
S )é    )ÚMappingProxyType)ÚAny)ÚMapping)ÚTuple)ÚAttributeProto)Ú	NodeProto©Ú
OnnxTensorc                   @   sÜ   e Zd Zdedefdd„Zededefdd„ƒZ	e
defd	d
„ƒZe
defdd„ƒZe
defdd„ƒZe
defdd„ƒZe
defdd„ƒZe
deedf fdd„ƒZe
deedf fdd„ƒZe
deeef fdd„ƒZdS )ÚOnnxNodeÚonnx_node_protoÚunique_namec                 C   sB   || _ || _t|jƒ| _t|jƒ| _d | _dd„ | j jD ƒ| _	d S )Nc                 S   s   i | ]	}|j t |¡“qS © )Únamer
   Ú_parse_attribute_value)Ú.0Ú	attributer   r   úP/home/jeff/fluffinator/venv/lib/python3.10/site-packages/onnx2torch/onnx_node.pyÚ
<dictcomp>   s    ÿz%OnnxNode.__init__.<locals>.<dictcomp>)
Ú_protoÚ_unique_nameÚtupleÚinputÚ_input_valuesÚoutputÚ_output_valuesÚ_inputsr   Ú_proto_attributes)Úselfr   r   r   r   r   Ú__init__   s   ÿzOnnxNode.__init__r   Úreturnc                 C   s¾   |   d¡r
| j}|S |   d¡r| j}|S |   d¡r!t| jdƒ}|S |   d¡r-t| jƒ}|S | jr7t| jƒ}|S | j	rAt| j	ƒ}|S | j
rNdd„ | j
D ƒ}|S | jr[dd„ | jD ƒ}|S | }|S )	NÚiÚfÚsúutf-8Útc                 S   s   g | ]}t |d ƒ‘qS )r#   )Ústr)r   r"   r   r   r   Ú
<listcomp>'   s    z3OnnxNode._parse_attribute_value.<locals>.<listcomp>c                 S   s   g | ]}t |ƒ‘qS r   r   )r   r$   r   r   r   r&   )   s    )ÚHasFieldr    r!   r%   r"   r	   r$   ÚintsÚlistÚfloatsÚstringsÚtensors)r   Úvaluer   r   r   r      s4   

ï
ñ
ó
õ

÷
ùûþzOnnxNode._parse_attribute_valuec                 C   ó   | j S ©N)r   ©r   r   r   r   Úproto/   ó   zOnnxNode.protoc                 C   ó   | j jS r/   )r   r   r0   r   r   r   r   3   ó   zOnnxNode.namec                 C   r.   r/   )r   r0   r   r   r   r   7   r2   zOnnxNode.unique_namec                 C   r3   r/   )r   Údomainr0   r   r   r   r5   ;   r4   zOnnxNode.domainc                 C   r3   r/   )r   Úop_typer0   r   r   r   Úoperation_type?   r4   zOnnxNode.operation_type.c                 C   r.   r/   )r   r0   r   r   r   Úinput_valuesC   r2   zOnnxNode.input_valuesc                 C   r.   r/   )r   r0   r   r   r   Úoutput_valuesG   r2   zOnnxNode.output_valuesc                 C   s
   t | jƒS r/   )r   r   r0   r   r   r   Ú
attributesK   s   
zOnnxNode.attributesN)Ú__name__Ú
__module__Ú__qualname__r   r%   r   Ústaticmethodr   r   r   Úpropertyr1   r   r   r5   r7   r   r8   r9   r   r:   r   r   r   r   r
      s(    r
   N)Útypesr   Útypingr   r   r   Úonnx.onnx_ml_pb2r   r   Úonnx2torch.onnx_tensorr	   r
   r   r   r   r   Ú<module>   s    