ó
    Eñi7U  ã                  óÚ   • S SK Jr  S SKJr  S SKJr  S SKJr  S SKJ	r	  S SK
JrJrJr  / SQrSrS	rS
rSrSrSrSrSrSr\ " S S5      5       r " S S5      r " S S5      r " S S5      rg)é    )Úannotations)Ú	dataclass)ÚAny)ÚQConfigMapping)ÚBackendConfig)Ú_get_quant_type_to_strÚ_quant_type_from_strÚ	QuantType)ÚConvertCustomConfigÚFuseCustomConfigÚPrepareCustomConfigÚStandaloneModuleConfigEntryÚstandalone_module_nameÚstandalone_module_classÚ%float_to_observed_custom_module_classÚ)observed_to_quantized_custom_module_classÚnon_traceable_module_nameÚnon_traceable_module_classÚinput_quantized_idxsÚoutput_quantized_idxsÚpreserved_attributesc                  ó>   • \ rS rSr% S\S'   S\S'   S\S'   S\S	'   S
rg)r   é$   úQConfigMapping | NoneÚqconfig_mappingútuple[Any, ...]Úexample_inputsúPrepareCustomConfig | NoneÚprepare_custom_configúBackendConfig | NoneÚbackend_config© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__annotations__Ú__static_attributes__r"   ó    Úc/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torch/ao/quantization/fx/custom_config.pyr   r   $   s   ‡ ð +Ó*Ø#Ó#Ø5Ó5Ø(Ö(r)   r   c                  ó  • \ rS rSrSrSS jrS r            SS jr            SS jr\	R                  4       SS jjr    SS jr    SS	 jrSS
 jrSS jrSS jr\    SS j5       rSS jrSrg)r   é.   aˆ  
Custom configuration for :func:`~torch.ao.quantization.quantize_fx.prepare_fx` and
:func:`~torch.ao.quantization.quantize_fx.prepare_qat_fx`.

Example usage::

    prepare_custom_config = PrepareCustomConfig()             .set_standalone_module_name("module1", qconfig_mapping, example_inputs,                 child_prepare_custom_config, backend_config)             .set_standalone_module_class(MyStandaloneModule, qconfig_mapping, example_inputs,                 child_prepare_custom_config, backend_config)             .set_float_to_observed_mapping(FloatCustomModule, ObservedCustomModule)             .set_non_traceable_module_names(["module2", "module3"])             .set_non_traceable_module_classes([NonTraceableModule1, NonTraceableModule2])             .set_input_quantized_indexes([0])             .set_output_quantized_indexes([0])             .set_preserved_attributes(["attr1", "attr2"])
