
    קg                     n   d dl Z d dlZd dlZd dlZd dlZd dlmZmZmZm	Z	 d dl
mZ ddlmZmZ ddlmZmZ ddlmZ ddlmZmZ dd	lmZmZ dd
lmZmZ ddlmZmZm Z m!Z! ddl"m#Z#m$Z$ ddl%m&Z& e	rd dl'm(Z( d Z) G d de$          Z* G d de*          Z+ G d de*          Z, G d de,          Z- G d de$          Z. G d de.          Z/ G d de.          Z0de1fd Z2de1fd!Z3d"d#d$e4dd%fd&Z5 G d' d(e*          Z6 ej7        d          d)             Z8 G d* d+e$          Z9 G d, d-e$          Z:dS ).    N)DictListOptionalTYPE_CHECKING)is_fake   )	polyfills	variables)create_call_functioncreate_instruction)	skip_code)raise_observed_exceptionunimplemented)GuardBuilderinstall_guard)
AttrSourceGetItemSource)	dict_keysdict_valuesistypespecialize_symnode   )MutableLocalVariableTracker)ConstantVariable)InstructionTranslatorc                 t   t          | t          j                  r3|                                 j        j                            d          d uS t          | t          j                  rt          d | j	        D                       S t          | t          j
        t          j        t          j        t          j        t          j        j        t          j        t          j        t          j        j        t          j        t          j        t          j        t          j        t          j        t          j        f          S )Nexample_valuec              3   4   K   | ]}t          |          V  d S N)is_hashable).0es     Y/var/www/html/ai-engine/env/lib/python3.11/site-packages/torch/_dynamo/variables/dicts.py	<genexpr>zis_hashable.<locals>.<genexpr>'   s(      33a;q>>333333    )
isinstancer
   TensorVariableas_proxynodemetagetTupleVariableallitemsBuiltinVariableSymNodeVariabler   EnumVariableuser_definedUserDefinedClassVariableUserFunctionVariableSkipFunctionVariablemiscNumpyVariableNNModuleVariableUnspecializedNNModuleVariableMethodWrapperVariableTorchInGraphFunctionVariableTypingVariableFunctoolsPartialVariablexs    r$   r!   r!       s    !Y-.. 
 zz|| %))/::$FF	Ay.	/	/ 
3317333333))*&&?..,*7/6(2
 
 	
r&   c                        e Zd Zdhej        Z G d d          Zefdeeef         ddf fdZd Z	d	 Z
d
 Zd Zd ZdefdZd Zd ZdddefdZdddefdZdefdZ	 	 	 	 	 	 d fdZd Zd Z xZS )ConstDictVariableuser_clsc                   \    e Zd ZdZd
dZed             Zd Zed             Z	dd de
fd	ZdS )"ConstDictVariable._HashableTrackeraB  
        Auxiliary opaque internal class that wraps a VariableTracker and makes it hashable
        This should not be seen or touched by anything outside of ConstDictVariable and its children
        Note that it's also fine to put VTs into dictionaries and sets, but doing so does not take into account aliasing
        returnNc                     t          |          }t          |          s"t          dt          |           d|            || _        d S )NzDict key of type z. Key: )r   r!   r   typevt)selfrI   s     r$   __init__z+ConstDictVariable._HashableTracker.__init__K   sP    #B''B r?? IG$r((GG2GGHHHDGGGr&   c                    t          | j        t          j                  r*| j                                        j        j        d         }nt          | j        t          j                  r2t          j	        t          fd| j        j        D                       }nt          | j        t          j                  r| j        j        S t          | j        t          j                  r| j        j        S t          | j        t          j                  r| j                                        S | j                                        }|S )Nr   c              3   8   K   | ]} |          j         V  d S r    )underlying_value)r"   r#   Hashables     r$   r%   zFConstDictVariable._HashableTracker.underlying_value.<locals>.<genexpr>Z   s.      NN1((1++6NNNNNNr&   )r'   rI   r
   r(   r)   r*   r+   r-   rB   _HashableTrackertupler/   r9   moduler:   valuer5   get_functionas_python_constant)rJ   r@   rO   s     @r$   rN   z3ConstDictVariable._HashableTracker.underlying_valueT   s   $'9#;<< 1G$$&&+0ADGY%<== 
1,=NNNNNNNNNDGY%?@@ 1w~%DGY%LMM 1w}$DGY%CDD 1w++---G..00Hr&   c                 *    t          | j                  S r    )hashrN   rJ   s    r$   __hash__z+ConstDictVariable._HashableTracker.__hash__e   s    -...r&   c                 N   t          |           t          |          k    rdS t          | t                    rUt          j        t          |           t          |          k    o(t          fdt          | |          D                       S t          |           r| |u S | |k    S )NFc              3   J   K   | ]\  }}                     ||          V  d S r    )_eq_impl)r"   uvrO   s      r$   r%   z>ConstDictVariable._HashableTracker._eq_impl.<locals>.<genexpr>o   sH       0 0041H%%a++0 0 0 0 0 0r&   )	rH   r'   rQ   rB   rP   lenr.   zipr   )abrO   s     @r$   r\   z+ConstDictVariable._HashableTracker._eq_implh   s     Aww$q''!!uAu%% ,=1vvQ' C 0 0 0 08;Aq		0 0 0 - -   AvAvr&   otherc                 &   t           j        }t          ||          s+t          j        |          sJ t          |                      t          ||          r |                    | j        |j                  S |                    | j        |          S r    )rB   rP   r'   r   
is_literalrH   r\   rN   )rJ   rc   rO   s      r$   __eq__z)ConstDictVariable._HashableTracker.__eq__w   s    (9HeX.. 2B2M3 3  E{{   %** X(()>@VWWW $$T%:EBBBr&   rF   N)__name__
__module____qualname____doc__rK   propertyrN   rY   staticmethodr\   boolrf    r&   r$   rP   rE   D   s        	 		 	 	 	 
	 	 
	 	/ 	/ 	/ 
	 	 
			C D 		C 		C 		C 		C 		C 		C 		Cr&   rP   r/   rF   Nc                     t                      j        di | t          j        t	          fd|                                D                       sJ fdfd|                                D             | _        || _        d S )Nc              3   v   K   | ]3\  }}t          |t          f          ot          |t                    V  4d S r    )r'   r   )r"   r@   r^   rO   s      r$   r%   z-ConstDictVariable.__init__.<locals>.<genexpr>   s^       
 
 1 q?H566 /1o..
 
 
 
 
 
