
    [Thd                         S SK r S SKrS SKrS SKJrJrJrJrJr  S SK	J
r
  SSKJr  SSKJr  SSKJr   " S	 S
5      r\ " S S\5      5       r " S S5      rS\S\\\\/\4   4S jrSS jr\" 5         g)    N)AnyCallablefinalOptionalUnion)Self   )is_function_or_wrapper   )VariableTracker)SymNodeVariablec                   8    \ rS rSrSrS\S\SS4S jrS
S jrS	rg)	LazyCache   z+Container to cache the real VariableTrackervaluesourcereturnNc                 f    [        U[        5      (       d	  U(       d   eXl        X l        S U l        g N)
isinstanceLazySymNodeFormatStringr   r   vt)selfr   r   s      T/var/www/auris/envauris/lib/python3.13/site-packages/torch/_dynamo/variables/lazy.py__init__LazyCache.__init__   s(    %!899M6
-1    c                     U R                   b   eSSKJn  UR                  5       n[	        U R
                  [        5      (       a  S nOU R                  n[        R                  " X R
                  U5      U l         U ?U ?g )Nr	   )InstructionTranslator)
r   symbolic_convertr   
current_txr   r   r   r   r   build)r   r   txr   s       r   realizeLazyCache.realize   sc    ww<"--/djj"9::F[[F!''JJ?JKr   )r   r   r   r   N)	__name__
__module____qualname____firstlineno____doc__r   r   r$   __static_attributes__ r   r   r   r      s$    52c 23 24 2r   r   c                     ^  \ rS rSrSrS1\R                  kr\S\S\S\SS 4S j5       r	S\
S	\SS
4U 4S jjrS\4S jrS\\\4   4S jrS\4S jrS	\S\4S jrS\\   4S jrS\4S jrS\4U 4S jjrS\S\4S jr\R2                  r\r\ SS\S\\\\\\4   4      S\4S jj5       r S\4S jr!S\4S jr"S\4S jr#Sr$U =r%$ )LazyVariableTracker&   a  
A structure that defers the creation of the actual VariableTracker
for a given underlying value until it is accessed.

The `realize` function invokes VariableTracker.build() to produce the real object.
Once a LazyVariableTracker has been realized, internal bookkeeping will
prevent double realization.

This object should be utilized for processing containers, or objects that
reference other objects where we may not want to take on creating all the
VariableTrackers right away.
_cacher   r   optionsr   c                 0    [        [        X5      4SU0UD6$ )Nr   )r/   r   )r   r   r2   s      r   createLazyVariableTracker.create7   s    "9U#;VFVgVVr   kwargsNc                 `   > [        U[        5      (       d   e[        TU ]  " S0 UD6  Xl        g )Nr-   )r   r   superr   r1   )r   r1   r6   	__class__s      r   r   LazyVariableTracker.__init__;   s+    &),,,,"6"r   c                     U R                   R                  c3  U R                   R                  5         U R                   R                  c   eU R                   R                  $ )z.Force construction of the real VariableTracker)r1   r   r$   r   s    r   r$   LazyVariableTracker.realize@   sB    ;;>>!KK!;;>>---{{~~r   c                     U R                  5       (       a/  U R                  R                  c   eU R                  R                  $ U $ )z4Return the real VariableTracker if it already exists)is_realizedr1   r   r<   s    r   unwrapLazyVariableTracker.unwrapG   s8    ;;>>---;;>>!r   c                 2    U R                   R                  S L$ r   )r1   r   r<   s    r   r?   LazyVariableTracker.is_realizedN   s    {{~~T))r   c                    UR                  SU R                  5      U R                  L d   eUR                  SU R                  5      U R                  La  U R                  5         [        R
                  " U R                  5       40 UD6$ )Nr1   r   )getr1   r   r$   r   cloner@   )r   r6   s     r   rF   LazyVariableTracker.cloneQ   sc    zz(DKK0DKK???::h,DKK?LLN$$T[[]=f==r   c                 n    U R                  5       (       a   e[        U R                  R                  5      $ r   )r?   typer1   r   r<   s    r   	peek_typeLazyVariableTracker.peek_typeW   s,    ##%%%%DKK%%&&r   c                 \    U R                  5       (       a   eU R                  R                  $ r   r?   r1   r   r<   s    r   
peek_valueLazyVariableTracker.peek_value[   s'    ##%%%%{{   r   c                 |   > U R                  5       (       a  [        U R                  5       5      $ [        TU ]  5       $ r   )r?   reprr@   r8   __repr__)r   r9   s    r   __str__LazyVariableTracker.__str___   s1    &&w!!r   itemc                 6    [        U R                  5       U5      $ r   getattrr$   )r   rU   s     r   __getattr__LazyVariableTracker.__getattr__d   s    t||~t,,r   cachec           	        ^ ^ Tc  0 m[        U5      nUT;   a  TU   S   $ [        U5      n[        U[        5      (       a!  T R	                  UR                  5       T5      nO[        U[        5      (       aA  UnUR                  nUR                  nU H   nX;  d  M
  T R	                  Xh   T5      Xh'   M"     OU[        L a#  U V	s/ s H  n	T R	                  U	T5      PM     nn	O{U[        L a  [        UU 4S jU 5       5      nO[U[        [        R                  4;   a?  [        UR                  5       5       V
V	s0 s H  u  pU
T R	                  U	T5      _M     nn
n	OUnXQ4TU'   U$ s  sn	f s  sn	n
f )z@
Walk an object and realize all LazyVariableTrackers inside it.
r   c              3   H   >#    U  H  nTR                  UT5      v   M     g 7fr   )realize_all).0vr[   clss     r   	<genexpr>2LazyVariableTracker.realize_all.<locals>.<genexpr>   s     De3??1e44es   ")idrI   
issubclassr/   r^   r$   r   __dict___nonvar_fieldslisttupledictcollectionsOrderedDictitems)ra   r   r[   idx	value_clsresult
value_dictnonvarskeyr`   ks   ` `        r   r^   LazyVariableTracker.realize_allk   sR    =Ei%<:a= K	i!455__U]]_e<F	?33FJ**G!%&)oojou&MJO " $9>?Acooa/F?F%DeDDF4!8!899?CEKKM?RS?RtqaE22?RFSFF _c
 @ Ts   E':E,c                    ^ S[         S[        4S jmU R                  5       (       a   eU R                  R                  n[        U[        5      (       a  [        U4S jU 5       5      $ T" U5      $ )Nr   r   c                     [         R                  " U 5      =(       d+    [        [        U 5      [        5      =(       d    [	        U 5      $ r   )inspect	isbuiltinre   rI   r
   )r   s    r   _helper0LazyVariableTracker.is_hashable.<locals>._helper   s7     !!%( 1d5k401)%0r   c              3   4   >#    U  H  nT" U5      v   M     g 7fr   r-   )r_   r`   rz   s     r   rb   2LazyVariableTracker.is_hashable.<locals>.<genexpr>   s     15awqzz5s   )r   boolr?   r1   r   r   ri   all)r   r   rz   s     @r   is_hashableLazyVariableTracker.is_hashable   sd    	3 	4 	 ##%%%%!!eU##15111u~r   c                 \    U R                  5       (       a   eU R                  R                  $ r   rM   r<   s    r   original_value"LazyVariableTracker.original_value   s'    ##%%%%{{   r   c                 \    U R                  5       (       a   eU R                  R                  $ r   )r?   r1   r   r<   s    r   original_source#LazyVariableTracker.original_source   s'    ##%%%%{{!!!r   )r1   r   )&r'   r(   r)   r*   r+   r   rg   staticmethodr   r4   r   r   r$   r   r   r@   r~   r?   rF   rI   rJ   rN   strrS   rY   visitrR   classmethodr   rj   intri   r^   r   r   r   r,   __classcell__)r9   s   @r   r/   r/   &   sn    @!?!?@NWc W3 W3 W;P W Wy C D 
 ot34 *T *>c >o >'49 '!C !" "
