
    sg                     .   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jn                  d      d)        Z8 G d* d+e$      Z9 G d, d-e$      Z:y).    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        j                        r5| j                         j                  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        j0                  t        j2                  f      S )Nexample_valuec              3   2   K   | ]  }t        |        y wN)is_hashable).0es     P/var/www/html/venv/lib/python3.12/site-packages/torch/_dynamo/variables/dicts.py	<genexpr>zis_hashable.<locals>.<genexpr>'   s     3a;q>3s   )
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..	/3177333))))**&&&&??....,,**77//66((22
 	
    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                   N    e Zd ZdZd
dZed        Zd Zed        Z	dd de
fd	Zy)"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                 r    t        |      }t        |      st        dt        |       d|        || _        y )NzDict key of type z. Key: )r   r!   r   typevt)selfrI   s     r$   __init__z+ConstDictVariable._HashableTracker.__init__K   s6    #B'B r? 1$r(72$GHDGr@   c                 
   t        | j                  t        j                        r3| j                  j	                         j
                  j                  d   }|S t        | j                  t        j                        r:t        j                  t        fd| j                  j                  D              }|S t        | j                  t        j                        r| j                  j                  S t        | j                  t        j                        r| j                  j                  S t        | j                  t        j                         r| j                  j#                         S | j                  j%                         }|S )Nr   c              3   B   K   | ]  } |      j                     y wr    )underlying_value)r"   r#   Hashables     r$   r%   zFConstDictVariable._HashableTracker.underlying_value.<locals>.<genexpr>Z   s     N1(1+66Ns   )r&   rI   r
   r'   r(   r)   r*   r,   rB   _HashableTrackertupler.   r8   moduler9   valuer4   get_functionas_python_constant)rJ   r?   rO   s     @r$   rN   z3ConstDictVariable._HashableTracker.underlying_valueT   s   $''9#;#;<GG$$&++00A H DGGY%<%<=,==NNN H DGGY%?%?@ww~~%DGGY%L%LMww}}$DGGY%C%CDww++--GG..0Hr@   c                 ,    t        | j                        S r    )hashrN   rJ   s    r$   __hash__z+ConstDictVariable._HashableTracker.__hash__e   s    --..r@   c                 
   t        |       t        |      k7  ryt        | t              rGt        j                  t        |       t        |      k(  xr t        fdt        | |      D              S t        |       r| |u S | |k(  S )NFc              3   H   K   | ]  \  }}j                  ||        y wr    )_eq_impl)r"   uvrO   s      r$   r%   z>ConstDictVariable._HashableTracker._eq_impl.<locals>.<genexpr>o   s'      0041H%%a+0s   ")	rH   r&   rQ   rB   rP   lenr-   zipr   )abrO   s     @r$   r\   z+ConstDictVariable._HashableTracker._eq_implh   s|     Aw$q'!Au%,==1vQ' C 08;Aq	0 -  AvAvr@   otherc                     t         j                  }t        ||      s%t        j                  |      sJ t        |             t        ||      r&|j                  | j                  |j                        S |j                  | j                  |      S r    )rB   rP   r&   r   
is_literalrH   r\   rN   )rJ   rc   rO   s      r$   __eq__z)ConstDictVariable._HashableTracker.__eq__w   s    (99HeX.2B2M2M3 E{  %*(()>)>@V@VWW $$T%:%:EBBr@   rF   N)__name__
__module____qualname____doc__rK   propertyrN   rY   staticmethodr\   boolrf    r@   r$   rP   rE   D   sP    		 
	 
	 	/ 
	 
			C D 		C 		Cr@   rP   r.   rF   Nc                    t        |   di | t        j                  t	        fd|j                         D              sJ fd}|j                         D ci c]  \  }} ||      | c}}| _        || _        y c c}}w )Nc              3   l   K   | ]+  \  }}t        |t        f      xr t        |t               - y wr    )r&   r   )r"   r?   r^   rO   s      r$   r%   z-ConstDictVariable.__init__.<locals>.<genexpr>   s?      
 1 q?H56 /1o./