c                ót   • 0 U l         0 U l        0 U l        / U l        / U l        / U l        / U l        / U l        g ©N)Ústandalone_module_namesÚstandalone_module_classesÚfloat_to_observed_mappingÚnon_traceable_module_namesÚnon_traceable_module_classesÚinput_quantized_indexesÚoutput_quantized_indexesr   ©Úselfs    r*   Ú__init__ÚPrepareCustomConfig.__init__B   sB   € ØOQˆÔ$ØRTˆÔ&ØLNˆÔ&Ø57ˆÔ'Ø8:ˆÔ)Ø24ˆÔ$Ø35ˆÔ%Ø/1ˆÕ!r)   c                ó˜   • U R                   R                  5        VVs0 s H  u  p[        U5      S:”  d  M  X_M     nnnSU S3$ s  snnf )Nr   zPrepareCustomConfig(Ú)©Ú__dict__ÚitemsÚlen©r7   ÚkÚvÚdict_nonemptys       r*   Ú__repr__ÚPrepareCustomConfig.__repr__L   óJ   € Ø*.¯-©-×*=Ñ*=Ô*?ÔNÒ*?¡$ !Ä3ÀqÃ6ÈAÁ:›˜šÑ*?ˆÑNØ% m _°AÐ6Ð6ùó Oó
   žA·Ac                ó8   • [        X#XE5      U R                  U'   U $ )aT  
Set the configuration for running a standalone module identified by ``module_name``.

If ``qconfig_mapping`` is None, the parent ``qconfig_mapping`` will be used instead.
If ``prepare_custom_config`` is None, an empty ``PrepareCustomConfig`` will be used.
If ``backend_config`` is None, the parent ``backend_config`` will be used instead.
)r   r/   )r7   Úmodule_namer   r   r   r!   s         r*   Úset_standalone_module_nameÚ.PrepareCustomConfig.set_standalone_module_nameP   s'   € ô 5PØÐ-Bó5
ˆ×$Ñ$ [Ñ1ð ˆr)   c                ó8   • [        X#XE5      U R                  U'   U $ )aU  
Set the configuration for running a standalone module identified by ``module_class``.

If ``qconfig_mapping`` is None, the parent ``qconfig_mapping`` will be used instead.
If ``prepare_custom_config`` is None, an empty ``PrepareCustomConfig`` will be used.
If ``backend_config`` is None, the parent ``backend_config`` will be used instead.
)r   r0   )r7   Úmodule_classr   r   r   r!   s         r*   Úset_standalone_module_classÚ/PrepareCustomConfig.set_standalone_module_classd   s'   € ô 8SØÐ-Bó8
ˆ×&Ñ& |Ñ4ð ˆr)   c                ó¢   • U[         R                  :w  a  [        S5      eX0R                  ;  a  0 U R                  U'   X R                  U   U'   U $ )a  
Set the mapping from a custom float module class to a custom observed module class.

The observed module class must have a ``from_float`` class method that converts the float module class
to the observed module class. This is currently only supported for static quantization.
zQset_float_to_observed_mapping is currently only supported for static quantization)r
   ÚSTATICÚ
ValueErrorr1   )r7   Úfloat_classÚobserved_classÚ
quant_types       r*   Úset_float_to_observed_mappingÚ1PrepareCustomConfig.set_float_to_observed_mappingx   sX   € ð œ×)Ñ)Ó)ÜØcóð ð ×;Ñ;Ó;Ø9;ˆD×*Ñ*¨:Ñ6ØBP×&Ñ& zÑ2°;Ñ?Øˆr)   c                ó   • Xl         U $ )zJ
Set the modules that are not symbolically traceable, identified by name.
)r2   )r7   Úmodule_namess     r*   Úset_non_traceable_module_namesÚ2PrepareCustomConfig.set_non_traceable_module_names�   s   € ð +7Ô'Øˆr)   c                ó   • Xl         U $ )zK
Set the modules that are not symbolically traceable, identified by class.
)r3   )r7   Úmodule_classess     r*   Ú set_non_traceable_module_classesÚ4PrepareCustomConfig.set_non_traceable_module_classes–   s   € ð -;Ô)Øˆr)   c                ó   • Xl         U $ )z…
Set the indexes of the inputs of the graph that should be quantized.
Inputs are otherwise assumed to be in fp32 by default instead.
)r4   ©r7   Úindexess     r*   Úset_input_quantized_indexesÚ/PrepareCustomConfig.set_input_quantized_indexesŸ   s   € ð
 (/Ô$Øˆr)   c                ó   • Xl         U $ )z‡
Set the indexes of the outputs of the graph that should be quantized.
Outputs are otherwise assumed to be in fp32 by default instead.
)r5   ra   s     r*   Úset_output_quantized_indexesÚ0PrepareCustomConfig.set_output_quantized_indexes§   s   € ð
 )0Ô%Øˆr)   c                ó   • Xl         U $ ©z„
