
    9j-                     d   d Z ddlZddlZddlZddlmZmZmZ ddlm	Z	m
Z
mZmZ ddlmZ ddlmZ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mZ ddlmZm Z m!Z!m"Z" ddl#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z) ddl*m+Z+m,Z,m-Z-m.Z.m/Z/ ddl0m1Z1 ddl2m3Z3m4Z4m5Z5 ddl6m7Z7 erddl8m9Z9 ddl:m;Z; ddl<m=Z=  G d de/      Z> G d de/      Z? G d de>      Z@ G d de>      ZA G d de/      ZB G d d eB      ZC G d! d"eB      ZD G d# d$eB      ZEe3eFz  ZG G d% d&ej                  j                  eGe/f         ZJ G d' d(e>      ZKy))aI  
Dictionary-related variable tracking classes for PyTorch Dynamo.

This module implements variable tracking for different types of dictionary-like objects:
- Regular Python dictionaries (dict)
- Ordered dictionaries (collections.OrderedDict)
- Default dictionaries (collections.defaultdict)
- Dictionary views (keys and values)

These classes are responsible for tracking dictionary operations during graph compilation,
maintaining proper guards for dictionary mutations and key existence checks. They handle
dictionary creation, modification, key/value access, and view operations while ensuring
correct behavior in the compiled code through appropriate guard installation.

The implementation uses a special HashableTracker wrapper to handle
dictionary keys while preserving proper aliasing semantics. Set-related classes live
in sets.py.
    N)CallableIteratorSequence)AnyLiteralTYPE_CHECKINGUnion)
MappingKey   )graph_break_hints	polyfills	variables)create_call_functioncreate_call_methodcreate_dup_topcreate_instruction)raise_observed_exceptionunimplemented)GuardBuilderinstall_guard)
AttrSourceDictGetItemSourceis_constant_sourceis_from_local_source)cmp_name_to_op_mapping
dict_items	dict_keysdict_valuesistyperaise_args_mismatch   )AttributeMutationExistingAttributeMutationNewNO_SUCH_SUBOBJValueMutationNewVariableTracker)ConstantVariable)HashableTrackeris_hashableraise_unhashable)SetVariable)	PyCodegen)InstructionTranslator)UserFunctionVariablec                       e Zd ZeZej                  Zej                  Z	dhe
j                  Zefdee
e
f   dededdf fdZdedefdZdeeef   fdZdefd	Zdeeef   fd
Zdeee
f   fdZdefdZde
defdZddddde
dee
   deee
f   de
fdZddddde
dee
   deee
f   deedf   de
fdZdefdZdefdZde
dz  de
defdZd3dZ d3d Z!ddd!e
de
fd"Z"ddd!e
de
fd#Z#d!e
de
dz  fd$Z$d!e
ddfd%Z%d4d&Z&ddd'e'e
   ddfd(Z(ddd)e
de
fd*Z)ddd+ed'e'e
   deee
f   de
f
 fd,Z*ddde'e
   fd-Z+ddde
fd.Z,ddd+ede-fd/Z.dede
f fd0Z/defd1Z0ddd+ef fd2Z1 xZ2S )5ConstDictVariableuser_clsitemskwargsreturnNc           	         d|v r|j                  d       d|v r|j                  d       t        	|   d	i | t        t	        fd|j                         D              sJ dt        t        df   ddffd}| j                  |      } ||j                         D ci c]  \  }} ||      | c}}      | _        | j                  rt        | j                         nd| _        |j                         | _        || _        y c c}}w )
Noriginal_itemsshould_reconstruct_allc              3   l   K   | ]+  \  }}t        |t        f      xr t        |t               - y wN)
isinstancer&   ).0xvHashables      ]/media/conek/DATA/Code/OCR/venv/lib/python3.12/site-packages/torch/_dynamo/variables/dicts.py	<genexpr>z-ConstDictVariable.__init__.<locals>.<genexpr>i   s?      
 1 q?H56 /1o./
s   14keyr(   r4   c                 0    t        |       r| S  |       S r9   )r:   )rA   r>   s    r?   make_hashablez1ConstDictVariable.__init__.<locals>.make_hashableo   s     %S(33F#F    T )popsuper__init__r(   allr2   r	   r&   _get_dict_cls_from_user_clssourcer   r7   copyr6   r1   )
selfr2   r1   r3   rC   dict_clsr<   r=   r>   	__class__s
           @r?   rH   zConstDictVariable.__init__W   s    v%JJ'(#v-JJ/0"6""  
 
 
 	
 
	G(99:	G	G
 33H=u{{}Mtq!}Q/2MN
 6:[[$T[[11d 	# $jjl  Ns   #D	
c                     t         t        j                  t        j                  f|v r|}nt	        fd|j
                  D              }|v sJ |       |t        j                  u rt         }|S )Nc              3   ,   K   | ]  }|v s|  y wr9   rE   )r;   baseaccepted_dict_typess     r?   r@   z@ConstDictVariable._get_dict_cls_from_user_cls.<locals>.<genexpr>   s      T=P5Ps   	)dictcollectionsOrderedDictdefaultdictnext__mro__)rM   r1   rN   rS   s      @r?   rJ   z-ConstDictVariable._get_dict_cls_from_user_cls~   s{    #[%<%<k>U>UV **H  !)!1!1 H ..88. {...HrD   c                     | j                   j                         D ci c].  \  }}|j                  j                         |j                         0 c}}S c c}}w r9   )r2   vtas_proxyrM   kr=   s      r?   r\   zConstDictVariable.as_proxy   s<    :>**:J:J:LM$!Q-MMM   3Ac                    g }| j                   j                         D ]  \  }}t        |j                  d      rt        |j                  j                        n|j                  j                         }t        |d      rt        |j                        n|j                         }|j                  | d|         ddj                  |      z   dz   S )Nvaluez: {, })r2   hasattrr[   reprra   
debug_reprappendjoinrM   r2   r^   r=   key_strval_strs         r?   rg   zConstDictVariable.debug_repr   s    JJ$$& 	2DAq*1!$$*@d144::&addooFWG'.q'':d177mGLLG9Bwi01	2 TYYu%%++rD   c                     | j                   j                         D ci c].  \  }}|j                  j                         |j                         0 c}}S c c}}w r9   )r2   r[   as_python_constantr]   s      r?   rn   z$ConstDictVariable.as_python_constant   sP     

((*
1 DD##%q';';'==
 	
 
r_   c                     | j                          | j                  j                         D ci c]   \  }}|j                  j                         |" c}}S c c}}w r9   )install_dict_keys_match_guardr2   r[   rn   r]   s      r?   keys_as_python_constantz)ConstDictVariable.keys_as_python_constant   sE    **,9=9I9I9KLA'')1,LLLs   %Ac                     | j                   S r9   r1   rM   s    r?   python_typezConstDictVariable.python_type   s    }}rD   r[   c                     t        |t              sJ t        }t        |      sy ||      }|| j                  v xr( t        | j                  |   t
        j                         S NF)r:   r&   r(   r)   r2   r   DeletedVariable)rM   r[   r>   rA   s       r?   __contains__zConstDictVariable.__contains__   s_    "o..."2rldjj  
JJsOY66*
 &
 	
rD   txr-   tree_map_fnr.   map_fnresttree_map_kwargsc           
         g }|D ]u  }|j                         }t        |t              r+t        |j                        t        | j                        k7  r| j                  |||||      c S |j                  |       w  t        | j                               }| j                  j	                         D ]E  \  }	}