s   14c                 0    t        |       r| S  |       S r    )r&   )keyrO   s    r$   make_hashablez1ConstDictVariable.__init__.<locals>.make_hashable   s    $S(33F#Fr@   ro   )superrK   rB   rP   r-   r.   rC   )	rJ   r.   rC   kwargsrt   r?   r^   rO   	__class__s	          @r$   rK   zConstDictVariable.__init__   s     	"6"$55  
 
 
 	
 
	G 7<kkmDdamA&)D
  Es   Bc                     | j                   j                         D ci c].  \  }}|j                  j                         |j                         0 c}}S c c}}w r    )r.   rI   r(   rJ   kr^   s      r$   r(   zConstDictVariable.as_proxy   s<    :>**:J:J:LM$!Q-MMM   3Ac                 n    ddj                  d | j                  j                         D              z   dz   S )N{, c              3   |   K   | ]4  \  }}|j                   j                          d |j                           6 yw)z: NrI   
debug_repr)r"   rz   r^   s      r$   r%   z/ConstDictVariable.debug_repr.<locals>.<genexpr>   s7      =AQ144??$%R'78s   :<})joinr.   rX   s    r$   r   zConstDictVariable.debug_repr   s?    ii EIZZEUEUEW  		
r@   c                     | j                   j                         D ci c].  \  }}|j                  j                         |j                         0 c}}S c c}}w r    r.   rI   rU   ry   s      r$   rU   z$ConstDictVariable.as_python_constant   sP     

((*
1 DD##%q';';'==
 	
 
r{   c                     | j                   j                         D ci c]   \  }}|j                  j                         |" c}}S c c}}w r    r   ry   s      r$   keys_as_python_constantz)ConstDictVariable.keys_as_python_constant   s9    9=9I9I9KLA'')1,LLLs   %Ac                     | j                   S r    )rC   rX   s    r$   python_typezConstDictVariable.python_type   s    }}r@   c                     t        |t              sJ t        j                  }t	        |      xrD  ||      | j
                  v xr. t        | j
                   ||         t        j                         S r    )r&   r   rB   rP   r!   r.   r
   DeletedVariable)rJ   rI   rO   s      r$   __contains__zConstDictVariable.__contains__   se    "o...$55O T

*Ttzz(2,79R9RSS	
r@   c           	          t        | j                  j                         D cg c]  }t        |t        j
                        s|  c}      S c c}w r    )r_   r.   valuesr&   r
   r   rJ   r?   s     r$   r_   zConstDictVariable.len   sI     **,!!Y%>%>? 
 	
