
    Bj-                        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jH        jI        eGe/f                   ZJ G d' d(e>          ZKdS ))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d5d!Z d5d"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%d6d(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d0Z,ddd-ede-fd1Z.dede
f fd2Z/defd3Z0ddd-ef fd4Z1 xZ2S )7ConstDictVariableuser_clsitemskwargsreturnNc                 R   d|v r|                     d           d|v r|                     d            t                      j        d
i | t          t	          fd|                                D                       sJ dt          t          df         ddffd|                     |          } |fd|                                D                       | _        | j	        rt          | j	                   nd	| _        |                                | _        || _        d S )Noriginal_itemsshould_reconstruct_allc              3   v   K   | ]3\  }}t          |t          f          ot          |t                    V  4d S N)
isinstancer&   ).0xvHashables      `/var/www/html/Carbon-Document/venv/lib/python3.11/site-packages/torch/_dynamo/variables/dicts.py	<genexpr>z-ConstDictVariable.__init__.<locals>.<genexpr>i   s^       
 
 1 q?H566 /1o..
 
 
 
 
 
    keyr(   r4   c                 >    t          |           r| n
 |           S r9   )r:   )rB   r>   s    r?   make_hashablez1ConstDictVariable.__init__.<locals>.make_hashableo   s&     %S(33F33#FrA   c                 .    i | ]\  }} |          |S  rF   )r;   r<   r=   rD   s      r?   
<dictcomp>z.ConstDictVariable.__init__.<locals>.<dictcomp>u   s)    MMMtq!}}Q//MMMrA   TrF   )popsuper__init__r(   allr2   r	   r&   _get_dict_cls_from_user_clssourcer   r7   copyr6   r1   )selfr2   r1   r3   dict_clsr>   rD   	__class__s        @@r?   rJ   zConstDictVariable.__init__W   s{    v%%JJ'(((#v--JJ/000""6""""  
 
 
 
 
 
 
 
 
 	
 	
 
	G(99:	G	G 	G 	G 	G 	G 	G
 33H==XMMMMu{{}}MMMNN
 6:[J$T[1111d 	# $jjll rA   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 |V  d S r9   rF   )r;   baseaccepted_dict_typess     r?   r@   z@ConstDictVariable._get_dict_cls_from_user_cls.<locals>.<genexpr>   s7        T=P5P5P5P5P5P5P rA   )dictcollectionsOrderedDictdefaultdictnext__mro__)rO   r1   rP   rU   s      @r?   rL   z-ConstDictVariable._get_dict_cls_from_user_cls~   s    #[%<k>UV ***HH     !)!1    H ....... {...HrA   c                 H    d | j                                          D             S )Nc                 l    i | ]1\  }}|j                                         |                                2S rF   )vtas_proxyr;   kr=   s      r?   rG   z.ConstDictVariable.as_proxy.<locals>.<dictcomp>   s0    MMM$!QMMMrA   r2   rO   s    r?   r_   zConstDictVariable.as_proxy   s$    MM$*:J:J:L:LMMMMrA   c                    g }| j                                          D ]\  }}t          |j        d          rt          |j        j                  n|j                                        }t          |d          rt          |j                  n|                                }|                    | d|            dd                    |          z   dz   S )Nvaluez: {, })r2   hasattrr^   reprre   
debug_reprappendjoinrO   r2   ra   r=   key_strval_strs         r?   rk   zConstDictVariable.debug_repr   s    J$$&& 	2 	2DAq*1!$*@*@Wd14:&&&adooFWFWG'.q'':':Nd17mmmGLLG00w001111TYYu%%%++rA   c                 H    d | j                                          D             S )Nc                 l    i | ]1\  }}|j                                         |                                2S rF   r^   as_python_constantr`   s      r?   rG   z8ConstDictVariable.as_python_constant.<locals>.<dictcomp>   sH     
 
 
1 D##%%q';';'='=
 
 
rA   rb   rc   s    r?   rt   z$ConstDictVariable.as_python_constant   s1    
 

