
    shW                         S SK r S SKrS SKrS SKrS SKJr  S/r " S S\R                  R                  \ R                  S9r
S rS rS rS	 rS
 rS r\" S5      rg)    N)
_addindentWeightedQuantizedModulec                   F    \ rS rSrSr\\R                  S 5       5       rSr	g)r      zIWrapper for quantized modules than can be lowered from reference modules.c                     [         e)N)NotImplementedError)cls
ref_moduleoutput_scaleoutput_zero_points       w/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/torch/ao/nn/quantized/modules/utils.pyfrom_reference&WeightedQuantizedModule.from_reference   s
     "!     N)
__name__
__module____qualname____firstlineno____doc__classmethodabcabstractmethodr   __static_attributes__r   r   r   r   r      s%    S"  "r   )	metaclassc                 @    [        U S5      (       a  U R                  n U $ )Nactivation_post_process)hasattrr   )observers    r   _get_weight_observerr       s     x23333Or   c                    [        U 5      n U[        R                  [        R                  [        R                  4;   aO  [        R
                  " U5      nU R                  UR                  :  =(       d    U R                  UR                  :  $ g)NF)
r    torchqint8quint8qint32iinfo	quant_minmin	quant_maxmax)r   dtypeinfos      r   _needs_weight_clampingr-       sa    #H-HellELL99{{5!!!DHH,M0B0BTXX0MMr   c                 p   [        XR                  5      (       d  U $ [        U5      nUR                  UR                  pT[
        R                  " U R                  5       5      R                  U5      n[
        R                  " U R                  5       5      R                  U5      n[
        R                  " [
        R                  " U R                  5       U5      U5      nUR                  [
        R                  [
        R                  4;   a5  [
        R                  " XR                  5       UR                  5       5      n U $ UR                  [
        R                   [
        R"                  [
        R$                  4;   a!  [
        R&                  " XX1R(                  S9n U $ [+        SUR                  -   5      e)N)axisUnexpected qscheme )r-   r+   r    r'   r)   r"   cloneint_reprfill_minimummaximumqschemeper_tensor_symmetricper_tensor_affine!_make_per_tensor_quantized_tensoritemper_channel_symmetricper_channel_affine per_channel_affine_float_qparams"_make_per_channel_quantized_tensorch_axis
ValueError)	qweightr   scalezpmin_max_
qw_int_max
qw_int_minqw_ints	            r   _clamp_weightsrI   (   sQ   !(MM::#H-H##X%7%7$ W--/066t<JW--/066t<J]]5==)9)9);ZH*UFE668O8OPP99JJL"'')
 N 
		##  .. 

 ::2$4$4

 N .1A1AABBr   c                    UR                  5       u  p#UR                  [        R                  [        R                  4;   aG  [        R
                  " U [        U5      [        U5      [        R                  5      n[        XAX#5      nU$ UR                  [        R                  [        R                  4;   a|  UR                  n[        R                  " U UR                  [        R                  5      UR                  [        R                   5      U[        R                  5      n[        XAX#5      nU$ UR                  [        R"                  4;   av  [        R                  " U UR                  [        R                  5      UR                  [        R                  5      UR                  UR$                  5      n[        XAX#5      nU$ ['        SUR                  -   5      e)Nr0   )calculate_qparamsr6   r"   r7   r8   quantize_per_tensorfloatintr#   rI   r;   r<   r?   quantize_per_channeltodoubleint64r=   r+   r@   )float_wtr   wt_scalewt_zprA   wt_axiss         r   _quantize_weightrW   E   ss   002OHE668O8OPP++eHos5z5;;
 !HD, N+ 
		e995;S;ST	T"",,KK%HHU[[!KK
 !HD N 
		eDDE	E,,KK$HHU[[!NN
 !HD N .1A1AABBr   c                    ^  U 4S jnU$ )zKConverts the argument to a tuple of size n
with the first element repeated.c                   > [        U [        R                  R                  5      (       a@  [	        U 5      T:X  a  O0U S   n [        U [        R                  R                  5      (       a  M@  [        [        R                  " U T5      5      $ )Nr   )
isinstancecollectionsr   Sequencelentuple	itertoolsrepeat)xns    r   parse!_ntuple_from_first.<locals>.parseh   sd    KOO44551v{!A KOO4455 Y%%a+,,r   r   )rb   rc   s   ` r   _ntuple_from_firstre   d   s    - Lr   c                    / nU R                  5       nU(       a  UR                  S5      n/ nU R                  R                  5        HH  u  pV[	        Xa5      (       a  M  [        U5      n[        US5      nUR                  SU-   S-   U-   5        MJ     X$-   nU R                  5       S-   n	U(       a8  [        U5      S:X  a  U(       d  XS   -  n	OU	SSR                  U5      -   S-   -  n	U	S-  n	U	$ )	N
   (z):    r   z
  ))
extra_reprsplit_modulesitemsrZ   reprr   append	_get_namer]   join)
selfparamsextra_linesrl   child_lineskeymodulemod_strlinesmain_strs
             r   _hide_packed_params_reprr}   r   s     K"J &&t,K}}**,f%%v,Wa(39u,w67 - %E~~#%H{q A&HU!33d::HOHOr   rh   )r   r[   r_   r"   torch.nn.modules.moduler   __all__nnModuleABCMetar   r    r-   rI   rW   re   r}   _pair_from_firstr   r   r   <module>r      se    
    . 
"ehhoo ":>< &a( r   