s   #Ac                    | j                   t        j                  u rj                  fd       | j                  j	                         D ]  \  }} |j
                          |       ! | j                   t        j                  u r=j                  t        dt        | j                              gt        dd             y j                  t        dt        | j                                     y )Nc                  n     j                   j                  t               j                  d      g      S )NOrderedDict)extend_outputcreate_load_python_modulecollectionscreate_load_attrcodegens   r$   <lambda>z/ConstDictVariable.reconstruct.<locals>.<lambda>   s3    --99+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CFFOEN	 ==K333!!&{DJJH)!U3 !!"4[c$**o"VWr@   txr   r   c                     t         j                  |      }|| 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   s:      005djj $Xr48zz#r@   c                     t         j                  |      }|| j                  vrt        d|j                          | j                  |   S )Nzdict KeyError: )rB   rP   r.   r   rS   r   s       r$   getitem_constzConstDictVariable.getitem_const   s?    005djj OCII;78zz#r@   c                 h    t         j                  |      }|| j                  vry | j                  |   S r    )rB   rP   r.   )rJ   r   rs   s      r$   maybe_getitem_constz%ConstDictVariable.maybe_getitem_const   s/    005djj zz#r@   c           
      H   ddl m}m}m}m}m}	m}
 t        j                  }|xr t        |d         }|dk(  r%t        |      dk(  sJ | j                  ||d         S |dk(  r|s|rJ | j                  r=|j                  j                  j                  | j                  j!                                 |	| j"                  j#                         D cg c]  \  }} |	|j$                  |g       c}}      S |dk(  rZ| j                  r=|j                  j                  j                  | j                  j!                                |s|rJ t'        |       S |dk(  rZ| j                  r=|j                  j                  j                  | j                  j!                                |s|rJ t)        |       S |dk(  r9|s|rJ | j+                  | j"                  j-                         t/               	      S |d
k(  r+|s|rJ  |j0                  t        | j"                              S |dk(  rr|rp| j2                  rd|st        |      dk(  sJ |j                  j4                  j7                  |        |d   | j"                   ||d         <    |j0                  d       S |dk(  ri|rg| j2                  r[|j                  j4                  j7                  |        | j"                  j9                   ||d                 |j0                  d       S |dv r/t        |      dv r"|d   | vrt        |      dk(  r |d       S |d   S |dk(  rW|rU| j2                  rI|j                  j4                  j7                  |        | j"                  j;                   ||d               S |dk(  rQ|j                  j4                  j7                  |        | j"                  j=                           |j0                  d       S |dk(  r%t        |      dk(  rt?        |d   t        ||	|t@        jB                  |
f      r| j2                  r|j                  j4                  j7                  |        t?        |d   t              r|d   }n|jE                  |tF        |d         }| j"                  jI                  |j"                         |j#                         D ci c]  \  }} | |j0                  |            |  }}}| j"                  jI                  |        |j0                  d       S |dv r|d   | v r| jK                  ||d         S |dk(  r%t        |      dk(  r |j0                  |d   | v       S |dk(  r|r| j2                  r|rJ t        |      dk  sJ | jM                  |d         }||S t        |      dk(  r |j0                  d       }n|d   }|j                  j4                  j7                  |        || j"                   ||d         <   |S tN        |   ||||      S c c}}w c c}}w )Nr   )r/   r   ListIteratorVariableListVariabler,   UserDefinedObjectVariabler   __getitem__r.   keysr   copy)r.   mutable_local__len____setitem__r   __delitem__)popr+   )r   r   r   clearupdate)r+   __getattr__r   
setdefault)) r/   r   r   r   r,   r   rB   rP   r!   r_   r   sourceoutputguard_on_key_orderaddnamer.   rI   DictKeys
DictValuescloner   r   creater   side_effectsmutationr   r   r   r&   r
   IteratorVariablecall_custom_dictdictr   r   r   ru   call_method)rJ   r   r   argsrv   r/   r   r   r   r,   r   rO   arg_hashablerz   r^   dict_vtrS   r?   rw   s                     r$   r   zConstDictVariable.call_method   s   	
 	
 %554DG 4= t9>!>??DGLLW_''{{		,,001A1A1CD 6:jj6F6F6HIdaay)I  V^{{		,,001A1A1CD''D>!X{{		,,001A1A1CD''d##V^''::DJJOO$5\^:TTY''*#**3tzz?;;]"|8J8J#d)q.00II""++D1,0GDJJxQ()*#**400]"|8J8JII""++D1JJ""8DG#45*#**400^#D	V(;Qt@S4yA~'--AwU]|0B0BII""++D1::>>(47"344W_II""++D1JJ*#**400HD	QQ% !(..-
 ""II""++D1$q'#45q')::2tT!WMJJgmm, EKLLN<@Aq0)0034a7F  JJf%*#**400++Q4%%b$q'22^#D	Q*#**47d?;;\!lt7I7I:t9>!>,,T!W5E t9>/(//5AQA		&&//501

8DG,-7&r4v>>o J~s   X
#Xc                 p    | j                   j                         D cg c]  }|j                   c}S c c}w r    )r.   r   rI   )rJ   r   r?   s      r$   unpack_var_sequencez%ConstDictVariable.unpack_var_sequenced  s%    "jjoo/0000s   3c                     | j                   t        u rB|| j                   j                  v rt        j                  d      S t        j                  d      S t        d| j                    d       y )NTFzhasattr on z is not supported)rC   r   __dict__r   r   r   rJ   r   r   s      r$   call_hasattrzConstDictVariable.call_hasattrg  sZ     ==D t}}---'..t44#**511DMM?2CDEr@   r   zList[VariableTracker]rv   zDict[str, VariableTracker]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__rw   s   @r$   rB   rB   >   s    		'	'N
<C <C~ GK!/?:;!	!(N

M
$ 

X6)0? 7 o  s? &	s?
 -s? 
s?j1Fr@   rB   c                   ^     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 )	DefaultDictVariablec                 ^    t        |   ||fi | |t        j                  u sJ || _        y r    )ru   rK   r   defaultdictdefault_factory)rJ   r.   rC   r   rv   rw   s        r$   rK   zDefaultDictVariable.__init__r  s3    3F3;22222.r@   c                 t    | j                   t        t        t        fvr| j                  syt
        |          S )NF)r   listrQ   r   r.   ru   is_python_constantrJ   rw   s    r$   r   z&DefaultDictVariable.is_python_constantw  s1     eT'::4::w)++r@   c                 ^    d| j                   j                          dt        |           dS )Nzdefaultdict(r~   ))r   r   ru   r   s    r$   r   zDefaultDictVariable.debug_repr~  s4    4//::<=R@R@T?UUVW	
r@   c                     t        | t        j                        r"| j                  t        t
        t        t        fv S t        | t        j                  j                        S r    )
r&   r
   r/   fnr   rQ   r   set	functionsBaseUserFunctionVariabler   s    r$   is_supported_argz$DefaultDictVariable.is_supported_arg  sC    c944566dE4555c9#6#6#O#OPPr@   c                 ,   |dk(  r}t        |      dk(  sJ |d   | v r| j                  ||d         S | j                  t        |d          | j                  j	                  |g i       }t
        |   |d|d   |f|       |S t
        |   ||||      S )Nr   r   r   r   )r_   r   r   r   call_functionru   r   )rJ   r   r   r   rv   default_varrw   s         r$   r   zDefaultDictVariable.call_method  s     = t9>!>Aw$))"d1g66''/"d1gY00"&"6"6"D"DRR"PKG'MDG[+A6 '&7&r4v>>r@   r    rg   r   )