g }|D ]!  }	 |j                  |j                  |	          # |
j                  |||||      ||	<   G |D 	ci c]  }	|	j                  ||	    }}	| j                  ||dd t                     S # t        $ r | j                  |||||      cY c c S w xY wc c}	w NT)r2   r6   r7   rK   mutation_type)realizer:   r0   lenr2   _tree_map_fallbackrh   typeKeyErrorcall_tree_mapr[   cloner%   )rM   rz   r{   r|   r}   r~   other_dicts	candidatenew_items_hashedkey_trackerra   sibling_leavesupdated_original_itemss                r?   call_tree_map_branchz&ConstDictVariable.call_tree_map_branch   s    02 	*I!))+Ii):;s@TZZ@! ..VT?  y)	* ,4

+-"&**"2"2"4 	K46N( 	")))//+*FG -2,?,?-[)	&  0"
 NN,[99"
 "

 zz"1#'*,  
 	
#   22K "
s   ?D4=E4EEkeypath.c                    g }|D ]v  }|j                         }t        |t              r+t        |j                        t        | j                        k7  r| j                  ||||||      c S |j                  |       x  t        | j                               }	| j                  j	                         D ]o  \  }
}g }|D ]!  }	 |j                  |j                  |
          # |
j                  j                         }|t        |      fz   }|j                  ||||||      |	|
<   q |	D 
ci c]  }
|
j                  |	|
    }}
| j                  |	|dd t                     S # t        $ r | j                  ||||||      cY c c S w xY wc c}
w r   )r   r:   r0   r   r2   _tree_map_with_path_fallbackrh   r   r   r[   rn   r
   call_tree_map_with_pathr   r%   )rM   rz   r{   r|   r}   r~   r   r   r   r   r   ra   r   	key_constchild_keypathr   s                   r?   call_tree_map_with_path_branchz0ConstDictVariable.call_tree_map_with_path_branch   s    02 	*I!))+Ii):;s@TZZ@! 88VT?G  y)	* ,4

+-"&**"2"2"4 	K46N( 	")))//+*FG $99;I#z)'<&>>M,1,I,I-[)	,  0"
 NN,[99"
 "

 zz"1#'*,  
 	
)   <<K "
s    E(FFFc                 V    t        d | j                  j                         D              S )Nc              3   R   K   | ]  }t        |t        j                          ! y wr9   )r:   r   rx   )r;   r<   s     r?   r@   z(ConstDictVariable.len.<locals>.<genexpr>  s%      
=>
1i7788
s   %')sumr2   valuesrt   s    r?   r   zConstDictVariable.len  s)     
BF**BSBSBU
 
 	
rD   c                 x      j                   xs, t         fd j                  j                         D              S )Nc              3      K   | ]<  \  }}j                  j                  j                  |j                        |       > y wr9   )is_new_itemr6   getr[   )r;   rA   ra   rM   s      r?   r@   z2ConstDictVariable.has_new_items.<locals>.<genexpr>!  s?      2
U T0044SVV<eD2
s   AA)r7   anyr2   rt   s   `r?   has_new_itemszConstDictVariable.has_new_items   s7    ** 
c 2
"jj..02
 /
 	
rD   ra   otherc                     |rS|j                         rC|j                         r3t        |j                               t        |j                               k7  S t        |      t        |      k7  S r9   )is_realizedidr   )rM   ra   r   s      r?   r   zConstDictVariable.is_new_item&  sQ     U&&(U->->-@emmo&"U]]_*===%yBuI%%rD   c                 J   d}| j                   j                         D ]h  \  }}| j                  j                  |j                        }| j	                  ||      s| j
                  sJ ||j                          ||       |dz  }j |j                  t        d|             y )Nr   r!   	BUILD_MAParg)r2   r6   r   r[   r   r7   append_outputr   )rM   codegennum_argsrA   ra   items         r?   reconstruct_kvs_into_new_dictz/ConstDictVariable.reconstruct_kvs_into_new_dict.  s    ****, 	JC&&**3662De,0K0KA	 	0(KLrD   c                 "   | j                   t        j                  u rj                  fd       | j	                         rj                  g t        dd      t                      j                  |        j                  t                      j                  d       | j                         j                  g t        d      t        d             y | j                         j                  t        dd             y | j	                         rej                  t        dd      t               g       j                  |        | j                         j                  t        d	d             y | j                         y )
Nc                  n     j                   j                  t               j                  d      g      S )NrV   extend_outputcreate_load_python_modulerU   create_load_attrr   s   r?   <lambda>z/ConstDictVariable.reconstruct.<locals>.<lambda>>  s3    --99+F00? rD   r   Fupdater!   POP_TOPr   r   DICT_UPDATE)r1   rU   rV   add_push_null_contains_self_referencer   r   r   	add_cacher   load_methodr   r   r   rM   r   s    `r?   reconstructzConstDictVariable.reconstruct:  sf   ==K333!! ,,.%%-a7&( !!$'%%n&67##H-227;%%+A.*95 227;%%&:1e&DE,,.%%*;A>&( !!$'227;%%&8A&NO 227;rD   r   c                 x    t        |      }|| j                  vrt        t        ||g       | j                  |   S )Nargs)r(   r2   r   r   )rM   rz   r   rA   s       r?   'getitem_const_raise_exception_if_absentz9ConstDictVariable.getitem_const_raise_exception_if_absenti  s6     c"djj $Xr>zz#rD   c                     t        |      }|| j                  vr=d|j                   d}t        dd|j                   |dgt        j
                         | j                  |   S )NzDictionary key z not found during tracingzkey not found in dictzKey z>Check if the key exists in the dictionary before accessing it.gb_typecontextexplanationhints)r(   r2   ra   r   r   
USER_ERROR)rM   rz   r   rA   msgs        r?   getitem_constzConstDictVariable.getitem_constq  so     c"djj #CII;.GHC/syyk*T&11	 zz#rD   c                 T    t        |      }|| j                  vry | j                  |   S r9   )r(   r2   )rM   r   rA   s      r?   maybe_getitem_constz%ConstDictVariable.maybe_getitem_const  s)    c"djj zz#rD   c                 ,   || v sJ t        |      }t        | j                  j                               j	                  |      }t        | j
                  j                               |   }t        |t        j                        r|j                          y y r9   )
