
    IЦi                        S SK r S SKrS SKJrJrJrJrJr  S SKrS SK	rS SK
rS SKJr  \ R                  " \5      rS/r SS\R"                  R$                  S\\   S\\S4   S	\\\\4      S
\\\\\4   4   4
S jjr SSSS.S\R"                  R$                  S\\S4   S	\\\\4      S\S\S
\\\\   4   4S jjjrg)    N)AnyDictIterableOptionalTuple)log_export_usagereport_exportabilitymodeltarget_submodulesargs.kwargsreturnc                   ^
^ U=(       d    0 n/ n0 m
U R                  5        VVs0 s H  u  pVXe_M	     snnmU
U4S jn U R                  5        H+  u  pVXQ;   d  M  UR                  UR                  USS95        M-     U " U0 UD6  U H  n	U	R                  5         M     T
$ s  snnf ! [         a#  n[        R
                  " SU 35         SnANISnAff = f! U H  n	U	R                  5         M     f = f)aZ  
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                    > X4TTU    '   g N )modulemodule_argsmodule_kwargsresultssubmodule_to_namess      R/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/torch/_export/tools.pypre_forward4_generate_inputs_for_submodules.<locals>.pre_forward)   s    /:.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    $ \rFGG5:5H5H5JK5J	#)5JKK,,.ID(11+41P /
 	tv AHHJ N' L  
STUSVW	
 	


 AHHJ s4   B!B' +B' '
C1C
C CC C2TFstrictpre_dispatchr&   r+   r,   c                  ^^^^^^ [        SS9  U=(       d    0 nU R                  5        VVs/ s H  u  pVUS:w  d  M  UPM     nnn[        XX5      m[        5       m0 mUUUUUU4S jmT" U SX5        [        5       nTR	                  5        H6  n	U	c  M  [        U	5      R                  S5      S   n
UR                  U
5        M8     [        R                  S[        U5      5        U H  n[        R                  U5        M     T$ s  snnf )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                   > [        U 5      T;   a  g TR                  [        U 5      5        Uc  UbH   [        R                  R                  R                  U UUTTS9  S TU'   [        R                  SU5        g U R                  5        H1  u  pgUS:X  a  UOU SU 3nTR                  US5      u  pT" XxX5        M3     g ! [         aB  n[        U5      R                  S5      S   n[        R                  SX5        UTU'    S nANS nAff = f)	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   rI   (report_exportability.<locals>.try_exporta   s     <--tF|,v1(##++!!- ,  '+{#5{C #113LD&1R&7d}AdV=TO)6):):*&K vK 4 	!  ( GMM$/2	> '({#(s   AC   
D
8DDz\nr   zFound %d export issues:)r   r   r)   setvaluesr;   r<   r4   r9   r=   len)r&   r   r   r+   r,   r%   _all_submod_namesunique_issues	exceptionkeyissuerF   rG   rH   rI   s      ``       @@@@r   r	   r	   =   s    4 89\rF,/,=,=,?N,?42:,?N3C4XM-/F# #J sB%EM]]_	 y/''.q1Cc" %
 KK)3}+=>E  Mo Os
   DDr   )loggingr!   typingr   r   r   r   r   r5   torch.exporttorch.export._tracetorch._utils_internalr   	getLogger__name__r9   __all__nnModulestrr)   boolr    r	   r   r   r   <module>r`      s&     7 7    2 !!
" (,	)88??)}) S/) T#s(^$	)
 
#uS#X
)^ (,U
 U	U
S/U T#s(^$U
 U U 
#x	"
"#Ur   