
    3j-                     n   S r SSKrSSKrSSKrSSKJrJrJr  SSKJ	r	J
r
JrJr  SSKJr  SSKJrJrJr  SSKJrJrJrJr  SS	KJrJr  SS
KJrJr  SSKJrJ r J!r!J"r"  SSK#J$r$J%r%J&r&J'r'J(r(J)r)  SSK*J+r+J,r,J-r-J.r.J/r/  SSK0J1r1  SSK2J3r3J4r4J5r5  SSK6J7r7  \(       a  SSK8J9r9  SSK:J;r;  SSK<J=r=   " S S\/5      r> " S S\/5      r? " S S\>5      r@ " S S\>5      rA " S S\/5      rB " S S \B5      rC " S! S"\B5      rD " S# S$\B5      rE\3\F-  rG " S% S&\R                  R                  \G\/4   5      rJ " S' S(\>5      rKg))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                   (  ^  \ rS rSr\r\R                  r\R                  r
S1\R                  kr\4S\\\4   S\S\SS4U 4S jjjrS\S\4S jrS\\\4   4S	 jrS\4S
 jrS\\\4   4S jrS\\\4   4S jrS\4S jrS\S\4S jrSSSSS\S\\   S\\\4   S\4S jrSSSSS\S\\   S\\\4   S\\S4   S\4S jrS\4S jrS\4S jrS\S-  S\S\4S jr S5S  jr!S5S! jr"SSS"\S\4S# jr#SSS"\S\4S$ jr$S"\S\S-  4S% jr%S"\SS4S& jr&S6S' jr'SSS(\(\   SS4S) jr)SSS*\S\4S+ jr*SSS,\S(\(\   S\\\4   S\4