r(   tupler2   keysindexr6   r:   r   LazyVariableTrackerr   )rM   r   rA   r   original_key_vts        r?   realize_key_vtz ConstDictVariable.realize_key_vt  sx    d{{c"djjoo'(..s3 3 3 8 8 :;EBoy'D'DE##% FrD   c                 n    | j                   r)t        | j                  t        j                               y y r9   )rK   r   
make_guardr   DICT_KEYS_MATCHrt   s    r?   rp   z/ConstDictVariable.install_dict_keys_match_guard  s%    ;;$//,*F*FGH rD   r   c           	         | j                   sy |j                  j                  j                  |       ry |d   | v }|d   j                   |d   j	                         rm|rt        |       j                  nt        |       j                  }t        | j                  t        j                  ||d   j                                            y |d   j                   r(|r| j                  |d          y | j                          y y )Nr   )rA   )rK   outputside_effectsis_modifiedis_python_constantr   CONTAINS_GUARDNOT_CONTAINS_GUARDr   r   	functoolspartialrn   r   rp   )rM   rz   r   containsguard_fns        r?   install_dict_contains_guardz-ConstDictVariable.install_dict_contains_guard  s    " {{99!!--d37d?7>>!d1g&@&@&B-5T
))4:;X;X  %%  G668 !W^^##DG,224	 rD   rA   c                 &    | j                  ||      S r9   )r   rM   rz   rA   s      r?   mp_subscript_implz#ConstDictVariable.mp_subscript_impl  s     ;;BDDrD   namec           
      (   ddl m} ddlm} t        }|dk(  rz |j
                  |t        g|i |}|j                  j                  j                  |        | j                  j                  |j                         t        j                  d       S |dk(  r|s|r&t        ||dt        |       dt        |       d       | j!                          | j"                  r/|j                  j$                  j'                  | j"                         t)        |       S |d	k(  r{t        |      rt        ||d
t        |       d       | j!                          | j"                  r/|j                  j$                  j'                  | j"                         t+        |       S |dk(  r|s|r&t        ||dt        |       dt        |       d       | j!                          | j"                  r/|j                  j$                  j'                  | j"                         |s|rt-        t.        |       t1        |       S |dk(  rn| j!                          |s|r&t        ||dt        |       dt        |       d       | j3                  | j                  j5                         t7               d       S |dk(  r| j9                         r|xr t;        |d         }	|	st=        |d   |       | j!                          |st        |      dk7  r&t        ||dt        |       dt        |       d       |j                  j                  j                  |        |d   | j                   ||d         <   t        j                  d       S |dk(  r| j9                         r|xr t;        |d         }	|	ru| j!                          d| _        |j                  j                  j                  |        | j                  jA                   ||d                t        j                  d       S tB        |   ||||      S |dk(  rt        |      dvrt        ||dt        |       d       |xr t;        |d         }	|	st=        |d   |       |d   | vr:| jG                  ||       t        |      dk(  rt        j                  d       S |d   S | jI                  ||d         S |dk(  r| j9                         rt        |      dvrt        ||dt        |       d       |xr t;        |d         }	|	st=        |d   |       |d   | vr5| jG                  ||       t        |      dk(  rt-        tJ        |       |d   S d| _        |j                  j                  j                  |        | j                  jM                   ||d               S |dk(  r| j9                         rtO        | jP                  t              r;tO        | jP                  tR        jT                        st        |      rt        ||       | j                  st-        tJ        |dg       | jP                  tR        jT                  u rt        |      dk(  sd|v rt        |      dk(  r'|d   jW                         r|d   jY                         }
n@|j[                  d      x}r!|jW                         r|jY                         }
nt        ||       | j                  j]                  
      \  }}n| j                  j]                         \  }}d| _        |j                  j                  j                  |        t_        j`                  |jb                  |g      S |dk(  r|s|r&t        ||dt        |       dt        |       d       d| _        |j                  j                  j                  |        | j                  je                          t        j                  d       S |dk(  rU| j9                         rD| j!                          t        |      dk(  }t        |      dkD  }|s|r|j                  j                  j                  |        |rktg        |d   th              r|d   j!                          |d   }n|j                  |t        |d         }| j                  j                  |j                         |rX|j                         D ci c]"  \  }} |tk        jl                  ||            |$ }}}| j                  j                  |       t        j                  d       S tB        |   ||||      S |d k(  rt        |      s&t        ||d!t        |       dt        |       d       |xr t;        |d         }	|	st=        |d   |       | jG                  ||       |d   | v }tk        jl                  ||      S |d"k(  r-| j9                         rt        |      dvr&t        ||d#t        |       dt        |       d       |xr t;        |d         }	|	st=        |d   |       | j!                          |st        |      dkD  r&t        ||d$t        |       dt        |       d       | jo                  |d         }||S t        |      dk(  rt        j                  d       }n|d   }|j                  j                  j                  |        || j                   ||d         <   |S |d%k(  r| j!                          |j                  j                  j                  |        |d   | vrt-        tJ        |       d}
t        |      dk(  r&|d   jW                         r|d   jY                         }
|r6d|v r2|d   jW                         r|j[                  d      jY                         }
 ||d         }| j                  jq                  ||
       t        j                  d       S |d&k(  rnts        | th              r^t        |      dk7  rt        ||d't        |       d       |j                  |tt        jv                        jy                  || |d   gi       S |d(k(  r3tk        jl                  || jE                  |d&||      jz                         S |d)k(  rt        |      dk7  rt        ||d't        |       d       |d   }ts        |th        t^        j|                  t^        j~                  f      rtg        |t^        j|                        r6|j                  J tg        |j                  th              sJ |j                  }| jP                  t        ur| jP                  }| }n|jP                  }|}|j!                          |j3                  | j                  j5                         t7               d |*      }|d   j!                          |j                  j                  |d   j                         |S t-        t.        |d+| j                         j                   d,|j                         j                   d-g       y |d.k(  r| jE                  |d||       | S |d/k(  rwdd0lCmD} | j"                  rDt        | j"                        s/|j                  j$                  j'                  | j"                          || j                  |      t7               1      S tB        |   ||||      S c c}}w )2Nr!   )DictBuiltinVariable)SourcelessBuilderrH   r2   z0 args and 0 kwargsz
 args and z kwargsr   z0 args argsr   rL   )r2   r   rK   __setitem__r   r   z2 args and 0 kwargs__delitem__Tr   )r!   r   z1 or 2 argsrF   popitemzpopitem(): dictionary is emptyr   last)r   clearr   ry   zmore than 1 args and 0 kwargs
setdefaultz1 or 2 args and 0 kwargszat most 2 args and 0 kwargsmove_to_end__eq__1 args__ne____or__)r2   r   rK   r1   z$unsupported operand type(s) for |: 'z'and ''__ior____iter__ListIteratorVariabler   )G r   builderr   r(   call_custom_dictrT   r   r   mutationr2   r   r'   creater    r   rp   rK   guard_on_key_orderaddDictItemsVariableDictKeysVariabler   	TypeErrorDictValuesVariabler   rL   r%   
is_mutabler)   r*   r7   r   rG   call_methodr   r   r   rF   
issubclassr1   rU   rV   r   rn   r   r   r   TupleVariabler[   r   r:   r0   r&   buildr   r   r   r   dict___eq__call_functionra   UserDefinedDictVariableDefaultDictVariable_base_vtru   __name__listsr   r   unpack_var_sequence)rM   rz   r   r   r3   r   r   r>   temp_dict_vtarg_hashabler   r=   r^   has_arg
has_kwargsdict_vtkwargs_hashabler   ra   r<   rA   r   r1   to_cpynew_dict_vtr   rO   s                             r?   r	  zConstDictVariable.call_method  sj    	*.":?.??D#)L II""++D1JJl001#**400W_v#)4ykCK=@	 ..0{{		,,00=$T**V^4y#Bh3t9+U8KL..0{{		,,00=#D))Xv#)4ykCK=@	 ..0{{		,,00=v(B7%d++V^..0v#)4ykCK=@	 ::jjoo'7G7IRV    ]"t'88KQ$8L a"-..0Ta#)4ykCK=@	 II""++D1,0GDJJxQ()#**400]"t'88KQ$8L224.2+		&&//5

&&xQ'89'..t44w*2tT6BBU]4y&#BmD	{%=PQ8KQ$8L a"-Awd"00T:t9>+22488Aw%%b$q'22U]t04y&#BmD	{%=PQ8KQ$8L a"-Awd"00T:t9>,Xr:Aw*.D'II""++D1::>>(47"344Y4??#44==$/"4==+2I2IJI#B-::(8 }} 7 77D	Q&F"2t9>d1g&@&@&B7557D!::f--a-13G3G3I//1D'D1zz))t)41zz))+1*.D'II""++D1**ADD!955W_v#)4ykCK=@	 +/D'II""++D1JJ#**400X$//"3 ..0$i1nGVqJ*		&&//5!$q'+<= Q==?"&q'"5"F"Fd1g# JJ%%gmm4 %+LLN' Aq !!6!6r1!=>A'O ' JJ%%o6'..t44w*2tT6BB^#t9#34ykCK=@	  8KQ$8L a"-,,R6Aw$H"((X66\!doo&74y&#.4ykCK=@	  8KQ$8L a"-..0TQ#14ykCK=@	 ,,T!W5E t9>(//5AQA		&&//501

8DG,-]"..0II""++D1Awd"(26D4yA~$q'"<"<">Aw113&F*vf~/P/P/Rzz&)<<>47#CJJ""3T"2#**400X&##
 4yA~#Bh3t9+U8KL$++B	0E0EFTTT47OR  X"(($$R4@FFF  X4yA~#Bh3t9+U8KLGE& %5511 eY%F%FG >>555%enn6GHHH!NNE
 ==,#}}H!F$~~H"F446$ll**//+"2"4%	 +  Q557!!((a7""(>t?O?O?Q?Z?Z>[ \  % 1 1 3 < <=Q@ YR48KZ3{{#5dkk#B		,,00='((,<L<N  7&r4v>>M's   ('|c                 t    | j                          | j                  D cg c]  }|j                   c}S c c}w r9   )rp   r2   r[   )rM   rz   r<   s      r?   r  z%ConstDictVariable.unpack_var_sequence8  s*    **,"jj))))s   5c                 t    | j                          t        j                  |t        | j                              S )z Mapping length for dict objects.)rp   r&   r  r   r2   rM   rz   s     r?   	mp_lengthzConstDictVariable.mp_length<  s)    **,$$RTZZ99rD   c                     t         fdt        t        j                  t        j                  fD              rRt         j                  |      rt        j                  d      S  j                  t        u rt        j                  d      S d j                   d}t        dd j                   |dgt        j                  	       y )
Nc              3   :   K   | ]  }j                   |u   y wr9   rs   )r;   trM   s     r?   r@   z5ConstDictVariable.call_obj_hasattr.<locals>.<genexpr>F  s"      
 MMQ
s   TFzhasattr on z is not supportedzunsupported hasattr operationzClass z+Consider using a regular dictionary insteadr   )r   rT   rU   rV   rW   re   r1   r'   r  r   r   SUPPORTABLE)rM   rz   r   r   s   `   r?   call_obj_hasattrz"ConstDictVariable.call_obj_hasattrA  s    
  
K33[5L5LM
 
 t}}d+'..t44}}$'..u55DMM?*;<3T]]O,="..		