r&   c                 >    t          |           r| n
 |           S r    )r'   )keyrO   s    r$   make_hashablez1ConstDictVariable.__init__.<locals>.make_hashable   s$    $S(33F33#Fr&   c                 .    i | ]\  }} |          |S ro   ro   )r"   r@   r^   rt   s      r$   
<dictcomp>z.ConstDictVariable.__init__.<locals>.<dictcomp>   s)    DDDdammA&&DDDr&   ro   )superrK   rB   rP   r.   r/   rC   )rJ   r/   rC   kwargsrO   rt   	__class__s       @@r$   rK   zConstDictVariable.__init__   s     	""6"""$5  
 
 
 
 
 
 
 
 
 	
 	
 	
	G 	G 	G 	G 	G EDDDekkmmDDD
 r&   c                 H    d | j                                          D             S )Nc                 l    i | ]1\  }}|j                                         |                                2S ro   rI   r)   r"   kr^   s      r$   rv   z.ConstDictVariable.as_proxy.<locals>.<dictcomp>   s0    MMM$!QMMMr&   r/   rX   s    r$   r)   zConstDictVariable.as_proxy   s$    MM$*:J:J:L:LMMMMr&   c                 z    dd                     d | j                                        D                       z   dz   S )N{, c              3   |   K   | ]7\  }}|j                                          d |                                 V  8dS )z: NrI   
debug_reprr}   s      r$   r%   z/ConstDictVariable.debug_repr.<locals>.<genexpr>   sY        =AQ14??$$8888     r&   })joinr/   rX   s    r$   r   zConstDictVariable.debug_repr   sT    ii  EIZEUEUEWEW     		
r&   c                 H    d | j                                          D             S )Nc                 l    i | ]1\  }}|j                                         |                                2S ro   rI   rU   r}   s      r$   rv   z8ConstDictVariable.as_python_constant.<locals>.<dictcomp>   sH     
 
 
1 D##%%q';';'='=
 
 
r&   r   rX   s    r$   rU   z$ConstDictVariable.as_python_constant   s1    
 

((**
 
 
 	
r&   c                 H    d | j                                          D             S )Nc                 H    i | ]\  }}|j                                         | S ro   r   r}   s      r$   rv   z=ConstDictVariable.keys_as_python_constant.<locals>.<dictcomp>   s,    LLLA''))1LLLr&   r   rX   s    r$   keys_as_python_constantz)ConstDictVariable.keys_as_python_constant   s$    LL9I9I9K9KLLLLr&   c                     | j         S r    )rC   rX   s    r$   python_typezConstDictVariable.python_type   s
    }r&   c                     t          |t                    sJ t          j        }t	          |          o@ ||          | j        v o.t          | j         ||                   t          j                   S r    )r'   r   rB   rP   r!   r/   r
   DeletedVariable)rJ   rI   rO   s      r$   __contains__zConstDictVariable.__contains__   sn    "o.....$5OO T
*Ttz((2,,79RSSS	
r&   c                 b    t          d | j                                        D                       S )Nc                 F    g | ]}t          |t          j                  |S ro   )r'   r
   r   r"   r@   s     r$   
<listcomp>z)ConstDictVariable.len.<locals>.<listcomp>   s;       !!Y%>??  r&   )r_   r/   valuesrX   s    r$   r_   zConstDictVariable.len   s>     **,,  
 
 	
r&   c                    | j         t          j        u r                    fd           | j                                        D ] \  }} |j                    |           !| j         t          j        u rI                    t          dt          | j                            gt          dd                     d S 
                    t          dt          | j                                       d S )Nc                                                                 t                                         d          g          S )NOrderedDict)extend_outputcreate_load_python_modulecollectionscreate_load_attrcodegens   r$   <lambda>z/ConstDictVariable.reconstruct.<locals>.<lambda>   s>    --99+FF00??  r&   	BUILD_MAPargr   F)rC   r   r   add_push_nullr/   rI   r   r   r_   r   append_output)rJ   r   rs   rS   s    `  r$   reconstructzConstDictVariable.reconstruct   s   =K333!!      ***,, 	 	JCGCFOOOGENNNN=K333!!&{DJHHH)!U33     !!"4[c$*oo"V"V"VWWWWWr&   txr   r   c                     t                               |          }|| j        vrt          t          ||            | j        |         S r    )rB   rP   r/   r   KeyErrorrJ   r   r   rs   s       r$   'getitem_const_raise_exception_if_absentz9ConstDictVariable.getitem_const_raise_exception_if_absent   sB      0055dj  $Xr4888z#r&   c                     t                               |          }|| j        vrt          d|j                    | j        |         S )Nzdict KeyError: )rB   rP   r/   r   rS   r   s       r$   getitem_constzConstDictVariable.getitem_const   sG    0055dj  7CI77888z#r&   c                 f    t                               |          }|| j        vrd S | j        |         S r    )rB   rP   r/   )rJ   r   rs   s      r$   maybe_getitem_constz%ConstDictVariable.maybe_getitem_const   s3    0055dj  4z#r&   argsList[VariableTracker]rx   Dict[str, VariableTracker]r   c           	      .   ddl m}mm}m}mm} t          j        |ot          |d                   }	|dk    r1t          |          dk    sJ |                     ||d                   S |dk    rq|s|rJ | j        r6|j        j                            | j                                                    fd| j                                        D                       S |dk    rR| j        r6|j        j                            | j                                                   |s|rJ t%          |           S |dk    rR| j        r6|j        j                            | j                                                   |s|rJ t'          |           S |d	k    r@|s|rJ |                     | j                                        t-                      
          S |dk    r(|s|rJ  j        t          | j                            S |dk    rn|	rl| j        re|st          |          dk    sJ |j        j                            |            |d         | j         |d                   <    j        d           S |dk    ra|	r_| j        rX|j        j                            |            | j                             |d                               j        d           S |dv rAt          |          dv r0|d         | vr&t          |          dk    r d           S |d         S |dk    rQ|	rO| j        rH|j        j                            |            | j                             |d                             S |dk    rH|j        j                            |            | j                                          j        d           S |dk    rt          |          dk    rt=          |d         t          ||t>          j         |f          r| j        r|j        j                            |            t=          |d         t                    r	|d         }
n"|!                    |tD          |d                   }
| j        #                    |
j                   fd|                                D             }| j        #                    |            j        d           S |dv r&|d         | v r| $                    ||d                   S |dk    r+t          |          dk    r j        |d         | v           S |dk    r|	r| j        r|rJ t          |          dk    sJ | %                    |d                   }||S t          |          dk    r j        d           }n|d         }|j        j                            |            || j         |d                   <   |S tM                      '                    ||||          S )Nr   )r0   r   ListIteratorVariableListVariabler-   UserDefinedObjectVariabler   __getitem__r/   c                 :    g | ]\  }} |j         |g          S ro   rI   )r"   r~   r^   r-   s      r$   r   z1ConstDictVariable.call_method.<locals>.<listcomp>  s-    IIIdaay))IIIr&   keysr   copy)r/   mutable_local__len____setitem__r   __delitem__)popr,   )r   r   r   clearupdatec                 J    i | ]\  }}  j         |                    | S ro   )create)r"   r~   r^   r   rO   s      r$   rv   z1ConstDictVariable.call_method.<locals>.<dictcomp>J  sE       <@Aq0)03344a  r&   )r,   __getattr__r   
setdefault)( r0   r   r   r   r-   r   rB   rP   r!   r_   r   sourceoutputguard_on_key_orderaddnamer/   DictKeys
DictValuescloner   r   r   r   side_effectsmutationr   r   r   r'   r
   IteratorVariablecall_custom_dictdictr   r   r   rw   call_method)rJ   r   r   r   rx   r0   r   r   r   arg_hashabledict_vtrS   r@   r   rO   r-   ry   s                @@@r$   r   zConstDictVariable.call_method   s   	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 %54DG 4 4=  t99>>>>??DGLLLW__''''{ E	,001A1A1C1CDDD =IIIIdj6F6F6H6HIII   V^^{ E	,001A1A1C1CDDD''''D>>!X{ E	,001A1A1C1CDDD''''d###V^^''''::DJOO$5$5\^^:TTTY''''*#*3tz??;;;]""|"8J"0#d))q....I"++D111,0GDJxxQ(()*#*4000]""|"8J"I"++D111J""88DG#4#4555*#*4000^##D		V(;(;Qt@S@S4yyA~~''---AwU]]|]0B]I"++D111:>>((47"3"3444W__I"++D111J*#*4000HD		QQ% !(.-
 
  "  I"++D111$q'#455 Nq')::2tT!WMMJgm,,,    DJLLNN  F Jf%%%*#*4000+++Q4%%b$q'222^##D		Q*#*47d?;;;\!!l!t7I!t99>>>>,,T!W55E t99>>/(/55AAQA	&//55501
88DG,,-77&&r4v>>>r&   c                 H    d | j                                         D             S )Nc                     g | ]	}|j         
S ro   r   r   s     r$   r   z9ConstDictVariable.unpack_var_sequence.<locals>.<listcomp>e  s    000000r&   r/   r   )rJ   r   s     r$   unpack_var_sequencez%ConstDictVariable.unpack_var_sequenced  s"    00djoo//0000r&   c                     | j         t          u r6|| j         j        v rt          j        d          S t          j        d          S t          d| j          d           d S )NTFzhasattr on z is not supported)rC   r   __dict__r   r   r   rJ   r   r   s      r$   call_hasattrzConstDictVariable.call_hasattrg  se     =D  t}---'.t444#*5111DDMDDDEEEEEr&   r   r   rx   r   rF   r   )rh   ri   rj   r   _nonvar_fieldsrP   r   r   rK   r)   r   rU   r   r   rn   r   r_   r   r   r   r   r   r   r   __classcell__ry   s   @r$   rB   rB   >   s       		'N
<C <C <C <C <C <C <C <C~ GK! !/?:;!	! ! ! ! ! !(N N N
 
 

 
 
M M M  
$ 
 
 
 

 
 
X X X6)0?    7 o        s? &	s?
 -s? 
s? s? s? s? s? s?j1 1 1F F F F F F Fr&   rB   c                   d     e Zd Zdd fdZ fdZ fdZed             Z	 	 	 	 	 	 d fdZ xZ	S )DefaultDictVariableNrF   c                 l     t                      j        ||fi | |t          j        u sJ || _        d S r    )rw   rK   r   defaultdictdefault_factory)rJ   r/   rC   r   rx   ry   s        r$   rK   zDefaultDictVariable.__init__r  sF    33F333;22222.r&   c                     | j         t          t          t          fvr	| j        sdS t                                                      S )NF)r   listrQ   r   r/   rw   is_python_constantrJ   ry   s    r$   r   z&DefaultDictVariable.is_python_constantw  s<     eT':::4::5ww))+++r&   c                     d| j                                          dt                                                       dS )Nzdefaultdict(r   ))r   r   rw   r   s    r$   r   zDefaultDictVariable.debug_repr~  s=    W4/::<<WW@R@R@T@TWWW	
r&   c                     t          | t          j                  r!| j        t          t
          t          t          fv S t          | t          j        j	                  S r    )
r'   r
   r0   fnr   rQ   r   set	functionsBaseUserFunctionVariabler   s    r$   is_supported_argz$DefaultDictVariable.is_supported_arg  sD    c9455 	Q6dE4555c9#6#OPPPr&   r   r   rx   r   r   c                    |dk    rt          |          dk    sJ |d         | v r|                     ||d                   S | j        t          |d                    | j                            |g i           }t                                          |d|d         |f|           |S t                                          ||||          S )Nr   r   r   r   )r_   r   r   r   call_functionrw   r   )rJ   r   r   r   rx   default_varry   s         r$   r   zDefaultDictVariable.call_method  s     =  t99>>>>Aw$))"d1g666'/"d1g<000"&"6"D"DRR"P"PKGG''MDG[+A6   '&77&&r4v>>>r&   r    rg   r   )
rh   ri   rj   rK   r   r   rm   r   r   r   r   s   @r$   r   r   q  s        / / / / / / /
, , , , ,
 
 
 
 

 Q Q \Q? &	?
 -? 
? ? ? ? ? ? ? ? ? ?r&   r   c                        e Zd ZdZdee         ddf fdZd Zed             Z	e
d             Zd	 Zd
 Zd Zd Zdee         deeef         ddf fdZdddefdZ xZS )SetVariablez-We model a sets as dictonary with None valuesr/   rF   Nc                     t                               |t                                                    } t	                      j        |fi | d S r    )r   fromkeysr   _default_valuerw   rK   rJ   r/   rx   ry   s      r$   rK   zSetVariable.__init__  sI    
 e[%?%?%A%ABB))&)))))r&   c                     | j         sdS dd                    d | j                                         D                       z   dz   S )Nzset()r   ,c              3   H   K   | ]}|j                                         V  d S r    r   r"   r~   s     r$   r%   z)SetVariable.debug_repr.<locals>.<genexpr>  .      !O!O!$//"3"3!O!O!O!O!O!Or&   r   r/   r   r   rX   s    r$   r   zSetVariable.debug_repr  sJ    z 	V7!O!OTZ__=N=N!O!O!OOOORUUUr&   c                 N    t          | j                                                  S r    )r   r/   r   rX   s    r$   	set_itemszSetVariable.set_items  s    4:??$$%%%r&   c                  *    t          j        d           S r    r   r   ro   r&   r$   r   zSetVariable._default_value  s      &t,,,r&   c                 $    d | j         D             S )Nc                 @    h | ]}|j                                         S ro   r|   r  s     r$   	<setcomp>z'SetVariable.as_proxy.<locals>.<setcomp>  s"    888A888r&   r  rX   s    r$   r)   zSetVariable.as_proxy  s    888888r&   c                     t           S r    )r   rX   s    r$   r   zSetVariable.python_type  s    
r&   c                 $    d | j         D             S )Nc                 @    h | ]}|j                                         S ro   r   r  s     r$   r  z1SetVariable.as_python_constant.<locals>.<setcomp>  &    BBBa''))BBBr&   r  rX   s    r$   rU   zSetVariable.as_python_constant      BB4>BBBBr&   c                     |                     d | j        D                        |                    t          dt	          | j                                       d S )Nc                     g | ]	}|j         
S ro   r   r   s     r$   r   z+SetVariable.reconstruct.<locals>.<listcomp>      666!666r&   	BUILD_SETr   )foreachr  r   r   r_   rJ   r   s     r$   r   zSetVariable.reconstruct  sW    66t~6667770#dnBUBUVVVWWWWWr&   r   rx   r   c                 .   ddl m}m} |dk    r>|rJ t          |          dk    sJ d}|d         t                                          f}n%|dk    rM|rJ |rJ | j                                        j        }t                      
                    |||f|           |S |dk    rT|rJ t          |          dk    sJ t          j        t          j                                      || |d         gi           S |dk    rT|rJ t          |          dk    sJ t          j        t          j                                      || |d         gi           S |d	k    rT|rJ t          |          dk    sJ t          j        t          j                                      || |d         gi           S |d
k    rT|rJ t          |          dk    sJ t          j        t          j                                      || |d         gi           S |dk    rt          |          dk    rt'          |d         t          ||f          ru| j        rnt'          |d         ||f          r)t	          |d                             |                    }n|d         }t                      
                    |d|f|          S |dk    rV|rJ t          |          dk    sJ |d         | vrt-          d           t                      
                    |d||          S |dk    r\|rJ t          |          dk    sJ |d         | v r$t                      
                    |d||          S t/          j        d           S t                      
                    ||||          S )Nr   )r   r-   r   r   r   r   
isdisjointintersectionunion
differencer   removezkey does not existdiscardrS   )r   r   r-   r_   r   r   r  r   rI   rw   r   r
   r5   r	   set_isdisjointr   set_intersection	set_unionset_differencer'   r   r   r   r   r   )
rJ   r   r   r   rx   r   r-   resultr   ry   s
            r$   r   zSetVariable.call_method  s    	21111111 5==t99>>>> DG[7799:DDU]]OOO^'')),FGGD6)V<<<M\!!t99>>>>1( mBtAw445 ^##t99>>>>1* mBtAw445 W__t99>>>>1)2EFFTTT47OR   \!!t99>>>>1( mBtAw445 HD		QQ !   "  $q'L-#@AA !$q'"="=b"A"ABB1g77&&r8cVVDDDXt99>>>>Awd""233377&&r5$???Yt99>>>>Aw$ww**2udFCCC'.T::::ww""2tT6:::r&   r   r   r   c                      t          d          )NzIllegal to getitem on a set)RuntimeError)rJ   r   r   s      r$   r   zSetVariable.getitem_const  s    8999r&   )rh   ri   rj   rk   r   r   rK   r   rl   r  rm   r   r)   r   rU   r   r   strr   r   r   r   s   @r$   r   r     s\       77*O$* 
	* * * * * *V V V & & X& - - \-9 9 9  C C CX X XM; ?#	M;
 S/)*M; 
M; M; M; M; M; M;^: 7 :o : : : : : : : :r&   r   c                        e Zd Zdee         ddf fdZd Zed             Zd Z	d Z
d	 Zd
ee         deeef         ddf fdZ xZS )FrozensetVariabler/   rF   Nc                 <     t                      j        |fi | d S r    )rw   rK   r   s      r$   rK   zFrozensetVariable.__init__!  s*    
 	))&)))))r&   c                     | j         sdS dd                    d | j                                         D                       z   dz   S )Nzfrozenset()r   r   c              3   H   K   | ]}|j                                         V  d S r    r   r  s     r$   r%   z/FrozensetVariable.debug_repr.<locals>.<genexpr>,  r  r&   r   r  rX   s    r$   r   zFrozensetVariable.debug_repr(  sJ    z 	V =!O!OTZ__=N=N!O!O!OOOORUUUr&   c                 4    | j                                         S r    r   rX   s    r$   r  zFrozensetVariable.set_items.  s    z   r&   c                     t           S r    )	frozensetrX   s    r$   r   zFrozensetVariable.python_type2      r&   c                 $    d | j         D             S )Nc                 @    h | ]}|j                                         S ro   r   r  s     r$   r  z7FrozensetVariable.as_python_constant.<locals>.<setcomp>6  r  r&   r  rX   s    r$   rU   z$FrozensetVariable.as_python_constant5  r  r&   c                                          d | j        D                                            fd                               t	          dd                     d S )Nc                     g | ]	}|j         
S ro   r   r   s     r$   r   z1FrozensetVariable.reconstruct.<locals>.<listcomp>9  r  r&   c                  V                                               d          g          S )Nr/  )r   create_load_globalr   s   r$   r   z/FrozensetVariable.reconstruct.<locals>.<lambda>;  s-    G))..{;;  r&   r   F)r  r  r   r   r   r  s    `r$   r   zFrozensetVariable.reconstruct8  sy    66t~666777   	
 	
 	
 	21e<<=====r&   r   rx   r   c                 z    |dv rt          d| d          t                                          ||||          S )N)r   r   r   r  r  r   zIllegal call_method z on a frozenset)r&  rw   r   rJ   r   r   r   rx   ry   s        r$   r   zFrozensetVariable.call_methodC  sI     IIIKdKKKLLLww""2tT6:::r&   )rh   ri   rj   r   r   rK   r   rl   r  r   rU   r   r   r'  r   r   r   s   @r$   r)  r)     s        *O$* 
	* * * * * *V V V ! ! X!  C C C	> 	> 	>	; ?#		;
 S/)*	; 
	; 	; 	; 	; 	; 	; 	; 	; 	; 	;r&   r)  c                        e Zd ZU dZdZee         ed<   deddf fdZ	e
d             Ze
d             Zd	 Zd
 Zded         deedf         ddf fdZ xZS )DictViewzu
    Models _PyDictViewObject

    This is an "abstract" class. Subclasses will override kv and the items method
    Nkvdv_dictrF   c                      t                      j        di | | j        dv sJ t          |t                    sJ || _        d S )N)r   r   ro   )rw   rK   r;  r'   rB   r<  )rJ   r<  rx   ry   s      r$   rK   zDictView.__init__X  sV    ""6"""w,,,,,'#455555r&   c                 P     t          | j        j        | j                              S r    )getattrr<  r/   r;  rX   s    r$   
