
    h                     l    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 " S	 S
\
5      rg)    N   )TENSOR_NAME_QUANT_SUFFIXQuantizedValueQuantizedValueTypeattribute_to_kwarg	ms_domain   )QuantOperatorBase)QDQOperatorBasec                   .   ^  \ rS rSrS rU 4S jrSrU =r$ )QLinearWhere   c                     g)NT )selfs    b/var/www/fran/franai/venv/lib/python3.13/site-packages/onnxruntime/quantization/operators/where.pyshould_quantizeQLinearWhere.should_quantize	   s        c           	      $  > U R                   nUR                  S:X  d   eU R                  R                  (       d!  U R                  =R                  U/-  sl        g 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[        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(                  S   US   US   US   US   US   US   UU/	n[*        R,                  R.                  " SX/U40 UD6nU R                  =R                  U	-  sl        U R                  =R                  U/-  sl        g )	NWherer   r	   r   _quant domainr   )nodeop_type	quantizerforce_quantize_no_input_check	new_nodes_get_quantization_paramsoutputquantize_activationsuperquantizer   namer   r   Inputquantized_value_map	attributeupdater   r   inputonnxhelper	make_node)r   r   
data_foundoutput_scale_nameoutput_zp_name_q_input_nameszero_point_namesscale_namesnodesqlinear_outputqlinear_output_nameq_outputkwargsr(   qlwhere_inputsqlwhere_node	__class__s                    r   r$   QLinearWhere.quantize   s   yy||w&&&~~;;NN$$.$ NN33DKKNC	
 NN..taV<	
]27#%%Q*BB6:iidii(2R!KKN$$
 >F**4;;q>:IMM,Y78 ($x JJqM!NQ!NQ

 {{,,N,<>Q
U[
 	  E)   \N2 r   r   )__name__
__module____qualname____firstlineno__r   r$   __static_attributes____classcell__)r<   s   @r   r   r      s    63 63r   r   c                       \ rS rSrS rSrg)QDQWhereE   c                    U R                   nUR                  S:X  d   eU R                  R                  (       a  U R                  R	                  UR
                  S   5      (       d(  U R                  R                  UR
                  S   5        U R                  R	                  UR
                  S   5      (       d(  U R                  R                  UR
                  S   5        U R                  (       d/  UR                   H  nU R                  R                  U5        M      g g U R                  R	                  UR
                  S   5      (       ao  U R                  R	                  UR
                  S   5      (       aA  U R                  (       d/  UR                   H  nU R                  R                  U5        M      g g g g )Nr   r	   r   )	r   r   r   r   is_tensor_quantizedr*   quantize_activation_tensordisable_qdq_for_node_outputr!   )r   r   r!   s      r   r$   QDQWhere.quantizeF   s;   yy||w&&&>>77>>55djjmDD99$**Q-H>>55djjmDD99$**Q-H33"kkFNN==fE * 4 NN..tzz!}==224::a=AA44++99&A & 5 B >r   r   N)r>   r?   r@   rA   r$   rB   r   r   r   rE   rE   E   s    Br   rE   )r+   quant_utilsr   r   r   r   r   base_operatorr
   qdq_base_operatorr   r   rE   r   r   r   <module>rO      s0     u u , .:3$ :3zB Br   