rh   ri   rj   rK   r   r   rm   r   r   r   r   s   @r$   r   r   q  sP    /
,

 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                 v    t         j                  |t        j                               }t	        |   |fi | y r    )r   fromkeysr   _default_valueru   rK   rJ   r.   rv   rw   s      r$   rK   zSetVariable.__init__  s0    
 e[%?%?%AB)&)r@   c                     | j                   syddj                  d | j                   j                         D              z   dz   S )Nzset()r}   ,c              3   P   K   | ]  }|j                   j                            y wr    r   r"   rz   s     r$   r%   z)SetVariable.debug_repr.<locals>.<genexpr>       !O!$$//"3!O   $&r   r.   r   r   rX   s    r$   r   zSetVariable.debug_repr  s7    zz!OTZZ__=N!OOORUUUr@   c                 H    t        | j                  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                 p    | j                   D ch c]  }|j                  j                          c}S c c}w r    )r   rI   r(   rJ   rz   s     r$   r(   zSetVariable.as_proxy  s$    )-8A888   !3c                     t         S r    )r   rX   s    r$   r   zSetVariable.python_type  s    
r@   c                 p    | j                   D ch c]  }|j                  j                          c}S c c}w r    r   rI   rU   r   s     r$   rU   zSetVariable.as_python_constant  '    37>>Ba'')BBBr   c                     |j                  | j                  D cg c]  }|j                   c}       |j                  t	        dt        | j                                     y c c}w )N	BUILD_SETr   )foreachr   rI   r   r   r_   rJ   r   r?   s      r$   r   zSetVariable.reconstruct  sE    t~~6!670#dnnBUVW 7s   A$r   rv   r   c                    ddl m}m} |dk(  r1|rJ t        |      dk(  sJ d}|d   t        j                         f}n|dk(  rA|rJ |rJ | j                  j                         j                  }t        	| )  |||f|       |S |dk(  rM|rJ t        |      dk(  sJ t        j                  t        j                        j                  || |d   gi       S |dk(  rM|rJ t        |      dk(  sJ t        j                  t        j                         j                  || |d   gi       S |d	k(  rM|rJ t        |      dk(  sJ t        j                  t        j"                        j                  || |d   gi       S |d
k(  rM|rJ t        |      dk(  sJ t        j                  t        j$                        j                  || |d   gi       S |dk(  rwt        |      dk(  rit'        |d   t        ||f      rS| j(                  rGt'        |d   ||f      rt	        |d   j+                  |            }n|d   }t        	| )  |d|f|      S |dk(  r8|rJ t        |      dk(  sJ |d   | vrt-        d       t        	| )  |d||      S |dk(  rC|rJ t        |      dk(  sJ |d   | v rt        	| )  |d||      S t/        j0                  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   ru   r   r
   r4   r	   set_isdisjointr   set_intersection	set_unionset_differencer&   r   r   r   r   r   )
rJ   r   r   r   rv   r   r,   resultr   rw   s
            r$   r   zSetVariable.call_method  s    	2 5=:t9>!> DG[779:DU]:O8^^''),,FGD6)V<M\!:t9>!>11((mBtAw45 ^#:t9>!>11**mBtAw45 W_:t9>!>11)2E2EFTTT47OR  \!:t9>!>11((mBtAw45 HD	QQ ! ""$q'L-#@A!$q'"="=b"AB1g7&r8cVVDDX:t9>!>Awd"237&r5$??Y:t9>!>Aw$w*2udFCC'..T::w"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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*O$* 
	*V & & - -9CXM; ?#	M;
 S/)*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        |   |fi | y r    )ru   rK   r   s      r$   rK   zFrozensetVariable.__init__!  s    
 	)&)r@   c                     | j                   syddj                  d | j                   j                         D              z   dz   S )Nzfrozenset()r}   r   c              3   P   K   | ]  }|j                   j                            y wr    r   r   s     r$   r%   z/FrozensetVariable.debug_repr.<locals>.<genexpr>,  r   r   r   r   rX   s    r$   r   zFrozensetVariable.debug_repr(  s7    zz !OTZZ__=N!OOORUUUr@   c                 6    | j                   j                         S r    )r.   r   rX   s    r$   r   zFrozensetVariable.set_items.  s    zz  r@   c                     t         S r    )	frozensetrX   s    r$   r   zFrozensetVariable.python_type2      r@   c                 p    | j                   D ch c]  }|j                  j                          c}S c c}w r    r   r   s     r$   rU   z$FrozensetVariable.as_python_constant5  r   r   c                     j                  | j                  D cg c]  }|j                   c}       j                  fd       j	                  t        dd             y c c}w )Nc                  F     j                   j                  d      g      S )Nr  )r   create_load_globalr   s   r$   r   z/FrozensetVariable.reconstruct.<locals>.<lambda>;  s%    G))..{; r@   r   F)r  r   rI   r   r   r   r  s    ` r$   r   zFrozensetVariable.reconstruct8  sR    t~~6!67	
 	21e<= 7s   A%r   rv   r   c                 N    |dv rt        d| d      t        | 	  ||||      S )N)r   r   r   r
  r  r   zIllegal call_method z on a frozenset)r  ru   r   rJ   r   r   r   rv   rw   s        r$   r   zFrozensetVariable.call_methodC  s9     II!5dV?KLLw"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 ! !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                 v    t        |   di | | j                  dv sJ t        |t              sJ || _        y )N)r   r   ro   )ru   rK   r&  r&   rB   r'  )rJ   r'  rv   rw   s      r$   rK   zDictView.__init__X  s>    "6"ww,,,,'#4555r@   c                 `     t        | j                  j                  | j                               S r    )getattrr'  r.   r&  rX   s    r$   