rD   c                 B    | j                          t        |   di |S NrE   )rp   rG   r   )rM   r3   rO   s     r?   r   zConstDictVariable.cloneZ  s!    **,w}&v&&rD   c                      y)zP
        Dictionaries are mutable and therefore not hashable in Python.
        FrE   rt   s    r?   is_python_hashablez$ConstDictVariable.is_python_hashable^       rD   c                 v    |dk(  r$t        j                  || j                               S t        |   ||      S )NrO   )r&   r  ru   rG   var_getattrrM   rz   r   rO   s      r?   r,  zConstDictVariable.var_getattrd  s9    ;"((T-=-=-?@@w"2t,,rD   r   r,   r4   Nr4   N)3r  
__module____qualname__rT   _cpython_typer   DICT_CONTAINSr   DICT_NOT_CONTAINSr   r&   _nonvar_fieldsr   r   rH   rJ   r\   strrg   rn   rq   ru   boolry   r   r   r   r   intr   r   r   r   r   r   r   r   r   rp   listr   r   r	  r  r   r'   r%  r   r)  r,  __classcell__rO   s   @r?   r0   r0   K   sj   M!//N%77 			'	'N %!O_45%! %! 	%!
 
%!ND T &N$sCx. N,C ,
DcN 
Mc?.B)C MT 
 
