
    h	                     V    S SK r S SK Jr  SSKJrJrJrJrJr  SSK	J
r
   " S S\
5      rg)	    N)onnx_pb   )TENSOR_NAME_QUANT_SUFFIXQuantizedValueQuantizedValueTypeattribute_to_kwarg	ms_domain   )QuantOperatorBasec                   4   ^  \ rS rSrU 4S jrU 4S jrSrU =r$ )QLinearBinaryOp   c                 $   > [         TU ]  X5        g )N)super__init__)selfonnx_quantizer	onnx_node	__class__s      f/var/www/fran/franai/venv/lib/python3.13/site-packages/onnxruntime/quantization/operators/binary_op.pyr   QLinearBinaryOp.__init__	   s    3    c                 l  > U R                   nU R                  R                  UR                  S   5      u  nnnnnU R                  R	                  USS/5      u  nnnn	U(       a  Uc  [
        TU ]  5       $ UR                  S   [        -   n
UR                  (       a  UR                  S-   OSn0 nUR                   H  nUR                  [        U5      5        M     [        US'   / nUR                  US   5        UR                  US   5        UR                  US   5        UR                  US   5        UR                  US   5        UR                  US   5        UR                  U5        UR                  U5        [        R                  R                   " SUR"                  -   UU
/U40 UD6nU	R                  U5        [%        UR                  S   U
UU[&        R(                  5      nUU R                  R*                  UR                  S   '   U R                  =R,                  U	-  sl        g )Nr   r
   _quant domainQLinear)node	quantizer_get_quantization_paramsoutputquantize_activationr   quantizer   name	attributeupdater   r	   appendonnxhelper	make_nodeop_typer   r   Inputquantized_value_map	new_nodes)r   r   
data_foundoutput_scale_nameoutput_zp_name_quantized_input_nameszero_point_namesscale_namesnodesqlinear_binary_math_outputqlinear_binary_math_namekwargsr%   qlinear_binary_math_inputsqlinear_binary_math_nodeq_outputr   s                    r   r#   QLinearBinaryOp.quantize   s   yy NN33DKKNC	
 NN..taV<	
!2:7#%%%)[[^6N%N";?99499x#7" IMM,Y78 ($x%'""))*?*BC"))+a.9"))*:1*=>"))*?*BC"))+a.9"))*:1*=> 	#))*;<")).9#';;#8#8$&'($	$

 $
  	-. "KKN&$$
 >F**4;;q>:  E) r    )__name__
__module____qualname____firstlineno__r   r#   __static_attributes____classcell__)r   s   @r   r   r      s    4<* <*r   r   )r(   r   
onnx_protoquant_utilsr   r   r   r   r	   base_operatorr   r   r>   r   r   <module>rH      s#     & u u ,@*' @*r   