view_itemszDictView.view_items^  s!    3wt|)4733555r&   c                     t           r    NotImplementedErrorrX   s    r$   view_items_vtzDictView.view_items_vtb  s
     "!r&   c                 6      fdfd j         D             S )Nc                 ,    j         dk    r| j        n| S )Nr   )r;  rI   )r@   rJ   s    r$   unwrapz,DictView.unpack_var_sequence.<locals>.unwrapi  s    7f,,144!3r&   c                 &    g | ]} |          S ro   ro   )r"   r@   rG  s     r$   r   z0DictView.unpack_var_sequence.<locals>.<listcomp>l  s!    333aq		333r&   r@  )rJ   r   rG  s   ` @r$   r   zDictView.unpack_var_sequenceh  s;    	4 	4 	4 	4 	4 43334?3333r&   c                      || j                    |                    | j                   |                    d           d S )Nr   )r<  load_methodr;  r   r  s     r$   r   zDictView.reconstructn  sD    DG$$$Ar&   r   r   rx   c                     |dk    r| j                             ||||          S t                                          ||||          S )Nr   r<  r   rw   r8  s        r$   r   zDictView.call_methods  sJ     9<++BdFCCCww""2tT6:::r&   )rh   ri   rj   rk   r;  r   r'  __annotations__rB   rK   rl   r@  rD  r   r   r   r   r   r   r   s   @r$   r:  r:  O  s          B 1        6 6 X6 " " X"
4 4 4  
	; $%		;
 S++,	; 
	; 	; 	; 	; 	; 	; 	; 	; 	; 	;r&   r:  c                   ~     e Zd ZdZed             Zed             Zd Zded         de	e
df         ddf fd	Z xZS )
r   r   c                 *    t          | j                  S r    )r   r@  rX   s    r$   r  zDictKeys.set_items  s    4?###r&   c                 $    d | j         D             S )Nc                     g | ]	}|j         
S ro   r   r   s     r$   r   z*DictKeys.view_items_vt.<locals>.<listcomp>  s    ......r&   rI  rX   s    r$   rD  zDictKeys.view_items_vt  s     /.do....r&   c                     t           S r    )r   rX   s    r$   r   zDictKeys.python_type  r0  r&   r   r   rx   rF   c                     |dk    r| j                             ||||          S t                                          ||||          S )Nr   rM  r8  s        r$   r   zDictKeys.call_method  sJ     >!!<++BdFCCCww""2tT6:::r&   )rh   ri   rj   r;  rl   r  rD  r   r   r   r'  r   r   r   s   @r$   r   r     s        	B$ $ X$ / / X/  	; $%		;
 S++,	; 
	; 	; 	; 	; 	; 	; 	; 	; 	; 	;r&   r   c                   .    e Zd ZdZed             Zd ZdS )r   r   c                 *    t          | j                  S r    )r   r@  rX   s    r$   rD  zDictValues.view_items_vt  s    DO$$$r&   c                     t           S r    )r   rX   s    r$   r   zDictValues.python_type  s    r&   N)rh   ri   rj   r;  rl   rD  r   ro   r&   r$   r   r     sA        	B% % X%    r&   r   rF   c                     t           j                            d          }|t           j                            d          }|d uot          | |j                  S )Nztransformers.file_utilsztransformers.utils.generic)sysmodulesr,   
issubclassModelOutputclsmods     r$   _is_matching_transformers_clsr`    sJ    
+//3
4
4C
{koo:;;d??z#s???r&   c                 r    t           j                            d          }|d uot          | |j                  S )Nzdiffusers.utils)rY  rZ  r,   r[  
BaseOutputr]  s     r$   _is_matching_diffusers_clsrc    s1    
+//+
,
,Cd?>z#s~>>>r&   r   r   r   r   c           
      b   |j         j                            |           rk	 |j         j                            | |d          }t          j                            t          |t          j                             S # t          $ r Y nw xY w|| j
        v st          | j        |          rt          d          S t          | j        t                    r| j        t          d          S | j        r	 |j         j                            | j                  }t'          t)          | j        |                              t,          j                             t          t          ||                    S # t          $ r Y nw xY wt1          d| j        j         d| d| j         d| j                    dS )	zXShared method between DataClassVariable and CustomizedDictVariable where items are attrsT)
