o
    
j!                     @   sP   d dl Z ddlmZmZmZmZmZ ddlmZ ddl	m
Z
 G dd deZdS )	    N   )TENSOR_NAME_QUANT_SUFFIXQuantizedValueQuantizedValueTypeattribute_to_kwarg	ms_domain   )QuantOperatorBase)QDQOperatorBasec                       s(   e Zd Z fddZ fddZ  ZS )QLinearConcatc                    s   t  || d S )N)super__init__)selfonnx_quantizer	onnx_node	__class__ \/home/kuhnn/.local/lib/python3.10/site-packages/onnxruntime/quantization/operators/concat.pyr      s   zQLinearConcat.__init__c                    sV  | j }| j|jd \}}}}}| j|g tt|j\}}}}	|r)|d u r.t 	 S | jj
|jd  }
t|jd |jd t |||
j}|| jj
|jd < i }|jD ]	}|t| qVt|d< |jrl|jd nd}||g}tt|D ]}||| || || g qxtjjd||jg|fi |}| j j|	7  _| j j|g7  _d S )Nr   domain_quant r   )node	quantizer_get_quantization_paramsoutputquantize_activationrangeleninputr   quantizequantized_value_mapr   r   
value_type	attributeupdater   r   nameextendonnxhelper	make_nodeq_name	new_nodes)r   r   
data_foundoutput_scale_nameoutput_zp_name_q_input_nameszero_point_namesscale_namesnodesquantized_input_valuequantized_output_valuekwargsr#   
qnode_nameqlconcat_inputsiqlconcat_noder   r   r   r       sP   

zQLinearConcat.quantize)__name__
__module____qualname__r   r    __classcell__r   r   r   r   r      s    r   )r'   quant_utilsr   r   r   r   r   base_operatorr	   qdq_base_operatorr
   r   r   r   r   r   <module>   s
    