
    %Vji                        d dl Z d dlZd dlZd dlmZmZmZmZmZ d dl	m
Z
 ddlmZ ddlmZ ddlmZ  G d	 d
          Ze G d de                      Z G d d          Zdedeeeegef         fdZddZ e             dS )    N)AnyCallablefinalOptionalUnion)Self   )is_function_or_wrapper   )VariableTracker)SymNodeVariablec                   .    e Zd ZdZdededdfdZddZdS )		LazyCachez+Container to cache the real VariableTrackervaluesourcereturnNc                 p    t          |t                    s|sJ || _        || _        d | _        d | _        d S N)
isinstanceLazySymNodeFormatStringr   r   	name_hintvt)selfr   r   s      V/root/voice-cloning/.venv/lib/python3.11/site-packages/torch/_dynamo/variables/lazy.py__init__zLazyCache.__init__   s>    %!899 	MM6
(,-1    c                    | j         J ddlm} ddlm} |                                }t          | j        t                    r&|j	        
                    || j                  | _         n. |                    || j                  | j                  | _         | j        | j                             | j                   | `| `| `d S )Nr	   )InstructionTranslatorr   )builder)r   symbolic_convertr    r   
current_txr   r   r   SourcelessBuildercreateVariableBuilderr   r   set_name_hint)r   r   r   txs       r   realizezLazyCache.realize   s    w<<<<<<"--//dj"9:: 	K/66r4:FFDGG>g--b$+>>tzJJDG>%G!!$.111JKNNNr   r   N)__name__
__module____qualname____doc__r   r   r(    r   r   r   r      sW        552c 23 24 2 2 2 2     r   r   c                       e Zd ZdZdhej        Zededededd fd            Zde	dedd	f fd
Z
defdZdeeef         fdZdefdZdedefdZdee         fdZdefdZdedd	fdZdef fdZdedefdZej        ZeZe	 ddedeeeeeef         f                  defd            Z defdZ!defdZ"defdZ# xZ$S )LazyVariableTrackera  
    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                 <    t          t          | |          fd|i|S )Nr   )r0   r   )r   r   r2   s      r   r$   zLazyVariableTracker.create<   s'    "9UF#;#;VVFVgVVVr   kwargsNc                 v    t          |t                    sJ  t                      j        di | || _        d S )Nr.   )r   r   superr   r1   )r   r1   r4   	__class__s      r   r   zLazyVariableTracker.__init__@   sA    &),,,,,""6"""r   c                     | j         j        '| j                                          | j         j        J | j         j        S )z.Force construction of the real VariableTracker)r1   r   r(   r   s    r   r(   zLazyVariableTracker.realizeE   s:    ;>!K!!!;>---{~r   c                 b    |                                  r| j        j        J | j        j        S | S )z4Return the real VariableTracker if it already exists)is_realizedr1   r   r9   s    r   unwrapzLazyVariableTracker.unwrapL   s5     	";>---;>!r   c                     | j         j        d uS r   )r1   r   r9   s    r   r;   zLazyVariableTracker.is_realizedS   s    {~T))r   c                     |                     d| j                  | j        u sJ |                     d| j                  | j        ur|                                  t	          j        |                                 fi |S )Nr1   r   )getr1   r   r(   r   cloner<   )r   r4   s     r   r@   zLazyVariableTracker.cloneV   sp    zz(DK00DK????::h,,DK??LLNNN$T[[]]==f===r   c                 `    |                                  rJ t          | j        j                  S r   )r;   typer1   r   r9   s    r   	peek_typezLazyVariableTracker.peek_type\   s-    ##%%%%%DK%&&&r   c                 F    |                                  rJ | j        j        S r   r;   r1   r   r9   s    r   