deleted_okNFzhasattr(r   z)  )r   r   is_attribute_mutation	load_attrr
   r   r   r'   r   r   r/   hasattrrC   r   r   r   r   root_txget_example_valuer   r   
make_guardr   HASATTRr   ry   rh   )rJ   r   r   r$  examples        r$   _call_hasattr_customobjro    s    
y33D99 	Y+55dDT5RRF-44vy'@AAA    	 	 	D	tzWT]D99%%%	"L	1	1 dk6I&&&	 		i'99$+FFG4;--889MNN   $GGT$:$:;;; 	 	 	D	X4>*XXdXXd6HXX4;XX    s%   AA; ;
BB0A?E0 0
E=<E=c                        e Zd Zed             Zed             Zed             Zed             Zed             Z	d fdZ
d	 Zd
 Z	 	 	 	 	 	 d fdZdddeddf fdZeZ xZS )CustomizedDictVariablec                 >    t          |           pt          |           S r    )r`  rc  r^  s    r$   is_matching_cls_hfz)CustomizedDictVariable.is_matching_cls_hf  s    ,S11T5OPS5T5TTr&   c                     t          | t          j                  r8| t          j        ur*| j        t          j        j        u rt	          | d          sdS t
                              |           S )N__post_init__T)r[  r   r   rK   ri  rq  rt  rs  s    r$   is_matching_clsz&CustomizedDictVariable.is_matching_cls  sj     sK344	;222 7 @@@C11 A 4 &88===r&   c                 F    |                      t          |                    S r    rw  rH   r^  objs     r$   is_matching_objectz)CustomizedDictVariable.is_matching_object      ""499---r&   c                 X   dD ]b}t          ||          rPt          ||          }t          |          sJ d|             t          |d          rt          |j                   ct          j        |          r t          j        |          j	        |i |}|
                                 d i }|                     |          rD|j                                        D ])\  }	}
t          |
t                    r|
j        |
$|
||	<   *n|j        }fd|                                D             }nn|sd |                                D             }nMt#          |          dk    r+t          |d         t$                    r|s|d         j        }nt'          d	            | ||fi |S )
N)rK   rv  __setattr__r   zexpect callable attr __code__c                     t          | t                    r| S t          j        |           rt          j        |           S t          d           d S )Nz5expect VariableTracker or ConstantVariable.is_literal)r'   r   r   re   r   r   r?   s    r$   make_varz/CustomizedDictVariable.create.<locals>.make_var  s\    a11 H%033 +21555!O    r&   c                 R    i | ]#\  }}t          j        |           |          $S ro   r  )r"   r~   r^   r  s      r$   rv   z1CustomizedDictVariable.create.<locals>.<dictcomp>  s@       <@Aq '**HHQKK  r&   c                 >    i | ]\  }}t          j        |          |S ro   r  r}   s      r$   rv   z1CustomizedDictVariable.create.<locals>.<dictcomp>  s*    NNNtq!%,Q//NNNr&   r   r   z/custom dict init with args/kwargs unimplemented)ri  r?  callabler   r  dataclassesis_dataclassinspect	signaturebindapply_defaultsrt  	argumentsr/   r'   r   rS   r_   rB   r   )r^  rC   r   rx   options	attr_namer   bound
bound_argsr~   r^   r/   r  s               @r$   r   zCustomizedDictVariable.create  s    U 	+ 	+Ix++ +Xy11||HH%HY%H%HHHH2z** +bk***#H-- #	M4G%h//4dEfEEE  """   J%%h// -!O1133 & &DAq!!%566 !17?ai $%JqMM&
 #_
   DNDTDTDVDV  EE  	MNNv||~~NNNEEYY!^^
474E F F^v^GMEEKLLLs5(..g...r&   c           	      .   t          |          }|                     |          st          d            |                    |j        |j                  t          j        |                    j        }d t          j
        |          D             }|D ]u}t          ||          rct          ||          } |                    |j        t          |j        |                    |          }|t          j        |          }|||<   v | ||          S )Nz.custom non-hf dict subclass wrap unimplemented)r   r   c                     g | ]	}|j         
S ro   )r   r"   fs     r$   r   z/CustomizedDictVariable.wrap.<locals>.<listcomp>)  s    ===1===r&   )rH   rt  r   ry   r   r   r   r   r/   r  fieldsri  r?  r   r   r   )	r^  builderr{  rC   r/   r   rs   valvars	            r$   wrapzCustomizedDictVariable.wrap  s0   99%%h// 	LJKKKG!!WZ!GG#C((
 

 	 >= 28 < <=== 		% 		%CsC   %c3''g''z*W^S*I*I (    ?*1#66C!$E#Js5(###r&   rF   Nc                 l     t                      j        ||fi | |                     |          sJ d S r    )rw   rK   rw  )rJ   r/   rC   r  ry   s       r$   rK   zCustomizedDictVariable.__init__6  sD    44G444##H-------r&   c                     t           r    rB  rX   s    r$   r)   zCustomizedDictVariable.as_proxy:  s    !!r&   c                                            j                   fd}                    |                                            }                    |                                           t          |                                          }                    	                    t          |          |d                     d S )Nc                      rfd}                      |                                                    j                  g           r%                    t	          dd                     d S d S )Nc                                                                 dd                                                                d                                                                d                     d S )NtorchT)r   _dynamodisable)r   r6  r   r   s   r$   gen_fn2zDCustomizedDictVariable.reconstruct.<locals>.gen_fn1.<locals>.gen_fn2L  su    ))'*D*DWRV*D*W*WXXX))'*B*B9*M*MNNN))'*B*B9*M*MNNNNNr&   r   F)r   r   _create_load_constrC   r   )r  r   is_hf_model_outputrJ   s    r$   gen_fn1z3CustomizedDictVariable.reconstruct.<locals>.gen_fn1B  s     " /O O O O O
 %%g...!!7#=#=dm#L#L"MNNN! F%%&:1e&D&DEEEEEF Fr&   F)rt  rC   r   r   r  r   rQ   r   r   create_call_function_kwr_   )rJ   r   r  dr   r  s   ``   @r$   r   z"CustomizedDictVariable.reconstruct?  s    !44T]CC	F 	F 	F 	F 	F 	F 	F. 	g&&& ((**

###QVVXXg==c$iiuUUVVVVVr&   r   r   rx   r   r   c                 0   t          | j        |          }| j        d nt          | j        |          }t	          |d          r>|j        t          t          j        fv r$t                      
                    ||||          S |dv r<|                    t          j        ||          | gt          |          z   |          S |t          t          j        |d           u r$t                      
                    ||||          S t          d|            d S )N__objclass__)r   to_tupler   r  rv  )r   z,custom dict: call_method unimplemented name=)r?  rC   r   r   ri  r  r   r   r   rw   r   inline_user_function_returnr
   r5   r   r   )rJ   r   r   r   rx   r   r   ry   s          r$   r   z"CustomizedDictVariable.call_methoda  s)    T]D)),*T[$2O2O2~&& 	?2?#?
 ,
 ,

 77&&r4v>>> 
 
 
 11.r&AAAd#  
 7;2D$????77&&r4v>>>KTKKLLLLLr&   r   r   r   c                    t          j        |          }|| v r|                     |d|gi           S t          j        | j                  rsd t          j        | j                  D             }||v rLt          j                             ||                   sJ t          j                             ||                   S t                      
                    ||          S )Nr   c                 (    i | ]}|j         |j        S ro   )r   defaultr  s     r$   rv   z6CustomizedDictVariable.var_getattr.<locals>.<dictcomp>  s    UUUa	UUUr&   )r   r   r   r  r  rC   r  r
   re   rw   var_getattr)rJ   r   r   name_vtdefaultsry   s        r$   r  z"CustomizedDictVariable.var_getattr  s    ")$//d??##By"EEE#DM22 	IUU;3Edm3T3TUUUHx 1<<Xd^LLLLL 188$HHHww""2t,,,r&   rg   r   )rh   ri   rj   rm   rt  rw  classmethodr|  r   r  rK   r)   r   r   r'  r  ro  r   r   r   s   @r$   rq  rq    s^       U U \U > > \> . . [.
 ./ ./ [./b $ $ [$.. . . . . ." " "
 W  W  WD M &	 M
 - M 
 M  M  M  M  M  MD	-5 	-S 	-EV 	- 	- 	- 	- 	- 	- +LLLLLr&   rq  c                  6    dd l } d }|| j        j        _        d S )Nr   c                 F    t          |d          sdS | j        |j        k    S )Nr   F)ri  r   )rJ   rc   s     r$   !_dynamo_overriden_transformers_eqzJ_install_PretrainedConfig_patch.<locals>._dynamo_overriden_transformers_eq  s(    uj)) 	5}..r&   )transformersconfiguration_utilsPretrainedConfigrf   )r  r  s     r$   _install_PretrainedConfig_patchr    s6    
/ / / 	* $5<<<r&   c                   x     e Zd ZdZed             Zed             Zd fdZddd	e	dd
fdZ
ddd	e	dd
fdZ xZS )HFPretrainedConfigVariablez/
    Hack for HuggingFace PretrainedConfig
    c                     t           j                            d          }|d uot          | |j                  }|rt                       |S )Nz transformers.configuration_utils)rY  rZ  r,   r[  r  r  )r^  r_  is_matchs      r$   rw  z*HFPretrainedConfigVariable.is_matching_cls  sL    koo@AAd?Lz#s7K'L'L  	.+---r&   c                 F    |                      t          |                    S r    ry  rz  s     r$   r|  z-HFPretrainedConfigVariable.is_matching_object  r}  r&   rF   Nc                      t                      j        di | || _        |                     t	          |                    sJ d S )Nro   )rw   rK   r{  rw  rH   )rJ   r{  rx   ry   s      r$   rK   z#HFPretrainedConfigVariable.__init__  sM    ""6"""##DII.......r&   r   r   r   r   c                     ddl m} 	 t          | j        |          }t	          | j        |          }  |||          |          S # t          $ r t          d| j         d| d           Y d S w xY w)Nr   VariableBuilderzgetattr(r   r   )	r  r  r?  r{  r   r   AttributeErrorr   rS   )rJ   r   r   r  
attr_valueattr_sources         r$   r  z&HFPretrainedConfigVariable.var_getattr  s    ,,,,,,	< 400J$T[$77K3??2{33J??? 	< 	< 	<:TZ::4:::;;;;;;	<s   >A %A0/A0c                 f    t           j                            t          | j        |                    S r    )r
   r   r   ri  r{  r   s      r$   r   z'HFPretrainedConfigVariable.call_hasattr  s%    )0041H1HIIIr&   rg   )rh   ri   rj   rk   rm   rw  r  r|  rK   r'  r  r   r   r   s   @r$   r  r    s            \ . . [./ / / / / /
	<5 	<S 	<EV 	< 	< 	< 	<J6 Jc JFW J J J J J J J Jr&   r  c                       e Zd ZdZd Zd Zdddee         dee	ef         fdZ
ddd	efd
Zddd	efdZ	 dddd	edee         fdZddd	efdZdS )PythonSysModulesVariablezSpecial case for sys.modules.

    Without this we will guard on the exact set of modules imported in the
    lifetime of the python program.
    c                     t           S r    )r   rX   s    r$   r   z$PythonSysModulesVariable.python_type  s    r&   c                 8                         fd           d S )Nc                                                                 t                                         d          g          S )NrZ  )r   r   rY  r   r   s   r$   r   z6PythonSysModulesVariable.reconstruct.<locals>.<lambda>  s>    G))55c::,,Y77  r&   )r   r  s    `r$   r   z$PythonSysModulesVariable.reconstruct  s9       	
 	
 	
 	
 	