4 
0
#0
 ,0
  	0

 '0
 c?230
 
0
d4
#4
 ,4
  	4

 '4
 c?234
 sCx4
 
4
l
S 


t 
&$t+&4C&	&
M-<^)0?	)0?	" ?T;Q &/ &d &I(5)(515o1F(5	(5TE#E E 
	En?#n? n? ?#	n?
 S/)*n? 
n?`*&= *$BW *:3 : :

)
14
	
2'c 'o 'D -5 -S - -rD   r0   c            
            e Zd Zej                  Zdededdf fdZde	fdZ
dddee   fd	Zdd
ZddZdddedefdZdddedee   deeef   def
dZdddefdZdddedef fdZ xZS )MappingProxyVariabledv_dictr3   r4   Nc                 V    t        |   di | t        |t              sJ || _        y r'  )rG   rH   r:   r0   r>  rM   r>  r3   rO   s      r?   rH   zMappingProxyVariable.__init__o  s+    "6"'#4555rD   c                 "    t         j                  S r9   )typesMappingProxyTypert   s    r?   ru   z MappingProxyVariable.python_typet  s    %%%rD   rz   r-   c                 8    | j                   j                  |      S r9   )r>  r  r  s     r?   r  z(MappingProxyVariable.unpack_var_sequencew  s    ||//33rD   c                    | j                   r=d| j                    d}t        dd| j                    |dgt        j                         j	                  fd        | j
                         j                  t        dd	             y )
Nz*Preexisting MappingProxyVariable (source: zS) cannot be reconstructed because the connection to the original dict will be lost.z%mapping proxy cannot be reconstructedSource: zCUse a mapping proxy constructed in the same `torch.compile` region.r   c                  n     j                   j                  t               j                  d      g      S )NrC  )r   r   rB  r   r   s   r?   r   z2MappingProxyVariable.reconstruct.<locals>.<lambda>  s4    G))55e<,,-?@ rD   r!   F)rK   r   r   r$  r   r>  r   r   )rM   r   r   s    ` r?   r   z MappingProxyVariable.reconstructz  s    ;;<T[[M JL L  ?"4;;-0Y&22	 		
 	21e<=rD   c                     | j                   rG|j                  j                  j                         r"d}t	        dd| j                    d|ddg       y y y )Na  A dict has been modified while we have an existing mappingproxy object. A mapping proxy object, as the name suggest, proxies a mapping object (usually a dict). If the original dict object mutates, it is reflected in the proxy object as well. For an existing proxy object, we do not know the original dict it points to. Therefore, for correctness we graph break when there is dict mutation and we are trying to access a proxy object.z-mapping proxy affected by dictionary mutationrF  z, Dict mutation detectedzNAvoid modifying dictionaries that might be referenced by mapping proxy objectszROr avoid using the mapping proxy objects after modifying its underlying dictionaryr   )rK   r   r   has_existing_dict_mutationr   )rM   rz   r   s      r?   _check_mutation_guardz*MappingProxyVariable._check_mutation_guard  s\    ;;29911LLN7  G"4;;-/GHdh	 O;rD   rA   c                 \    | j                  |       | j                  j                  ||      S r9   )rJ  r>  r   r   s      r?   r   z&MappingProxyVariable.mp_subscript_impl  s)     	""2&||--b#66rD   r   r   c                 `    | j                  |       | j                  j                  ||||      S r9   )rJ  r>  r	  )rM   rz   r   r   r3   s        r?   r	  z MappingProxyVariable.call_method  s-     	""2&||''D$??rD   c                 8    | j                   j                  |      S r9   )r>  r   r  s     r?   r   zMappingProxyVariable.mp_length  s    ||%%b))rD   c                     | j                         t        j                  u r0t        j                  ||t        j                  j
                  v       S t        |   ||      S r9   )ru   rB  rC  r&   r  __dict__rG   r%  r-  s      r?   r%  z%MappingProxyVariable.call_obj_hasattr  sR     !7!77"((TU5K5K5T5T-TUUw'D11rD   r.  )rz   r-   r4   N)r  r0  r1  rB  rC  r2  r0   r   rH   r   ru   r9  r&   r  r   rJ  r   r6  rT   r	  r   r'   r%  r:  r;  s   @r?   r=  r=  j  s    **M 1 S T 
&T &4&= 4$BW 4>6,7#7 7 
	7@#@ @ ?#	@
 S/)*@ 
@*3 * *2)2142	2 2rD   r=  c                   .    e Zd ZddZdddee   ddfdZy)	NNModuleHooksDictVariabler4   Nc                      y r9   rE   rt   s    r?   rp   z7NNModuleHooksDictVariable.install_dict_keys_match_guard      rD   rz   r-   r   c                      y r9   rE   rM   rz   r   s      r?   r   z5NNModuleHooksDictVariable.install_dict_contains_guard       	rD   r/  )r  r0  r1  rp   r9  r&   r   rE   rD   r?   rQ  rQ    s)    )15o1F	rD   rQ  c                       e Zd Zej                  Z	 ddeeef   dededz  de	ddf
 fdZ
def fdZdef fd	Zed
edefd       Zdddedef fdZdddedee   deeef   def
 fdZdddedef fdZddZ xZS )r  Nr2   r1   default_factoryr3   r4   c                     t        |   ||fi | |t        j                  u sJ |t	        j
                  d       }|| _        y r9   )rG   rH   rU   rW   r'   r  rX  )rM   r2   r1   rX  r3   rO   s        r?   rH   zDefaultDictVariable.__init__  sK     	3F3;22222".55d;O.rD   c                 t    | j                   t        t        t        fvr| j                  syt
        |          S rw   )rX  r9  r   rT   r2   rG   r   rM   rO   s    r?   r   z&DefaultDictVariable.is_python_constant  s1     eT'::4::w)++rD   c                 z    | j                   J d| j                   j                          dt        |           dS )Nzdefaultdict(rc   ))rX  rg   rG   r[  s    r?   rg   zDefaultDictVariable.debug_repr  sF    ##///4//::<=R@R@T?UUVW	