view_itemszDictView.view_items^  s"    3wt||))477355r@   c                     t         r    NotImplementedErrorrX   s    r$   view_items_vtzDictView.view_items_vtb  s
     "!r@   c                 X      fd} j                   D cg c]
  } ||       c}S c c}w )Nc                 >    j                   dk(  r| j                  S | S )Nr   )r&  rI   )r?   rJ   s    r$   unwrapz,DictView.unpack_var_sequence.<locals>.unwrapi  s    77f,1443!3r@   )r+  )rJ   r   r2  r?   s   `   r$   r   zDictView.unpack_var_sequenceh  s&    	4 $(??3aq	333s   'c                      || j                          |j                  | j                         |j                  d       y )Nr   )r'  load_methodr&  r   rJ   r   s     r$   r   zDictView.reconstructn  s.    DGG$Ar@   r   r   rv   c                 n    |dk(  r| j                   j                  ||||      S t        |   ||||      S )Nr   r'  r   ru   r#  s        r$   r   zDictView.call_methods  s>     9<<++BdFCCw"2tT6::r@   )rh   ri   rj   rk   r&  r   r  __annotations__rB   rK   rl   r+  r/  r   r   r   r   r   r   r   s   @r$   r%  r%  O  s     B 1   6 6 " "
4
	; $%		;
 S++,	; 
	; 	;r@   r%  c                   f     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                 T    | j                   D cg c]  }|j                   c}S c c}w r    )r+  rI   r   s     r$   r/  zDictKeys.view_items_vt  s      #oo....s   %c                     t         S r    )r   rX   s    r$   r   zDictKeys.python_type  r  r@   r   r   rv   rF   c                 n    |dk(  r| j                   j                  ||||      S t        |   ||||      S )Nr   r7  r#  s        r$   r   zDictKeys.call_method  s>     >!<<++BdFCCw"2tT6::r@   )rh   ri   rj   r&  rl   r   r/  r   r   r   r  r   r   r   s   @r$   r   r     sl    	B$ $ / /	; $%		;
 S++,	; 
	; 	;r@   r   c                   &    e Zd ZdZed        Zd Zy)r   r   c                 ,    t        | j                        S r    )r   r+  rX   s    r$   r/  zDictValues.view_items_vt  s    DOO$$r@   c                     t         S r    )r   rX   s    r$   r   zDictValues.python_type  s    r@   N)rh   ri   rj   r&  rl   r/  r   ro   r@   r$   r   r     s    	B% %r@   r   rF   c                     t         j                  j                  d      }|t         j                  j                  d      }|d uxr t        | |j                        S )Nztransformers.file_utilsztransformers.utils.generic)sysmodulesr+   
issubclassModelOutputclsmods     r$   _is_matching_transformers_clsrI    sG    
++//3
4C
{kkoo:;d??z#s??r@   c                 x    t         j                  j                  d      }|d uxr t        | |j                        S )Nzdiffusers.utils)rB  rC  r+   rD  
BaseOutputrF  s     r$   _is_matching_diffusers_clsrL    s/    
++//+
,Cd?>z#s~~>>r@   r   r   r   r   c           
         |j                   j                  j                  |       ra	 |j                   j                  j                  | |d      }t        j
                  j                  t        |t        j                               S || j                  v st        | j                  |      rt        d      S t        | j                  t              r| j                   t        d      S | j                   r	 |j                   j"                  j%                  | j                         }t'        t)        | j                   |      j+                  t,        j.                               t        t        ||            S t1        d| j2                  j4                   d| d| j                   d| j                           y# t        $ r Y 9w xY w# t        $ r Y [w xY w)	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   rw   rh   )rJ   r   r   r  examples        r$   _call_hasattr_customobjrX    s    
yy33D9	YY++55dDT5RF--44vy'@'@AA 
 tzzWT]]D9%%	""L	1dkk6I&&		ii''99$++FG4;;-889M9MN $GGT$:;; 
4>>**+2dV2d6H6H5I4;;-X#  		  		s%   AF4 4A?G 4	G G	GG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                 2    t        |       xs t        |       S r    )rI  rL  rG  s    r$   is_matching_cls_hfz)CustomizedDictVariable.is_matching_cls_hf  s    ,S1T5OPS5TTr@   c                     t        | t        j                        rE| t        j                  ur3| j                  t        j                  j                  u rt	        | d      syt
        j                  |       S )N__post_init__T)rD  r   r   rK   rR  rZ  r]  r\  s    r$   is_matching_clsz&CustomizedDictVariable.is_matching_cls  sZ     sK334;222 7 7 @ @@C1 &88==r@   c                 6    | j                  t        |            S r    r`  rH   rG  objs     r$   is_matching_objectz)CustomizedDictVariable.is_matching_object      ""49--r@   c                    dD ]R  }t        ||      st        ||      }t        |      s