((**
 
 
 	
rA   c                 p    |                                   d | j                                        D             S )Nc                 H    i | ]\  }}|j                                         | S rF   rs   r`   s      r?   rG   z=ConstDictVariable.keys_as_python_constant.<locals>.<dictcomp>   s,    LLLA''))1LLLrA   install_dict_keys_match_guardr2   rc   s    r?   keys_as_python_constantz)ConstDictVariable.keys_as_python_constant   s6    **,,,LL9I9I9K9KLLLLrA   c                     | j         S r9   r1   rc   s    r?   python_typezConstDictVariable.python_type   s
    }rA   r^   c                     t          |t                    sJ t          }t          |          sdS  ||          }|| j        v o%t          | j        |         t
          j                   S NF)r:   r&   r(   r)   r2   r   DeletedVariable)rO   r^   r>   rB   s       r?   __contains__zConstDictVariable.__contains__   sp    "o....."2 	5hrlldj  
JsOY6*
 *
 &
 	
rA   txr-   tree_map_fnr.   map_fnresttree_map_kwargsc           
         g }|D ]}|                                 }t          |t                    r*t          |j                  t          | j                  k    r|                     |||||          c S |                    |            t          | j                              | j                                        D ]v\  }}	g }
|D ]P}	 |
                    |j        |                    $# t          $ r  |                     |||||          cY c c S w xY w|		                    ||||
|          |<   wfdD             }| 
                    |dd t                                S )Nc                 ,    i | ]}|j         |         S rF   r^   r;   key_trackernew_items_hasheds     r?   rG   z:ConstDictVariable.call_tree_map_branch.<locals>.<dictcomp>   3     "
 "
 "
 N,[9"
 "
 "
rA   Tr2   r6   r7   rM   mutation_type)realizer:   r0   lenr2   _tree_map_fallbackrl   typeKeyErrorcall_tree_mapcloner%   )rO   r   r   r   r   r   other_dicts	candidater   re   sibling_leavesupdated_original_itemsr   s               @r?   call_tree_map_branchz&ConstDictVariable.call_tree_map_branch   s    02 	* 	*I!))++Ii):;; s@ @TZ@! @! ..VT?     y))))+4
++--"&*"2"2"4"4 	 	K46N(  	")))/+*FGGGG   22K         -2,?,?- -[))"
 "
 "
 "
/"
 "
 "

 zz"1#'*,,  
 
 	
s    C..#DDkeypath.c                 6   g }|D ]}|                                 }t          |t                    r*t          |j                  t          | j                  k    r|                     ||||||          c S |                    |            t          | j                              | j                                        D ]\  }	}
g }|D ]Q}	 |                    |j        |	                    $# t          $ r! |                     ||||||          cY c c S w xY w|	j	        
                                }|t          |          fz   }|
                    ||||||          |	<   fdD             }|                     |dd t                                S )Nc                 ,    i | ]}|j         |         S rF   r   r   s     r?   rG   zDConstDictVariable.call_tree_map_with_path_branch.<locals>.<dictcomp>  r   rA   Tr   )r   r:   r0   r   r2   _tree_map_with_path_fallbackrl   r   r   r^   rt   r
   call_tree_map_with_pathr   r%   )rO   r   r   r   r   r   r   r   r   r   re   r   	key_constchild_keypathr   r   s                  @r?   call_tree_map_with_path_branchz0ConstDictVariable.call_tree_map_with_path_branch   s5    02 	* 	*I!))++Ii):;; s@ @TZ@! @! 88VT?G     y))))+4
++--"&*"2"2"4"4 	 	K46N(  	")))/+*FGGGG   <<K         $99;;I#z)'<'<&>>M,1,I,I- -[))"
 "
 "
 "
/"
 "
 "

 zz"1#'*,,  
 
 	
s    C//$DDc                 b    t          d | j                                        D                       S )Nc              3   L   K   | ]}t          |t          j                   V   d S r9   )r:   r   r   r;   r<   s     r?   r@   z(ConstDictVariable.len.<locals>.<genexpr>  sC       
 
=>
1i7888
 
 
 
 
 
rA   )sumr2   valuesrc   s    r?   r   zConstDictVariable.len  s>     
 
BF*BSBSBUBU
 
 
 
 
 	
rA   c                 v      j         p1t           fd j                                        D                       S )Nc              3      K   | ]:\  }}                     j                            |j                  |          V  ;d S r9   )is_new_itemr6   getr^   )r;   rB   re   rO   s      r?   r@   z2ConstDictVariable.has_new_items.<locals>.<genexpr>!  s^       2
 2
U T044SV<<eDD2
 2
 2
 2
 2
 2
rA   )r7   anyr2   rc   s   `r?   has_new_itemszConstDictVariable.has_new_items   sS    * 
c 2
 2
 2
 2
"j..002
 2
 2
 /
 /
 	
