§
    ŠŠtjá  ã                   óz  — d dl Z d dlZd dlmZ d dlmZ d dlZd dlZd dlZd dl	m
Z
  e j        e¦  «        ZdgZ	 ddej        j        dee         deed	f         d
eeef         dz  deeeeef         f         f
d„Z	 ddddœdej        j        deed	f         d
eeef         dz  dededeeedz  f         fd„ZdS )é    N)ÚIterable)ÚAny)Úlog_export_usageÚreport_exportabilityÚmodelÚtarget_submodulesÚargs.ÚkwargsÚreturnc                 óÖ  ‡
‡— |pi }g }i Š
d„ |                       ¦   «         D ¦   «         Šˆ
ˆfd„}	 |                       ¦   «         D ]3\  }}||v r*|                     |                     |d¬¦  «        ¦  «         Œ4 | |i |¤Ž n0# t          $ r#}t	          j        d|› �d¬¦  «         Y d}~nd}~ww xY w|D ]}	|	                     ¦   «          Œn# |D ]}	|	                     ¦   «          Œw xY w‰
S )	a~  
    Generate inputs for targeting submdoules in the given model. Note that if two submodules refer to the same obj, this
    function doesn't work.

    Args:
        model: root model.
        inputs: inputs to the root model.
        target_submodules: submodules that we want to generate inputs for.

    Returns:
        A dict that maps from submodule name to its inputs.
    c                 ó   — i | ]\  }}||“Œ	S © r   )Ú.0ÚnameÚmods      úQ/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/torch/_export/tools.pyú
<dictcomp>z3_generate_inputs_for_submodules.<locals>.<dictcomp>(   s   € ÐKÐKÐK©	¨¨c˜#˜tÐKÐKÐKó    c                 ó"   •— ||f‰‰|          <   d S ©Nr   )ÚmoduleÚmodule_argsÚmodule_kwargsÚresultsÚsubmodule_to_namess      €€r   Úpre_forwardz4_generate_inputs_for_submodules.<locals>.pre_forward*   s   ø€ Ø/:¸MÐ.JˆÐ" 6Ô*Ñ+Ð+Ð+r   T)Úwith_kwargszDFailed to generate submodule inputs because of the following error:
é   )Ú
stacklevelN)Únamed_modulesÚappendÚregister_forward_pre_hookÚ	ExceptionÚwarningsÚwarnÚremove)r   r   r	   r
   Úhandlesr   r   r   ÚeÚhr   r   s             @@r   Ú_generate_inputs_for_submodulesr*      s„  øø€ ð$ ˆ\�r€Fà€GØ€GØKÐK°U×5HÒ5HÑ5JÔ5JÐKÑKÔKÐðKð Kð Kð Kð Kð KðØ×,Ò,Ñ.Ô.ð 	ð 	‰IˆD�#ØÐ(Ð(Ð(Ø—’Ø×1Ò1°+È4Ð1ÑPÔPñô ð øð 	ˆˆtÐ�vÐÐÐÐøÝð 
ð 
ð 
ÝŒØWÐTUÐWÐWØð	
ñ 	
ô 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
øøøøð
øøøð ð 	ð 	ˆAØ�HŠH‰JŒJˆJˆJð	ø�ð 	ð 	ˆAØ�HŠH‰JŒJˆJˆJð	øøøà€Ns0   °AB Â C Â
B.ÂB)Â$C Â)B.Â.C ÃC&TF©ÚstrictÚpre_dispatchr   r,   r-   c                ó@  ‡‡‡
‡‡‡— t          d¬¦  «         |pi }d„ |                      ¦   «         D ¦   «         }t          | |||¦  «        Št          ¦   «         Ši Š
ˆˆ
ˆˆˆˆfd„Š ‰| d||¦  «         t          ¦   «         }‰
                     ¦   «         D ]A}|�=t          |¦  «                             d¦  «        d         }|                     |¦  «         ŒBt           	                    d	t          |¦  «        ¦  «         |D ]}	t           	                    |	¦  «         Œ‰
S )
aš  
    Report exportability issues for a module in one-shot.

    Args:
        mod: root module.
        args: args to the root module.
        kwargs: kwargs to the root module.
    Returns:
        A dict that maps from submodule name to the exception that was raised when trying to export it.
        `None` means the module is exportable without issue.
    Sample output:
        {
            '': UnsupportedOperatorException(func=<OpOverload(op='testlib.op_missing_meta', overload='default')>),
            'submod_1': UnsupportedOperatorException(func=<OpOverload(op='testlib.op_missing_meta', overload='default')>),
            'submod_2': None
        }
    zexport.report_exportability)Úeventc                 ó$   — g | ]\  }}|d k    ¯|‘ŒS )Ú r   )r   r   Ú_s      r   ú