r&   r   r   r   rx   c           	          |dk    r | j         |g|R i |S |dk    r | j        |g|R i |S |dk    r | j        |g|R i |S t          d| d| d| d           d S )Nr   r,   r   zsys.modules.z(*z, **r   )call_getitemcall_getcall_containsr   )rJ   r   r   r   rx   s        r$   r   z$PythonSysModulesVariable.call_method  s     =  $4$R9$999&999U]] 4=5d555f555^##%4%b:4:::6:::@T@@T@@v@@@AAAAAr&   rs   c           	          |                                 }|t          j        v }t          |                     t          j        t          j        ||                                ||fS )N)rs   invert)	rU   rY  rZ  r   rl  	functoolspartialr   DICT_CONTAINSrJ   r   rs   r~   has_keys        r$   _contains_helperz)PythonSysModulesVariable._contains_helper  si    ""$$s{"OO!,"<!PWKXXX 	
 	
 	

 'zr&   c                 ^    |                      ||          \  }}t          j        |          S )Nr  )r  r   r   r  s        r$   r  z&PythonSysModulesVariable.call_contains  s/    **2s33
7&W5555r&   Nr  c                     ddl m} |                     ||          \  }}|r8  ||t          | j        |                    t
          j        |                   S ||S t          j        d           S )Nr   r  r  )	r  r  r  r   r   rY  rZ  r   r   )rJ   r   rs   r  r  r~   r  s          r$   r  z!PythonSysModulesVariable.call_get  s     	-,,,,,**2s33