rA   re   otherc                    |rl|                                 rX|                                 rDt          |                                          t          |                                          k    S t          |          t          |          k    S r9   )is_realizedidr   )rO   re   r   s      r?   r   zConstDictVariable.is_new_item&  st      	>U&&(( 	>U->->-@-@ 	>emmoo&&"U]]__*=*===%yyBuII%%rA   codegenr,   c                 H   d}| j                                          D ]a\  }}| j                            |j                  }|                     ||          s| j        r  ||j                    ||           |dz  }b|                    t          d|                     d S )Nr   r!   	BUILD_MAParg)r2   r6   r   r^   r   r7   append_outputr   )rO   r   num_argsrB   re   items         r?   reconstruct_kvs_into_new_dictz/ConstDictVariable.reconstruct_kvs_into_new_dict.  s    ***,, 	 	JC&**3622De,, 0K A0(KKKLLLLLrA   c                    | j         t          j        u r.                    fd           |                                 rȉ                    g t          dd          t                                                     |            	                    t                                 
                    d           |                                                    g t          d          t          d                     d S |                                                    t          dd                     d S |                                 r                    t          dd          t                      g                               |            |                                	                    t          d	d                     d S |                                d S )
Nc                                                                 t                                         d          g          S )NrX   extend_outputcreate_load_python_modulerW   create_load_attrr   s   r?   <lambda>z/ConstDictVariable.reconstruct.<locals>.<lambda>>  s>    --99+FF00??  rA   r   Fupdater!   POP_TOPr   r   DICT_UPDATE)r1   rW   rX   add_push_null_contains_self_referencer   r   r   	add_cacher   load_methodr   r   r   rO   r   s    `r?   reconstructzConstDictVariable.reconstruct:  s%   =K333!!      ,,.. F%%-a77&((   !!$'''%%n&6&6777##H---227;;;%%+A..*955     227;;;%%&:1e&D&DEEEEE,,.. <%%*;A>>>&((   !!$'''227;;;%%&8A&N&N&NOOOOO 227;;;;;rA   r   c                 |    t          |          }|| j        vrt          t          ||g           | j        |         S )Nargs)r(   r2   r   r   )rO   r   r   rB   s       r?   'getitem_const_raise_exception_if_absentz9ConstDictVariable.getitem_const_raise_exception_if_absenti  sA     c""dj  $Xr>>>>z#rA   c                     t          |          }|| j        vr3d|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   re   r   r   
USER_ERROR)rO   r   r   rB   msgs        r?   getitem_constzConstDictVariable.getitem_constq  s{     c""dj  HCIHHHC/*sy**T&1	    z#rA   c                 P    t          |          }|| j        vrd S | j        |         S r9   )r(   r2   )rO   r   rB   s      r?   maybe_getitem_constz%ConstDictVariable.maybe_getitem_const  s-    c""dj  4z#rA   c                 Z   || v sJ t          |          }t          | j                                                                      |          }t          | j                                                  |         }t          |t          j                  r|	                                 d S d S r9   )
r(   tupler2   keysindexr6   r:   r   LazyVariableTrackerr   )rO   r   rB   r   original_key_vts        r?   realize_key_vtz ConstDictVariable.realize_key_vt  s    d{{{{c""djoo''((..s33 3 8 8 : :;;EBoy'DEE 	&##%%%%%	& 	&rA   c                 p    | j         r.t          |                     t          j                             d S d S r9   )rM   r   
make_guardr   DICT_KEYS_MATCHrc   s    r?   rx   z/ConstDictVariable.install_dict_keys_match_guard  s<    ; 	I$//,*FGGHHHHH	I 	IrA   r   c           	      4   | j         sd S |j        j                            |           rd S |d         | v }|d         j         |d                                         rz|rt          |           j        nt          |           j        }t          | 	                    t          j        ||d                                                                        d S |d         j         r5|r|                     |d                    d S |                                  d S d S )Nr   )rB   )rM   outputside_effectsis_modifiedis_python_constantr   CONTAINS_GUARDNOT_CONTAINS_GUARDr   r   	functoolspartialrt   r   rx   )rO   r   r   containsguard_fns        r?   install_dict_contains_guardz-ConstDictVariable.install_dict_contains_guard  s7   " { 	F9!--d33 	F7d?7>!d1g&@&@&B&B!-5XT

))4::;X  %  G6688        !W^ 	5 5##DG,,,,,2244444		5 	5rA   rB   c                 .    |                      ||          S r9   )r   rO   r   rB   s      r?   mp_subscript_implz#ConstDictVariable.mp_subscript_impl  s     ;;BDDDrA   namec           
      !   ddl m} ddlm} t          |dk    ri |j        t          g|R i |}j        j        	                    |            | j
                            |j
                   t          j        d           S |dk    r|s|r2t          |dt          |           dt          |           d           |                                  | j        r$j        j                            | j                   t)          |           S |d	k    rt          |          r"t          |d
t          |           d           |                                  | j        r$j        j                            | j                   t+          |           S |dk    r|s|r2t          |dt          |           dt          |           d           |                                  | j        r$j        j                            | j                   |s|rt-          t.                     t1          |           S |dk    r|                                  |s|r2t          |dt          |           dt          |           d           |                     | j
                                        t7                      d           S |dk    r|                                 r|ot;          |d                   }|st=          |d                    |                                  |st          |          dk    r2t          |dt          |           dt          |           d           j        j        	                    |            |d         | j
         |d                   <   t          j        d           S |dk    r|                                 r|ot;          |d                   }|rw|                                  d| _        j        j        	                    |            | j
                              |d                              t          j        d           S tC                      "                    |||          S |dk    rt          |          dvr"t          |dt          |           d           |ot;          |d                   }|st=          |d                    |d         | vrE| #                    |           t          |          dk    rt          j        d           S |d         S | $                    |d                   S |dk    r|                                 rt          |          dvr"t          |dt          |           d           |ot;          |d                   }|st=          |d                    |d         | vrF| #                    |           t          |          dk    rt-          tJ                     |d         S d| _        j        j        	                    |            | j
        &                     |d                             S |dk    r|                                 rtO          | j(        t                    r>tO          | j(        tR          j*                  st          |          rt          |           | j
        st-          tJ          dg           | j(        tR          j*        u rt          |          dk    sd|v rt          |          dk    r5|d         +                                r|d         ,                                }	nP|-                    d          x}
r)|
+                                r|
,                                }	nt          |           | j
        .                    |	          \  }}
n| j
        .                                \  }}
d| _        j        j        	                    |            t_          j0        |j1        |
g          S |dk    r|s|r2t          |dt          |           dt          |           d           d| _        j        j        	                    |            | j
        2                                 t          j        d           S |dk    rh|                                 rS|                                  t          |          dk    }t          |          dk    }|s|rj        j        	                    |            |rtg          |d         th                    r#|d                                          |d         }n"|                    t          |d                   }| j
                            |j
                   |r;fd |
                                D             }| j
                            |           t          j        d           S tC                      "                    |||          S |d!k    rt          |          s2t          |d"t          |           dt          |           d           |ot;          |d                   }|st=          |d                    | #                    |           |d         | v }tk          j6        |          S |d#k    rk|                                 rVt          |          dvr2t          |d$t          |           dt          |           d           |ot;          |d                   }|st=          |d                    |                                  |st          |          dk    r2t          |d%t          |           dt          |           d           | 7                    |d                   }||S t          |          dk    rt          j        d           }n|d         }j        j        	                    |            || j
         |d                   <   |S |d&k    r#|                                  j        j        	                    |            |d         | vrt-          tJ                     d}	t          |          dk    r4|d         +                                r|d         ,                                }	|rEd|v rA|d         +                                r'|-                    d          ,                                }	 |d                   }| j
        8                    ||	           t          j        d           S |d'k    rts          | th                    rrt          |          dk    r"t          |d(t          |           d           |                    tt          j;                  <                    | |d         gi           S |d)k    r1tk          j6        | "                    d'||          j=                   S |d*k    rt          |          dk    r"t          |d(t          |           d           |d         }ts          |th          t^          j>        t^          j?        f          rtg          |t^          j>                  r,|j@        J tg          |j@        th                    sJ |j@        }| j(        t          ur
| j(        }| }n	|j(        }|}|                                 |                    | j
                                        t7                      d |+          }|d                                          |j
                            |d         j
                   |S t-          t.          d,| A                                jB         d-|A                                jB         d.g           d S |d/k    r| "                    d||           | S |d0k    rqdd1lCmD} | j        r8t          | j                  s$j        j                            | j                    || F                              t7                      2          S tC                      "                    |||          S )3Nr!   )DictBuiltinVariable)SourcelessBuilderrJ   r2   z0 args and 0 kwargsz
 args and z kwargsr   z0 args argsr   rN   )r2   r   rM   __setitem__r   r   z2 args and 0 kwargs__delitem__Tr   )r!   r   z1 or 2 argsrH   popitemzpopitem(): dictionary is emptyr   last)r   clearr   c                 T    i | ]$\  }} t          j        |                    |%S rF   )r&   build)r;   ra   r=   r>   r   s      r?   rG   z1ConstDictVariable.call_method.<locals>.<dictcomp>  sF     ' ' ' Aq !!6r1!=!=>>' ' 'rA   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__)r2   r   rM   r1   z$unsupported operand type(s) for |: 'z'and ''__ior____iter__ListIteratorVariabler   )G r   builderr   r(   call_custom_dictrV   r   r   mutationr2   r   r'   creater    r   rx   rM   guard_on_key_orderaddDictItemsVariableDictKeysVariabler   	TypeErrorDictValuesVariabler   rN   r%   
is_mutabler)   r*   r7   r   rI   call_methodr   r   r   rH   
issubclassr1   rW   rX   r   rt   r   r   r   TupleVariabler^   r   r:   r0   r&   r   r   r  r   r   dict___eq__call_functionre   UserDefinedDictVariableDefaultDictVariable_base_vtr|   __name__listsr
  r   unpack_var_sequence)rO   r   r   r   r3   r   r   temp_dict_vtarg_hashabler   r=   ra   has_arg
has_kwargsdict_vtkwargs_hashabler   re   r<   rB   r   r1   to_cpynew_dict_vtr
  r>   rQ   s    `                       @r?   r  zConstDictVariable.call_method  s]    	*)))))......":?.?D  #) L I"++D111Jl0111#*4000W__ v #)4yy@@CKK@@@	   ..000{ >	,00===$T***V^^4yy M#Bh3t998K8K8KLLL..000{ >	,00===#D)))X v #)4yy@@CKK@@@	   ..000{ >	,00=== 8v 8(B777%d+++V^^..000 v #)4yy@@CKK@@@	   ::joo''7G7I7IRV     ]""t'8'8"8KQ$8$8L . a"---..000 Ta#)4yy@@CKK@@@	   I"++D111,0GDJxxQ(()#*4000]""t'8'8"8KQ$8$8L C22444.2+	&//555