<listcomp>z(report_exportability.<locals>.<listcomp>]   s!   € ÐNÐNÐN¡  qÀ4È2Â:À:˜À:À:À:r   c                 ór  •— t          | ¦  «        ‰v rd S ‰                     t          | ¦  «        ¦  «         |€|�¬	 t          j        j                             | ||‰‰¬¦  «         d ‰|<   t                               d|¦  «         d S # t          $ rS}t          |¦  «         
                    d¦  «        d         }t                               d||¦  «         |‰|<   Y d }~nd }~ww xY w|                      ¦   «         D ];\  }}|dk    r|n|› d|› �}‰                     |d¦  «        \  }	}
 ‰|||	|
¦  «         Œ<d S )	Nr+   zSuccessfully exported `%s`ú
r   z(Failed exporting `%s` with exception: %sr1   ú.)NN)ÚtypeÚaddÚtorchÚexportÚ_traceÚ_exportÚlogÚinfor#   ÚreprÚsplitÚwarningÚnamed_childrenÚget)r   Úmodule_namer	   r
   r(   Ú	short_msgr   ÚsubmodÚsub_module_nameÚsubmod_argsÚsubmod_kwargsr-   Úreportr,   Úsubmod_inputsÚtried_module_typesÚ
try_exports              €€€€€€r   rM   z(report_exportability.<locals>.try_exportc   s“  ø€ õ �‰<Œ<Ð-Ð-Ð-ØˆFØ×Ò�t F™|œ|Ñ,Ô,Ð,àÐ˜vÐ1ð(Ý”Ô#×+Ò+ØØØØ!Ø!-ð ,ñ ô ð ð '+��{Ñ#Ý—’Ð5°{ÑCÔCÐCØ�øÝð (ð (ð (Ý  ™GœGŸMšM¨$Ñ/Ô/°Ô2�	Ý—’Ø>ÀÈYñô ð ð '(��{Ñ#Ð#Ð#Ð#Ð#Ð#øøøøð(øøøð #×1Ò1Ñ3Ô3ð 	Lð 	L‰LˆD�&Ø&1°RÒ&7Ð&7˜d˜dÀÐ=TÐ=TÈdÐ=TÐ=TˆOà)6×):Ò):Ø ñ*ô *Ñ&ˆK˜ð ˆJ�v˜°¸]ÑKÔKÐKÐKàˆs   ¼A	B Â
C$ÂA	CÃC$r1   Nz\nr   zFound %d export issues:)r   r    r*   ÚsetÚvaluesr?   r@   r8   r=   rA   Úlen)r   r	   r
   r,   r-   Úall_submod_namesÚunique_issuesÚ	exceptionÚkeyÚissuerJ   rK   rL   rM   s      ``     @@@@r   r   r   ?   sS  øøøøøø€ õ4 Ð8Ð9Ñ9Ô9Ð9àˆ\�r€FàNÐN¨C×,=Ò,=Ñ,?Ô,?ÐNÑNÔNÐÝ3°CÐ9IÈ4ÐQWÑXÔX€Må™œÐØ*,€Fð#ð #ð #ð #ð #ð #ð #ð #ð #ð #ðJ €Jˆs�B˜˜fÑ%Ô%Ð%å‘E”E€MØ—]’]‘_”_ð #ð #ˆ	ØÐ Ý�y‘/”/×'Ò'¨Ñ.Ô.¨qÔ1ˆCØ×Ò˜cÑ"Ô"Ð"øå‡K‚KÐ)­3¨}Ñ+=Ô+=Ñ>Ô>Ð>Øð ð ˆÝ�Š�EÑÔÐÐà€Mr   r   )Úloggingr$   Úcollections.abcr   Útypingr   r9   Útorch.exportÚtorch.export._traceÚtorch._utils_internalr   Ú	getLoggerÚ__name__r=   Ú__all__ÚnnÚModuleÚstrÚtupleÚdictr*   Úboolr#   r   r   r   r   ú<module>re      s¯  ðà €€€Ø €€€Ø $Ð $Ð $Ð $Ð $Ð $Ø Ð Ð Ð Ð Ð à €€€Ø Ð Ð Ð Ø Ð Ð Ð Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2ð €gÔ˜Ñ!Ô!€à!Ð
"€ð %)ð	*ð *ØŒ8Œ?ð*à ”}ð*ð ��S�Œ/ð*ð ��c�ŒN˜TÑ!ð	*ð
 
ˆ#ˆu�S˜#�XŒÐ
Ôð*ð *ð *ð *ð` %)ðUð
 ØðUð Uð UØ	ŒŒðUà
��S�Œ/ðUð ��c�ŒN˜TÑ!ðUð
 ðUð ðUð 
ˆ#ˆy˜4ÑÐ
Ô ðUð Uð Uð Uð Uð Ur   