
    sh                        S SK r S SKJr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                  \4   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Union)GraphModule)Graph)FusedGraphModuleObservedGraphModuleObservedStandaloneGraphModuleQuantizedGraphModulec                      ^  \ rS rSrS\\R                  R                  \\	\
4   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         y/Users/tiagomarins/Projetos/claudeai/copy_bank/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    88??$ MM$--8MM$**%MM$334
 	
    r   __name__
__module____qualname____firstlineno__r   r   r    r!   dictstrr   r   setr   r(   __static_attributes____classcell__r   s   @r   r   r      sL    7EHHOOT#s(^347 7 "#h	7&
 
r*   r   c                      ^  \ rS rSrS\\R                  R                  \\	\
4   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    88??$ MM$--8"MM$**%MM$334
 	
r*   r+   r,   r6   s   @r   r   r   0   sL    7EHHOOT#s(^347 7 "#h	7<
 
r*   r   modulereturnc                 F    [        U S5      =(       a    SU R                  ;   $ Nmeta_observed_graph_module_attrs)r   rL   rH   s    r   _is_observed_modulerO   Y   s    66"T'E'TTr*   model	attr_namec                 x    [        U S5      (       a)  SU R                  ;   a  [        U R                  S   U5      $ g rK   )r   rL   r   )rP   rQ   s     r   _get_observed_graph_module_attrrS   ]   s7     uf"@EJJ"Nuzz"@A9MMr*   c                      ^  \ rS rSrS\\R                  R                  \\	\
4   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)rD   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    88??$ MM$--8,MM$**%MM$334
 	
r*    r,   r6   s   @r   r	   r	   e   sL    <EHHOOT#s(^34< < "#h	<
 
r*   r	   c                 X    [        U 5      =(       a    U R                  S   R                  $ )NrM   )rO   rL   is_observed_standalone_modulerN   s    r   _is_observed_standalone_moduler_   ~   s(    F# 	VKK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_varsrQ   packed_weights         r   _save_packed_weightrk      sO    Y	y(ZD$ehh&;&;.
 .
 $D4M.;*+ r*   c                      ^  \ rS rSrSrS\\R                  R                  \	\
\4   4   S\S\\
   4U 4S jjrU 4S jrS rS	rU =r$ )
r
      zThis 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_hookrk   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 ra   )

startswithrd   r   re   rf   r   appendpopr   _load_from_state_dict)r   
state_dictrh   local_metadatastrictmissing_keysunexpected_keys
error_msgsattrs_to_poprQ   r   s             r   ru   *QuantizedGraphModule._load_from_state_dict   s     #I##$455*ZEZ\a\d\d\q\q:r:r)>?##I. $ &INN9% & 	%	
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    88??$ MM$--8#MM$**%MM$334
 	
r*   r+   )r-   r.   r/   r0   __doc__r   r   r    r!   r1   r2   r   r   r3   r   ru   r(   r4   r5   r6   s   @r   r
   r
      sV    <EHHOOT#s(^34< < "#h	<"
<
 
r*   r
   )r"   typingr   r   r   torch.fxr   torch.fx.graphr   __all__r   r   boolrO   r    r!   r2   rS   r	   r_   rk   r
   r\   r*   r   <module>r      s          
{ 
<&
+ &
RU U U+-.;>
$7 
23 4 <=
; =
r*   