&&xxQ'8'8999'.t444ww**2tT6BBBU]]4yy&&#BmD		=P=P=PQQQ8KQ$8$8L . a"---Awd""00T:::t99>>+24888Aw%%b$q'222U]]t00]4yy&&#BmD		=P=P=PQQQ8KQ$8$8L . a"---Awd""00T:::t99>>,Xr:::Aw*.D'I"++D111:>>((47"3"3444Y4??#4#44=$//."4=+2IJJ. II.
 $B---: (8    } 777D		Q&F"2"2t99>>d1g&@&@&B&B>75577DD!::f---a 213G3G3I3I 2//11DD'D111z))t)4411z))++1*.D'I"++D111*AD!9555W__ v #)4yy@@CKK@@@	   +/D'I"++D111J#*4000X$//"3"3 ..000$ii1nGVqJ C* C	&//555 5!$q'+<==  Q==???"&q'"5"F"Fd1g# # J%%gm444 7' ' ' ' '$*LLNN' ' 'O J%%o666'.t444ww**2tT6BBB^##t99 #34yy@@CKK@@@	    8KQ$8$8L . a"---,,R666Aw$H"(X666\!!doo&7&7!4yy&&#.4yy@@CKK@@@	    8KQ$8$8L . a"---..000 TQ#14yy@@CKK@@@	   ,,T!W55E t99>>(/55AAQA	&//55501
88DG,,-]""..000I"++D111Awd""(2666D4yyA~~$q'"<"<">">~Aw1133 ?&F**vf~/P/P/R/R*zz&))<<>>(47##CJ""3T"222#*4000X&##
 #
 4yyA~~#Bh3t998K8K8KLLL$++B	0EFFTTT47OR   X"($$R4@@FF   X4yyA~~#Bh3t998K8K8KLLLGE& %51  - eY%FGG + >555%en6GHHHHH!NE
 =,,#}H!FF$~H"F44666$ll*//++"2"4"4%	 +   Q55777!((a777""(@t?O?O?Q?Q?Z @ @ % 1 1 3 3 <@ @ @      YR4888KZ333333{ >#5dk#B#B >	,00===''((,,<L<N<N    77&&r4v>>>rA   c                 L    |                                   d | j        D             S )Nc                     g | ]	}|j         
S rF   r   r   s     r?   
<listcomp>z9ConstDictVariable.unpack_var_sequence.<locals>.<listcomp>:  s    ))))))rA   rw   rO   r   s     r?   r"  z%ConstDictVariable.unpack_var_sequence8  s*    **,,,))dj))))rA   c                 x    |                                   t          j        |t          | j                            S )z Mapping length for dict objects.)rx   r&   r   r   r2   r.  s     r?   	mp_lengthzConstDictVariable.mp_length<  s/    **,,,$RTZ999rA   c                 r    t           fdt          t          j        t          j        fD                       rKt           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        	           d S )
Nc              3   *   K   | ]}j         |u V  d S r9   r{   )r;   trO   s     r?   r@   z5ConstDictVariable.call_obj_hasattr.<locals>.<genexpr>F  s>       
 
 MQ
 
 
 
 
 
rA   TFzhasattr on z is not supportedzunsupported hasattr operationzClass z+Consider using a regular dictionary insteadr   )r   rV   rW   rX   rY   ri   r1   r'   r  r   r   SUPPORTABLE)rO   r   r   r   s   `   r?   call_obj_hasattrz"ConstDictVariable.call_obj_hasattrA  s    
  
 
 
 
K3[5LM
 
 
 
 
 	6 t}d++ 5'.t444}$$'.u555<DM<<<3,T],,=".		
 	
 	
 	
 	
 	
rA   c                 ^    |                                    t                      j        di |S NrF   )rx   rI   r   )rO   r3   rQ   s     r?   r   zConstDictVariable.cloneZ  s1    **,,,uww}&&v&&&rA   c                     dS )zP
        Dictionaries are mutable and therefore not hashable in Python.
        FrF   rc   s    r?   is_python_hashablez$ConstDictVariable.is_python_hashable^  	     urA   c                     |dk    r't          j        ||                                           S t                                          ||          S )NrQ   )r&   r   r|   rI   var_getattrrO   r   r   rQ   s      r?   r<  zConstDictVariable.var_getattrd  sG    ;"(T-=-=-?-?@@@ww""2t,,,rA   r   r,   r4   Nr4   N)3r   
__module____qualname__rV   _cpython_typer   DICT_CONTAINSr   DICT_NOT_CONTAINSr   r&   _nonvar_fieldsr   r   rJ   rL   r_   strrk   rt   ry   r|   boolr   r   r   r   r   intr   r   r   r   r   r   r   r   r   rx   listr   r   r  r"  r0  r'   r5  r   r9  r<  __classcell__rQ   s   @r?   r0   r0   K   sl       M!/N%7 			'N %! %!O_45%! %! 	%!
 