J d|        t        |d      s>t        |j                         T t        j                  |      r t        j                  |      j                  |i |}|j                          d }i }	| j                  |      rG|j                  j                         D ])  \  }
}t        |t              r|j                   |%||	|
<   + n|j                  }	|	j                         D 
ci c]!  \  }
}t        j"                  |
       ||      # }}
}nw|s7|j                         D 
ci c]  \  }
}t        j"                  |
      | }}
}n>t%        |      dk(  r%t        |d   t&              r|s|d   j                  }nt)        d        | |fi |S c c}}
w c c}}
w )N)rK   r_  __setattr__r   zexpect callable attr __code__c                     t        | t              r| S t        j                  |       rt        j                  |       S t        d       y )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H%003+22155!Or@   r   r   z/custom dict init with args/kwargs unimplemented)rR  r*  callabler   ri  dataclassesis_dataclassinspect	signaturebindapply_defaultsr]  	argumentsr.   r&   r   rS   r   r_   rB   r   )rG  rC   r   rv   options	attr_namer   boundrk  
bound_argsrz   r^   r.   s                r$   r   zCustomizedDictVariable.create  s    U 	+Ix+Xy1|H'<YK%HH|2z*bkk*	+ ##H-4G%%h/44dEfEE  " J%%h/!OO113 &DAq!!%56177?ai $%JqM&
 #__
 EODTDTDV<@Aq ''*HQK7E  ?E||~Ntq!%,,Q/2NENY!^