Set the names of the attributes that will persist in the graph module even if they are not used in
the model's ``forward`` method.
©r   ©r7   Ú
attributess     r*   Úset_preserved_attributesÚ,PrepareCustomConfig.set_preserved_attributes¯   ó   € ð
 %/Ô!Øˆr)   c                óø  • SS jn      SS jnSS jnU " 5       nUR                  [        / 5       HE  u  nnnn	n
U" U[        5      nU" U	[        5      nU" U
[        5      nUR                  UUUUU5        MG     UR                  [        / 5       HE  u  nnnn	n
U" U[        5      nU" U	[        5      nU" U
[        5      nUR	                  UUUUU5        MG     UR                  [
        0 5      R                  5        H>  u  nn[        U5      nUR                  5        H  u  nnUR                  UUU5        M     M@     UR                  UR                  [        / 5      5        UR                  UR                  [        / 5      5        UR                  UR                  [        / 5      5        UR                  UR                  [         / 5      5        UR#                  UR                  [$        / 5      5        U$ )aŠ  
Create a ``PrepareCustomConfig`` from a dictionary with the following items:

    "standalone_module_name": a list of (module_name, qconfig_mapping, example_inputs,
    child_prepare_custom_config, backend_config) tuples

    "standalone_module_class" a list of (module_class, qconfig_mapping, example_inputs,
    child_prepare_custom_config, backend_config) tuples

    "float_to_observed_custom_module_class": a nested dictionary mapping from quantization
    mode to an inner mapping from float module classes to observed module classes, e.g.
    {"static": {FloatCustomModule: ObservedCustomModule}}

    "non_traceable_module_name": a list of modules names that are not symbolically traceable
    "non_traceable_module_class": a list of module classes that are not symbolically traceable
    "input_quantized_idxs": a list of indexes of graph inputs that should be quantized
    "output_quantized_idxs": a list of indexes of graph outputs that should be quantized
    "preserved_attributes": a list of attributes that persist even if they are not used in ``forward``

This function is primarily for backward compatibility and may be removed in the future.
c                óÂ   • [        U [        5      (       d  U c  U $ [        U [        5      (       a  [        R                  " U 5      $ [	        SU S[        U 5       S35      e)zV
Convert the given object into a QConfigMapping if possible, else throw an exception.
z7Expected QConfigMapping in prepare_custom_config_dict["ú	"], got 'Ú')Ú
isinstancer   ÚdictÚ	from_dictrR   Útype©ÚobjÚdict_keys     r*   Ú_get_qconfig_mappingÚ;PrepareCustomConfig.from_dict.<locals>._get_qconfig_mappingÒ   sa   € ô ˜#œ~×.Ñ.°#±+Ø�
Ü˜#œt×$Ñ$Ü%×/Ò/°Ó4Ð4ÜØJÈ8È*ÐT^Ô_cÐdgÓ_hÐ^iÐijÐkóð r)   c                óÀ   • [        U [        5      (       d  U c  U $ [        U [        5      (       a  [        R                  U 5      $ [	        SU S[        U 5       S35      e)z[
Convert the given object into a PrepareCustomConfig if possible, else throw an exception.
z<Expected PrepareCustomConfig in prepare_custom_config_dict["rr   rs   )rt   r   ru   rv   rR   rw   rx   s     r*   Ú_get_prepare_custom_configÚAPrepareCustomConfig.from_dict.<locals>._get_prepare_custom_configÞ   sc   € ô ˜#Ô2×3Ñ3°s±{Ø�
Ü˜#œt×$Ñ$Ü*×4Ñ4°SÓ9Ð9ÜØOÐPXÈzÐYcÔdhÐilÓdmÐcnÐnoÐpóð r)   c                óÂ   • [        U [        5      (       d  U c  U $ [        U [        5      (       a  [        R                  " U 5      $ [	        SU S[        U 5       S35      e)zU
Convert the given object into a BackendConfig if possible, else throw an exception.
z6Expected BackendConfig in prepare_custom_config_dict["rr   rs   )rt   r   ru   rv   rR   rw   rx   s     r*   Ú_get_backend_configÚ:PrepareCustomConfig.from_dict.<locals>._get_backend_configì   sa   € ô ˜#œ}×-Ñ-°±Ø�
Ü˜#œt×$Ñ$Ü$×.Ò.¨sÓ3Ð3ÜØIÈ(ÈÐS]Ô^bÐcfÓ^gÐ]hÐhiÐjóð r)   )ry   r   rz   ÚstrÚreturnr   )ry   r   rz   rƒ   r„   r   )ry   r   rz   rƒ   r„   r    )ÚgetÚSTANDALONE_MODULE_NAME_DICT_KEYrJ   Ú STANDALONE_MODULE_CLASS_DICT_KEYrN   ÚFLOAT_TO_OBSERVED_DICT_KEYr>   r	   rV   rZ   Ú"NON_TRACEABLE_MODULE_NAME_DICT_KEYr^   Ú#NON_TRACEABLE_MODULE_CLASS_DICT_KEYrc   Ú INPUT_QUANTIZED_INDEXES_DICT_KEYrf   Ú!OUTPUT_QUANTIZED_INDEXES_DICT_KEYrm   ÚPRESERVED_ATTRIBUTES_DICT_KEY)ÚclsÚprepare_custom_config_dictr{   r~   r�   ÚconfrI   Úqconfig_dictr   Ú_prepare_custom_config_dictÚbackend_config_dictr   r   r!   rM   Úquant_type_nameÚcustom_module_mappingrU   rS   rT   s                       r*   rv   ÚPrepareCustomConfig.from_dict¸   sJ  € ô4
	ð	Øð	Ø #ð	à'ô	ô
	ñ ‹uˆð (×+Ñ+Ô,KÈRÖPñ
ØØØØ'Øá2ØÔ=óˆOñ %?Ø+Ô-Ló%Ð!ñ 1Ø#Ô%DóˆNð ×+Ñ+ØØØØ%Øöñ Qð. (×+Ñ+Ô,LÈbÖQñ
ØØØØ'Øá2ØÔ>óˆOñ %?Ø+Ô-Mó%Ð!ñ 1Ø#Ô%EóˆNð ×,Ñ,ØØØØ%Øöñ Rð" 7Q×6TÑ6TÜ&¨ó7
ç
‰%‹'ò7Ñ2ˆOÐ2ô .¨oÓ>ˆJØ/D×/JÑ/JÖ/LÑ+�˜^Ø×2Ñ2Ø °öó 0Mñ	7ð 	×+Ñ+Ø&×*Ñ*Ô+MÈrÓRô	
ð 	×-Ñ-Ø&×*Ñ*Ô+NÐPRÓSô	
ð 	×(Ñ(Ø&×*Ñ*Ô+KÈRÓPô	
ð 	×)Ñ)Ø&×*Ñ*Ô+LÈbÓQô	
ð 	×%Ñ%Ø&×*Ñ*Ô+HÈ"ÓMô	
ð ˆr)   c                ó´  • SS jn0 nU R                   R                  5        H6  u  p4[        U;  a	  / U[        '   U[           R                  U" X45      5        M8     U R                  R                  5        H6  u  pT[
        U;  a	  / U[
        '   U[
           R                  U" XT5      5        M8     U R                  R                  5        H.  u  nn[        U;  a	  0 U[        '   UU[           [        U5      '   M0     [        U R                  5      S:”  a  U R                  U[        '   [        U R                  5      S:”  a  U R                  U[        '   [        U R                  5      S:”  a  U R                  U[        '   [        U R                   5      S:”  a  U R                   U["        '   [        U R$                  5      S:”  a  U R$                  U[&        '   U$ )z¡
Convert this ``PrepareCustomConfig`` to a dictionary with the items described in
:func:`~torch.ao.quantization.fx.custom_config.PrepareCustomConfig.from_dict`.
c                óì   • UR                   (       a  UR                   R                  5       OS nUR                  (       a  UR                  R                  5       OS nU UUR                  UUR                  4$ r.   )r   Úto_dictr   r   r!   )ÚkeyÚer‘   r�   s       r*   Ú_make_tupleÚ0PrepareCustomConfig.to_dict.<locals>._make_tupleF  sj   € Ø:;×:K×:K˜1×,Ñ,×4Ñ4Ô6ÐQUˆLà56×5L×5L�×'Ñ'×/Ñ/Ô1ÐRVð 'ð ØØ× Ñ Ø*Ø× Ñ ðð r)   r   )rš   r   r›   r   )r/   r>   r†   Úappendr0   r‡   r1   rˆ   r   r?   r2   r‰   r3   rŠ   r4   r‹   r5   rŒ   r   r�   )r7   rœ   ÚdrI   Úsm_config_entryrM   rU   r1   s           r*   r™   ÚPrepareCustomConfig.to_dict@  s³  € ô	ð ˆØ,0×,HÑ,H×,NÑ,NÖ,PÑ(ˆKÜ.°aÓ7Ø57�Ô1Ñ2ØÔ-Ñ.×5Ñ5Ù˜KÓ9öñ -Qð .2×-KÑ-K×-QÑ-QÖ-SÑ)ˆLÜ/°qÓ8Ø68�Ô2Ñ3ØÔ.Ñ/×6Ñ6Ù˜LÓ:öñ .Tð ×+Ñ+×1Ñ1Ö3ñ
ØØ%ä)°Ó2Ø02�Ô,Ñ-à)ð Ô(Ñ)Ô*@ÀÓ*LÓMñ 4ô ˆt×.Ñ.Ó/°!Ó3Ø48×4SÑ4SˆAÔ0Ñ1Üˆt×0Ñ0Ó1°AÓ5Ø59×5VÑ5VˆAÔ1Ñ2Üˆt×+Ñ+Ó,¨qÓ0Ø26×2NÑ2NˆAÔ.Ñ/Üˆt×,Ñ,Ó-°Ó1Ø37×3PÑ3PˆAÔ/Ñ0Üˆt×(Ñ(Ó)¨AÓ-Ø/3×/HÑ/HˆAÔ+Ñ,Øˆr)   )r1   r4   r3   r2   r5   r   r0   r/   N©r„   ÚNone)rI   rƒ   r   r   r   r   r   r   r!   r    r„   r   )rM   rw   r   r   r   r   r   r   r!   r    r„   r   )rS   rw   rT   rw   rU   r
   r„   r   )rY   ú	list[str]r„   r   )r]   z
list[type]r„   r   )rb   z	list[int]r„   r   )rl   r¤   r„   r   )r�   údict[str, Any]r„   r   ©r„   r¥   )r#   r$   r%   r&   Ú__doc__r8   rD   rJ   rN   r
   rQ   rV   rZ   r^   rc   rf   rm   Úclassmethodrv   r™   r(   r"   r)   r*   r   r   .   s,  † ñô&2ò7ðàðð /ðð (ð	ð
  :ðð -ðð 
ôð(àðð /ðð (ð	ð
  :ðð -ðð 
ôð0 !*× 0Ñ 0ð	àðð ðð ð	ð
 
õð*Ø%ðà	ôðØ(ðà	ôôôôð ðEØ)7ðEà	óEó ðE÷N3r)   r   c                  óŠ   • \ rS rSrSrSS jrS r\R                  4       SS jjr	SS jr
\    SS j5       rSS jrS	rg
)r   iv  a+  
Custom configuration for :func:`~torch.ao.quantization.quantize_fx.convert_fx`.

Example usage::

    convert_custom_config = ConvertCustomConfig()             .set_observed_to_quantized_mapping(ObservedCustomModule, QuantizedCustomModule)             .set_preserved_attributes(["attr1", "attr2"])
c                ó    • 0 U l         / U l        g r.   ©Úobserved_to_quantized_mappingr   r6   s    r*   r8   ÚConvertCustomConfig.__init__�  s   € ØPRˆÔ*Ø/1ˆÕ!r)   c                ó˜   • U R                   R                  5        VVs0 s H  u  p[        U5      S:”  d  M  X_M     nnnSU S3$ s  snnf )Nr   zConvertCustomConfig(r;   r<   r@   s       r*   rD   ÚConvertCustomConfig.__repr__…  rF   rG   c                ód   • X0R                   ;  a  0 U R                   U'   X R                   U   U'   U $ )zç
Set the mapping from a custom observed module class to a custom quantized module class.

The quantized module class must have a ``from_observed`` class method that converts the observed module class
to the quantized module class.
)r¬   )r7   rT   Úquantized_classrU   s       r*   Ú!set_observed_to_quantized_mappingÚ5ConvertCustomConfig.set_observed_to_quantized_mapping‰  s8   € ð ×?Ñ?Ó?Ø=?ˆD×.Ñ.¨zÑ:ØIX×*Ñ*¨:Ñ6°~ÑFØˆr)   c                ó   • Xl         U $ ri   rj   rk   s     r*   rm   Ú,ConvertCustomConfig.set_preserved_attributesš  ro   r)   c                ó$  • U " 5       nUR                  [        0 5      R                  5        H;  u  p4[        U5      nUR                  5        H  u  pgUR	                  XgU5        M     M=     UR                  UR                  [        / 5      5        U$ )aˆ  
Create a ``ConvertCustomConfig`` from a dictionary with the following items:

    "observed_to_quantized_custom_module_class": a nested dictionary mapping from quantization
    mode to an inner mapping from observed module classes to quantized module classes, e.g.::
    {
    "static": {FloatCustomModule: ObservedCustomModule},
    "dynamic": {FloatCustomModule: ObservedCustomModule},
    "weight_only": {FloatCustomModule: ObservedCustomModule}
    }
    "preserved_attributes": a list of attributes that persist even if they are not used in ``forward``

This function is primarily for backward compatibility and may be removed in the future.
)r…   ÚOBSERVED_TO_QUANTIZED_DICT_KEYr>   r	   r²   rm   r�   )rŽ   Úconvert_custom_config_dictr�   r”   r•   rU   rT   r±   s           r*   rv   ÚConvertCustomConfig.from_dict£  s’   € ñ$ ‹uˆØ6P×6TÑ6TÜ*¨Bó7
ç
‰%‹'ò7Ñ2ˆOô .¨oÓ>ˆJØ3H×3NÑ3NÖ3PÑ/�Ø×6Ñ6Ø"°Zöó 4Qñ	7ð 	×%Ñ%Ø&×*Ñ*Ô+HÈ"ÓMô	
ð ˆr)   c                óú   • 0 nU R                   R                  5        H.  u  nn[        U;  a	  0 U[        '   UU[           [        U5      '   M0     [	        U R
                  5      S:”  a  U R
                  U[        '   U$ )z¡
Convert this ``ConvertCustomConfig`` to a dictionary with the items described in
:func:`~torch.ao.quantization.fx.custom_config.ConvertCustomConfig.from_dict`.
r   )r¬   r>   r·   r   r?   r   r�   )r7   rŸ   rU   r¬   s       r*   r™   ÚConvertCustomConfig.to_dictÃ  s„   € ð
 ˆð ×/Ñ/×5Ñ5Ö7ñ
ØØ)ä-°QÓ6Ø46�Ô0Ñ1à-ð Ô,Ñ-Ô.DÀZÓ.PÓQñ 8ô ˆt×(Ñ(Ó)¨AÓ-Ø/3×/HÑ/HˆAÔ+Ñ,Øˆr)   r«   Nr¢   )rT   rw   r±   rw   rU   r
   r„   r   )rl   r¤   r„   r   )r¸   r¥   r„   r   r¦   )r#   r$   r%   r&   r§   r8   rD   r
   rQ   r²   rm   r¨   rv   r™   r(   r"   r)   r*   r   r   v  su   † ñô2ò7ð !*× 0Ñ 0ð	àðð ðð ð	ð
 
õô"ð ðØ)7ðà	óó ð÷>r)   r   c                  óP   • \ rS rSrSrS
S jrS rSS jr\SS j5       r	SS jr
Srg	)r   i×  zÇ
Custom configuration for :func:`~torch.ao.quantization.quantize_fx.fuse_fx`.