%! %! %! %! %! %!ND T    &N$sCx. N N N N,C , , , ,
DcN 
 
 
 
Mc?.B)C M M M MT    
 
4 
 
 
 
0
#0
 ,0
  	0

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

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


t 
 
 
 
&$t+&4C&	& & & &
M 
M 
M 
M-< -< -< -<^)0?	   )0?	   " ?T;Q    &/ &d & & & &I I I I(5)(515o1F(5	(5 (5 (5 (5TE#E E 
	E E E En?#n? n? ?#	n?
 S/)*n? 
n? n? n? n? n? n?`*&= *$BW * * * *:3 : : : : :

)
14
	
 
 
 
2'c 'o ' ' ' ' ' 'D    -5 -S - - - - - - - - - -rA   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                      j        di | t          |t                    sJ || _        d S r7  )rI   rJ   r:   r0   rN  rO   rN  r3   rQ   s      r?   rJ   zMappingProxyVariable.__init__o  sB    ""6"""'#455555rA   c                     t           j        S r9   )typesMappingProxyTyperc   s    r?   r|   z MappingProxyVariable.python_typet  s    %%rA   r   r-   c                 6    | j                             |          S r9   )rN  r"  r.  s     r?   r"  z(MappingProxyVariable.unpack_var_sequencew  s    |//333rA   r   r,   c                    | j         r3d| j          d}t          dd| j          |dgt          j                                       fd            | j                                       t          dd	                     d S )
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                                                                 t                                         d          g          S )NrS  )r   r   rR  r   r   s   r?   r   z2MappingProxyVariable.reconstruct.<locals>.<lambda>  s?    G))55e<<,,-?@@  rA   r!   F)rM   r   r   r4  r   rN  r   r   )rO   r   r   s    ` r?   r   z MappingProxyVariable.reconstructz  s    ; 	LT[ L L L  ?04;00Y&2	    	   	
 	
 	
 	21e<<=====rA   c                     | j         r@|j        j                                        r$d}t	          dd| j          d|ddg           d S d S d S )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 mutationrV  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   )rM   r   r   has_existing_dict_mutationr   )rO   r   r   s      r?   _check_mutation_guardz*MappingProxyVariable._check_mutation_guard  s    ; 	291LLNN 	7  GH4;HHHdh	     	 	 	 	rA   rB   c                 b    |                      |           | j                            ||          S r9   )rZ  rN  r   r   s      r?   r   z&MappingProxyVariable.mp_subscript_impl  s0     	""2&&&|--b#666rA   r   r   c                 f    |                      |           | j                            ||||          S r9   )rZ  rN  r  )rO   r   r   r   r3   s        r?   r  z MappingProxyVariable.call_method  s4     	""2&&&|''D$???rA   c                 6    | j                             |          S r9   )rN  r0  r.  s     r?   r0  zMappingProxyVariable.mp_length  s    |%%b)))rA   c                     |                                  t          j        u r&t          j        ||t          j        j        v           S t                                          ||          S r9   )r|   rR  rS  r&   r   __dict__rI   r5  r=  s      r?   r5  z%MappingProxyVariable.call_obj_hasattr  sW     !777"(TU5K5T-TUUUww''D111rA   r>  )r   r-   r4   N)r   r@  rA  rR  rS  rB  r0   r   rJ   r   r|   rI  r&   r"  r   rZ  r   rF  rV   r  r0  r'   r5  rJ  rK  s   @r?   rM  rM  j  s       *M 1 S T      
&T & & & &4&= 4$BW 4 4 4 4> > > >6   ,7#7 7 
	7 7 7 7@#@ @ ?#	@
 S/)*@ 
@ @ @ @*3 * * * * *2)2142	2 2 2 2 2 2 2 2 2 2rA   rM  c                   6    e Zd ZddZdddee         ddfdZdS )	NNModuleHooksDictVariabler4   Nc                     d S r9   rF   rc   s    r?   rx   z7NNModuleHooksDictVariable.install_dict_keys_match_guard      rA   r   r-   r   c                     d S r9   rF   rO   r   r   s      r?   r   z5NNModuleHooksDictVariable.install_dict_contains_guard  	     	rA   r?  )r   r@  rA  rx   rI  r&   r   rF   rA   r?   ra  ra    sY           )15o1F	     rA   ra  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                      j        ||fi | |t          j        u sJ |t	          j        d           }|| _        d S r9   )rI   rJ   rW   rY   r'   r  rh  )rO   r2   r1   rh  r3   rQ   s        r?   rJ   zDefaultDictVariable.__init__  s^     	33F333;22222".5d;;O.rA   c                     | j         t          t          t          fvr	| j        sdS t                                                      S r~   )rh  rI  r   rV   r2   rI   r   rO   rQ   s    r?   r   z&DefaultDictVariable.is_python_constant  s<     eT':::4::5ww))+++rA   c                     | j         J d| j                                          dt                                                       dS )Nzdefaultdict(rg   ))rh  rk   rI   rk  s    r?   rk   zDefaultDictVariable.debug_repr  sL    #///W4/::<<WW@R@R@T@TWWW	
rA   r   c                     t          | t          j        t          j        j        t          j        j        f          p"t          | t          j                  o| j        d u S r9   )r:   r   BaseBuiltinVariable	functionsBaseUserFunctionVariablePolyfilledFunctionVariabler'   re   r   s    r?   is_supported_argz$DefaultDictVariable.is_supported_arg  sY    -#<#>
 
 Q i899Oci4>O	QrA   r   r-   rB   c                 &   || v r|                      ||          S | j                                        rt          t          ||g           d S | j                            |g i           }t                                          |d||gi            |S )Nr   r   )r   rh  is_constant_noner   r   r  rI   r  )rO   r   rB   default_varrQ   s       r?   r   z%DefaultDictVariable.mp_subscript_impl  s     $;;%%b#...0022 	$Xr>>>>>>.<<RRHHKGGMC3ErJJJrA   r   r   c                    |dk    r| j         rt          |          dk    r"t          ||dt          |           d           t          |d         t                    rl|d         j        dk    r[|                     |d                   r@|j        j        	                    |            |d         | _
        t	          j        d           S t                                          ||||          S |dk    rqt          |          dk    r"t          ||d	t          |           d           t          j        |t           j                                      || |d         gi           S t                                          ||||          S )
