
    IЦi                        S SK r S SKrS SKJrJrJrJrJrJr  S SK	J
r
  S SKrS SKJs  Jr   S SKr\(       a  \
" S\S9S\4S j5       rOS\4S jrS	\S
\4   S\S
\4   4S jrS\S
\\R.                     4   S\S\S\R.                  4S jrS\S
\4   S\S
\4   4S jr " S S5      rS\R6                  R8                  R:                  S\\R.                     S\S\\R.                  \\R.                  S
4   4   4S jrS\R.                  S\ 4S jr! " S S5      r"S\S\S\#S\S\4
S jr$S\S\S\S\S \#S!\#S\4S" jr%g! \ a    Sr GNf = f)#    N)AnyCallableListOptionalTYPE_CHECKINGUnion)
deprecatedze`torch._dynamo.external_utils.is_compiling` is deprecated. Use `torch.compiler.is_compiling` instead.)categoryreturnc                  >    [         R                  R                  5       $ Ntorchcompileris_compiling     [/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/torch/_dynamo/external_utils.pyr   r      s    
 ~~**,,r   c                  >    [         R                  R                  5       $ )zT
Indicates whether we are tracing/compiling with torch.compile() or torch.export().
r   r   r   r   r   r      s     ~~**,,r   fn.c                 n   ^  [         R                  " T 5      S[        S[        S[        4U 4S jj5       nU$ )z;
Create an extra frame around fn that is not in skipfiles.
argskwargsr   c                     > T" U 0 UD6$ r   r   )r   r   r   s     r   innerwrap_inline.<locals>.inner+   s    4"6""r   )	functoolswrapsr   )r   r   s   ` r   wrap_inliner   &   s<    
 __R#S #C #C # # Lr   hookr   r   c                 `    U " U6 nUc  US   $ UR                  S5      S:X  a  [        S5      eU$ )z:
Used by compiled autograd to handle hook returning None.
r   	hook_typepost_acc_grad_hookz5Tensor post accumulate grad hooks should return None.)getRuntimeError)r    r   r   results       r   	call_hookr'   2   s>     4[F~Aw	K	 $8	8RSSMr   fc                    ^  [         (       d  T $ [        R                  " T 5      S[        S[        S[        4U 4S jj5       nU$ )zDecorator that turns a function from ``np.ndarray``s to ``np.ndarray``s into a function
from ``torch.Tensor``s to ``torch.Tensor``s.
r   r   r   c                     > [         R                  " [        R                  S X45      u  pT" U 0 UD6n[         R                  " [        R
                  S U5      $ )Nc                 "    U R                  5       $ r   )numpyxs    r   <lambda>*wrap_numpy.<locals>.wrap.<locals>.<lambda>J   s
    AGGIr   c                 .    [         R                  " U 5      $ r   )r   	as_tensorr-   s    r   r/   r0   M   s    %//!:Lr   )pytreetree_map_onlyr   Tensornpndarray)r   r   outr(   s      r   wrapwrap_numpy.<locals>.wrapG   sN    ++LL-~
   ##BJJ0LcRRr   )r6   r   r   r   )r(   r9   s   ` r   
wrap_numpyr;   @   sK     2__QSC S3 S3 S S Kr   c                       \ rS rSrS\R
                  R                  R                  S\\R                     SS4S jr
S\S\4S jrS	rg)
FakeBackwardCFunctionR   realsaved_tensorsr   Nc                     Xl         X l        g r   r?   r@   )selfr?   r@   s      r   __init__FakeBackwardCFunction.__init__S   s    
 	*r   namec                     US:X  a'  [         R                  " S[        5        U R                  $ [	        U R
                  U5      $ )Nsaved_variablesz4'saved_variables' is deprecated; use 'saved_tensors')warningswarnDeprecationWarningr@   getattrr?   )rC   rF   s     r   __getattr__!FakeBackwardCFunction.__getattr__[   s<    $$MMF" %%%tyy$''r   rB   )__name__
__module____qualname____firstlineno__r   autogradfunctionBackwardCFunctionr   r5   rD   strr   rM   __static_attributes__r   r   r   r=   r=   R   sO    +nn%%77+ ELL)+ 
	+( ( (r   r=   backward_c_functionr@   c                     [        X5      nUR                  R                  " U/UQ76 n[        U[        5      (       d  U4nU$ r   )r=   _forward_clsbackward
isinstancetuple)rX   r@   r   fakegradss        r   call_backwardr`   f   sC    
 !!4DD&&t3d3EeU##Lr   r.   c                 >    U R                  5       R                  5       $ r   )untyped_storagesizer-   s    r   untyped_storage_sizerd   t   s    ##%%r   c                       \ rS rSr\S\\/ S4      S\/ S4   SS4S j5       r\S\\/ S4      SS4S j5       r\S
S j5       r	S	r
g)FakeCompiledAutogradEnginex   final_callbacksNcbr   c                 &    U R                  U5        g r   )append)rh   ri   s     r   queue_callback)FakeCompiledAutogradEngine.queue_callbacky   s     	r"r   c                     SnU[        U 5      :  a!  X   nU" 5         US-  nU[        U 5      :  a  M!  U R                  5         g )Nr      )lenclear)rh   iri   s      r   exec_final_callbacks/FakeCompiledAutogradEngine.exec_final_callbacks   sG    #o&& #BDFA #o&& 	r   c                      g r   r   r   r   r   _exec_final_callbacks_stub5FakeCompiledAutogradEngine._exec_final_callbacks_stub   s    r   r   )r   N)rO   rP   rQ   rR   staticmethodr   r   rl   rs   rv   rW   r   r   r   rf   rf   x   s    #hr4x01#7?D7I#	# #
  d8BH3E.F  4      r   rf   bw_state	hook_namec                 $    [        X5      " U0 UD6$ r   rL   )ry   rz   r   r   s       r   call_hook_from_backward_stater}      s     8'888r   _r&   
hooks_namemodule_namec                d    [        X$5      n[        X#5      nU H  nU" Xa/UQ76 n	U	c  M  U	nM     U$ r   r|   )
r~   r&   ry   r   r   r   modulehooksr    
new_results
             r   %call_module_hooks_from_backward_stater      sC     X+FH)E&040
!F  Mr   )&r   rI   typingr   r   r   r   r   r   typing_extensionsr	   r   torch.utils._pytreeutils_pytreer3   r,   r6   ModuleNotFoundErrorFutureWarningboolr   r   r5   r'   r;   r=   rS   rT   rU   r]   r`   intrd   rf   rV   r}   r   r   r   r   <module>r      s     F F (  $ $  o-$ -	-
-$ -	HS#X& 	8CH+= 	
3..
/8;GJ
\\(38$ #s(); $( ((00BB%  5<<u||S0112	&ELL &S & *999*-99<99	
		 #	/2	@C	RU		K  	Bs   E   EE