
    h!                     V    S SK r SSKJrJrJrJrJr  SSKJr  SSK	J
r
   " S S\5      rg)	    N   )TENSOR_NAME_QUANT_SUFFIXQuantizedValueQuantizedValueTypeattribute_to_kwarg	ms_domain   )QuantOperatorBase)QDQOperatorBasec                   4   ^  \ rS rSrU 4S jrU 4S jrSrU =r$ )QLinearConcat   c                 $   > [         TU ]  X5        g )N)super__init__)selfonnx_quantizer	onnx_node	__class__s      c/var/www/fran/franai/venv/lib/python3.13/site-packages/onnxruntime/quantization/operators/concat.pyr   QLinearConcat.__init__   s    3    c           	      6  > U R                   nU R                  R                  UR                  S   5      u  nnnnnU R                  R	                  U/ [        [        UR                  5      5      Q5      u  nnnn	U(       a  Uc  [        TU ]%  5       $ U R                  R                  UR                  S      n
[        UR                  S   UR                  S   [        -   UUU
R                  5      nXR                  R                  UR                  S   '   0 nUR                   H  nUR                  [!        U5      5        M     ["        US'   UR$                  (       a  UR$                  S-   OSnX4/n[        [        U5      5       H   nUR'                  UU   UU   UU   /5        M"     [(        R*                  R,                  " SXR.                  /U40 UD6nU R                  =R0                  U	-  sl        U R                  =R0                  U/-  sl        g )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%   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
,=s=)*A""M!$4k!nFVWXFY#Z[ +--_/L/L.Mz
]c
 	  E)   ]O3 r    )__name__
__module____qualname____firstlineno__r   r%   __static_attributes____classcell__)r   s   @r   r   r      s    4,4 ,4r   r   )r,   quant_utilsr   r   r   r   r   base_operatorr
   qdq_base_operatorr   r   rA   r   r   <module>rK      s'      - .04% 04r   