rD   r   c                     t        | t        j                  t        j                  j                  t        j                  j
                  f      xs* t        | t        j                        xr | j                  d u S r9   )r:   r   BaseBuiltinVariable	functionsBaseUserFunctionVariablePolyfilledFunctionVariabler'   ra   r   s    r?   is_supported_argz$DefaultDictVariable.is_supported_arg  se    --##<<##>>
 Q i889Ocii4>O	QrD   rz   r-   rA   c                     || v r| j                  ||      S | j                  j                         rt        t        ||g       y | j                  j                  |g i       }t        |   |d||gi        |S )Nr   r   )r   rX  is_constant_noner   r   r  rG   r	  )rM   rz   rA   default_varrO   s       r?   r   z%DefaultDictVariable.mp_subscript_impl  sw     $;%%b#..002$Xr>..<<RRHKGMC3ErJrD   r   r   c                    |dk(  r| j                   rt        |      dk7  rt        ||dt        |       d       t        |d   t              rj|d   j
                  dk(  rX| j                  |d         rD|j                  j                  j                  |        |d   | _
        t	        j                  d       S t        | 5  ||||      S |dk(  rbt        |      dk7  rt        ||d	t        |       d       t        j                  |t         j"                        j%                  || |d   gi       S t        | 5  ||||      S )
N__setattr__r   z2 argsr   r   rX  r!   r   r   )r  r   r    r   r'   ra   rc  r   r   r   rX  r  rG   r	  r&   r  r   r  r  )rM   rz   r   r   r3   rO   s        r?   r	  zDefaultDictVariable.call_method  s.    = T__4yA~#Bh3t9+U8KL tAw 01d1gmmGX6X''Q0		&&//5'+Aw$'..t447&r4v>>X4yA~#Bh3t9+U8KL"((Y-B-BCQQT47OR  7&r4v>>rD   c                 F    |dk(  r| j                   S t        | 	  ||      S )NrX  )rX  rG   r,  r-  s      r?   r,  zDefaultDictVariable.var_getattr+  s,    
 $$'''w"2t,,rD   c                    j                  fd        | j                         j                  g t        dd      t	                      j                  |        j                  t	                      j                  d       | j                         j                  g t        d      t        d             y )Nc                  n     j                   j                  t               j                  d      g      S )NrW   r   r   s   r?   r   z1DefaultDictVariable.reconstruct.<locals>.<lambda>7  s3    G))55kB,,]; rD   r!   Fr   r   )r   rX  r   r   r   r   r   r   r   r   r   r   s    `r?   r   zDefaultDictVariable.reconstruct4  s    	
 	$$%%a/ 	
 	$n./H%**73#A&"9-	
rD   r9   r.  )r  r0  r1  rU   rW   r2  rT   r&   r   r   rH   r7  r   r6  rg   staticmethodrc  r   r9  r	  r,  r   r:  r;  s   @r?   r  r    s    ++M 37	/O_45/ / )4/	/
 / 
/,D ,
C 
 Qo Q$ Q Q#  
	$?#? ? ?#	?
 S/)*? 
?8-#- - 
	-
rD   r  c            
            e Zd ZU dZdZedz  ed<   dededdf fdZ	e
defd       Ze
dee   fd	       Zd
ddee   fdZddZd
ddedefdZd
ddedee   deeef   def
 fdZd
ddefdZ xZS )DictViewVariablezu
    Models _PyDictViewObject

    This is an "abstract" class. Subclasses will override kv and the items method
    Nkvr>  r3   r4   c                 v    t        |   di | | j                  dv sJ t        |t              sJ || _        y )N)r   r   r2   rE   )rG   rH   ro  r:   r0   r>  r@  s      r?   rH   zDictViewVariable.__init__[  s>    "6"ww5555'#4555rD   c                 |    | j                   J  t        | j                  j                  | j                                S r9   )ro  getattrr>  r2   rt   s    r?   
view_itemszDictViewVariable.view_itemsa  s2    ww"""3wt||))477355rD   c                     t         r9   )NotImplementedErrorrt   s    r?   view_items_vtzDictViewVariable.view_items_vtf  s
     "!rD   rz   r-   c                     | j                   S r9   )rv  r  s     r?   r  z$DictViewVariable.unpack_var_sequencel  s    !!!rD   c                     | j                   J  || j                         |j                  | j                          |j                  d       y )Nr   )ro  r>  r   r	  r   s     r?   r   zDictViewVariable.reconstructo  s>    ww"""DGG$ArD   r   c                     | j                   J || j                         j                  v rt        j                  d      S t        j                  d      S )NTF)ro  ru   rO  r'   r  )rM   rz   r   s      r?   r%  z!DictViewVariable.call_obj_hasattru  sM     ww"""4##%...#**400&&u--rD   r   c                     |dk(  r"ddl m}  || j                  t                     S |dk(  r$t	        j
                  || j                               S t        | !  ||||      S )Nr   r!   r   r   __repr__)	r  r   rv  r%   r&   r  rg   rG   r	  )rM   rz   r   r   r3   r   rO   s         r?   r	  zDictViewVariable.call_method}  sf     :3'""2B2D  Z"((T__->??w"2tT6::rD   c                 T    t        j                  |t        | j                              S )z&Sequence length for dict view objects.)r&   r  r   rs  r  s     r?   	sq_lengthzDictViewVariable.sq_length  s    $$RT__)=>>rD   r.  )r  r0  r1  __doc__ro  r6  __annotations__r0   r   rH   propertyrs  r9  r&   rv  r  r   r'   r%  rT   r	  r}  r:  r;  s   @r?   rn  rn  R  s    Bd
 1 S T  6C 6 6 "tO4 " "
"&= "$BW ".).14.	.;#; ; ?#	;
 S/)*; 
;"?3 ? ?rD   rn  c            
            e Zd ZeZdZedee   fd       Z	ede
e   fd       ZdefdZdefdZddd	ed
e
e   deeef   def
 fdZ xZS )r  r   r4   c                 ,    t        | j                        S r9   )setrs  rt   s    r?   	set_itemszDictKeysVariable.set_items  s    4??##rD   c                 T    | j                   D cg c]  }|j                   c}S c c}w r9   )rs  r[   )rM   r<   s     r?   rv  zDictKeysVariable.view_items_vt  s      #oo....s   %c                     t         S r9   )r   rt   s    r?   ru   zDictKeysVariable.python_type  s    rD   c                 0   | j                   syg }| j                   D ]b  }t        |j                  d      rt        |j                  j                        n|j                  j                         }|j                  |       d ddj                  |      z   dz   S )Nzdict_keys([])ra   zdict_keys([,])rs  re   r[   rf   ra   rg   rh   ri   )rM   r2   r^   rk   s       r?   rg   zDictKeysVariable.debug_repr  s{    "!E__ &(/g(>D$ADDOODU  W%	&
 !388E?2T99rD   rz   r-   r   r   r3   c                    |dk(  r| j                   j                  ||||      S |dv r6t        | j                  |      } ||d   j                        }t	        |      S |t
        v rt        |d   t        t        j                  t        t        f      st        j                  |t              S t        j                  |t        |   | j                  |d   j                              S t        |   ||||      S )Nry   __and____iand__r   r   __sub____isub____xor____ixor__r   )r>  r	  rr  r  r+   r   r:   r   UserDefinedSetVariabler  r  r&   r  NotImplementedrG   )rM   rz   r   r   r3   mrrO   s          r?   r	  zDictKeysVariable.call_method  s     >!<<++BdFCC 	
 	
 -A$q'##$Aq>!++Q44%$	 ',,R@@"((&t,T^^T!W=N=NO  w"2tT6::rD   )r  r0  r1  r   r2  ro  r  r  r&   r  r9  rv  r   ru   r6  rg   rT   r	  r:  r;  s   @r?   r  r    s    M	B$3/ $ $ /tO4 / /T 
:C 
:&;#&; &; ?#	&;
 S/)*&; 
&; &;rD   r  c                   H    e Zd ZeZdZedee   fd       Z	de
fdZdefdZy)r  r   r4   c                 ,    t        | j                        S r9   )r9  rs  rt   s    r?   rv  z DictValuesVariable.view_items_vt  s    DOO$$rD   c                     t         S r9   )r   rt   s    r?   ru   zDictValuesVariable.python_type  s    rD   c                     | j                   syg }| j                   D ]D  }t        |d      rt        |j                        n|j	                         }|j                  |       F ddj                  |      z   dz   S )Nzdict_values([])ra   zdict_values([r  r  )rs  re   rf   ra   rg   rh   ri   )rM   r2   r=   rl   s       r?   rg   zDictValuesVariable.debug_repr  sh    $!E__ &+21g+>$qww-ALLNW%& #SXXe_4t;;rD   N)r  r0  r1  r   r2  ro  r  r9  r&   rv  r   ru   r6  rg   rE   rD   r?   r  r    sD    M 
B%tO4 % %T <C <rD   r  c            
            e Zd ZeZdZeded   fd       Zede	e
   fd       ZdefdZdefdZdd	d
ede	e
   deee
f   de
f
 fdZded   fdZ xZS )r  r2   r4   r(   c           
          | j                   D ch c]/  \  }}t        t        j                  |j                  |g            1 c}}S c c}}w r9   )rs  r(   r   r  r[   r]   s      r?   r  zDictItemsVariable.set_items  sD     
1 I33QTT1I>?
 	
 
s   4Ac                     | j                   D cg c]&  \  }}t        j                  |j                  |g      ( c}}S c c}}w r9   )rs  r   r  r[   r]   s      r?   rv  zDictItemsVariable.view_items_vt   s5     @DOtq!	''q	2OOOs   +?c                     t         S r9   )r   rt   s    r?   ru   zDictItemsVariable.python_type  s    rD   c                    | j                   syg }| j                   D ]  \  }}t        |j                  d      rt        |j                  j                        n|j                  j                         }t        |d      rt        |j                        n|j                         }|j                  d| d| d        ddj                  |      z   dz   S )	Nzdict_items([])ra   (rc   r]  zdict_items([r  r  r  rj   s         r?   rg   zDictItemsVariable.debug_repr  s    #!E 81(/g(>D$ADDOODU  ,31g+>$qww-ALLNq	G9A678 "CHHUO3d::rD   rz   r-   r   r   r3   c                    |dk(  rt        |      dk7  rt        ||dt        |       d       t        |d   t              r,| j                  j                  |d|d   j                  gi       S t        |d   t        t        j                  t        t        f      r<t        j                  |t        | j                  |d   j                  z        dk(        S t        j                  d      S |dk(  r"ddlm}  || j"                  t%               	      S |d
v r6t'        | j                  |      } ||d   j                        }t        |      S |t(        v rt        |d   t        t        j                  t        t        f      st        j                  |t*              S t        j                  |t)        |   | j                  |d   j                              S t,        |   ||||      S )Nr   r!   r   r   r   Fr   r   r   r  )r   r    r:   r  r>  r	  r+   r   r  r  r&   r  r  r'   r  r  r   rv  r%   rr  r   r  rG   )	rM   rz   r   r   r3   r   fn_hdlret_valrO   s	           r?   r	  zDictItemsVariable.call_method  s    84yA~#Bh3t9+U8KL$q'#45||//HtAw>OQSTTQ44%$	 ',,a):)::;q@  $**511Z3'""2B2D   	
 	
 T^^T2FT!W../Gw''++Q44%$	 ',,R@@"((&t,T^^T!W=N=NO  w"2tT6::rD   Fc                      y)zC
        Dictionary item views are not hashable in Python.
        FrE   rt   s    r?   r)  z$DictItemsVariable.is_python_hashableV  r*  rD   )r  r0  r1  r   r2  ro  r  r  r  r9  r&   rv  r   ru   r6  rg   rT   r	  r   r)  r:  r;  s   @r?   r  r    s    M	B
301 
 
 PtO4 P PT ;C ;?;#?; ?; ?#	?;
 S/)*?; 
?;BGEN rD   r  c            	           e Zd ZdZededeeef   fd       Z	edddedeeef   fd       Z
dedddd	fd
ZdedefdZdeeef   fdZdedefdZdededd	fdZdedd	fdZdedefdZdefdZdee   fdZy	)SideEffectsProxyDictzm
    A proxy dict that allows us to track mutations to the dict using side
    effects table as storage.
    r[   r4   c                    t        | t        j                        ri S t        | t        j                        rt
        j                  | j                        S | j                         }|t        urAt        | t        j                        r| j                  d      S t        j                  |d      S t        ddt        |        dt        |        g t         j"                         y )NrO  z-unsupported variable type for __dict__ accesszVariableTracker type: z.Dynamo does not know how to get __dict__ from r   )r   r   NestedUserFunctionVariabler:   LocalGeneratorFunctionVariabler  get_example_value_dictr[   get_real_python_backed_valuer$   UserDefinedObjectVariable_getattr_staticobject__getattribute__r   r   r   
DYNAMO_BUG)r[   ra   s     r?   r  z+SideEffectsProxyDict.get_example_value_dictf  s    "i::; IIDDE'>>ruuEE335EN*b)"E"EF--j99!225*EEK4T"XJ?"PQUVXQYPZ [*55	rD   rz   r-   c                    t         j                  |      }|j                         D ci c]J  \  }}|t        j                  | ||j
                  xr  t        t        |j
                  d      |            L c}}S c c}}w )NrO  )rK   )r  r  r2   r&   r  rK   r   r   )rz   r[   example_value_dictrA   ra   s        r?   get_value___dict__z'SideEffectsProxyDict.get_value___dict__  s     2HHL 1668
 U &&yy N%jJ&GM	 
 	
 
s   AA<r   Nc                 v    || _         |j                  j                  | _        | j                  ||      | _        y r9   )r   r   r   r  	item_dict)rM   r   rz   s      r?   rH   zSideEffectsProxyDict.__init__  s/    	II2200T:rD   rA   c                 ^    t         }t        ||      r|j                  j                         S |S r9   )r(   r   r[   rn   )rM   rA   Hashers      r?   _maybe_unwrap_keyz&SideEffectsProxyDict._maybe_unwrap_key  s(     .4S&.Asvv((*JsJrD   c                 b    | j                   j                  j                  | j                  i       S r9   )r   store_attr_mutationsr   r   rt   s    r?   side_effects_tablez'SideEffectsProxyDict.side_effects_table  s%      5599$))RHHrD   c                     | j                  |      }| j                  j                  | j                  |      r(| j                  j	                  | j                  |d      S | j
                  |   S )NT)
deleted_ok)r  r   has_pending_mutation_of_attrr   	load_attrr  rM   rA   r   s      r?   __getitem__z SideEffectsProxyDict.__getitem__  s]    %%c*99$))TJ$$..tyy$4.PP~~d##rD   ra   c                     | j                  |      }t        |t              sJ | j                  j	                  | j
                  ||       y r9   )r  r   r6  r   
store_attrr   )rM   rA   ra   r   s       r?   r   z SideEffectsProxyDict.__setitem__  s>    %%c*dC   $$TYYe<rD   c                     | j                  |      }| j                  j                  | j                  |t	        j
                                y r9   )r  r   r  r   r   rx   r  s      r?   r   z SideEffectsProxyDict.__delitem__  s7    %%c*$$TYYi6O6O6QRrD   c                     | j                  |      }| j                         }||v rt        ||   t        j                         S || j
                  v S r9   )r  r  r:   r   rx   r  )rM   rA   r   tables       r?   ry   z!SideEffectsProxyDict.__contains__  sR    %%c*'') 5=!%+y/H/HIII4>>))rD   c                 &    t        d | D              S )Nc              3       K   | ]  }d   yw)r!   NrE   )r;   _s     r?   r@   z/SideEffectsProxyDict.__len__.<locals>.<genexpr>  s     #1#s   )r   rt   s    r?   __len__zSideEffectsProxyDict.__len__  s    #d###rD   c              #   `  K   t         }| j                         }|j                         D ]=  \  }}t        |t        j
                        r! |t        j                  |             ? | j                  j                         D ]'  \  }}||vs |t        j                  |             ) y wr9   )	r(   r  r2   r:   r   rx   r'   r  r  )rM   r  dr^   r=   s        r?   r   zSideEffectsProxyDict.__iter__  s      ##%GGI 	5DAq!Y667)00344	5
 NN((* 	9DAqz-44Q788	9s   BB. B.)r  r0  r1  r~  rl  r&   rT   r6  r  r  r  rH   kVr  r  r  r   r   r7  ry   r8  r  r   r(   r   rE   rD   r?   r  r  `  s$   
 ? tCK7H  2 
#
)8
	c?"	#
 
;_ ;2I ;d ;
KR KC KIDo)=$> I$r $o $=r =/ =d =Sr Sd S* *t *$ $
9(?3 
9rD   r  c                        e Zd ZdZedddedd fd       Zdedddeddf fd	Zd
e	deddfdZ
d
e	defdZd
e	defdZd
e	deg ef   defdZddZdddee   ddfdZ xZS )DunderDictVariablezrepresents object.__dict__rz   r-   r[   r4   c                     |j                   r
t               n	t               }|j                   xr t        |j                   d      } | ||||      S )NrO  )rz   r   rK   )rK   r"   r#   r   )clsrz   r[   r   rK   s        r?   r  zDunderDictVariable.create  sK     35)),.AUAW@z"))Z@"	
 	
rD   r3   Nc                 H    t        |   i fi | t        ||      | _        y r9   )rG   rH   r  r2   )rM   r[   rz   r3   rO   s       r?   rH   zDunderDictVariable.__init__  s%     	&v&)"b1
rD   r   ra   c                 "    || j                   |<   y r9   r2   )rM   r   ra   s      r?   setitemzDunderDictVariable.setitem  s     

4rD   c                      | j                   |   S r9   r  rM   r   s     r?   getitemzDunderDictVariable.getitem  s    zz$rD   c                     || j                   v S r9   r  r  s     r?   r   zDunderDictVariable.contains  s    tzz!!rD   defaultc                 v    | j                  |      r| j                  |      S  |       }|| j                  |<   |S r9   )r   r  r2   )rM   r   r  ra   s       r?   getitem_or_defaultz%DunderDictVariable.getitem_or_default  s9    
 ==<<%%IE$DJJtLrD   c                      y r9   rE   rt   s    r?   rp   z0DunderDictVariable.install_dict_keys_match_guard  rS  rD   r   c                      y r9   rE   rU  s      r?   r   z.DunderDictVariable.install_dict_contains_guard  rV  rD   r/  )r  r0  r1  r~  classmethodr&   r  r   rH   r6  r  r  r7  r   r   r  rp   r9  r   r:  r;  s   @r?   r  r    s    $
#
 
 
	
 
22 $2 	2
 
2!C ! !D ! C  O  "S "T "

 "o-.
 
	
)15o1F	rD   r  )Lr~  rU   r   rB  collections.abcr   r   r   typingr   r   r   r	   torch.utils._pytreer
   r   r   r   r   bytecode_transformationr   r   r   r   excr   r   guardsr   r   rK   r   r   r   r   utilsr   r   r   r   r   r    rR   r"   r#   r$   r%   r&   constantr'   hashabler(   r)   r*   setsr+   torch._dynamo.codegenr,   torch._dynamo.symbolic_convertr-   r`  r.   r0   r=  rQ  r  rn  r  r  r  r6  r  abcMutableMappingr  r  rE   rD   r?   <module>r     s'  &    8 8 5 5 * 6 6  : 0    ' D D  /D/\- \-~]2? ]2@ 1 z
+ z
z>? >?BD;' D;N<) <2g( gT sc9;??99"o:MN c9L9* 9rD   