
    g!                     V    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e      Zy)	    N   )TENSOR_NAME_QUANT_SUFFIXQuantizedValueQuantizedValueTypeattribute_to_kwarg	ms_domain   )QuantOperatorBase)QDQOperatorBasec                   (     e Zd Z fdZ fdZ xZS )QLinearConcatc                 &    t         |   ||       y )N)super__init__)selfonnx_quantizer	onnx_node	__class__s      ^/var/www/openai/venv/lib/python3.12/site-packages/onnxruntime/quantization/operators/concat.pyr   zQLinearConcat.__init__   s    3    c           	         | j                   }| j                  j                  |j                  d         \  }}}}}| j                  j	                  |g t        t        |j                                    \  }}}}	|r|t        | %         S | j                  j                  |j                  d      }
t        |j                  d   |j                  d   t        z   |||
j                        }|| j                  j                  |j                  d   <   i }|j                  D ]  }|j                  t!        |              t"        |d<   |j$                  r|j$                  dz   nd}||g}t        t        |            D ]  }|j'                  ||   ||   ||   g       ! t)        j*                  j,                  d||j.                  g|fi |}| j                  xj0                  |	z  c_        | j                  xj0                  |gz  c_        y )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   s                     r   r#   zQLinearConcat.quantize   s   yy NN33DKKNC	
 NN..t5NuS_7M5NO	
]27#%% !% B B4::a= Q!/KKNKKN55!,,"
 >T**4;;q>:IMM,Y78 ($x-1YYTYY)B
,n=s=)*A""M!$4k!nFVWXFY#Z[ +--_/E/L/L.Mz
]c
 	  E)   ]O3 r   )__name__
__module____qualname__r   r#   __classcell__)r   s   @r   r   r      s    4,4 ,4r   r   )r*   quant_utilsr   r   r   r   r   base_operatorr
   qdq_base_operatorr   r    r   r   <module>rF      s'      - .04% 04r   