N__setattr__r   z2 argsr   r   rh  r!   r  r  )r  r   r    r   r'   re   rs  r   r   r  rh  r  rI   r  r&   r   r   r  r  )rO   r   r   r   r3   rQ   s        r?   r  zDefaultDictVariable.call_method  sw    =  T_ 4yyA~~#Bh3t998K8K8KLLL tAw 01156:1gmGX6X6X''Q00 7Y	&//555'+Aw$'.t44477&&r4v>>>X4yyA~~#Bh3t998K8K8KLLL"(Y-BCCQQT47OR   77&&r4v>>>rA   c                 b    |dk    r| j         S t                                          ||          S )Nrh  )rh  rI   r<  r=  s      r?   r<  zDefaultDictVariable.var_getattr+  s4    
 $$$''ww""2t,,,rA   r   r,   c                                         fd            | j                                       g t          dd          t	                                                     |                                t	                                                     d           |                                                    g t          d          t          d                     d S )Nc                                                                 t                                         d          g          S )NrY   r   r   s   r?   r   z1DefaultDictVariable.reconstruct.<locals>.<lambda>7  s>    G))55kBB,,];;  rA   r!   Fr   r   )r   rh  r   r   r   r   r   r   r   r   r   r   s    `r?   r   zDefaultDictVariable.reconstruct4  s       	
 	
 	
 	$%%%%a//  	
 	
 	
 	$n..///H%%%**7333#A&&"9--	
 	
 	
 	
 	
rA   r9   r>  )r   r@  rA  rW   rY   rB  rV   r&   r   r   rJ   rG  r   rF  rk   staticmethodrs  r   rI  r  r<  r   rJ  rK  s   @r?   r  r    s       +M 37	/ /O_45/ / )4/	/
 / 
/ / / / / /,D , , , , , ,
C 
 
 
 
 
 
 Qo Q$ Q Q Q \Q#  
	     $?#? ? ?#	?
 S/)*? 
? ? ? ? ? ?8-#- - 
	- - - - - -
 
 
 
 
 
 
 
rA   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kvrN  r3   r4   c                      t                      j        di | | j        dv sJ t          |t                    sJ || _        d S )N)r   r   r2   rF   )rI   rJ   r  r:   r0   rN  rP  s      r?   rJ   zDictViewVariable.__init__[  sV    ""6"""w55555'#455555rA   c                 b    | j         J  t          | j        j        | j                               S r9   )r  getattrrN  r2   rc   s    r?   
view_itemszDictViewVariable.view_itemsa  s/    w"""3wt|)4733555rA   c                     t           r9   )NotImplementedErrorrc   s    r?   view_items_vtzDictViewVariable.view_items_vtf  s
     "!rA   r   r-   c                     | j         S r9   )r  r.  s     r?   r"  z$DictViewVariable.unpack_var_sequencel  s    !!rA   r   r,   c                     | j         J  || j                   |                    | j                    |                    d           d S )Nr   )r  rN  r   r  r   s     r?   r   zDictViewVariable.reconstructo  sR    w"""DG$$$ArA   r   c                     | j         J ||                                 j        v rt          j        d          S t          j        d          S )NTF)r  r|   r_  r'   r  )rO   r   r   s      r?   r5  z!DictViewVariable.call_obj_hasattru  sN     w"""4##%%...#*4000&u---rA   r   c                     |dk    r$ddl m}  || j        t                                S |dk    r't	          j        ||                                           S t                                          ||||          S )Nr  r!   r	  r  __repr__)	r!  r
  r  r%   r&   r   rk   rI   r  )rO   r   r   r   r3   r
  rQ   s         r?   r  zDictViewVariable.call_method}  s     :333333''"2B2D2D    Z"(T__->->???ww""2tT6:::rA   c                 P    t          j        |t          | j                            S )z&Sequence length for dict view objects.)r&   r   r   r  r.  s     r?   	sq_lengthzDictViewVariable.sq_length  s    $RT_)=)=>>>rA   r>  )r   r@  rA  __doc__r  rF  __annotations__r0   r   rJ   propertyr  rI  r&   r  r"  r   r'   r5  rV   r  r  rJ  rK  s   @r?   r~  r~  R  s          Bd
 1 S T       6C 6 6 6 X6 "tO4 " " " X"
"&= "$BW " " " "   .).14.	. . . .;#; ; ?#	;
 S/)*; 
; ; ; ; ; ;"?3 ? ? ? ? ? ? ? ? ?rA   r~  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   )setr  rc   s    r?   	set_itemszDictKeysVariable.set_items  s    4?###rA   c                 $    d | j         D             S )Nc                     g | ]	}|j         
S rF   r   r   s     r?   r-  z2DictKeysVariable.view_items_vt.<locals>.<listcomp>  s    ......rA   r  rc   s    r?   r  zDictKeysVariable.view_items_vt  s     /.do....rA   c                     t           S r9   )r   rc   s    r?   r|   zDictKeysVariable.python_type  s    rA   c                    | j         sdS g }| j         D ]^}t          |j        d          rt          |j        j                  n|j                                        }|                    |           _dd                    |          z   dz   S )Nzdict_keys([])re   zdict_keys([,])r  ri   r^   rj   re   rk   rl   rm   )rO   r2   ra   ro   s       r?   rk   zDictKeysVariable.debug_repr  s     		:"?!E_ & &(/g(>(>UD$$$ADOODUDU  W%%%% 388E??2T99rA   r   r-   r   r   r3   c                 ,   |dk    r| j                             ||||          S |dv r:t          | 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   __and____iand__r  r  __sub____isub____xor____ixor__r   )rN  r  r  r  r+   r   r:   r   UserDefinedSetVariabler  r  r&   r   NotImplementedrI   )rO   r   r   r   r3   mrrQ   s          r?   r  zDictKeysVariable.call_method  s    >!!<++BdFCCC 	
 	
 	
 --A$q'#$$Aq>>!+++Q4%$	  	A ',R@@@"(&t,T^T!W=NOO   ww""2tT6:::rA   )r   r@  rA  r   rB  r  r  r  r&   r  rI  r  r   r|   rF  rk   rV   r  rJ  rK  s   @r?   r  r    s       M	B$3/ $ $ $ X$ /tO4 / / / X/T    
:C 
: 
: 
: 
:&;#&; &; ?#	&;
 S/)*&; 
&; &; &; &; &; &; &; &; &; &;rA   r  c                   V    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dS )r  r   r4   c                 *    t          | j                  S r9   )rI  r  rc   s    r?   r  z DictValuesVariable.view_items_vt  s    DO$$$rA   c                     t           S r9   )r   rc   s    r?   r|   zDictValuesVariable.python_type  s    rA   c                     | j         sdS g }| j         D ]O}t          |d          rt          |j                  n|                                }|                    |           Pdd                    |          z   dz   S )Nzdict_values([])re   zdict_values([r  r  )r  ri   rj   re   rk   rl   rm   )rO   r2   r=   rp   s       r?   rk   zDictValuesVariable.debug_repr  s     	<$$!E_ & &+21g+>+>R$qw---ALLNNW%%%%"SXXe__4t;;rA   N)r   r@  rA  r   rB  r  r  rI  r&   r  r   r|   rF  rk   rF   rA   r?   r  r    s        M 
B%tO4 % % % X%T    <C < < < < < <rA   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                 $    d | j         D             S )Nc                 d    h | ]-\  }}t          t          j        |j        |g                    .S rF   )r(   r   r  r^   r`   s      r?   	<setcomp>z.DictItemsVariable.set_items.<locals>.<setcomp>  sE     
 
 
1 I3QT1I>>??
 
 
rA   r  rc   s    r?   r  zDictItemsVariable.set_items  s%    
 

 
 
 	
rA   c                 $    d | j         D             S )Nc                 J    g | ] \  }}t          j        |j        |g          !S rF   )r   r  r^   r`   s      r?   r-  z3DictItemsVariable.view_items_vt.<locals>.<listcomp>  s-    OOOtq!	'q	22OOOrA   r  rc   s    r?   r  zDictItemsVariable.view_items_vt   s     POtOOOOrA   c                     t           S r9   )r   rc   s    r?   r|   zDictItemsVariable.python_type  s    rA   c                    | j         sdS g }| j         D ]\  }}t          |j        d          rt          |j        j                  n|j                                        }t          |d          rt          |j                  n|                                }|                    d| d| d           dd                    |          z   dz   S )	Nzdict_items([])re   (rg   rm  zdict_items([r  r  r  rn   s         r?   rk   zDictItemsVariable.debug_repr  s     
	;##!E 8 81(/g(>(>UD$$$ADOODUDU  ,31g+>+>R$qw---ALLNN666G6667777!CHHUOO3d::rA   r   r-   r   r   r3   c                 8   |dk    rt          |          dk    r"t          ||dt          |           d           t          |d         t                    r)| j                            |d|d         j        gi           S t          |d         t          t          j        t          t          f          r9t          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 r:t'          | 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  rN  r  r+   r   r  r  r&   r   r  r'   r  r!  r
  r  r%   r  r   r  rI   )	rO   r   r   r   r3   r
  fn_hdlret_valrQ   s	           r?   r  zDictItemsVariable.call_method  s*    84yyA~~#Bh3t998K8K8KLLL$q'#455 |//HtAw>OQSTTTQ4%$	   ',a)::;;q@   $*5111Z333333''"2B2D2D     	
 	
 	
 T^T22FfT!W.//Gw'''+++Q4%$	  	A ',R@@@"(&t,T^T!W=NOO   ww""2tT6:::rA   Fc                     dS )zC
        Dictionary item views are not hashable in Python.
        FrF   rc   s    r?   r9  z$DictItemsVariable.is_python_hashableV  r:  rA   )r   r@  rA  r   rB  r  r  r  r  rI  r&   r  r   r|   rF  rk   rV   r  r   r9  rJ  rK  s   @r?   r  r    s8       M	B
301 
 
 
 X
 PtO4 P P P XPT    ;C ; ; ; ;?;#?; ?; ?#	?;
 S/)*?; 
?; ?; ?; ?; ?; ?;BGEN        rA   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d	S )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                  S |                                 }|t          urJt          | t          j
                  r|                     d          S t                              |d          S t          ddt          |            dt          |            g t           j                   d S )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_dictr^   get_real_python_backed_valuer$   UserDefinedObjectVariable_getattr_staticobject__getattribute__r   r   r   
DYNAMO_BUG)r^   re   s     r?   r  z+SideEffectsProxyDict.get_example_value_dictf  s    "i:;; 	 IIDEE 	'>>ruEEE3355EN**b)"EFF F--j999!225*EEEK?T"XX?? [QUVXQYQY [ [*5	     rA   r   r-   c                 |     t                                         } fd|                                D             S )Nc                     i | ]E\  }}|t          j        |j        o"t          t	          j        d           |                    FS )r_  )rM   )r&   r   rM   r   r   )r;   rB   re   r   r^   s      r?   rG   z;SideEffectsProxyDict.get_value___dict__.<locals>.<dictcomp>  sm     
 
 
 U &y N%jJ&G&GMM	  
 
 
rA   )r  r  r2   )r   r^   example_value_dicts   `` r?   get_value___dict__z'SideEffectsProxyDict.get_value___dict__  sX     2HHLL
 
 
 
 
 16688
 
 
 	
rA   r   Nc                 l    || _         |j        j        | _        |                     ||          | _        d S r9   )r   r   r   r  	item_dict)rO   r   r   s      r?   rJ   zSideEffectsProxyDict.__init__  s1    	I200T::rA   rB   c                 f    t           }t          ||          r|j                                        n|S r9   )r(   r   r^   rt   )rO   rB   Hashers      r?   _maybe_unwrap_keyz&SideEffectsProxyDict._maybe_unwrap_key  s/     .4S&.A.AJsv((***sJrA   c                 L    | j         j                            | j        i           S r9   )r   store_attr_mutationsr   r   rc   s    r?   side_effects_tablez'SideEffectsProxyDict.side_effects_table  s      599$)RHHHrA   c                     |                      |          }| j                            | j        |          r"| j                            | j        |d          S | j        |         S )NT)
deleted_ok)r  r   has_pending_mutation_of_attrr   	load_attrr  rO   rB   r   s      r?   __getitem__z SideEffectsProxyDict.__getitem__  s`    %%c**99$)TJJ 	Q$..ty$4.PPP~d##rA   re   c                     |                      |          }t          |t                    sJ | j                            | j        ||           d S r9   )r  r   rF  r   
store_attrr   )rO   rB   re   r   s       r?   r   z SideEffectsProxyDict.__setitem__  sN    %%c**dC     $$TYe<<<<<rA   c                     |                      |          }| j                            | j        |t	          j                               d S r9   )r  r   r  r   r   r   r  s      r?   r   z SideEffectsProxyDict.__delitem__  sA    %%c**$$TYi6O6Q6QRRRRRrA   c                     |                      |          }|                                 }||v r!t          ||         t          j                   S || j        v S r9   )r  r  r:   r   r   r  )rO   rB   r   tables       r?   r   z!SideEffectsProxyDict.__contains__  sX    %%c**'')) 5==!%+y/HIIII4>))rA   c                 4    t          d | D                       S )Nc              3      K   | ]}d V  dS )r!   NrF   )r;   _s     r?   r@   z/SideEffectsProxyDict.__len__.<locals>.<genexpr>  s"      ##1######rA   )r   rc   s    r?   __len__zSideEffectsProxyDict.__len__  s    ##d######rA   c              #   l  K   t           }|                                 }|                                D ]?\  }}t          |t          j                  r  |t          j        |                    V  @| j                                        D ](\  }}||vr |t          j        |                    V  )d S r9   )	r(   r  r2   r:   r   r   r'   r  r  )rO   r  dra   r=   s        r?   r  zSideEffectsProxyDict.__iter__  s       ##%%GGII 	5 	5DAq!Y677 &)033444444N((** 	9 	9DAqzzf-4Q7788888	9 	9rA   )r   r@  rA  r  r|  r&   rV   rF  r  r  r  rJ   kVr  r  r  r   r   rG  r   rH  r  r   r(   r  rF   rA   r?   r  r  `  s        
 ? tCK7H    \2 