7 	??dk1--  k!n  
 N&T2222r&   c                     ddl m} |                     ||          \  }}  ||t          | j        |                    t
          j        |                   S )Nr   r  )r  r  r  r   r   rY  rZ  )rJ   r   rs   r  r~   r  s         r$   r  z%PythonSysModulesVariable.call_getitem  sl    ,,,,,,**2s33
7
$+q))
 
 +a.  	r&   r    )rh   ri   rj   rk   r   r   r   r   r   r'  r   r  r  r   r  r  ro   r&   r$   r  r    s*          
 
 
B#B ?#	B
 S/)*B B B B#:     6 7 6o 6 6 6 6 .2	3 3#3 3 /*	3 3 3 3*6 _      r&   r  );r   r  r  r  rY  typingr   r   r   r   torch._subclasses.fake_tensorr   r   r	   r
   bytecode_transformationr   r   
eval_framer   excr   r   guardsr   r   r   r   r   utilsr   r   r   r   baser   r   constantr   torch._dynamo.symbolic_convertr   r!   rB   r   r   r)  r:  r   r   rn   r`  rc  r'  ro  rq  	lru_cacher  r  r  ro   r&   r$   <module>r     s                



 6 6 6 6 6 6 6 6 6 6 6 6 1 1 1 1 1 1 # # # # # # # # N N N N N N N N " " " " " " 9 9 9 9 9 9 9 9 0 0 0 0 0 0 0 0 . . . . . . . . F F F F F F F F F F F F / / / / / / / / & & & & & &  EDDDDDD
 
 
<pF pF pF pF pF pF pF pFf	/? /? /? /? /?+ /? /? /?jw: w: w: w: w:# w: w: w:t,; ,; ,; ,; ,; ,; ,; ,;^-; -; -; -; -; -; -; -;`; ; ; ; ;x ; ; ;6	 	 	 	 	 	 	 	@$ @ @ @ @?t ? ? ? ?
%-0   @|+ |+ |+ |+ |+. |+ |+ |+~ T   $J $J $J $J $J $J $J $JNM M M M M M M M M Mr&   