U 4S- jjr+SSS\(\   4S. jr,SSS\4S/ jr-SSS,\S\.4S0 jr/S\S\4U 4S1 jjr0S\4S2 jr1SSS,\4U 4S3 jjr2S4r3U =r4$ )7ConstDictVariableK   user_clsitemskwargsreturnNc           	      L  >^ SU;   a  UR                  S5        SU;   a  UR                  S5        [        T	U ]  " S	0 UD6  [        m[	        U4S jUR                  5        5       5      (       d   eS[        [        S4   SS4U4S jjnU R                  U5      nU" UR                  5        VVs0 s H  u  pgU" U5      U_M     snn5      U l        U R                  (       a  [        U R                  5      (       + OSU l        UR                  5       U l        X l        g s  snnf )
Noriginal_itemsshould_reconstruct_allc              3   z   >#    U  H0  u  p[        U[        T45      =(       a    [        U[        5      v   M2     g 7fN)
isinstancer&   ).0xvHashables      W/home/wildlama/miniconda3/lib/python3.13/site-packages/torch/_dynamo/variables/dicts.py	<genexpr>-ConstDictVariable.__init__.<locals>.<genexpr>i   s<      
 & q?H56 /1o./%s   8;keyr(   r5   c                 :   > [        U T5      (       a  U $ T" U 5      $ r:   )r;   )rC   r?   s    r@   make_hashable1ConstDictVariable.__init__.<locals>.make_hashableo   s      %S(333F#F    T )popsuper__init__r(   allr3   r	   r&   _get_dict_cls_from_user_clssourcer   r8   copyr7   r2   )
selfr3   r2   r4   rE   dict_clsr=   r>   r?   	__class__s
           @r@   rK   ConstDictVariable.__init__W   s    v%JJ'(#v-JJ/0"6""  
 
 
 
 	
 
	G(99:	G	G
 33H=u{{}M}tq}Q/2}MN
 6:[[$T[[11d 	# $jjl  Ns   0D 
c                    ^ [         [        R                  [        R                  4mUT;   a  UnO[	        U4S jUR
                   5       5      nUT;   d   U5       eU[        R                  L a  [         nU$ )Nc              3   6   >#    U  H  oT;   d  M
  Uv   M     g 7fr:   rH   )r<   baseaccepted_dict_typess     r@   rA   @ConstDictVariable._get_dict_cls_from_user_cls.<locals>.<genexpr>   s      !1=P5P!1s   		)dictcollectionsOrderedDictdefaultdictnext__mro__)rP   r2   rQ   rW   s      @r@   rM   -ConstDictVariable._get_dict_cls_from_user_cls~   s{    #[%<%<k>U>UV **H  !)!1!1 H ..88. {...HrG   c                     U R                   R                  5        VVs0 s H.  u  pUR                  R                  5       UR                  5       _M0     snn$ s  snnf r:   )r3   vtas_proxyrP   kr>   s      r@   rb   ConstDictVariable.as_proxy   s@    :>**:J:J:LM:L$!-:LMMM   5Ac                    / nU R                   R                  5        H  u  p#[        UR                  S5      (       a  [        UR                  R                  5      OUR                  R                  5       n[        US5      (       a  [        UR                  5      OUR                  5       nUR                  U SU 35        M     SSR                  U5      -   S-   $ )Nvaluez: {, })r3   hasattrra   reprrh   
debug_reprappendjoinrP   r3   rd   r>   key_strval_strs         r@   rn   ConstDictVariable.debug_repr   s    JJ$$&DA*1!$$*@*@d144::&addooFWG'.q'':':d177mGLLG9Bwi01 ' TYYu%%++rG   c                     U R                   R                  5        VVs0 s H.  u  pUR                  R                  5       UR                  5       _M0     snn$ s  snnf r:   )r3   ra   as_python_constantrc   s      r@   rv   $ConstDictVariable.as_python_constant   sS     

((*
* DD##%q';';'==*
 	
 
rf   c                     U R                  5         U R                  R                  5        VVs0 s H   u  pUR                  R                  5       U_M"     snn$ s  snnf r:   )install_dict_keys_match_guardr3   ra   rv   rc   s      r@   keys_as_python_constant)ConstDictVariable.keys_as_python_constant   sI    **,9=9I9I9KL9K'')1,9KLLLs   'Ac                     U R                   $ r:   r2   rP   s    r@   python_typeConstDictVariable.python_type   s    }}rG   ra   c                     [        U[        5      (       d   e[        n[        U5      (       d  gU" U5      nX0R                  ;   =(       a,    [        U R                  U   [
        R                  5      (       + $ NF)r;   r&   r(   r)   r3   r   DeletedVariable)rP   ra   r?   rC   s       r@   __contains__ConstDictVariable.__contains__   sb    "o...."2rljj  
JJsOY66*
 &
 	
rG   txr-   tree_map_fnr.   map_fnresttree_map_kwargsc           
         / nU Hz  nUR                  5       n[        U[        5      (       a,  [        UR                  5      [        U R                  5      :w  a  U R                  XX4U5      s  $ UR                  U5        M|     [        U R                  5      " 5       nU R                  R	                  5        HF  u  p/ nU H"  n UR                  UR                  U	   5        M$     U
R                  UUUUU5      X'   MH     U V	s0 s H  n	U	R                  X   _M     nn	U R                  UUSS [        5       S9$ ! [         a    U R                  XX4U5      s s  s  $ f = fs  sn	f NT)r3   r7   r8   rN   mutation_type)realizer;   r0   lenr3   _tree_map_fallbackro   typeKeyErrorcall_tree_mapra   cloner%   )rP   r   r   r   r   r   other_dicts	candidatenew_items_hashedkey_trackerrh   sibling_leavesupdated_original_itemss                r@   call_tree_map_branch&ConstDictVariable.call_tree_map_branch   s    02I!))+Ii):;;s@TZZ@! ..V?  y)   

+-"&**"2"2"4K46N(	")))//+*FG ) -2,?,?-) #5&  0"
/ NN,99/ 	 "

 zz"1#'*,  
 	
#   22 "
s   D;E";EEkeypath.c                 "   / nU Hz  nUR                  5       n[        U[        5      (       a,  [        UR                  5      [        U R                  5      :w  a  U R                  XX4XV5      s  $ UR                  U5        M|     [        U R                  5      " 5       n	U R                  R	                  5        Hp  u  p/ nU H"  n UR                  UR                  U
   5        M$     U
R                  R                  5       nU[        U5      4-   nUR                  UUUUUU5      X'   Mr     U	 V
s0 s H  n
U
R                  X   _M     nn
U R                  U	USS [        5       S9$ ! [         a    U R                  XX4XV5      s s  s  $ f = fs  sn
f r   )r   r;   r0   r   r3   _tree_map_with_path_fallbackro   r   r   ra   rv   r
   call_tree_map_with_pathr   r%   )rP   r   r   r   r   r   r   r   r   r   r   rh   r   	key_constchild_keypathr   s                   r@   call_tree_map_with_path_branch0ConstDictVariable.call_tree_map_with_path_branch   s    02I!))+Ii):;;s@TZZ@! 88V?  y)   

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

 zz"1#'*,  
 	
)   << "
s   E%/F%F	F	c                 V    [        S U R                  R                  5        5       5      $ )Nc              3   `   #    U  H$  n[        U[        R                  5      (       + v   M&     g 7fr:   )r;   r   r   )r<   r=   s     r@   rA   (ConstDictVariable.len.<locals>.<genexpr>  s'      
BUQ
1i77888BUs   ,.)sumr3   valuesr~   s    r@   r   ConstDictVariable.len  s)     
BF**BSBSBU
 
 	
rG   c                    ^  T R                   =(       d-    [        U 4S jT R                  R                  5        5       5      $ )Nc              3      >#    U  H<  u  pTR                  TR                  R                  UR                  5      U5      v   M>     g 7fr:   )is_new_itemr7   getra   )r<   rC   rh   rP   s      r@   rA   2ConstDictVariable.has_new_items.<locals>.<genexpr>!  s?      2
0
 T0044SVV<eDD0s   AA)r8   anyr3   r~   s   `r@   has_new_itemsConstDictVariable.has_new_items   s7    ** 
c 2
"jj..02
 /
 	
rG   rh   otherc                     U(       a]  UR                  5       (       aH  UR                  5       (       a3  [        UR                  5       5      [        UR                  5       5      :g  $ [        U5      [        U5      :g  $ r:   )is_realizedidr   )rP   rh   r   s      r@   r   ConstDictVariable.is_new_item&  sW     U&&((U->->-@-@emmo&"U]]_*===%yBuI%%rG   c                 Z   SnU R                   R                  5        Hr  u  p4U R                  R                  UR                  5      nU R	                  XT5      (       d  U R
                  (       d  MS  U" UR                  5        U" U5        US-  nMt     UR                  [        SUS95        g )Nr   r!   	BUILD_MAParg)r3   r7   r   ra   r   r8   append_outputr   )rP   codegennum_argsrC   rh   items         r@   reconstruct_kvs_into_new_dict/ConstDictVariable.reconstruct_kvs_into_new_dict.  s    ****,JC&&**3662D,,0K0K0KA - 	0(KLrG   c                 .  ^ U R                   [        R                  L a  TR                  U4S j5        U R	                  5       (       a  TR                  / [        SS5      Q[        5       P5        TR                  U 5        TR                  [        5       5        TR                  S5        U R                  T5        TR                  / [        S5      Q[        S5      P5        g U R                  T5        TR                  [        SS5      5        g U R	                  5       (       a_  TR                  [        SSS9[        5       /5        TR                  U 5        U R                  T5        TR                  [        S	SS95        g U R                  T5        g )
Nc                  n   > T R                  T R                  [        5      T R                  S5      /5      $ )Nr[   extend_outputcreate_load_python_modulerZ   create_load_attrr   s   r@   <lambda>/ConstDictVariable.reconstruct.<locals>.<lambda>>  s1    --99+F00?rG   r   Fupdater!   POP_TOPr   r   DICT_UPDATE)r2   rZ   r[   add_push_null_contains_self_referencer   r   r   	add_cacher   load_methodr   r   r   rP   r   s    `r@   reconstructConstDictVariable.reconstruct:  sl   ==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;rG   r   c                 r    [        U5      nX0R                  ;  a  [        [        X/S9  U R                  U   $ )Nargs)r(   r3   r   r   )rP   r   r   rC   s       r@   'getitem_const_raise_exception_if_absent9ConstDictVariable.getitem_const_raise_exception_if_absenti  s2     c"jj $Xr>zz#rG   c                     [        U5      nX0R                  ;  a:  SUR                   S3n[        SSUR                   3US/[        R
                  QS9  U R                  U   $ )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(   r3   rh   r   r   
USER_ERROR)rP   r   r   rC   msgs        r@   getitem_constConstDictVariable.getitem_constq  sm     c"jj #CII;.GHC/syyk*T&11	 zz#rG   c                 V    [        U5      nX R                  ;  a  g U R                  U   $ r:   )r(   r3   )rP   r   rC   s      r@   maybe_getitem_const%ConstDictVariable.maybe_getitem_const  s'    c"jj zz#rG   c                 8   X;   d   e[        U5      n[        U R                  R                  5       5      R	                  U5      n[        U R
                  R                  5       5      U   n[        U[        R                  5      (       a  UR                  5         g g r:   )
r(   tupler3   keysindexr7   r;   r   LazyVariableTrackerr   )rP   r   rC   r   original_key_vts        r@   realize_key_vt ConstDictVariable.realize_key_vt  sy    {{c"djjoo'(..s3 3 3 8 8 :;EBoy'D'DEE##% FrG   c                 x    U R                   (       a)  [        U R                  [        R                  5      5        g g r:   )rN   r   
make_guardr   DICT_KEYS_MATCHr~   s    r@   ry   /ConstDictVariable.install_dict_keys_match_guard  s%    ;;$//,*F*FGH rG   r   c           	      @   U R                   (       d  g UR                  R                  R                  U 5      (       a  g US   U ;   nUS   R                   c  US   R	                  5       (       ap  U(       a  [        U 5      R                  O[        U 5      R                  n[        U R                  [        R                  " UUS   R                  5       S95      5        g US   R                   (       a-  U(       a  U R                  US   5        g U R                  5         g g )Nr   )rC   )rN   outputside_effectsis_modifiedis_python_constantr   CONTAINS_GUARDNOT_CONTAINS_GUARDr   r   	functoolspartialrv   r   ry   )rP   r   r   containsguard_fns        r@   install_dict_contains_guard-ConstDictVariable.install_dict_contains_guard  s    " {{99!!--d337d?7>>!d1g&@&@&B&B-5T
))4:;X;X  %%  G668 !W^^##DG,224	 rG   rC   c                 $    U R                  X5      $ r:   )r   rP   r   rC   s      r@   mp_subscript_impl#ConstDictVariable.mp_subscript_impl  s     ;;BDDrG   namec           
         > SSK Jn  SSKJn  [        nUS:X  a{  UR
                  " U[        /UQ70 UD6nUR                  R                  R                  U 5        U R                  R                  UR                  5        [        R                  " S 5      $ US:X  a  U(       d  U(       a&  [        UUS[        U5       S[        U5       S35        U R!                  5         U R"                  (       a/  UR                  R$                  R'                  U R"                  5        [)        U 5      $ US	:X  a  [        U5      (       a  [        XS
[        U5       S35        U R!                  5         U R"                  (       a/  UR                  R$                  R'                  U R"                  5        [+        U 5      $ US:X  a  U(       d  U(       a&  [        UUS[        U5       S[        U5       S35        U R!                  5         U R"                  (       a/  UR                  R$                  R'                  U R"                  5        U(       d  U(       a  [-        [.        U5        [1        U 5      $ US:X  au  U R!                  5         U(       d  U(       a&  [        UUS[        U5       S[        U5       S35        U R3                  U R                  R5                  5       [7        5       S S9$ US:X  a  U R9                  5       (       a  U=(       a    [;        US   5      n	U	(       d  [=        US   U5        U R!                  5         U(       d  [        U5      S:w  a&  [        UUS[        U5       S[        U5       S35        UR                  R                  R                  U 5        US   U R                  U" US   5      '   [        R                  " S 5      $ US:X  a  U R9                  5       (       a  U=(       a    [;        US   5      n	U	(       av  U R!                  5         SU l        UR                  R                  R                  U 5        U R                  RA                  U" US   5      5        [        R                  " S 5      $ [B        TU ]  XX45      $ US:X  a  [        U5      S;  a  [        XS[        U5       S35        U=(       a    [;        US   5      n	U	(       d  [=        US   U5        US   U ;  a;  U RG                  X5        [        U5      S:X  a  [        R                  " S 5      $ US   $ U RI                  XS   5      $ US:X  a  U R9                  5       (       a  [        U5      S;  a  [        XS[        U5       S35        U=(       a    [;        US   5      n	U	(       d  [=        US   U5        US   U ;  a5  U RG                  X5        [        U5      S:X  a  [-        [J        U5        US   $ SU l        UR                  R                  R                  U 5        U R                  RM                  U" US   5      5      $ US:X  Ga  U R9                  5       (       Ga  [O        U RP                  [        5      (       aD  [O        U RP                  [R        RT                  5      (       d  [        U5      (       a  [        X5        U R                  (       d  [-        [J        US/S9  U RP                  [R        RT                  L a  [        U5      S:X  d  SU;   a  [        U5      S:X  a,  US   RW                  5       (       a  US   RY                  5       n
OIUR[                  S5      =n(       a&  URW                  5       (       a  URY                  5       n
O[        X5        U R                  R]                  W
S9u  pOU R                  R]                  5       u  pSU l        UR                  R                  R                  U 5        [^        R`                  " URb                  U/5      $ US:X  a  U(       d  U(       a&  [        UUS[        U5       S[        U5       S35        SU l        UR                  R                  R                  U 5        U R                  Re                  5         [        R                  " S 5      $ US:X  Gat  U R9                  5       (       Ga^  U R!                  5         [        U5      S:H  n[        U5      S:  nU(       d  U(       Ga  UR                  R                  R                  U 5        U(       ap  [g        US   [h        5      (       a  US   R!                  5         US   nOUR                  U[        US   5      nU R                  R                  UR                  5        U(       aZ  UR                  5        VVs0 s H"  u  pU" [j        Rl                  " X5      5      U_M$     nnnU R                  R                  U5        [        R                  " S 5      $ [B        TU ]  XX45      $ US :X  a  [        U5      (       d&  [        UUS![        U5       S[        U5       S35        U=(       a    [;        US   5      n	U	(       d  [=        US   U5        U RG                  X5        US   U ;   n[j        Rl                  " UU5      $ US":X  GaG  U R9                  5       (       Ga1  [        U5      S;  a&  [        UUS#[        U5       S[        U5       S35        U=(       a    [;        US   5      n	U	(       d  [=        US   U5        U R!                  5         U(       d  [        U5      S:  a&  [        UUS$[        U5       S[        U5       S35        U Ro                  US   5      nUb  U$ [        U5      S:X  a  [        R                  " S 5      nOUS   nUR                  R                  R                  U 5        UU R                  U" US   5      '   U$ US%:X  Ga	  U R!                  5         UR                  R                  R                  U 5        US   U ;  a  [-        [J        U5        Sn
[        U5      S:X  a+  US   RW                  5       (       a  US   RY                  5       n
U(       a=  SU;   a7  US   RW                  5       (       a  UR[                  S5      RY                  5       n
U" US   5      nU R                  Rq                  UU
S9  [        R                  " S 5      $ US&:X  ar  [s        U [h        5      (       a]  [        U5      S:w  a  [        XS'[        U5       S35        UR                  U[t        Rv                  5      Ry                  XUS   /0 5      $ US(:X  a7  [j        Rl                  " UU RE                  US&X45      Rz                  (       + 5      $ US):X  Ga  [        U5      S:w  a  [        XS'[        U5       S35        US   n[s        U[h        [^        R|                  [^        R~                  45      (       Ga
  [g        U[^        R|                  5      (       a<  UR                  c   e[g        UR                  [h        5      (       d   eUR                  nU RP                  [        La  U RP                  nU nOURP                  nUnUR!                  5         UR3                  U R                  R5                  5       [7        5       S US*9nUS   R!                  5         UR                  R                  US   R                  5        U$ [-        [.        US+U R                  5       R                   S,UR                  5       R                   S-3/S9  g US.:X  a  U RE                  USX45        U $ US/:X  a~  SS0KCJDn  U R"                  (       aI  [        U R"                  5      (       d/  UR                  R$                  R'                  U R"                  5        U" U R                  U5      [7        5       S19$ [B        TU ]  XX45      $ s  snnf )2Nr!   )DictBuiltinVariable)SourcelessBuilderrK   r3   z0 args and 0 kwargsz
 args and z kwargsr   z0 args argsr   rO   )r3   r   rN   __setitem__r   r   z2 args and 0 kwargs__delitem__Tr   )r!   r   z1 or 2 argsrI   popitemzpopitem(): dictionary is emptyr   last)r  clearr   r   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__)r3   r   rN   r2   z$unsupported operand type(s) for |: 'z'and ''__ior____iter__ListIteratorVariabler   )G r  builderr  r(   call_custom_dictrY   r   r   mutationr3   r   r'   creater    r   ry   rN   guard_on_key_orderaddDictItemsVariableDictKeysVariabler   	TypeErrorDictValuesVariabler   rO   r%   
is_mutabler)   r*   r8   r
  rJ   call_methodr   r   r   rI   
issubclassr2   rZ   r[   r   rv   r   r  r   TupleVariablera   r  r;   r0   r&   buildr   r  r   r   dict___eq__call_functionrh   UserDefinedDictVariableDefaultDictVariable_base_vtr   __name__listsr  r   unpack_var_sequence)rP   r   r  r   r4   r  r  r?   temp_dict_vtarg_hashabler  r>   rd   has_arg
has_kwargsdict_vtkwargs_hashabler   rh   r=   rC   r   r2   to_cpynew_dict_vtr  rR   s                             r@   r&  ConstDictVariable.call_method  s|    	*.":.??D#)L II""++D1JJl001#**400W_v#)4ykCK=@	 ..0{{		,,00=$T**V^4yy#Bh3t9+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'88KQ$8L a"-..0Ta#)4ykCK=@	 II""++D1,0GDJJxQ()#**400]"t'8'88KQ$8L224.2+		&&//5

&&xQ'89'..t44w*2TBBU]4y&#BmD	{%=PQ8KQ$8L a"-Awd"00:t9>+22488Aw%%bq'22U]t004y&#BmD	{%=PQ8KQ$8L a"-Awd"00:t9>,Xr:Aw*.D'II""++D1::>>(47"344Y4??#4#44==$//"4==+2I2IJJII#B-::(8 }} 7 77D	Q&F"2t9>d1g&@&@&B&B7557D!::f--a-13G3G3I3I//1D'1zz))t)41zz))+*.D'II""++D1**ADD!955W_v#)4ykCK=@	 +/D'II""++D1JJ#**400X$//"3"3 ..0$i1nGVqJ*		&&//5!$q'+<== Q==?"&q'"5"F"Fd1g# JJ%%gmm4 %+LLN'$2DA !!6!6r!=>A$2 $ ' JJ%%o6'..t44w*2TBB^#t99#34ykCK=@	  8KQ$8L a"-,,R6Aw$H"((X66\!doo&7&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/Rzz&)<<>47#CJJ""3T"2#**400X&##
 #
 4yA~#Bh3t9+U8KL$++B	0E0EFTT47OR  X"(($$R4@FFF  X4yA~#Bh3t9+U8KLGE& %5511  eY%F%FGG >>555%enn6GH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#B		,,00='((,<L<N  7&r>>M's   =)AA c                 x    U R                  5         U R                   Vs/ s H  o"R                  PM     sn$ s  snf r:   )ry   r3   ra   )rP   r   r=   s      r@   r1  %ConstDictVariable.unpack_var_sequence8  s,    **,"jj)jj)))s   7c                 v    U R                  5         [        R                  " U[        U R                  5      5      $ )z Mapping length for dict objects.)ry   r&   r)  r   r3   rP   r   s     r@   	mp_lengthConstDictVariable.mp_length<  s)    **,$$RTZZ99rG   c                   ^  [        U 4S j[        [        R                  [        R                  4 5       5      (       aZ  [        T R                  U5      (       a  [        R                  " S5      $ T R                  [        L a  [        R                  " S5      $ ST R                   S3n[        SST R                   3US/[        R                  QS	9  g )
Nc              3   @   >#    U  H  nTR                   UL v   M     g 7fr:   r}   )r<   trP   s     r@   rA   5ConstDictVariable.call_obj_hasattr.<locals>.<genexpr>F  s!      
M MMQMs   TFzhasattr on z is not supportedzunsupported hasattr operationzClass z+Consider using a regular dictionary insteadr   )r   rY   rZ   r[   r\   rl   r2   r'   r  r   r   SUPPORTABLE)rP   r   r  r   s   `   r@   call_obj_hasattr"ConstDictVariable.call_obj_hasattrA  s    
  
K33[5L5LM
 
 
 t}}d++'..t44}}$'..u55DMM?*;<3T]]O,="..		
rG   c                 D   > U R                  5         [        TU ]  " S0 UD6$ NrH   )ry   rJ   r   )rP   r4   rR   s     r@   r   ConstDictVariable.cloneZ  s!    **,w}&v&&rG   c                     g)z@
Dictionaries are mutable and therefore not hashable in Python.
FrH   r~   s    r@   is_python_hashable$ConstDictVariable.is_python_hashable^       rG   c                 v   > US:X  a$  [         R                  " XR                  5       5      $ [        TU ]  X5      $ )NrR   )r&   r)  r   rJ   var_getattrrP   r   r  rR   s      r@   rP  ConstDictVariable.var_getattrd  s5    ;"((-=-=-?@@w"2,,rG   )r3   r7   r8   r2   r   r,   r5   Nr5   N)5r/  
__module____qualname____firstlineno__rY   _cpython_typer   DICT_CONTAINSr   DICT_NOT_CONTAINSr   r&   _nonvar_fieldsr   r   rK   rM   rb   strrn   rv   rz   r   boolr   r   r   r   r   intr   r   r   r   r   r   r   r   r   ry   listr   r  r&  r1  r?  r'   rF  r   rL  rP  __static_attributes____classcell__rR   s   @r@   r0   r0   K   so   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 - -rG   r0   c            
          ^  \ rS rSr\R
                  rS\S\SS4U 4S jjr	S\
4S jrSS	S\\   4S
 jrSS jrSS jrSS	S\S\4S jrSS	S\S\\   S\\\4   S\4
S jrSS	S\4S jrSS	S\S\4U 4S jjrSrU =r$ )MappingProxyVariableij  dv_dictr4   r5   Nc                 `   > [         TU ]  " S0 UD6  [        U[        5      (       d   eXl        g rI  )rJ   rK   r;   r0   re  rP   re  r4   rR   s      r@   rK   MappingProxyVariable.__init__o  s,    "6"'#45555rG   c                 "    [         R                  $ r:   )typesMappingProxyTyper~   s    r@   r    MappingProxyVariable.python_typet  s    %%%rG   r   r-   c                 8    U R                   R                  U5      $ r:   )re  r1  r>  s     r@   r1  (MappingProxyVariable.unpack_var_sequencew  s    ||//33rG   c                    ^ U R                   (       a:  SU R                    S3n[        SSU R                    3US/[        R                  QS9  TR	                  U4S j5        T" U R
                  5        TR                  [        SS	5      5        g )
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   > T R                  T R                  [        5      T R                  S5      /5      $ )Nrk  )r   r   rj  r   r   s   r@   r   2MappingProxyVariable.reconstruct.<locals>.<lambda>  s2    G))55e<,,-?@rG   r!   F)rN   r   r   rE  r   re  r   r   )rP   r   r   s    ` r@   r    MappingProxyVariable.reconstructz  s    ;;<T[[M JL L  ?"4;;-0Y&22	 		
 	21e<=rG   c                     U R                   (       aI  UR                  R                  R                  5       (       a  Sn[	        SSU R                    S3USS/S9  g g g )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 mutationrp  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   )rN   r   r   has_existing_dict_mutationr   )rP   r   r   s      r@   _check_mutation_guard*MappingProxyVariable._check_mutation_guard  s_    ;;29911LLNN7  G"4;;-/GHdh	 O;rG   rC   c                 Z    U R                  U5        U R                  R                  X5      $ r:   )rv  re  r  r  s      r@   r  &MappingProxyVariable.mp_subscript_impl  s'     	""2&||--b66rG   r  r   c                 \    U R                  U5        U R                  R                  XX45      $ r:   )rv  re  r&  )rP   r   r  r   r4   s        r@   r&   MappingProxyVariable.call_method  s)     	""2&||''$??rG   c                 8    U R                   R                  U5      $ r:   )re  r?  r>  s     r@   r?  MappingProxyVariable.mp_length  s    ||%%b))rG   c                    > U R                  5       [        R                  L a1  [        R                  " X[        R                  R
                  ;   5      $ [        TU ]  X5      $ r:   )r   rj  rk  r&   r)  __dict__rJ   rF  rQ  s      r@   rF  %MappingProxyVariable.call_obj_hasattr  sN     !7!77"((U5K5K5T5T-TUUw'11rG   re  rS  )r   r-   r5   N)r/  rU  rV  rW  rj  rk  rX  r0   r   rK   r   r   r_  r&   r1  r   rv  r  r\  rY   r&  r?  r'   rF  r`  ra  rb  s   @r@   rd  rd  j  s    **M 1 S T 
&T &4&= 4$BW 4>6,7#7 7 
	7@#@ @ ?#	@
 S/)*@ 
@*3 * *2)2142	2 2rG   rd  c                   :    \ rS rSrS
S jrSSS\\   SS4S jrS	rg)NNModuleHooksDictVariablei  r5   Nc                     g r:   rH   r~   s    r@   ry   7NNModuleHooksDictVariable.install_dict_keys_match_guard      rG   r   r-   r   c                     g r:   rH   rP   r   r   s      r@   r   5NNModuleHooksDictVariable.install_dict_contains_guard       	rG   rH   rT  )	r/  rU  rV  rW  ry   r_  r&   r   r`  rH   rG   r@   r  r    s)    )15o1F	rG   r  c                   (  ^  \ rS rSr\R
                  r SS\\\4   S\	S\S-  S\
SS4
U 4S jjjrS\4U 4S	 jjrS\4U 4S
 jjr\S\S\4S j5       rSSS\S\4U 4S jjrSSS\S\\   S\\\4   S\4
U 4S jjrSSS\S\4U 4S jjrSS jrSrU =r$ )r-  i  Nr3   r2   default_factoryr4   r5   c                    > [         TU ]  " X40 UD6  U[        R                  L d   eUc  [        R
                  " S 5      nX0l        g r:   )rJ   rK   rZ   r\   r'   r  r  )rP   r3   r2   r  r4   rR   s        r@   rK   DefaultDictVariable.__init__  sG     	3F3;22222".55d;O.rG   c                    > U R                   [        [        [        4;  a  U R                  (       d  g[
        TU ]  5       $ r   )r  r_  r   rY   r3   rJ   r   rP   rR   s    r@   r   &DefaultDictVariable.is_python_constant  s1     eT'::4::w)++rG   c                 |   > U R                   c   eSU R                   R                  5        S[        TU ]  5        S3$ )Nzdefaultdict(rj   ))r  rn   rJ   r  s    r@   rn   DefaultDictVariable.debug_repr  sF    ##///4//::<=R@R@T?UUVW	
rG   r   c                    [        U [        R                  [        R                  R                  [        R                  R
                  45      =(       d/    [        U [        R                  5      =(       a    U R                  S L $ r:   )r;   r   BaseBuiltinVariable	functionsBaseUserFunctionVariablePolyfilledFunctionVariabler'   rh   r   s    r@   is_supported_arg$DefaultDictVariable.is_supported_arg  se    --##<<##>>
 Q i889Ocii4>O	QrG   r   r-   rC   c                    > X ;   a  U R                  X5      $ U R                  R                  5       (       a  [        [        X/S9  g U R                  R                  U/ 0 5      n[        TU ]  USX#/0 5        U$ )Nr   r	  )r   r  is_constant_noner   r   r+  rJ   r&  )rP   r   rC   default_varrR   s       r@   r  %DefaultDictVariable.mp_subscript_impl  sr     ;%%b..0022$Xr>..<<RRHKGMC3ErJrG   r  r   c                   > US:X  a  U R                   (       a  [        U5      S:w  a  [        XS[        U5       S35        [        US   [        5      (       aq  US   R
                  S:X  a^  U R                  US   5      (       aE  UR                  R                  R                  U 5        US   U l
        [        R                  " S 5      $ [        TU ]5  XX45      $ US:X  ab  [        U5      S:w  a  [        XS	[        U5       S35        [        R                  " U[         R"                  5      R%                  XUS   /0 5      $ [        TU ]5  XX45      $ )
N__setattr__r   z2 argsr  r   r  r!   r  r  )r%  r   r    r   r'   rh   r  r   r   r  r  r  rJ   r&  r&   r)  r   r*  r+  )rP   r   r  r   r4   rR   s        r@   r&  DefaultDictVariable.call_method  s&    = T__4yA~#Bh3t9+U8KL tAw 011d1gmmGX6X''Q00		&&//5'+Aw$'..t447&r>>X4yA~#Bh3t9+U8KL"((Y-B-BCQQ47OR  7&r>>rG   c                 F   > US:X  a  U R                   $ [        TU ]	  X5      $ )Nr  )r  rJ   rP  rQ  s      r@   rP  DefaultDictVariable.var_getattr+  s*    
 $$'''w"2,,rG   c                   ^ TR                  U4S j5        T" U R                  5        TR                  / [        SS5      Q[	        5       P5        TR                  U 5        TR                  [	        5       5        TR                  S5        U R                  T5        TR                  / [        S5      Q[        S5      P5        g )Nc                  n   > T R                  T R                  [        5      T R                  S5      /5      $ )Nr\   r   r   s   r@   r   1DefaultDictVariable.reconstruct.<locals>.<lambda>7  s1    G))55kB,,];rG   r!   Fr   r   )r   r  r   r   r   r   r   r   r   r   r   r   s    `r@   r   DefaultDictVariable.reconstruct4  s    	
 	$$%%a/ 	
 	$n./H%**73#A&"9-	
rG   )r  r:   rS  )r/  rU  rV  rW  rZ   r\   rX  rY   r&   r   r   rK   r]  r   r\  rn   staticmethodr  r  r_  r&  rP  r   r`  ra  rb  s   @r@   r-  r-    s*   ++M 37	/O_45/ / )4/	/
 / 
/ /,D ,
C 
 Qo Q$ Q Q#  
	$?#? ? ?#	?
 S/)*? 
?8-#- - 
	-
 
rG   r-  c            
         ^  \ rS rSr% SrSr\S-  \S'   S\S\	SS4U 4S jjr
\S\	4S	 j5       r\S\\   4S
 j5       rSSS\\   4S jrSS jrSSS\S\4S jrSSS\S\\   S\\\4   S\4
U 4S jjrSSS\4S jrSrU =r$ )DictViewVariableiR  zi
Models _PyDictViewObject

This is an "abstract" class. Subclasses will override kv and the items method
Nkvre  r4   r5   c                    > [         TU ]  " S0 UD6  U R                  S;   d   e[        U[        5      (       d   eXl        g )N)r   r   r3   rH   )rJ   rK   r  r;   r0   re  rg  s      r@   rK   DictViewVariable.__init__[  s?    "6"ww5555'#45555rG   c                 ~    U R                   c   e[        U R                  R                  U R                   5      " 5       $ r:   )r  getattrre  r3   r~   s    r@   
view_itemsDictViewVariable.view_itemsa  s0    ww"""t||))477355rG   c                     [         er:   )NotImplementedErrorr~   s    r@   view_items_vtDictViewVariable.view_items_vtf  s
     "!rG   r   r-   c                     U R                   $ r:   )r  r>  s     r@   r1  $DictViewVariable.unpack_var_sequencel  s    !!!rG   c                     U R                   c   eU" U R                  5        UR                  U R                   5        UR                  S5        g )Nr   )r  re  r   r&  r   s     r@   r   DictViewVariable.reconstructo  s>    ww"""DGG$ArG   r  c                     U R                   c   eX R                  5       R                  ;   a  [        R                  " S5      $ [        R                  " S5      $ )NTF)r  r   r  r'   r  )rP   r   r  s      r@   rF  !DictViewVariable.call_obj_hasattru  sK     ww"""##%...#**400&&u--rG   r   c                    > US:X  a  SSK Jn  U" U R                  [        5       S9$ US:X  a$  [        R
                  " XR                  5       5      $ [        TU ]!  XX45      $ )Nr  r!   r  r  __repr__)	r0  r  r  r%   r&   r)  rn   rJ   r&  )rP   r   r  r   r4   r  rR   s         r@   r&  DictViewVariable.call_method}  s`     :3'""2B2D  Z"((__->??w"2T::rG   c                 V    [         R                  " U[        U R                  5      5      $ )z&Sequence length for dict view objects.)r&   r)  r   r  r>  s     r@   	sq_lengthDictViewVariable.sq_length  s    $$RT__)=>>rG   r  rS  )r/  rU  rV  rW  __doc__r  r\  __annotations__r0   r   rK   propertyr  r_  r&   r  r1  r   r'   rF  rY   r&  r  r`  ra  rb  s   @r@   r  r  R  s    Bd
 1 S T  6C 6 6 "tO4 " "
"&= "$BW ".).14.	.;#; ; ?#	;
 S/)*; 
;"?3 ? ? ?rG   r  c            
          ^  \ rS rSr\rSr\S\\	   4S j5       r
\S\\	   4S j5       rS\4S jrS\4S jrSS	S
\S\\	   S\\\	4   S\	4
U 4S jjrSrU =r$ )r"  i  r   r5   c                 ,    [        U R                  5      $ r:   )setr  r~   s    r@   	set_itemsDictKeysVariable.set_items  s    4??##rG   c                 X    U R                    Vs/ s H  oR                  PM     sn$ s  snf r:   )r  ra   )rP   r=   s     r@   r  DictKeysVariable.view_items_vt  s"     #oo.oo...s   'c                     [         $ r:   )r   r~   s    r@   r   DictKeysVariable.python_type  s    rG   c                 H   U R                   (       d  g/ nU R                    Hh  n[        UR                  S5      (       a  [        UR                  R                  5      OUR                  R                  5       nUR                  U5        Mj     SSR                  U5      -   S-   $ )Nzdict_keys([])rh   zdict_keys([,])r  rl   ra   rm   rh   rn   ro   rp   )rP   r3   rd   rr   s       r@   rn   DictKeysVariable.debug_repr  sy    "!E__(/g(>(>D$ADDOODU  W%	 %
 !388E?2T99rG   r   r-   r  r   r4   c                   > US:X  a  U R                   R                  XX45      $ US;   a6  [        U R                  U5      nU" US   R                  5      n[	        U5      $ U[
        ;   a  [        US   [        [        R                  [        [        45      (       d  [        R                  " U[        5      $ [        R                  " U[
        U   " U R                  US   R                  5      5      $ [        TU ]  XX45      $ )Nr   __and____iand__r  r  __sub____isub____xor____ixor__r   )re  r&  r  r  r+   r   r;   r   UserDefinedSetVariabler!  r"  r&   r)  NotImplementedrJ   )rP   r   r  r   r4   mrrR   s          r@   r&  DictKeysVariable.call_method  s     >!<<++BdCC 	
 	
 -A$q'##$Aq>!++Q44%$	  ',,R@@"((&t,T^^T!W=N=NO  w"2T::rG   rH   )r/  rU  rV  rW  r   rX  r  r  r  r&   r  r_  r  r   r   r\  rn   rY   r&  r`  ra  rb  s   @r@   r"  r"    s    M	B$3/ $ $ /tO4 / /T 
:C 
:&;#&; &; ?#	&;
 S/)*&; 
&; &;rG   r"  c                   V    \ rS rSr\rSr\S\\	   4S j5       r
S\4S jrS\4S jrSrg)	r$  i  r   r5   c                 ,    [        U R                  5      $ r:   )r_  r  r~   s    r@   r   DictValuesVariable.view_items_vt  s    DOO$$rG   c                     [         $ r:   )r   r~   s    r@   r   DictValuesVariable.python_type  s    rG   c                    U R                   (       d  g/ nU R                    HJ  n[        US5      (       a  [        UR                  5      OUR	                  5       nUR                  U5        ML     SSR                  U5      -   S-   $ )Nzdict_values([])rh   zdict_values([r  r  )r  rl   rm   rh   rn   ro   rp   )rP   r3   r>   rs   s       r@   rn   DictValuesVariable.debug_repr  sf    $!E__+21g+>+>$qww-ALLNW% % #SXXe_4t;;rG   rH   N)r/  rU  rV  rW  r   rX  r  r  r_  r&   r  r   r   r\  rn   r`  rH   rG   r@   r$  r$    sD    M 
B%tO4 % %T <C <rG   r$  c            
          ^  \ rS rSr\rSr\S\S   4S j5       r	\S\
\   4S j5       rS\4S jrS\4S jrS	S
S\S\
\   S\\\4   S\4
U 4S jjrS\S   4S jrSrU =r$ )r!  i  r3   r5   r(   c           
          U R                    VVs1 s H0  u  p[        [        R                  " UR                  U/5      5      iM2     snn$ s  snnf r:   )r  r(   r   r(  ra   rc   s      r@   r  DictItemsVariable.set_items  sG     
' I33QTT1I>?'
 	
 
s   7Ac                     U R                    VVs/ s H'  u  p[        R                  " UR                  U/5      PM)     snn$ s  snnf r:   )r  r   r(  ra   rc   s      r@   r  DictItemsVariable.view_items_vt   s7     @DOtq	''q	2OOOs   .Ac                     [         $ r:   )r   r~   s    r@   r   DictItemsVariable.python_type  s    rG   c                    U R                   (       d  g/ nU R                    H  u  p#[        UR                  S5      (       a  [        UR                  R                  5      OUR                  R                  5       n[        US5      (       a  [        UR                  5      OUR                  5       nUR                  SU SU S35        M     SSR                  U5      -   S-   $ )	Nzdict_items([])rh   (rj   r  zdict_items([r  r  r  rq   s         r@   rn   DictItemsVariable.debug_repr  s    #!E(/g(>(>D$ADDOODU  ,31g+>+>$qww-ALLNq	G9A67 ( "CHHUO3d::rG   r   r-   r  r   r4   c                   > US:X  a  [        U5      S:w  a  [        XS[        U5       S35        [        US   [        5      (       a,  U R                  R                  USUS   R                  /0 5      $ [        US   [        [        R                  [        [        45      (       a=  [        R                  " U[        U R                  US   R                  -  5      S:H  5      $ [        R                  " S5      $ US:X  a  SSKJn  U" U R"                  [%        5       S	9$ US
;   a6  ['        U R                  U5      nU" US   R                  5      n[        U5      $ U[(        ;   a  [        US   [        [        R                  [        [        45      (       d  [        R                  " U[*        5      $ [        R                  " U[(        U   " U R                  US   R                  5      5      $ [,        TU ]  XX45      $ )Nr  r!   r  r  r   Fr  r  r  r  )r   r    r;   r!  re  r&  r+   r   r  r"  r&   r)  r  r'   r  r0  r  r  r%   r  r   r  rJ   )	rP   r   r  r   r4   r  fn_hdlret_valrR   s	           r@   r&  DictItemsVariable.call_method  s    84yA~#Bh3t9+U8KL$q'#45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"2T::rG   Fc                     g)z3
Dictionary item views are not hashable in Python.
FrH   r~   s    r@   rL  $DictItemsVariable.is_python_hashableV  rN  rG   rH   )r/  rU  rV  rW  r   rX  r  r  r  r  r_  r&   r  r   r   r\  rn   rY   r&  r   rL  r`  ra  rb  s   @r@   r!  r!    s    M	B
301 
 
 PtO4 P PT ;C ;?;#?; ?; ?#	?;
 S/)*?; 
?;BGEN  rG   r!  c            	          \ rS rSrSr\S\S\\\	4   4S j5       r
\SSS\S\\\4   4S j5       rS	\SSSS
4S jrS\S\4S jrS\\\4   4S jrS\S\4S jrS\S\SS
4S jrS\SS
4S jrS\S\4S jrS\4S jrS\\   4S jrSrg
)SideEffectsProxyDicti`  za
A proxy dict that allows us to track mutations to the dict using side
effects table as storage.
ra   r5   c                    [        U [        R                  5      (       a  0 $ [        U [        R                  5      (       a  [
        R                  U R                  5      $ U R                  5       nU[        LaF  [        U [        R                  5      (       a  U R                  S5      $ [        R                  US5      $ [        SS[        U 5       3S[        U 5       3/ [         R"                  QS9  g )Nr  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_dictra   get_real_python_backed_valuer$   UserDefinedObjectVariable_getattr_staticobject__getattribute__r   r   r   
DYNAMO_BUG)ra   rh   s     r@   r  +SideEffectsProxyDict.get_example_value_dictf  s    "i::;; IIDDEE'>>ruuEE335EN*b)"E"EFF--j99!225*EEK4T"XJ?"PQUVXQYPZ [*55	rG   r   r-   c                    [         R                  U5      nUR                  5        VVs0 s HM  u  p4U[        R                  " U UUR
                  =(       a     [        [        UR
                  S5      U5      S9_MO     snn$ s  snnf )Nr  )rN   )r  r  r3   r&   r)  rN   r   r   )r   ra   example_value_dictrC   rh   s        r@   get_value___dict__'SideEffectsProxyDict.get_value___dict__  s     2HHL 1668
 9
 &&yy N%jJ&GM	  9
 	
 
s   ABr   Nc                 r    Xl         UR                  R                  U l        U R                  X!5      U l        g r:   )r   r   r   r  	item_dict)rP   r   r   s      r@   rK   SideEffectsProxyDict.__init__  s+    	II2200:rG   rC   c                 f    [         n[        X5      (       a  UR                  R                  5       $ U$ r:   )r(   r   ra   rv   )rP   rC   Hashers      r@   _maybe_unwrap_key&SideEffectsProxyDict._maybe_unwrap_key  s)     .4S.A.Asvv((*JsJrG   c                 b    U R                   R                  R                  U R                  0 5      $ r:   )r   store_attr_mutationsr   r   r~   s    r@   side_effects_table'SideEffectsProxyDict.side_effects_table  s%      5599$))RHHrG   c                     U R                  U5      nU R                  R                  U R                  U5      (       a%  U R                  R	                  U R                  USS9$ U R
                  U   $ )NT)
deleted_ok)r  r   has_pending_mutation_of_attrr   	load_attrr
  rP   rC   r  s      r@   __getitem__ SideEffectsProxyDict.__getitem__  s`    %%c*99$))TJJ$$..tyy$4.PP~~d##rG   rh   c                     U R                  U5      n[        U[        5      (       d   eU R                  R	                  U R
                  X25        g r:   )r  r   r\  r   
store_attrr   )rP   rC   rh   r  s       r@   r	   SideEffectsProxyDict.__setitem__  s?    %%c*dC    $$TYY<rG   c                     U R                  U5      nU R                  R                  U R                  U[        R
                  " 5       5        g r:   )r  r   r  r   r   r   r  s      r@   r
   SideEffectsProxyDict.__delitem__  s7    %%c*$$TYYi6O6O6QRrG   c                     U R                  U5      nU R                  5       nX#;   a!  [        X2   [        R                  5      (       + $ X R
                  ;   $ r:   )r  r  r;   r   r   r
  )rP   rC   r  tables       r@   r   !SideEffectsProxyDict.__contains__  sL    %%c*'') =!%+y/H/HIII>>))rG   c                 &    [        S U  5       5      $ )Nc              3   &   #    U  H  nS v   M	     g7f)r!   NrH   )r<   _s     r@   rA   /SideEffectsProxyDict.__len__.<locals>.<genexpr>  s     #d1ds   )r   r~   s    r@   __len__SideEffectsProxyDict.__len__  s    #d###rG   c              #   x  #    [         nU R                  5       nUR                  5        HD  u  p4[        U[        R
                  5      (       a  M&  U" [        R                  " U5      5      v   MF     U R                  R                  5        H*  u  p4X2;  d  M  U" [        R                  " U5      5      v   M,     g 7fr:   )	r(   r  r3   r;   r   r   r'   r  r
  )rP   r  drd   r>   s        r@   r  SideEffectsProxyDict.__iter__  s      ##%GGIDA!Y6677)00344 
 NN((*DAz-44Q788 +s   BB:#B:)r   r
  r   )r/  rU  rV  rW  r  r  r&   rY   r\  r  r  r  rK   kVr  r  r  r	  r
  r]  r   r^  r'  r   r(   r  r`  rH   rG   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 
9rG   r  c                      ^  \ rS rSrSr\SSS\SS 4S j5       rS\SSS\SS	4U 4S
 jjr	S\
S\SS	4S jrS\
S\4S jrS\
S\4S jrS\
S\/ \4   S\4S jrSS jrSSS\\   SS	4S jrSrU =r$ )DunderDictVariablei  zrepresents object.__dict__r   r-   ra   r5   c                     UR                   (       a
  [        5       O	[        5       nUR                   =(       a    [        UR                   S5      nU " UUUUS9$ )Nr  )r   r   rN   )rN   r"   r#   r   )clsr   ra   r  rN   s        r@   r  DunderDictVariable.create  sK     35)),.AUAW@z"))Z@"	
 	
rG   r4   Nc                 H   > [         TU ]  " 0 40 UD6  [        X5      U l        g r:   )rJ   rK   r  r3   )rP   ra   r   r4   rR   s       r@   rK   DunderDictVariable.__init__  s#     	&v&)"1
rG   r  rh   c                      X R                   U'   g r:   r3   )rP   r  rh   s      r@   setitemDunderDictVariable.setitem  s     

4rG   c                      U R                   U   $ r:   r5  rP   r  s     r@   getitemDunderDictVariable.getitem  s    zz$rG   c                     XR                   ;   $ r:   r5  r9  s     r@   r   DunderDictVariable.contains  s    zz!!rG   defaultc                 ~    U R                  U5      (       a  U R                  U5      $ U" 5       nX0R                  U'   U$ r:   )r   r:  r3   )rP   r  r>  rh   s       r@   getitem_or_default%DunderDictVariable.getitem_or_default  s:    
 ==<<%%IE$JJtLrG   c                     g r:   rH   r~   s    r@   ry   0DunderDictVariable.install_dict_keys_match_guard  r  rG   r   c                     g r:   rH   r  s      r@   r   .DunderDictVariable.install_dict_contains_guard  r  rG   r5  rT  )r/  rU  rV  rW  r  classmethodr&   r  r   rK   r\  r6  r:  r]  r   r   r@  ry   r_  r   r`  ra  rb  s   @r@   r.  r.    s    $
#
 
 
	
 
22 $2 	2
 
2!C ! !D ! C  O  "S "T "

 "o-.
 
	
)15o1F	 rG   r.  )Lr  rZ   r   rj  collections.abcr   r   r   typingr   r   r   r	   torch.utils._pytreer
   r  r   r   r   bytecode_transformationr   r   r   r   excr   r   guardsr   r   rN   r   r   r   r   utilsr   r   r   r   r   r    rV   r"   r#   r$   r%   r&   constantr'   hashabler(   r)   r*   setsr+   torch._dynamo.codegenr,   torch._dynamo.symbolic_convertr-   r  r.   r0   rd  r  r-  r  r"  r$  r!  r\  r,  abcMutableMappingr  r.  rH   rG   r@   <module>rU     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rG   