#
)8
	c?"	#
 
 
 \
;_ ;2I ;d ; ; ; ;
KR KC K K K KIDo)=$> I I I I$r $o $ $ $ $=r =/ =d = = = =Sr Sd S S S S* *t * * * *$ $ $ $ $
9(?3 
9 
9 
9 
9 
9 
9rA   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__r   r-   r^   r4   c                     |j         rt                      nt                      }|j         ot          |j         d          } | ||||          S )Nr_  )r   r   rM   )rM   r"   r#   r   )clsr   r^   r  rM   s        r?   r  zDunderDictVariable.create  s`     35)W,...AUAWAW@z")Z@@s"	
 
 
 	
rA   r3   Nc                 f     t                      j        i fi | t          ||          | _        d S r9   )rI   rJ   r  r2   )rO   r^   r   r3   rQ   s       r?   rJ   zDunderDictVariable.__init__  s9     	&&v&&&)"b11


rA   r   re   c                     || j         |<   d S r9   rb   )rO   r   re   s      r?   setitemzDunderDictVariable.setitem  s     
4rA   c                     | j         |         S r9   rb   rO   r   s     r?   getitemzDunderDictVariable.getitem  s    z$rA   c                     || j         v S r9   rb   r  s     r?   r   zDunderDictVariable.contains  s    tz!!rA   defaultc                     |                      |          r|                     |          S  |            }|| j        |<   |S r9   )r   r  r2   )rO   r   r  re   s       r?   getitem_or_defaultz%DunderDictVariable.getitem_or_default  sF    
 == 	<<%%%GIIE$DJtLrA   c                     d S r9   rF   rc   s    r?   rx   z0DunderDictVariable.install_dict_keys_match_guard  rc  rA   r   c                     d S r9   rF   re  s      r?   r   z.DunderDictVariable.install_dict_contains_guard  rf  rA   r?  )r   r@  rA  r  classmethodr&   r  r   rJ   rF  r  r  rG  r   r   r  rx   rI  r   rJ  rK  s   @r?   r  r    s       $$
