ó
    EñiÏ  ã                   ó  • S SK r S SKJr  S SKrS SKJr  S SKJr  / SQr " S S\5      r	 " S S	\5      r
S
\S\4S jrS\R                  R                  \-  S\S\4S jr " S S\
5      rS
\S\4S jrS r " S S\5      rg)é    N)ÚAny)ÚGraphModule)ÚGraph)ÚFusedGraphModuleÚObservedGraphModuleÚObservedStandaloneGraphModuleÚQuantizedGraphModulec                   ó|   ^ • \ rS rSrS\R
                  R                  \\\	4   -  S\
S\\   4U 4S jjrS rSrU =r$ )r   é   ÚrootÚgraphÚpreserved_attr_namesc                 óØ   >• X0l         U R                    Vs0 s H!  n[        X5      (       d  M  U[        X5      _M#     nn[        TU ]  X5        U H  n[        XXT   5        M     g s  snf ©N)r   ÚhasattrÚgetattrÚsuperÚ__init__Úsetattr©Úselfr   r   r   ÚattrÚpreserved_attrsÚ	__class__s         €Úb/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torch/ao/quantization/fx/graph_module.pyr   ÚFusedGraphModule.__init__   sr   ø€ ð %9Ô!ð ×1Ò1ó
â1�Ü�t×"ó &ˆD”'˜$Ó%Ò%Ù1ð 	ð 
ô
 	‰Ñ˜Ô%Û#ˆDÜ�D Ñ 5Ö6ò $ùò
s
   –A'®A'c                 ó  • [         R                  R                  5       n[        R                  " U R
                  5      Ul        [        U[        R                  " U R                  5      [        R                  " U R                  5      5      $ r   )	ÚtorchÚnnÚModuleÚcopyÚdeepcopyÚ__dict__r   r   r   ©r   ÚmemoÚfake_mods      r   Ú__deepcopy__ÚFusedGraphModule.__deepcopy__&   sY   € Ü—8‘8—?‘?Ó$ˆÜ ŸMšM¨$¯-©-Ó8ˆÔÜØÜ�MŠM˜$Ÿ*™*Ó%Ü�MŠM˜$×3Ñ3Ó4ó
ð 	
ó    ©r   ©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r   r    ÚdictÚstrr   r   Úsetr   r'   Ú__static_attributes__Ú__classcell__©r   s   @r   r   r      sG   ø† ð7à�h‰h�o‰o  S¨# X¡Ñ.ð7ð ð7ð " #™h÷	7÷&
ð 
r)   r   c                   ó|   ^ • \ rS rSrS\R
                  R                  \\\	4   -  S\
S\\   4U 4S jjrS rSrU =r$ )r   é0   r   r   r   c                 óü   >• 1 SkR                  U5      U l        U R                   Vs0 s H!  n[        X5      (       d  M  U[        X5      _M#     nn[        TU ]  X5        U H  n[        XXT   5        M     g s  snf )N>
   Ú_is_qatÚ	_patternsÚ_qconfig_mappingÚ_node_name_to_scopeÚ_observed_node_namesÚ_node_name_to_qconfigÚ_prepare_custom_configÚ_activation_post_process_mapÚ _activation_post_process_indexesÚ"_equalization_node_name_to_qconfig)Úunionr   r   r   r   r   r   r   s         €r   r   ÚObservedGraphModule.__init__1   s„   ø€ ò%
÷ ‰%Ð$Ó
%ð 	Ô!ð ×1Ò1ó
â1�Ü�t×"ó &ˆD”'˜$Ó%Ò%Ù1ð 	ð 
ô
 	‰Ñ˜Ô%Û#ˆDÜ�D Ñ 5Ö6ò $ùò
s   ¨A9Á A9c                 ó  • [         R                  R                  5       n[        R                  " U R
                  5      Ul        [        U[        R                  " U R                  5      [        R                  " U R                  5      5      $ r   )	r   r   r    r!   r"   r#   r   r   r   r$   s      r   r'   Ú ObservedGraphModule.__deepcopy__O   sY   € Ü—8‘8—?‘?Ó$ˆÜ ŸMšM¨$¯-©-Ó8ˆÔÜ"ØÜ�MŠM˜$Ÿ*™*Ó%Ü�MŠM˜$×3Ñ3Ó4ó
ð 	
r)   r*   r+   r5   s   @r   r   r   0   sG   ø† ð7à�h‰h�o‰o  S¨# X¡Ñ.ð7ð ð7ð " #™h÷	7÷<
ð 
r)   r   ÚmoduleÚreturnc                 óF   • [        U S5      =(       a    SU R                  ;   $ ©NÚmetaÚ_observed_graph_module_attrs)r   rK   ©rG   s    r   Ú_is_observed_modulerN   Y   s   € Ü�6˜6Ó"×TÐ'EÈÏÉÑ'TÐTr)   ÚmodelÚ	attr_namec                 óx   • [        U S5      (       a)  SU R                  ;   a  [        U R                  S   U5      $ g rJ   )r   rK   r   )rO   rP   s     r   Ú_get_observed_graph_module_attrrR   ]   s7   € ô ˆu�f×ÑÐ"@ÀEÇJÁJÓ"NÜ�u—z‘zÐ"@ÑAÀ9ÓMÐMØr)   c                   ó|   ^ • \ rS rSrS\R
                  R                  \\\	4   -  S\
S\\   4U 4S jjrS rSrU =r$ )r   ée   r   r   r   c                 óL   >• UR                  SS15      n[        TU ]	  XU5        g )NÚ'_standalone_module_input_quantized_idxsÚ(_standalone_module_output_quantized_idxs)rC   r   r   )r   r   r   r   r   s       €r   r   Ú&ObservedStandaloneGraphModule.__init__f   s3   ø€ ð  4×9Ñ9à9Ø:ðó 
Ðô 	‰Ñ˜Ð&:Õ;r)   c                 ó  • [         R                  R                  5       n[        R                  " U R
                  5      Ul        [        U[        R                  " U R                  5      [        R                  " U R                  5      5      $ r   )	r   r   r    r!   r"   r#   r   r   r   r$   s      r   r'   Ú*ObservedStandaloneGraphModule.__deepcopy__t   sY   € Ü—8‘8—?‘?Ó$ˆÜ ŸMšM¨$¯-©-Ó8ˆÔÜ,ØÜ�MŠM˜$Ÿ*™*Ó%Ü�MŠM˜$×3Ñ3Ó4ó
ð 	
r)   © r+   r5   s   @r   r   r   e   sG   ø† ð<à�h‰h�o‰o  S¨# X¡Ñ.ð<ð ð<ð " #™h÷	<÷
ð 
r)   r   c                 óX   • [        U 5      =(       a    U R                  S   R                  $ )NrL   )rN   rK   Úis_observed_standalone_modulerM   s    r   Ú_is_observed_standalone_moduler^   ~   s(   € ä˜FÓ#÷ 	VØ�K‰KÐ6Ñ7×UÑUðr)   c                 óÂ   • [        U 5       HP  nSU;   d  M  [        [        X5      [        R                  R
                  5      (       d  M?  [        X5      nXQX$-   '   MR     g ©NÚ_packed_weight)ÚdirÚ
isinstancer   r   Ú_CÚScriptObject)r   ÚdestinationÚprefixÚ	keep_varsrP   Úpacked_weights         r   Ú_save_packed_weightrj   …   sO   € Ü˜–Yˆ	Ø˜yÕ(¬ZÜ�DÓ$¤e§h¡h×&;Ñ&;÷.
ó .
ô $ DÓ4ˆMØ.;˜Ñ*Ó+ò r)   c                   óŒ   ^ • \ rS rSrSrS\R                  R                  \\	\
4   -  S\S\\	   4U 4S jjrU 4S jrS rS	rU =r$ )
r	   éŽ   zøThis class is created to make sure PackedParams
(e.g. LinearPackedParams, Conv2dPackedParams) to appear in state_dict
so that we can serialize and deserialize quantized graph module with
torch.save(m.state_dict()) and m.load_state_dict(state_dict)
r   r   r   c                 ó  >• X0l         U R                    Vs0 s H!  n[        X5      (       d  M  U[        X5      _M#     nn[        TU ]  X5        U H  n[        XXT   5        M     U R                  [        5        g s  snf r   )r   r   r   r   r   r   Ú_register_state_dict_hookrj   r   s         €r   r   ÚQuantizedGraphModule.__init__•   s�   ø€ ð %9Ô!ð ×1Ò1ó
â1�Ü�t×"ó &ˆD”'˜$Ó%Ò%Ù1ð 	ð 
ô
 	‰Ñ˜Ô%Û#ˆDÜ�D Ñ 5Ö6ñ $à×&Ñ&Ô':Õ;ùò
s
   –A<®A<c           	      óB  >• / nU Hg  n	U	R                  S5      (       d  M  [        X   [        R                  R                  5      (       d  MH  [        X	X   5        UR                  U	5        Mi     U H  n	UR                  U	5        M     [        T
U ]%  UUUUUUU5        g r`   )
Ú
startswithrc   r   rd   re   r   ÚappendÚpopr   Ú_load_from_state_dict)r   Ú
state_dictrg   Úlocal_metadataÚstrictÚmissing_keysÚunexpected_keysÚ
error_msgsÚattrs_to_poprP   r   s             €r   rt   Ú*QuantizedGraphModule._load_from_state_dict¦   s�   ø€ ð ˆÛ#ˆIØ×#Ñ#Ð$4×5Ó5¼*ØÑ%¤u§x¡x×'<Ñ'<÷;ó ;ô ˜¨Ñ)>Ô?Ø×#Ñ# IÖ.ñ $ó &ˆIØ�N‰N˜9Ö%ñ &ô 	‰Ñ%ØØØØØØØõ	
r)   c                 ó  • [         R                  R                  5       n[        R                  " U R
                  5      Ul        [        U[        R                  " U R                  5      [        R                  " U R                  5      5      $ r   )	r   r   r    r!   r"   r#   r	   r   r   r$   s      r   r'   Ú!QuantizedGraphModule.__deepcopy__Æ   sY   € Ü—8‘8—?‘?Ó$ˆÜ ŸMšM¨$¯-©-Ó8ˆÔÜ#ØÜ�MŠM˜$Ÿ*™*Ó%Ü�MŠM˜$×3Ñ3Ó4ó
ð 	
r)   r*   )r,   r-   r.   r/   Ú__doc__r   r   r    r0   r1   r   r   r2   r   rt   r'   r3   r4   r5   s   @r   r	   r	   Ž   sR   ø† ñð<à�h‰h�o‰o  S¨# X¡Ñ.ð<ð ð<ð " #™h÷	<õ"
÷@
ð 
r)   r	   )r!   Útypingr   r   Útorch.fxr   Útorch.fx.graphr   Ú__all__r   r   ÚboolrN   r   r    r1   rR   r   r^   rj   r	   r[   r)   r   Ú<module>r…      s¥   ðã Ý ã Ý  Ý  ò€ô
�{ô 
ô<&
˜+ô &
ðRU ð U¨ô UðØ�8‰8�?‰?˜[Ñ(ðØ58ðàôô
Ð$7ô 
ð2¨3ð °4ô ò<ô?
˜;õ ?
r)   