- - - !!EH 7;%% S%S/123% 
	% %NT $! !
" " "r   r/   c                   8    \ rS rSrS\S\SS4S jrS\4S jrSr	g)	r      sym_node_variablefmt_spec_varr   Nc                 p    SSK Jn  Xl        UR                  SUR	                  5       -   S-   5      U l        g )Nr   )ConstantVariablez{:})constantr   sym_node_varr4   as_python_constantfmt_var)r   r   r   r   s       r   r    LazySymNodeFormatString.__init__   s5     	/-'..<2244s:
r   c                     [         R                  U R                  R                  5       [        U R                  R                  5       5      5      $ r   )r   formatr   r   r   evaluate_exprr<   s    r   rR    LazySymNodeFormatString.__repr__   s:    zzLL++-!!//12
 	
r   )r   r   )
r'   r(   r)   r*   r   r   r   r   rR   r,   r-   r   r   r   r      s+    
!0
@O
	

# 
r   r   namer   c           	         ^  [         R                  " [        [        T 5      5      S[        S[
        S[
        S[
        4U 4S jj5       nU$ )Nr   argsr6   r   c                 D   > [        U R                  5       T5      " U0 UD6$ r   rW   )r   r   r6   r   s      r   realize_and_forward8_create_realize_and_forward.<locals>.realize_and_forward   s"     t||~t,d=f==r   )	functoolswrapsrX   r   r/   r   )r   r   s   ` r   _create_realize_and_forwardr      sO     __W_d34>!>*->9<>	> 5>
 r   c                      [         R                  R                  5        HG  u  pU [        R                  ;  d  M  [	        U5      (       d  M-  [        [        U [        U 5      5        MI     g r   )r   rf   rm   r/   callablesetattrr   )r   r   s     r   	_populater      sH    &//557*333+T3Nt3TU 8r   r&   )rk   r   rx   typingr   r   r   r   r   typing_extensionsr   utilsr
   baser   tensorr   r   r/   r   r   r   r   r-   r   r   <module>r      s       8 8 " * ! # 4 F"/ F" F"R
 
$	
	"C-s23	V 
r   