#
 
 
	
 
 
 [
22 $2 	2
 
2 2 2 2 2 2!C ! !D ! ! ! ! C  O        "S "T " " " "

 "o-.
 
	
 
 
 
   )15o1F	       rA   r  )Lr  rW   r   rR  collections.abcr   r   r   typingr   r   r   r	   torch.utils._pytreer
   r  r   r   r   bytecode_transformationr   r   r   r   excr   r   guardsr   r   rM   r   r   r   r   utilsr   r   r   r   r   r    rT   r"   r#   r$   r%   r&   constantr'   hashabler(   r)   r*   setsr+   torch._dynamo.codegenr,   torch._dynamo.symbolic_convertr-   rp  r.   r0   rM  ra  r  r~  r  r  r  rF  r  abcMutableMappingr  r  rF   rA   r?   <module>r     sn   &          8 8 8 8 8 8 8 8 8 8 5 5 5 5 5 5 5 5 5 5 5 5 * * * * * * 6 6 6 6 6 6 6 6 6 6            : 9 9 9 9 9 9 9 0 0 0 0 0 0 0 0                                        ' & & & & & D D D D D D D D D D        0//////DDDDDD//////\- \- \- \- \- \- \- \-~]2 ]2 ]2 ]2 ]2? ]2 ]2 ]2@     1   z
 z
 z
 z
 z
+ z
 z
 z
z>? >? >? >? >? >? >? >?BD; D; D; D; D;' D; D; D;N< < < < <) < < <2g g g g g( g g gT sc9 c9 c9 c9 c9;?9"o:MN c9 c9 c9L9 9 9 9 9* 9 9 9 9 9rA   