peek_valuezLazyVariableTracker.peek_value`   s%    ##%%%%%{  r   namec                     |                                  r!| j        j                            |           d S || j        _        d S r   )r;   r1   r   r&   r   )r   rG   s     r   r&   z!LazyVariableTracker.set_name_hintd   sD     	)KN((.....$(DK!!!r   c                     |                                  r!t          |                                           S t                                                      S r   )r;   reprr<   r6   __repr__)r   r7   s    r   __str__zLazyVariableTracker.__str__j   sC     	'&&&ww!!!r   itemc                 F    t          |                                 |          S r   getattrr(   )r   rM   s     r   __getattr__zLazyVariableTracker.__getattr__o   s    t||~~t,,,r   cachec                     i t          |          }|v r|         d         S t          |          }t          |t                    r)                     |                                          }nt          |t                    r9|}|j        }|j        }|D ]%}||vr                     ||                   ||<   &n|t          u r fd|D             }nl|t          u rt           fd|D                       }nF|t          t          j        fv r/ fdt          |                                          D             }n|}||f|<   |S )zP
        Walk an object and realize all LazyVariableTrackers inside it.
        Nr   c                 <    g | ]}                     |          S r.   realize_all.0vrR   clss     r   
<listcomp>z3LazyVariableTracker.realize_all.<locals>.<listcomp>   s'    ???Acooa//???r   c              3   D   K   | ]}                     |          V  d S r   rU   rW   s     r   	<genexpr>z2LazyVariableTracker.realize_all.<locals>.<genexpr>   s1      DD3??1e44DDDDDDr   c                 D    i | ]\  }}|                     |          S r.   rU   )rX   krY   rR   rZ   s      r   
<dictcomp>z3LazyVariableTracker.realize_all.<locals>.<dictcomp>   s-    SSStq!aE22SSSr   )idrB   
issubclassr0   rV   r(   r   __dict___nonvar_fieldslisttupledictcollectionsOrderedDictitems)	rZ   r   rR   idx	value_clsresult
value_dictnonvarskeys	   ` `      r   rV   zLazyVariableTracker.realize_allv   s    =Eii%<<:a= KK	i!455 	__U]]__e<<FF	?33 	FJ*G! N Ng%%&)oojou&M&MJsON $????????FF%DDDDDeDDDDDFF4!8999SSSSStEKKMM?R?RSSSFFF e_c
r   c                     dt           dt          fd|                                 rJ | j        j        }t          |t                    rt          fd|D                       S  |          S )Nr   r   c                     t          j        |           p0t          t          |           t                    pt	          |           S r   )inspect	isbuiltinrb   rB   r
   )r   s    r   _helperz0LazyVariableTracker.is_hashable.<locals>._helper   s?     !%(( 1d5kk4001)%00r   c              3   .   K   | ]} |          V  d S r   r.   )rX   rY   ru   s     r   r]   z2LazyVariableTracker.is_hashable.<locals>.<genexpr>   s+      11awwqzz111111r   )r   boolr;   r1   r   r   rf   all)r   r   ru   s     @r   is_hashablezLazyVariableTracker.is_hashable   s    	3 	4 	 	 	 	 ##%%%%%!eU## 	211115111111wu~~r   c                 F    |                                  rJ | j        j        S r   rE   r9   s    r   original_valuez"LazyVariableTracker.original_value   s%    ##%%%%%{  r   c                 F    |                                  rJ | j        j        S r   )r;   r1   r   r9   s    r   original_sourcez#LazyVariableTracker.original_source   s%    ##%%%%%{!!r   r   )%r*   r+   r,   r-   r   rd   staticmethodr   r$   r   r   r(   r   r   r<   rw   r;   r@   rB   rC   rF   strr&   rL   rQ   visitrK   classmethodr   rg   intrf   rV   ry   r{   r}   __classcell__)r7   s   @r   r0   r0   +   s         @!?@NWc W3 W3 W;P W W 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   r0   c                   .    e Zd ZdededdfdZdefdZdS )r   sym_node_variablefmt_spec_varr   Nc                     ddl m} || _        |                    d|                                z   dz             | _        d S )Nr   )ConstantVariablez{:})constantr   sym_node_varr$   as_python_constantfmt_var)r   r   r   r   s       r   r   z LazySymNodeFormatString.__init__   sR     	/.....-'..<22444s:
 
r   c                     t                               | j                                        t          | j                                                            S r   )r   formatr   r   r   evaluate_exprr9   s    r   rK   z LazySymNodeFormatString.__repr__   sC    zzL++--!//1122
 
 	
r   )r*   r+   r,   r   r   r   r   rK   r.   r   r   r   r      s[        
!0
@O
	
 
 
 

# 
 
 
 
 
 
r   r   rG   r   c           	           t          j        t          t                               dt          dt
          dt
          dt
          f fd            }|S )Nr   argsr4   r   c                 T     t          |                                           |i |S r   rO   )r   r   r4   rG   s      r   realize_and_forwardz8_create_realize_and_forward.<locals>.realize_and_forward   s,     -wt||~~t,,d=f===r   )	functoolswrapsrP   r   r0   r   )rG   r   s   ` r   _create_realize_and_forwardr      sj     _W_d3344>!>*->9<>	> > > > > 54>
 r   c                      t           j                                        D ]E\  } }| t          j        vr2t	          |          r#t          t          | t          |                      Fd S r   )r   rc   rj   r0   callablesetattrr   )rG   r   s     r   	_populater      sm    &/5577 V Ve*333 V+T3Nt3T3TUUUV Vr   r)   )rh   r   rs   typingr   r   r   r   r   typing_extensionsr   utilsr
   baser   tensorr   r   r0   r   r   r   r   r.   r   r   <module>r      s            8 8 8 8 8 8 8 8 8 8 8 8 8 8 " " " " " " * * * * * * ! ! ! ! ! ! # # # # # #       > L" L" L" L" L"/ L" L" L"^
 
 
 
 
 
 
 
$	
	"C-s23	 	 	 	V V V V 
	r   