
    i                        S SK r S SKrS SKrS SKJr  S SKJrJrJrJ	r	J
r
JrJr  S SKr\S\S   4S j5       rS\\   S\\\4   4S jr\" S	5      rS
\R$                  R&                  S\\\4   S\\
\\4   \\
\\4      4   4S jrS
\R$                  R&                  S\4S jr\\ R,                  SS4S\S\S\	\   S\S   4S jj5       r\SS\S\S   4S jj5       rg)    N)contextmanager)Dict	GeneratorListOptionalTupleTypeVarUnionreturn)NNNc               #   `   #    [         R                  R                  5       n  S v   A g ! A f = f7f)N)torch_C_DisableTorchDispatch)guards    U/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/executorch/exir/common.pyno_dispatchr      s%     HH**,EEs   .( .+.opsc                    0 n[         R                  " S5      n/ nU  H*  nUR                  [         R                  " USU5      5        M,     [        R
                  R                  5       n0 nU HD  nUR                  nUR                  S:w  a  US-   UR                  -   nOUS-   n[        U5      Xh'   MF     U H  nSX'   XF;   d  M  Xd   X'   M     U$ )aG  
Accept a list of operator names fetched from the Graph Module (these are of
the form torch.ops.aten.cat.default, and return a dict of operator name (in
the form namespace::op_name.overload_name) to operator schema string.

Note: This method should only be used for debugging errors in export, and
not in a production context.
z^torch.ops.([^\.]+)\.(.*)z\1::\2 .z.defaultz<No Schema Found>)
recompileappendsubr   r   _jit_get_all_schemasnameoverload_namestr)	r   dpataten_opsopall_schemasschema_dictsns	            r   get_schema_for_operatorsr'      s     	A
**1
2CHsIr23  ((//1KKFF??b C!//)AJAQ  #OAE 
 H    Tschemakeyword_argsc                 $   / nU R                    H>  nUR                  nUR                  (       d  M"  XA;   d  M)  UR                  XAU   45        M@     [	        U5      S:X  a  SU;   a  UR                  SUS   45        [	        U5      S:X  a  US   $ U$ )Nr   out   )	argumentsr   is_outr   len)r*   r+   out_argsargr   s        r   extract_out_argumentsr4   @   s    
 Hxx:::$.OOT#567   8}L OOUL$789
8}{Or(   c                 r    U R                   S:w  a  U R                  S-   U R                   -   $ U R                  $ )Nr   r   )r   r   )r*   s    r   format_schema_namer6   X   s4    r!{{S 6#7#777;;r(   z%(message)snewLevelfmtstrfilenamec              #     #     [         R                  R                  n[         R                  R                  U 5        U(       a\  [         R                  " USS5      n/ n[         R                  R
                   H$  nUR                  UR                  5        XFl        M&     SnU(       a4  [         R                  " USS9n[         R                  R                  U5        Sv   [         R                  R                  U5        U(       a3  [        [         R                  R
                  W5       H  u  phXl        M     U(       a   [         R                  R                  U5        gg! [         R                  R                  W5        U(       a3  [        [         R                  R
                  W5       H  u  phXl        M     W(       a   [         R                  R                  U5        f f = f7f)zf
If an nonempty filename string is provided, the log wil also be written to
that file besides stderr.
N%w)mode)loggingrootlevelsetLevel	Formatterhandlersr   	formatterFileHandler
addHandlerzipremoveHandler)	r7   r8   r9   oldLevelnewformatteroldFormattershandlerfilehandlerrD   s	            r   override_loggerrN   ^   sQ    4<<%%h'",,VT3?LM"<<00$$W%6%67$0! 1 !--hSAKLL##K0h'&)',,*?*?&O"$-! 'PLL&&{3  	h'&)',,*?*?&O"$-! 'PLL&&{3 s   G'CE" !BG'"BG$$G'limitc              #      #    [         R                  " 5       nX:  a  [         R                  " U 5         Sv   [         R                  " U5        g! [         R                  " U5        f = f7f)zz
Temporarily increase the python interpreter stack recursion limit.
This is mostly used for pickling large scale modules.
N)sysgetrecursionlimitsetrecursionlimit)rO   defaults     r   setting_python_recursive_limitrU      sL      ##%Ge$'g&g&s   1A*A A*A''A*)i'  )r>   r   rQ   
contextlibr   typingr   r   r   r   r   r	   r
   r   r   r   r'   r)   r   FunctionSchemar4   r6   DEBUGintrN   rU    r(   r   <module>r\      sN    	 
 % I I I  Y/0   $s)  S#X  F CLHH##37Q<
5a=$uS!V}--.0uxx66 3  MM"444 sm4  	4 4B '# ')DT:U ' 'r(   