Ë
    g^(hÜ  ã                   óx  — d dl Z d dlZd dlmZ d dlmZ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ef      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ef      dededeeee   f   fd„Zy)é    N)ÚIterable)ÚAnyÚOptional)Úlog_export_usageÚreport_exportabilityÚmodelÚtarget_submodulesÚargs.ÚkwargsÚreturnc                 óÐ  ‡
‡— |xs i }g }i Š
| j                  «       D ��ci c]  \  }}||“Œ
 c}}Šˆ
ˆfd„}	 | j                  «       D ],  \  }}||v sŒ|j                  |j                  |d¬«      «       Œ.  | |i |¤Ž |D ]  }	|	j                  «        Œ ‰
S c c}}w # t        $ r"}t	        j
                  d|› �«       Y d}~ŒEd}~ww xY w# |D ]  }	|	j                  «        Œ w xY w)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                 ó   •— ||f‰‰|    <   y ©N© )ÚmoduleÚmodule_argsÚmodule_kwargsÚresultsÚsubmodule_to_namess      €€úQ/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/torch/_export/tools.pyÚpre_forwardz4_generate_inputs_for_submodules.<locals>.pre_forward*   s   ø€ Ø/:¸MÐ.JˆÐ" 6Ñ*Ò+ó    T)Úwith_kwargszDFailed to generate submodule inputs because of the following error:
N)Únamed_modulesÚappendÚregister_forward_pre_hookÚ	ExceptionÚwarningsÚwarnÚremove)r   r	   r
   r   ÚhandlesÚnameÚmodr   ÚeÚhr   r   s             @@r   Ú_generate_inputs_for_submodulesr&      s  ù€ ð$ Š\�r€Fà€GØ€GØ5:×5HÑ5HÓ5J×K©	¨¨c˜#˜t™)ÓKÐõKðØ×,Ñ,Ó.ò 	‰IˆD�#ØÐ(Ò(Ø—‘Ø×1Ñ1°+È4Ð1ÓPõð	ñ
 	ˆtÐ�vÒð ò 	ˆAØ�H‰H�Jð	à€Nùó' Løô ò 
Ü�‰ØSÐTUÐSVÐW÷	
ñ 	
ûð
ûð
 ò 	ˆAØ�H‰H�Jñ	ús4    B¸B Á,B Â	C	Â'CÂ?C ÃC	Ã	C ÃC%TF©ÚstrictÚpre_dispatchr#   r(   r)   c                ó  ‡‡‡‡‡‡— t        d¬«       |xs i }| j                  «       D ��cg c]  \  }}|dk7  sŒ|‘Œ }}}t        | |||«      Št        «       Ši Šˆˆˆˆˆˆfd„Š ‰| d||«       t        «       }‰j	                  «       D ]3  }	|	€Œt        |	«      j                  d«      d   }
|j                  |
«       Œ5 t        j                  dt        |«      «       |D ]  }t        j                  |«       Œ ‰S c c}}w )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)ÚeventÚ c                 ó  •— t        | «      ‰v ry ‰j                  t        | «      «       |€|�K	 t        j                  j                  j                  | ||‰‰¬«       d ‰|<   t        j                  d|«       y | j                  «       D ]3  \  }}|dk(  r|n|› d|› �}‰j                  |d«      \  }	}
 ‰|||	|
«       Œ5 y # t        $ rC}t        |«      j                  d«      d   }t        j                  d||«       |‰|<   Y d }~ŒŽd }~ww xY w)	Nr'   zSuccessfully exported `%s`ú
r   z(Failed exporting `%s` with exception: %sr,   ú.)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   rF   z(report_exportability.<locals>.try_exportb   s1  ø€ ô �‹<Ð-Ñ-ØØ×Ñœt F›|Ô,àÐ˜vÐ1ð(Ü—‘×#Ñ#×+Ñ+ØØØØ!Ø!-ð ,ô ð '+��{Ñ#Ü—‘Ð5°{ÔCØð #×1Ñ1Ó3ò 	L‰LˆD�&Ø&1°RÒ&7™dÀ¸}ÈAÈdÈVÐ=TˆOà)6×):Ñ):Ø ó*Ñ&ˆK˜ñ �v˜°¸]ÕKð	Lð 	øô! ò (Ü  ›GŸM™M¨$Ó/°Ñ2�	Ü—‘Ø>ÀÈYôð '(��{Ö#ûð(ús   ¯A	C  Ã 	DÃ	9DÄDz\nr   zFound %d export issues:)r   r   r&   ÚsetÚvaluesr8   r9   r1   r6   r:   Úlen)r#   r
   r   r(   r)   r"   Ú_Úall_submod_namesÚunique_issuesÚ	exceptionÚkeyÚissuerC   rD   rE   rF   s      ``       @@@@r   r   r   >   s   ý€ ô4 Ð8Õ9àŠ\�r€Fà,/×,=Ñ,=Ó,?×N¡  qÀ4È2Ã:šÐNÐÑNÜ3°CÐ9IÈ4ÐQWÓX€Mä›ÐØ-/€F÷#ñ #ñJ ˆs�B˜˜fÔ%ä“E€MØ—]‘]“_ò #ˆ	ØÑ Ü�y“/×'Ñ'¨Ó.¨qÑ1ˆCØ×Ñ˜cÕ"ð#ô
 ‡K�KÐ)¬3¨}Ó+=Ô>Øò ˆÜ�‰�EÕðð €Mùóo Os
   ¬C=ºC=r   )Úloggingr   Úcollections.abcr   Útypingr   r   r2   Útorch.exportÚtorch.export._traceÚtorch._utils_internalr   Ú	getLoggerÚ__name__r6   Ú__all__ÚnnÚModuleÚstrÚtupleÚdictr&   Úboolr   r   r   r   r   ú<module>r_      s(  ðã Û Ý $ß  ã Û Û Ý 2ð €g×Ñ˜Ó!€à!Ð
"€ð (,ñ	)Ø�8‰8�?‰?ð)à ‘}ð)ð ��S�‰/ð)ð �T˜#˜s˜(‘^Ñ$ð	)ð
 
ˆ#ˆu�S˜#�X‰Ð
Ñó)ð^ (,ðUð
 ØòUØ	�‰�‰ðUà
��S�‰/ðUð �T˜#˜s˜(‘^Ñ$ðUð
 ðUð ðUð 
ˆ#ˆx˜	Ñ"Ð
"Ñ#ôUr   