474E FvGMMEKL5(.g..
 Os   &G	 Gc           	      @   t        |      }| j                  |      st        d        |j                  |j                  |j
                        t        j                  |            j                  }t        j                  |      D cg c]  }|j                   }}|D ]o  }t        ||      st        ||      } |j                  |j                  t        |j
                  |            |      }	|Vt        j                   |      }|	||<   q  | ||      S c c}w )Nz.custom non-hf dict subclass wrap unimplemented)r   r   )rH   r]  r   rw   r   r   r   r   r.   rm  fieldsr   rR  r*  r   r   r   )
rG  builderrd  rC   r.   fr   rs   valvars
             r$   wrapzCustomizedDictVariable.wrap  s   9%%h/JKG!!WZZ!G##C(

% 	 !, 2 28 <=1== 		%CsC c3'g''zz*W^^S*I (  ?*11#6C!$E#J		% 5(## >s   	DrF   c                 N    t        |   ||fi | | j                  |      sJ y r    )ru   rK   r`  )rJ   r.   rC   rt  rw   s       r$   rK   zCustomizedDictVariable.__init__6  s+    4G4##H---r@   c                     t         r    r-  rX   s    r$   r(   zCustomizedDictVariable.as_proxy:  s    !!r@   c                 V     j                   j                         fd}j                  |        j                         }j	                  |j                                t        |j                               }j                  j                  t        |      |d             y )Nc                      rfd} j                  |        j                  j                  j                        g       rj                  t	        dd             y y )Nc                       j                   j                  dd              j                   j                  d              j                   j                  d             y )NtorchT)r   _dynamodisable)r   r!  r   r   s   r$   gen_fn2zDCustomizedDictVariable.reconstruct.<locals>.gen_fn1.<locals>.gen_fn2L  sT    ))'*D*DWRV*D*WX))'*B*B9*MN))'*B*B9*M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
 %%g.!!7#=#=dmm#L"MN!%%&:1e&DE "r@   F)r]  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	F. 	g& ((*
#QVVXg==c$iuUVr@   r   c                    t        | j                  |      }| j                  d nt        | j                  |      }t	        |d      r4|j
                  t        t        j                  fv rt        | )  ||||      S |dv r5|j                  t        j                  ||      | gt        |      z   |      S |t        t        j                  |d       u rt        | )  ||||      S t        d|        y )N__objclass__)r   to_tupler   rh  r_  )r   z,custom dict: call_method unimplemented name=)r*  rC   r   r   rR  r  r   r   r   ru   r   inline_user_function_returnr
   r4   r   r   )rJ   r   r   r   rv   r   r   rw   s          r$   r   z"CustomizedDictVariable.call_methoda  s     T]]D),*T[[$2O2~&2??##?
 ,

 7&r4v>> 
 
 11..r&Ad# 
 7;22D$??7&r4v>>DTFKLr@   r   r   r   c                    t        j                  |      }|| v r| j                  |d|gi       S t        j                  | j
                        rt        j                  | j
                        D ci c]  }|j                  |j                   }}||v rFt        j                   j                  ||         sJ t        j                   j                  ||         S t        | 1  ||      S c c}w )Nr   )r   r   r   rm  rn  rC   ry  r   defaultr
   re   ru   var_getattr)rJ   r   r   name_vtr{  defaultsrw   s         r$   r  z"CustomizedDictVariable.var_getattr  s    "))$/d?##By"EE##DMM23>3E3Edmm3TUa		)UHUx 11<<Xd^LLL 1188$HHw"2t,,	 Vs   0C*rg   r   )rh   ri   rj   rm   r]  r`  classmethodre  r   r~  rK   r(   r   r   r  r  rX  r   r   r   s   @r$   rZ  rZ    s    U U > > . .
 ./ ./b $ $.."
 WD M &	 M
 - M 
 MD	-5 	-S 	-EV 	- +Lr@   rZ  c                  H    dd l } d }|| j                  j                  _        y )Nr   c                 N    t        |d      sy| j                  |j                  k(  S )Nr   F)rR  r   )rJ   rc   s     r$   !_dynamo_overriden_transformers_eqzJ_install_PretrainedConfig_patch.<locals>._dynamo_overriden_transformers_eq  s"    uj)}}..r@   )transformersconfiguration_utilsPretrainedConfigrf   )r  r  s     r$   _install_PretrainedConfig_patchr    s#    