Example usage::

    fuse_custom_config = FuseCustomConfig().set_preserved_attributes(
        ["attr1", "attr2"]
    )
c                ó   • / U l         g r.   rj   r6   s    r*   r8   ÚFuseCustomConfig.__init__â  s
   € Ø/1ˆÕ!r)   c                ó˜   • U R                   R                  5        VVs0 s H  u  p[        U5      S:”  d  M  X_M     nnnSU S3$ s  snnf )Nr   zFuseCustomConfig(r;   r<   r@   s       r*   rD   ÚFuseCustomConfig.__repr__å  sJ   € Ø*.¯-©-×*=Ñ*=Ô*?ÔNÒ*?¡$ !Ä3ÀqÃ6ÈAÁ:›˜šÑ*?ˆÑNØ" = /°Ð3Ð3ùó OrG   c                ó   • Xl         U $ ri   rj   rk   s     r*   rm   Ú)FuseCustomConfig.set_preserved_attributesé  ro   r)   c                ó^   • U " 5       nUR                  UR                  [        / 5      5        U$ )a  
Create a ``ConvertCustomConfig`` from a dictionary with the following items:

    "preserved_attributes": a list of attributes that persist even if they are not used in ``forward``

This function is primarily for backward compatibility and may be removed in the future.
)rm   r…   r�   )rŽ   Úfuse_custom_config_dictr�   s      r*   rv   ÚFuseCustomConfig.from_dictò  s1   € ñ ‹uˆØ×%Ñ%Ø#×'Ñ'Ô(EÀrÓJô	
ð ˆr)   c                ób   • 0 n[        U R                  5      S:”  a  U R                  U[        '   U$ )zž
Convert this ``FuseCustomConfig`` to a dictionary with the items described in
:func:`~torch.ao.quantization.fx.custom_config.ConvertCustomConfig.from_dict`.
r   )r?   r   r�   )r7   rŸ   s     r*   r™   ÚFuseCustomConfig.to_dict  s2   € ð
 ˆÜˆt×(Ñ(Ó)¨AÓ-Ø/3×/HÑ/HˆAÔ+Ñ,Øˆr)   rj   Nr¢   )rl   r¤   r„   r   )rÄ   r¥   r„   r   r¦   )r#   r$   r%   r&   r§   r8   rD   rm   r¨   rv   r™   r(   r"   r)   r*   r   r   ×  s/   † ñô2ò4ôð óó ð÷r)   r   N)Ú
__future__r   Údataclassesr   Útypingr   Útorch.ao.quantizationr   Ú$torch.ao.quantization.backend_configr   Ú torch.ao.quantization.quant_typer   r	   r
   Ú__all__r†   r‡   rˆ   r·   r‰   rŠ   r‹   rŒ   r�   r   r   r   r   r"   r)   r*   Ú<module>rÏ      sš   ðå "å !Ý å 0Ý >÷ñ ò€ð #;Ð Ø#<Ð  ØDÐ Ø!LÐ Ø%@Ð "Ø&BÐ #Ø#9Ð  Ø$;Ð !Ø 6Ð ð ÷)ð )ó ð)÷Eñ E÷P
^ñ ^÷B2ò 2r)   