/ 	* $$55<r@   c                   l     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                  j                  d      }|d uxr t        | |j                        }|r
t                |S )Nz transformers.configuration_utils)rB  rC  r+   rD  r  r  )rG  rH  is_matchs      r$   r`  z*HFPretrainedConfigVariable.is_matching_cls  s@    kkoo@Ad?Lz#s7K7K'L +-r@   c                 6    | j                  t        |            S r    rb  rc  s     r$   re  z-HFPretrainedConfigVariable.is_matching_object  rf  r@   rF   c                 j    t        |   di | || _        | j                  t	        |            sJ y )Nro   )ru   rK   rd  r`  rH   )rJ   rd  rv   rw   s      r$   rK   z#HFPretrainedConfigVariable.__init__  s2    "6"##DI...r@   r   r   r   r   c                     ddl m} 	 t        | j                  |      }t	        | j
                  |      }  |||      |      S # t        $ r t        d| j                   d| d       Y y w xY w)Nr   VariableBuilderzgetattr(r~   r   )	rz  r  r*  rd  r   r   AttributeErrorr   rS   )rJ   r   r   r  
attr_valueattr_sources         r$   r  z&HFPretrainedConfigVariable.var_getattr  sh    ,	< 40J$T[[$7K3?2{3J?? 	<HTZZL4&:;	<s   :A %A+*A+c                 h    t         j                  j                  t        | j                  |            S r    )r
   r   r   rR  rd  r   s      r$   r   z'HFPretrainedConfigVariable.call_hasattr  s$    ))0041HIIr@   rg   )rh   ri   rj   rk   rm   r`  r  re  rK   r  r  r   r   r   s   @r$   r  r    sq       . ./
	<5 	<S 	<EV 	<J6 Jc JFW 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y)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                 .    j                  fd       y )Nc                  n     j                   j                  t               j                  d      g      S )NrC  )r   r   rB  r   r   s   r$   r   z6PythonSysModulesVariable.reconstruct.<locals>.<lambda>  s3    G))55c:,,Y7 r@   )r   r5  s    `r$   r   z$PythonSysModulesVariable.reconstruct  s    	
r@   r   r   r   rv   c           	          |dk(  r | j                   |g|i |S |dk(  r | j                  |g|i |S |dk(  r | j                  |g|i |S t        d| d| d| d       y )Nr   r+   r   zsys.modules.z(*z, **r   )call_getitemcall_getcall_containsr   )rJ   r   r   r   rv   s        r$   r   z$PythonSysModulesVariable.call_method  s     = $4$$R9$9&99U] 4==5d5f55^#%4%%b:4:6::TF"TF$vha@Ar@   rs   c           	          |j                         }|t        j                  v }t        | j	                  t        j                  t        j                  ||                    ||fS )N)rs   invert)	rU   rB  rC  r   rU  	functoolspartialr   DICT_CONTAINSrJ   r   rs   rz   has_keys        r$   _contains_helperz)PythonSysModulesVariable._contains_helper  sY    ""$s{{"OO!!,"<"<!PWKX	

 'zr@   c                 X    | j                  ||      \  }}t        j                  |      S )Nr  )r  r   r   r  s        r$   r  z&PythonSysModulesVariable.call_contains  s)    **2s3
7&&W55r@   Nr  c                     ddl m} | j                  ||      \  }}|r4  ||t        | j                  |            t
        j                  |         S ||S t        j                  d       S )Nr   r  r  )	rz  r  r  r   r   rB  rC  r   r   )rJ   r   rs   r  r  rz   r  s          r$   r  z!PythonSysModulesVariable.call_get  sr     	-**2s3
7?dkk1- kk!n 
 N&&T22r@   c                     ddl m} | j                  ||      \  }}  ||t        | j                  |            t
        j                  |         S )Nr   r  )rz  r  r  r   r   rB  rC  )rJ   r   rs   r  rz   r  s         r$   r  z%PythonSysModulesVariable.call_getitem  sO    ,**2s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#:  6 7 6o 6 .2	3#3 3 /*	3*6 _ r@   r  );r   rm  r  ro  rB  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   rI  rL  r  rX  rZ  	lru_cacher  r  r  ro   r@   r$   <module>r     s1       
 6 6 1 # N " 9 0 . F F / & D
<pF pFf	/?+ /?jw:# w:t,; ,;^-; -;`;x ;6	 	@$ @?t ?
%-0@|+. |+~ T  $J $JNM Mr@   