
    N jy                       S r SSKrSSKrSSKrSSKrSSKJrJr  SSKJ	r	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"  SSK#J$r$J%r%J&r&J'r'J(r(J)r)J*r*  SSK+J,r,J-r-  SSK.J/r/J0r0  \(       a  SSK1J2r2  SSK3J4r4  SSK5J6r6  SSK7J8r8  S\	S\94S jr: S7S\-S\S   SS4S jjr;S\-S\94S jr< " S S\-5      r= " S S \-5      r> " S! S"\=5      r? " S# S$\=5      r@ " S% S&\=5      rA " S' S(\-5      rB " S) S*\A5      rC " S+ S,\A5      rD " S- S.\A5      rE " S/ S0\-5      rF " S1 S2\F5      rG " S3 S4\F5      rH " S5 S6\F5      rIg)8a  
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)
- Sets and frozensets (implemented internally using dictionaries)

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. Sets are implemented as dictionaries with
None values for efficiency and code reuse.
    N)IterableSequence)AnyLiteralOptionalTYPE_CHECKINGUnion
OrderedSet   )graph_break_hints	polyfills	variables)create_call_functioncreate_call_methodcreate_dup_topcreate_instruction)raise_observed_exceptionunimplemented)GuardBuilderinstall_guard)
AttrSourceis_constant_sourceis_from_local_source)cmp_name_to_op_mapping
dict_items	dict_keysdict_valuesistyperaise_args_mismatchspecialize_symnode   )ValueMutationNewVariableTracker)CONSTANT_VARIABLE_NONEConstantVariable)	PyCodegenInstructionTranslator)BuiltinVariable)UserFunctionVariableobjreturnc                 L    [        U 5      R                  R                  SS5      $ )N__instancecheck__F)type__dict__get)r,   s    n/root/GenerationalWealth/GenerationalWealth/venv/lib/python3.13/site-packages/torch/_dynamo/variables/dicts.pywas_instancecheck_overrider4   B   s     9!!"5u==    argtxr)   c                    SSK Jn  Uc  SSKJn  UR                  " 5       n U R                  5       n[        [        UUR                  USU< S[        U R                  5       5       35      /S9  g ! [         a    [        U 5      n NVf = f)Nr"   SourcelessBuilderr   r(   zunhashable type: z and variable tracker = args)builderr:   torch._dynamo.symbolic_convertr)   
current_txpython_type	Exceptionr0   r   	TypeErrorcreaterealize)r6   r7   r:   r)   arg_types        r3   raise_unhashablerF   F   s     +	zH"--/??$ 
$$#H</GS[[]H[G\]
	  9s   A1 1B	B	xc                     [        U [        R                  5      (       a+  U R                  5       (       d  U R	                  5       (       a  gU R                  5       $ )NT)
isinstancer   LazyVariableTrackeris_realizedis_hashableis_python_hashable)rG   s    r3   rL   rL   `   s?     	1i3344MMOO!!r5   c                     ^  \ rS rSr\R
                  rS1\R                  kr " S S5      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\4S jrS\4S jrS\\   S\S\4S jrS0S jrS0S  jrSSS!\S\4S" jr SSS!\S\4S# jr!S!\S\\   4S$ jr"S!\SS4S% jr#S1S& jr$S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)\S\)4S, jr*S\S\4U 4S- jjr+S\4S. jr,S/r-U =r.$ )2ConstDictVariablen   user_clsc                   J    \ rS rSrSrS\SS4S jrS\4S jrS\	S\
4S	 jrS
rg)"ConstDictVariable._HashableTrackerv   a"  
Auxiliary opaque internal class that wraps a VariableTracker and makes it hashable
This should not be seen or touched by anything outside of ConstDictVariable and its children
Note that it's also fine to put VTs into dictionaries and sets, but doing so does not take into account aliasing
vtr-   Nc                 \    [        U5      n[        U5      (       d  [        U5        Xl        g N)r!   rL   rF   rU   )selfrU   s     r3   __init__+ConstDictVariable._HashableTracker.__init__}   s$    #B'B r?? $Gr5   c                 J   [        U R                  [        R                  5      (       aa  U R                  R	                  5       (       dB  U R                  R                  5       (       a#  [        U R                  R                  5       5      $ U R                  R                  5       $ )aU  
Computes the hash value for the wrapped VariableTracker.

For unrealized LazyVariableTrackers, uses the hash of the original value
to avoid realizing the tracker and inserting unnecessary guards.
For all other cases, delegates to the VariableTracker's get_python_hash method.

Returns:
    The hash value of the underlying variable tracker
)	rI   rU   r   rJ   rK   rL   hashoriginal_valueget_python_hashrX   s    r3   __hash__+ConstDictVariable._HashableTracker.__hash__   sl     477I$A$ABB++--GG''))DGG2245577**,,r5   otherc                     [        U[        R                  5      (       d  gU R                  UR                  L a  gU R                  R	                  UR                  5      $ )aX  
Checks equality between two _HashableTracker instances.

Delegates to the VariableTracker's is_python_equal method to compare
the underlying variable trackers for Python-level equality.

Args:
    other: Another _HashableTracker instance to compare with

Returns:
    True if the underlying variable trackers are Python-equal, False otherwise
FT)rI   rO   _HashableTrackerrU   is_python_equalrX   rb   s     r3   __eq__)ConstDictVariable._HashableTracker.__eq__   sG     e%6%G%GHHww%(("77**58844r5   )rU   )__name__
__module____qualname____firstlineno____doc__r$   rY   intr`   objectboolrg   __static_attributes__ r5   r3   rd   rS   v   s9    		 	4 		-c 	-&	5 	54 	5r5   rd   itemskwargsr-   Nc           	      `  >^ SU;   a  UR                  S5        SU;   a  UR                  S5        [        T	U ]  " S	0 UD6  [        R                  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rW   )rI   r$   ).0rG   vHashables      r3   	<genexpr>-ConstDictVariable.__init__.<locals>.<genexpr>   s<      
 & q?H56 /1o./%s   8;keyrS   r-   c                 :   > [        U T5      (       a  U $ T" U 5      $ rW   )rI   )r~   r{   s    r3   make_hashable1ConstDictVariable.__init__.<locals>.make_hashable   s      %S(333F#Fr5   Trr   )popsuperrY   rO   rd   allrs   r	   r$   _get_dict_cls_from_user_clssourcer   rw   copyrv   rQ   )
rX   rs   rQ   rt   r   dict_clsrG   rz   r{   	__class__s
           @r3   rY   ConstDictVariable.__init__   s    v%JJ'(#v-JJ/0"6"$55  
 
 
 
 	
 
	G(LLM	G1	G
 33H=u{{}M}tq}Q/2}MN
 6:[[$T[[11d 	# $jjl  Ns   :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rW   rr   )ry   baseaccepted_dict_typess     r3   r|   @ConstDictVariable._get_dict_cls_from_user_cls.<locals>.<genexpr>   s      !1=P5P!1s   		)dictcollectionsOrderedDictdefaultdictnext__mro__)rX   rQ   r   r   s      @r3   r   -ConstDictVariable._get_dict_cls_from_user_cls   s{    #[%<%<k>U>UV **H  !)!1!1 H ..88. {...Hr5   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 rW   )rs   rU   as_proxyrX   krz   s      r3   r   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: {, }rs   hasattrrU   reprr   
debug_reprappendjoinrX   rs   r   rz   key_strval_strs         r3   r   ConstDictVariable.debug_repr   s    JJ$$&DA*1!$$*@*@d144::&addooFWG'.q'':':d177mGLLG9Bwi01 ' TYYu%%++r5   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 rW   )rs   rU   as_python_constantr   s      r3   r   $ConstDictVariable.as_python_constant   sS     

((*
* DD##%q';';'==*
 	
 
r   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 rW   )install_dict_keys_match_guardrs   rU   r   r   s      r3   keys_as_python_constant)ConstDictVariable.keys_as_python_constant   sI    **,9=9I9I9KL9K'')1,9KLLLs   'Ac                     U R                   $ rW   rQ   r_   s    r3   r@   ConstDictVariable.python_type   s    }}r5   rU   c                    [        U[        5      (       d   e[        R                  nUR	                  5       =(       aN    U" U5      U R
                  ;   =(       a2    [        U R
                  U" U5         [        R                  5      (       + $ rW   )rI   r$   rO   rd   rM   rs   r   DeletedVariable)rX   rU   r{   s      r3   __contains__ConstDictVariable.__contains__   sm    "o....$55!!# T

*Ttzz(2,79R9RSS	
r5   r7   r)   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)rs   rv   rw   r   mutation_type)rD   rI   rO   lenrs   _tree_map_fallbackr   r0   KeyErrorcall_tree_maprU   cloner#   )rX   r7   r   r   r   r   other_dicts	candidatenew_items_hashedkey_trackerr   sibling_leavesupdated_original_itemss                r3   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c                 V    [        S U R                  R                  5        5       5      $ )Nc              3   `   #    U  H$  n[        U[        R                  5      (       + v   M&     g 7frW   )rI   r   r   )ry   rG   s     r3   r|   (ConstDictVariable.len.<locals>.<genexpr>:  s'      
BUQ
1i77888BUs   ,.)sumrs   valuesr_   s    r3   r   ConstDictVariable.len9  s)     
BF**BSBSBU
 
 	
r5   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rW   )is_new_itemrv   r2   rU   )ry   r~   r   rX   s      r3   r|   2ConstDictVariable.has_new_items.<locals>.<genexpr>?  s?      2
0
 T0044SVV<eDD0s   AA)rw   anyrs   r_   s   `r3   has_new_itemsConstDictVariable.has_new_items>  s7    ** 
c 2
"jj..02
 /
 	
r5   r   rb   c                     U(       a]  UR                  5       (       aH  UR                  5       (       a3  [        UR                  5       5      [        UR                  5       5      :g  $ [        U5      [        U5      :g  $ rW   )rK   idrD   )rX   r   rb   s      r3   r   ConstDictVariable.is_new_itemD  sW     U&&((U->->-@-@emmo&"U]]_*===%yBuI%%r5   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r6   )rs   rv   r2   rU   r   rw   append_outputr   )rX   codegennum_argsr~   r   items         r3   reconstruct_kvs_into_new_dict/ConstDictVariable.reconstruct_kvs_into_new_dictL  s    ****,JC&&**3662D,,0K0K0KA - 	0(KLr5   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_moduler   create_load_attrr   s   r3   <lambda>/ConstDictVariable.reconstruct.<locals>.<lambda>\  s1    --99+F00?r5   r   Fupdater"   POP_TOPr   r   DICT_UPDATE)rQ   r   r   add_push_null_contains_self_referencer   r   r   	add_cacher   load_methodr   r   r   rX   r   s    `r3   reconstructConstDictVariable.reconstructX  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;r5   r6   c                 ,   [         R                  U5      nX0R                  ;  a0   S[        U5       SUR	                  5       < 3n[        [        X/S9  U R                  U   $ ! [
         a%    [        R                  " S[        U5       35      n NLf = f)NzDict key lookup failed for z%. Debug representation of the key is r;   )
rO   rd   rs   strr   rA   r&   rC   r   r   )rX   r7   r6   r~   error_messages        r3   'getitem_const_raise_exception_if_absent9ConstDictVariable.getitem_const_raise_exception_if_absent  s      005jj 1#c( <::=..:J9MO  %XrHzz#   0 7 71#c(<!s    A$ $,BBc                     [         R                  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)rO   rd   rs   r   r   r   
USER_ERROR)rX   r7   r6   r~   msgs        r3   getitem_constConstDictVariable.getitem_const  ss      005jj #CII;.GHC/syyk*T&11	 zz#r5   c                 j    [         R                  U5      nX R                  ;  a  g U R                  U   $ rW   )rO   rd   rs   )rX   r6   r~   s      r3   maybe_getitem_const%ConstDictVariable.maybe_getitem_const  s-    005jj zz#r5   c                 L   X;   d   e[         R                  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 rW   )rO   rd   tuplers   keysindexrv   rI   r   rJ   rD   )rX   r6   r~   r  original_key_vts        r3   realize_key_vt ConstDictVariable.realize_key_vt  s    {{005djjoo'(..s3 3 3 8 8 :;EBoy'D'DEE##% Fr5   c                 x    U R                   (       a)  [        U R                  [        R                  5      5        g g rW   )r   r   
make_guardr   DICT_KEYS_MATCHr_   s    r3   r   /ConstDictVariable.install_dict_keys_match_guard  s%    ;;$//,*F*FGH r5   r<   c           
         U R                   (       d  g UR                  R                  R                  U 5      (       a  g US   U ;   nUS   R                   cp  US   R	                  5       (       aX  [        U R                  [        R                  " [        U 5      R                  US   R                  5       U(       + S95      5        g US   R                   (       a-  U(       a  U R                  US   5        g U R                  5         g g )Nr   )r~   invert)r   outputside_effectsis_modifiedis_python_constantr   r  	functoolspartialr0   CONTAINS_GUARDr   r  r   )rX   r7   r<   containss       r3   install_dict_contains_guard-ConstDictVariable.install_dict_contains_guard  s    " {{99!!--d337d?7>>!d1g&@&@&B&B%%T
11 G668#+| !W^^##DG,224	 r5   namec           
         > SSK JnJn  SSKJn  [
        R                  nUS:X  az  UR                  U[        5      R                  " U/UQ70 UD6n	UR                  R                  R                  U 5        U R                  R                  U	R                  5        [        $ US:X  a<  [!        U5      S:w  a  [#        XS[!        U5       S35        U R%                  X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        [1        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  [3        [4        U5        [7        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 R9                  U R                  R;                  5       [=        5       S S9$ US:X  ai  U(       d  U(       a&  [#        UUS
[!        U5       S[!        U5       S35        U R'                  5         UR                  " [!        U R                  5      5      $ US:X  a  U R?                  5       (       a  U=(       a    [A        US   5      n
U
(       d  [C        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      '   [        $ US:X  a  U R?                  5       (       a  U=(       a    [A        US   5      n
U
(       af  U R'                  5         SU l"        UR                  R                  R                  U 5        U R                  RG                  U" US   5      5        [        $ [H        TU ]  XX45      $ US:X  a  [!        U5      S;  a  [#        XS[!        U5       S35        U=(       a    [A        US   5      n
U
(       d  [C        US   U5        US   U ;  a+  U RM                  X5        [!        U5      S:X  a  [        $ US   $ U RO                  XS   5      $ US:X  a  U R?                  5       (       a  [!        U5      S;  a  [#        XS[!        U5       S35        U=(       a    [A        US   5      n
U
(       d  [C        US   U5        US   U ;  a5  U RM                  X5        [!        U5      S:X  a  [3        [P        U5        US   $ SU l"        UR                  R                  R                  U 5        U R                  RS                  U" US   5      5      $ US:X  Ga  U R?                  5       (       Ga  [U        U RV                  [        5      (       aD  [U        U RV                  [X        RZ                  5      (       d  [!        U5      (       a  [#        X5        U R                  (       d!  UR                  " S5      n[3        [P        X/S9  U RV                  [X        RZ                  L a  [!        U5      S:X  d  SU;   a  [!        U5      S:X  a,  US   R]                  5       (       a  US   R_                  5       nOIURa                  S5      =n(       a&  UR]                  5       (       a  UR_                  5       nO[#        X5        U R                  Rc                  WS 9u  pOU R                  Rc                  5       u  pSU l"        UR                  R                  R                  U 5        [d        Rf                  " URh                  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                  Rk                  5         [        $ US":X  Gaa  U R?                  5       (       GaK  U R'                  5         [!        U5      S:H  n[!        U5      S:  nU(       d  U(       Ga   UR                  R                  R                  U 5        U(       aq  [m        US   [
        5      (       a  US   R'                  5         US   nOURn                  " U[        US   5      nU R                  R                  UR                  5        U(       aV  UR                  5        VVs0 s H  u  pU" UR                  " U5      5      U_M      nnnU R                  R                  U5        [        $ [H        TU ]  XX45      $ US#:X  a  [!        U5      (       d&  [#        UUS$[!        U5       S[!        U5       S35        U=(       a    [A        US   5      n
U
(       d  [C        US   U5        U RM                  X5        US   U ;   nUR                  " U5      $ US%:X  Ga7  U R?                  5       (       Ga!  [!        U5      S;  a&  [#        UUS&[!        U5       S[!        U5       S35        U=(       a    [A        US   5      n
U
(       d  [C        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 Rq                  US   5      nUb  U$ [!        U5      S:X  a  [        nOUS   nUR                  R                  R                  U 5        UU R                  U" US   5      '   U$ US(:X  a  U R'                  5         UR                  R                  R                  U 5        US   U ;  a  [3        [P        U5        Sn[!        U5      S:X  a+  US   R]                  5       (       a  US   R_                  5       nU(       a=  SU;   a7  US   R]                  5       (       a  URa                  S5      R_                  5       nU" US   5      nU R                  Rs                  UUS 9  [        $ US):X  ar  [u        U [
        5      (       a]  [!        U5      S:w  a  [#        XS[!        U5       S35        UR                  U[v        Rx                  5      R{                  XUS   /0 5      $ US*:X  a2  UR                  " U RK                  US)X45      R|                  (       + 5      $ US+:X  Gaq  [!        U5      S:w  a  [#        XS[!        U5       S35        US   n[u        U[
        [d        R~                  [d        R                  45      (       a  U RV                  [        La  U RV                  nU nO%[m        U[
        5      (       d   eURV                  nUnUR'                  5         UR9                  U R                  R;                  5       [=        5       S US,9nUS   R'                  5         UR                  R                  US   R                  5        U$ S-U R                  5       R                   S.UR                  5       R                   S/3n[3        [4        UU/S9  g US0:X  a  U RK                  US"X45        U $ US1:X  a~  SS2KCJDn  U R(                  (       aI  [        U R(                  5      (       d/  UR                  R*                  R-                  U R(                  5        U" U R                  U5      [=        5       S39$ [H        TU ]  XX45      $ s  snnf )4Nr"   )r*   r&   r9   rY   __getitem__1 args argsr   rs   0 args and 0 kwargs
 args and  kwargsr  z0 argsr   r   )rs   r   r   __len____setitem__r   z2 args and 0 kwargs__delitem__Tr2   )r"   r   z1 or 2 argsr   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_endrg   __ne____or__)rs   r   r   rQ   z$unsupported operand type(s) for |: 'z'and ''__ior____iter__ListIteratorVariabler   )G r*   r&   r=   r:   rO   rd   rC   r   	call_dictr  r  mutationrs   r   r%   r   r    r   r   r   guard_on_key_orderaddDictItemsVariableDictKeysVariabler   rB   DictValuesVariabler   r   r#   
is_mutablerL   rF   rw   r,  r   call_methodr   r  r   r   
issubclassrQ   r   r   r  r   r2   r-  r   TupleVariablerU   r/  rI   call_custom_dictr	  r1  r   r   dict___eq__call_functionr   UserDefinedDictVariableDefaultDictVariabler@   ri   listsr8  r   unpack_var_sequence)rX   r7   r"  r<   rt   r*   r&   r:   r{   temp_dict_vtarg_hashabler  r.  rz   r   has_arg
has_kwargsdict_vtkwargs_hashabler  r   rG   r~   rb   rQ   to_cpynew_dict_vterr_msgr8  r   s                                r3   rC  ConstDictVariable.call_method  s    	8.$55:,33B=GG#L II""++D1JJl001))]"4yA~#Bh3t9+U8KL??GLL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    Yv#)4ykCK=@	 ..0#**3tzz?;;]"t'8'88KQ$8L a"-..0Ta#)4ykCK=@	 II""++D1,0GDJJxQ()))]"t'8'88KQ$8L224.2+		&&//5

&&xQ'89--w*2TBBU]4y&#BmD	{%=PQ8KQ$8L a"-Awd"00:t9>11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-::&--.NO(2EB}} 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))X$//"3"3 ..0$i1nGVqJ*		&&//5!$q'+<== Q==?59!W"1"B"B2tTRSW"UJJ%%gmm4 %+LLN'$2DA !!1!8!8!;<a?$2 $ ' JJ%%o6--w*2TBB^#t99#34ykCK=@	  8KQ$8L a"-,,R6Aw$H#**844\!doo&7&74y&#.4ykCK=@	  8KQ$8L a"-..0TQ#14ykCK=@	 ,,T!W5E t9>.A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))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  ==,#}}H!F%e->????$~~H"F446$ll**//+"2"4%	 +  Q557!!((a7"" ;4;K;K;M;V;V:W X!--/889<  )BgYGYR48KZ3{{#5dkk#B#B		,,00='((,<L<N  7&r>>{'s   %AAc                 x    U R                  5         U R                   Vs/ s H  o"R                  PM     sn$ s  snf rW   )r   rs   rU   )rX   r7   rG   s      r3   rL  %ConstDictVariable.unpack_var_sequenceR  s,    **,"jj)jj)))s   7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rW   r   )ry   trX   s     r3   r|   5ConstDictVariable.call_obj_hasattr.<locals>.<genexpr>[  s!      
M MMQMs   TFzhasattr on z is not supportedzunsupported hasattr operationzClass z+Consider using a regular dictionary insteadr   )r   r   r   r   r   r   rQ   r&   rC   r   r   SUPPORTABLE)rX   r7   r"  r  s   `   r3   call_obj_hasattr"ConstDictVariable.call_obj_hasattrV  s    
  
K33[5L5LM
 
 
 t}}d++'..t44}}$'..u55DMM?*;<3T]]O,="..		
r5   c                 D   > U R                  5         [        TU ]  " S0 UD6$ Nrr   )r   r   r   rX   rt   r   s     r3   r   ConstDictVariable.cloneo  s!    **,w}&v&&r5   c                     g)z@
Dictionaries are mutable and therefore not hashable in Python.
Frr   r_   s    r3   rM   $ConstDictVariable.is_python_hashables       r5   )rs   rv   rw   rQ   r   r'   r-   Nr-   N)/ri   rj   rk   rl   r   DICT_CONTAINSr  r$   _nonvar_fieldsrd   r   r0   r   rY   r   r   r   r   r   r   r@   rp   r   r   r   rn   r   r   r   r   r   r   r   r  r	  r  r   listr   rC  rL  r&   r^  r   rM   rq   __classcell__r   s   @r3   rO   rO   n   s   !//N 			'	'N
45 45r %!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
S 


t 
&o.&7F&	&
M-<^)0?	")0?	" 8O;T &/ &d &I&5)&515o1F&5	&5Pl?#l? l? ?#	l?
 S/)*l? 
l?\*&= *$BW *
)
14
	
2'c 'o 'D  r5   rO   c            
          ^  \ rS rS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	S\S\	\
   S\\\
4   S\
4
S jrSS	S\S\4U 4S jjrSrU =r$ )MappingProxyVariableiz  dv_dictrt   r-   Nc                 `   > [         TU ]  " S0 UD6  [        U[        5      (       d   eXl        g ra  )r   rY   rI   rO   rp  rX   rp  rt   r   s      r3   rY   MappingProxyVariable.__init__|  s,    "6"'#45555r5   c                 "    [         R                  $ rW   )typesMappingProxyTyper_   s    r3   r@    MappingProxyVariable.python_type  s    %%%r5   r7   r)   c                 8    U R                   R                  U5      $ rW   )rp  rL  rX   r7   s     r3   rL  (MappingProxyVariable.unpack_var_sequence  s    ||//33r5   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      $ )Nrv  )r   r   ru  r   r   s   r3   r   2MappingProxyVariable.reconstruct.<locals>.<lambda>  s2    G))55e<,,-?@r5   r"   F)r   r   r   r]  r   rp  r   r   )rX   r   r  s    ` r3   r    MappingProxyVariable.reconstruct  s    ;;<T[[M JL L  ?"4;;-0Y&22	 		
 	21e<=r5   r"  r<   c                     U R                   (       aG  UR                  R                  R                  5       (       a  Sn[	        SSU R                    S3USS/S9  U R
                  R                  XX45      $ )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 mutationr|  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   )r   r  r  has_existing_dict_mutationr   rp  rC  )rX   r7   r"  r<   rt   r  s         r3   rC   MappingProxyVariable.call_method  sr     ;;29911LLNN7  G"4;;-/GHdh	 ||''$??r5   c                    > U R                  5       [        R                  L a1  [        R                  " U[        R                  R
                  ;   5      $ [        TU ]  X5      $ rW   )r@   ru  rv  r&   rC   r1   r   r^  rX   r7   r"  r   s      r3   r^  %MappingProxyVariable.call_obj_hasattr  sN     !7!77#**453I3I3R3R+RSSw'11r5   rp  rg  )ri   rj   rk   rl   rO   r   rY   r0   r@   rk  r$   rL  r   r   r   rC  r&   r^  rq   rl  rm  s   @r3   ro  ro  z  s     1 S T 
&T &4&= 4$BW 4>6@#@ @ ?#	@
 S/)*@ 
@:2)2142	2 2r5   ro  c                   :    \ rS rSrS
S jrSSS\\   SS4S jrS	rg)NNModuleHooksDictVariablei  r-   Nc                     g rW   rr   r_   s    r3   r   7NNModuleHooksDictVariable.install_dict_keys_match_guard  s    r5   r7   r)   r<   c                     g rW   rr   rX   r7   r<   s      r3   r   5NNModuleHooksDictVariable.install_dict_contains_guard  s     	r5   rr   rh  )	ri   rj   rk   rl   r   rk  r$   r   rq   rr   r5   r3   r  r    s)    )15o1F	r5   r  c                      ^  \ rS rSr SS\\\4   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\\   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$ )rJ  i  Nrs   rQ   default_factoryrt   r-   c                 p   > [         TU ]  " X40 UD6  U[        R                  L d   eUc  [        nX0l        g rW   )r   rY   r   r   r%   r  )rX   rs   rQ   r  rt   r   s        r3   rY   DefaultDictVariable.__init__  s<     	3F3;22222"4O.r5   c                    > U R                   [        [        [        4;  a  U R                  (       d  g[
        TU ]  5       $ )NF)r  rk  r  r   rs   r   r  rX   r   s    r3   r  &DefaultDictVariable.is_python_constant  s1     eT'::4::w)++r5   c                 |   > U R                   c   eSU R                   R                  5        S[        TU ]  5        S3$ )Nzdefaultdict(r   ))r  r   r   r  s    r3   r   DefaultDictVariable.debug_repr  sF    ##///4//::<=R@R@T?UUVW	
r5   r6   c                    [        U [        R                  [        R                  R                  [        R                  R
                  45      =(       d/    [        U [        R                  5      =(       a    U R                  S L $ rW   )rI   r   r*   	functionsBaseUserFunctionVariablePolyfilledFunctionVariabler&   r   r   s    r3   is_supported_arg$DefaultDictVariable.is_supported_arg  se    ))##<<##>>
 Q i889Ocii4>O	Qr5   r7   r)   r"  r<   c                   > US:X  a  [        U5      S:w  a  [        XS[        U5       S35        US   U ;   a  U R                  XS   5      $ [        U R                  [
        5      (       a*  U R                  R                  c  [        [        XS   /S9  g U R                  R                  U/ 0 5      n[        TU ]-  USUS   U/U5        U$ US:X  a  U R                  (       a  [        U5      S	:w  a  [        XS
[        U5       S35        [        US   [
        5      (       aa  US   R                  S:X  aN  U R                  US   5      (       a5  UR                  R                  R!                  U 5        US   U l        ["        $ [        TU ]-  XX45      $ US:X  aa  [        U5      S:w  a  [        XS[        U5       S35        [$        R&                  " [(        R*                  5      R                  XUS   /0 5      $ [        TU ]-  XX45      $ )Nr$  r"   r%  r&  r   r;   r+  __setattr__r   z2 argsr  rg   )r   r    r  r   r  r&   r   r   r   rH  r   rC  rB  r  r  r  r<  r%   r   r+   r   rG  )rX   r7   r"  r<   rt   default_varr   s         r3   rC  DefaultDictVariable.call_method  s    = 4yA~#Bh3t9+U8KLAw$))"1g66 4//1ABB,,22:,Xra	J"&"6"6"D"DRR"PKG'MDG[+A6 '&]"t4yA~#Bh3t9+U8KL tAw 011d1gmmGX6X''Q00		&&//5'+Aw$--7&r>>X4yA~#Bh3t9+U8KL11)2G2GHVV47OR  7&r>>r5   c                 F   > US:X  a  U R                   $ [        TU ]	  X5      $ )Nr  )r  r   var_getattrr  s      r3   r  DefaultDictVariable.var_getattr&  s*    
 $$'''w"2,,r5   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   r3   r   1DefaultDictVariable.reconstruct.<locals>.<lambda>2  s1    G))55kB,,];r5   r"   Fr   r   )r   r  r   r   r   r   r   r   r   r   r   r   s    `r3   r   DefaultDictVariable.reconstruct/  s    	
 	$$%%a/ 	
 	$n./H%**73#A&"9-	
r5   )r  rW   rg  )ri   rj   rk   rl   r   r$   r0   r   r   rY   rp   r  r   r   staticmethodr  rk  rC  r  r   rq   rl  rm  s   @r3   rJ  rJ    s    
 6:	/O_45/ / "/2	/
 / 
/ /,D ,
C 
 Qo Q$ Q Q,?#,? ,? ?#	,?
 S/)*,? 
,?\-#- - 
	-
 
r5   rJ  c            
       ^  ^  \ rS 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	   4S
 j5       r\S\	4S j5       rS\
4S jrS\4S jrS\
4S jrSS jrSSS\
S\\	   S\\\	4   S\	4
S jrSSS\S\\	   S\\\	4   S\	4
U 4S jjrSS jrSSS\	S\	4S jrSS jrSrU =r $ )SetVariableiP  z.We model a sets as dictionary with None valuesrs   rt   r-   Nc                 0  > / nU HT  n[        U[        R                  5      (       a  UR                  U5        M5  UR                  UR	                  5       5        MV     [
        R                  U[        R                  5       5      n[        TU ](  " U40 UD6  g rW   )rI   rO   rd   r   rD   r   fromkeysr  _default_valuer   rY   )rX   rs   rt   realized_itemsr   r   s        r3   rY   SetVariable.__init__U  sy     D$ 1 B BCC%%d+ %%dlln5  nk.H.H.JK)&)r5   c                 f   U R                   (       d  g/ nU R                    Hw  n[        U[        R                  5      (       a  UR                  OUn[        US5      (       a  [        UR                  5      OUR                  5       nUR                  U5        My     SSR                  U5      -   S-   $ )Nzset()r   r   ,r   )rs   rI   rO   rd   rU   r   r   r   r   r   r   )rX   rs   rz   rU   r   s        r3   r   SetVariable.debug_reprk  s    zz!EZZ'+<+M+MNNQTTTU,3B,@,@$rxx.bmmoW%   %(3..r5   rS   c                 H    [        U R                  R                  5       5      $ rW   )setrs   r  r_   s    r3   	set_itemsSetVariable.set_itemsv  s    4::??$%%r5   c                      [         $ rW   )r%   rr   r5   r3   r  SetVariable._default_valuez  s
     &%r5   c                 t    U R                    Vs1 s H  oR                  R                  5       iM     sn$ s  snf rW   )r  rU   r   rX   r   s     r3   r   SetVariable.as_proxy  s&    )-8A888   #5c                     [         $ rW   )r  r_   s    r3   r@   SetVariable.python_type  s    
r5   c                 t    U R                    Vs1 s H  oR                  R                  5       iM     sn$ s  snf rW   )r  rU   r   r  s     r3   r   SetVariable.as_python_constant  s)    37>>B>a'')>BBBr  c                     UR                  U R                   Vs/ s H  o"R                  PM     sn5        UR                  [	        S[        U R                  5      S95        g s  snf )N	BUILD_SETr   )foreachr  rU   r   r   r   rX   r   rG   s      r3   r   SetVariable.reconstruct  sG    t~~6~!~670#dnnBUVW 7s   A#r7   r)   fnr<   c                     U" U /UQ Vs/ s H  oUR                  5       PM     sn0 UR                  5        VVs0 s H  u  pgXgR                  5       _M     snnD6n[        R                  " UW5      $ s  snf s  snnf ! [         aI  n	[        [	        U	5      U[        [        [        R                  U	R                  5      5      S9   S n	A	NpS n	A	ff = f)Nr;   )r   rs   rA   r   r0   rk  mapr&   rC   r<   r$   build)
rX   r7   r  r<   rt   rG   r   rz   resexcs
             r3   _fast_set_methodSetVariable._fast_set_method  s    	37-$-@-Q&&(-@9?H1**,,HC $$R-- AH 	$S	2D-=-D-Dchh)O$P	s2   	A> A3A> A8A> 3A> >
C?CCr"  c                   > SSK Jn  SSKJn  US;   aP  U" X45      (       aC  U R	                  5       [
        L a,  U R	                  5       nU R                  U[        Xr5      X45      $ US:X  a  UR                  U[
        5      R                  " U/UQ70 UD6nUR                  R                  R                  U 5        U R                  R                  5         U R                  R                  UR                  5        [         $ US:X  aY  U(       d  [#        U5      S:w  a&  [%        UUS[#        U5       S	[#        U5       S
35        SnUS   [&        R)                  5       /nGO=US:X  am  U(       d  U(       a&  [%        UUS[#        U5       S	[#        U5       S
35         U R*                  R-                  5       R.                  n	[<        TU ]}  XW	/U5        U	$ US:X  aq  U(       d  [#        U5      S:w  a&  [%        UUS[#        U5       S	[#        U5       S
35        UR                  U[@        RB                  5      RE                  XUS   /0 5      $ US:X  ad  U(       a  [%        XS[#        U5       S
35        UR                  U[@        RF                  5      RE                  UU /UQSU RI                  5       05      $ US:X  aS  U(       a  [%        XS[#        U5       S
35        UR                  U[@        RJ                  5      RE                  X/UQ0 5      $ US:X  ad  U(       a  [%        XS[#        U5       S
35        UR                  U[@        RL                  5      RE                  UU /UQSU RI                  5       05      $ US:X  ad  U(       a  [%        XS[#        U5       S
35        UR                  U[@        RN                  5      RE                  UU /UQSU RI                  5       05      $ US:X  aS  U(       a  [%        XS[#        U5       S
35        UR                  U[@        RP                  5      RE                  X/UQ0 5      $ US:X  a  U(       d  [#        U5      S:w  a&  [%        UUS[#        U5       S	[#        U5       S
35        UR                  U[@        RR                  5      RE                  UU /UQSU RI                  5       05      $ US:X  ao  U(       d  [#        U5      S:w  a&  [%        UUS[#        U5       S	[#        U5       S
35        UR                  U[@        RT                  5      RE                  X/UQ0 5      $ US:X  ah  U RW                  5       (       aS  U(       a  [%        XS[#        U5       S
35        UR                  U[@        RX                  5      RE                  X/UQ0 5      $ US:X  ad  U(       d  [#        U5      S:w  a&  [%        UUS[#        U5       S	[#        U5       S
35        US   U ;  a  [3        [0        XS9  [<        TU ]}  USX45      $ US:X  a\  U(       d  [#        U5      S:w  a&  [%        UUS[#        U5       S	[#        U5       S
35        US   U ;   a  [<        TU ]}  USX45      $ [         $ US;   a  [#        U5      S:w  a  [%        XS[#        U5       S 35        [Z        R\                  [Z        R^                  S.nUS   Ra                  5       n[c        U[&        5      (       d'  UR                  U[
        5      RE                  X/0 5      nUR                  XRe                  U5      5      RE                  XU/0 5      $ US!;   a  SSSSS!.Re                  U5      n[g        US   [&        [h        Rj                  45      (       dN  [8        R                  " S"U S#U Rm                  5        S$US   Rm                  5        S%35      n[3        [n        X/S9  Uc   eU R?                  XX45      $ US&;   a  [g        US   [&        [h        Rj                  45      (       dN  [8        R                  " S"U S#U Rm                  5        S$US   Rm                  5        S%35      n[3        [n        X/S9  SSSSS&.Re                  U5      nUc   eU R?                  XX45        U $ US':X  a}  [g        US   [&        [h        Rj                  45      (       d  [8        R                  " S(5      $ U R?                  USX45      n[8        R                  " [#        UR*                  5      S:H  5      $ U[p        ;   a}  [g        US   [&        [h        Rj                  45      (       d  [8        R                  " [r        5      $ [8        R                  " [p        U   " U R*                  US   R*                  5      5      $ [<        TU ]}  XX45      $ ! [0         aE  n
[3        [0        U[5        [7        [8        R                  U
R:                  5      5      S9   S n
A
GN8S n
A
ff = f))Nr   )check_constant_argsr"   r9   )
isdisjointunionintersection
differencesymmetric_differencerY   r>  z1 args and 0 kwargsr(  r)  r+  r   r   r'  r;   r  r  z0 kwargsclsintersection_updater  r  zExpect: 0 kwargs, Actual: difference_updater  symmetric_difference_updater   removediscard)issubset
issupersetr%  r&  )__and__r3  __xor____sub__z unsupported operand type(s) for z: 'z' and 'r4  )__iand__r5  __ixor____isub__rg   F):utilsr  r=   r:   r@   r  r  getattrrC   call_setr  r  r<  rs   r/  r   r%   r   r    r  r  r  r   rU   r   r   rk  r  r&   r<   r   rC  r   set_isdisjointrH  set_intersectionpython_type_varset_intersection_update	set_unionset_differenceset_difference_updateset_symmetric_differenceset_symmetric_difference_updaterB  
set_updateoperatorlegerD   r   r2   rI   r   UserDefinedSetVariablepython_type_namerB   r   NotImplemented)rX   r7   r"  r<   rt   r  r:   py_typetemp_set_vtresulteoprb   mr  rr   s                   r3   rC  SetVariable.call_method  st	    	0.  $D11  "c)&&(G((WW-CTRR:+222s;DD#K II""++D1JJJJk//0))U]Ta#)4ykCK=@	 !DG[779:DU]#)4ykCK=@	*...*<*<*>*A*A G6(F;M\!Ta#)4ykCK=@	 %++B	0H0HIWW47OR  ^##BjS[M:QR$++I..m,,./ **#BjS[M:QR$++I55mBr23 W_#BjS[M:QR$++B	0C0CDRR,,./ 
 \!# :3v;-wO %++B	0H0HIWW,,./ 
 ((#BjS[M:QR$++I33mBr23 ++Ta#)4ykCK=@	 %++I66m,,./ 22Ta#)4ykCK=@	 %++I==mBr23 X$//"3"3#BjS[M:QR$++B	0D0DESSMDM2  XTa#)4ykCK=@	 Awd"(2A7&r5$??YTa#)4ykCK=@	 Aw$w*2udCC--//4yA~#Bh3t9+U8KL %KK&kkB GOO%E%--)00S9GGGUWX$++Bt=KK5M2  @@)!1'	
 c$i  d1gY5U5U'VWW&--6tfC@U@U@W?XX_`def`g`x`x`z_{{|} )BUC= =##B488DDd1gY5U5U'VWW&--6tfC@U@U@W?XX_`def`g`x`x`z_{{|} )BUC1#9/	
 c$i  = =RD1KXd1gY5U5U'VWW'..u55  %;TJA#**3q{{+;q+@AA++d1gY5U5U'VWW'..~>>#**&t,T^^T!W=N=NO  w"2T::Q  (btC0@0G0G,P'Q s   $f* *
g94:g44g9c                 6    [         R                  " [        5      $ rW   )r   r*   r  r_   s    r3   r  SetVariable.python_type_var  s    ((--r5   r6   c                     [        S5      e)NzIllegal to getitem on a set)RuntimeError)rX   r7   r6   s      r3   r  SetVariable.getitem_const  s     899r5   c                     g rW   rr   r_   s    r3   r   )SetVariable.install_dict_keys_match_guard      r5   rr   rg  r-   r*   rh  )!ri   rj   rk   rl   rm   r   SET_CONTAINSr  r   r$   r   rY   r   r   propertyr  r  r  r  r   r0   r@   r   r   rk  r   r  rC  r  r  r   rq   rl  rm  s   @r3   r  r  P  sf   8!..N*(* * 
	*,	/C 	/ &3CD & & &O & &9# 9T CC CX.#. . ?#	.
 S/)*. 
.&_;#_; _; ?#	_;
 S/)*_; 
_;B.:):0?:	:
 r5   r  c            
          ^  \ rS rSrS\SS4U 4S jjrS\\\      4S j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   SS4S jrSrU =r$ )OrderedSetClassVariablei  rt   r-   Nc                 &   > [         TU ]  " S0 UD6  g ra  )r   rY   rb  s     r3   rY    OrderedSetClassVariable.__init__  s    "6"r5   c                     [         $ rW   r
   r_   s    r3   r   *OrderedSetClassVariable.as_python_constant      r5   r7   r)   r"  c                    > US:X  a7  SSK Jn  U R                  (       a  [        U R                  U5      nOS nU" XUS9$ [        TU ]  X5      $ )N__new__r"   )GetAttrVariable)r   )miscr  r   r   r   r  )rX   r7   r"  r  attr_sourcer   s        r3   r  #OrderedSetClassVariable.var_getattr  sG    9-{{(d;""4kBB7&r00r5   r<   c           
        > SSK Jn  US:X  aY  [        U5      S:w  d  U(       a&  [        UUS[        U5       S[        U5       S35        [        R
                  " / [        5       S9$ [        [        U5      nXe;   a;  [        US	   [        R                  5      (       a  US	   R                  XUSS  U5      $ [        TU ]-  XX45      $ )
Nr"   )set_methodsr  r   z'OrderedSet.__new__ only accepts one argr(  r)  r9  r   )builtinr  r   r    r   OrderedSetVariabler#   r  r  rI   r  rC  r   )rX   r7   r"  r<   rt   r  resolved_fnr   s          r3   rC  #OrderedSetClassVariable.call_method  s     	)94yA~#=4ykCK=A //BRBTUUc4(%*T!Wi>S>S*T*T7&&rab6BBw"2T::r5   r  c           
          [        U5      S:  d  U(       a&  [        USS[        U5       S[        U5       S35        [        U5      S:X  a  / nOUS   R                  U5      n[        R                  " U[        5       S9$ )Nr"   r   zOrderedSet only accepts one argr(  r)  r   r9  )r   r    force_unpack_var_sequencer   r  r#   )rX   r7   r<   rt   rs   s        r3   rH  %OrderedSetClassVariable.call_function  sy     t9q=F1t9+ZF}G= t9>EG55b9E++EAQASTTr5   rr   )ri   rj   rk   rl   r   rY   r0   r   r   r   r$   r  rk  r   rC  r   rH  rq   rl  rm  s   @r3   r  r    s    # # #DC$9 
15 
1S 
1_ 
1;#; ; ?#	;
 S/)*; 
;4U#U 'U S/)*	U
 
U Ur5   r  c                   h    \ rS rSrS\4S jrS\\   4S jrS\	\\      4S jr
S\4S jrS
S jrS	rg)r  i  r-   c                 L   U R                   (       d  g/ nU R                    Hj  u  p#[        UR                  S5      (       a  [        UR                  R                  5      OUR                  R                  5       nUR                  U5        Ml     SSR                  U5      -   S-   $ )NzOrderedSet([])r   zOrderedSet([r  ])r   )rX   rs   r   rz   r   s        r3   r   OrderedSetVariable.debug_repr  s{    zz#!E

(/g(>(>D$ADDOODU  W%	 #
 "CHHUO3d::r5   c                     [        U R                   Vs/ s H  oR                  R                  5       PM     sn5      $ s  snf rW   )r   r  rU   r   r  s     r3   r   %OrderedSetVariable.as_python_constant  s.    dnnMn44224nMNNM   #>c                     [         $ rW   r
   r_   s    r3   r@   OrderedSetVariable.python_type  r  r5   c                     [        5       $ rW   )r  r_   s    r3   r  "OrderedSetVariable.python_type_var  s    &((r5   Nc                 2  ^ TR                  U4S j5        TR                  U R                   Vs/ s H  o"R                  PM     sn5        TR	                  [        S[        U R                  5      S95        TR                  [        SS5      5        g s  snf )Nc                  (   > T R                  SS5      $ )Nztorch.utils._ordered_setr   )load_import_fromr   s   r3   r   0OrderedSetVariable.reconstruct.<locals>.<lambda>  s    G,,-GVr5   
BUILD_LISTr   r"   F)	r   r  r  rU   r   r   r   r   r   r  s    ` r3   r   OrderedSetVariable.reconstruct  sq    V	
 	t~~6~!~6703t~~CVWX21e<= 7s   Brr   rg  )ri   rj   rk   rl   r   r   r   r   r   r0   r@   r  r  r   rq   rr   r5   r3   r  r    sG    
;C 
;OJsO OT*S/2 )!8 )>r5   r  c            
          ^  \ rS rSrS\4S jr\S\S   4S j5       rS\	4S jr
SS jrS\4S jrSS	 jrS
SS\S\\   S\\\4   S\4
U 4S jjrS\S   4S jrS\4S jrS\S\4S jrSrU =r$ )FrozensetVariablei  r-   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frozenset()r   r   r  r   r   rX   rs   r   r   s       r3   r   FrozensetVariable.debug_repr  sy    zz !EZZ(/g(>(>D$ADDOODU  W%	  
 %(3..r5   rS   c                 6    U R                   R                  5       $ rW   )rs   r  r_   s    r3   r  FrozensetVariable.set_items  s    zz  r5   c                     [         $ rW   )	frozensetr_   s    r3   r@   FrozensetVariable.python_type      r5   c                 6    [         R                  " [        5      $ rW   )r   r*   r9  r_   s    r3   r  !FrozensetVariable.python_type_var  s    ((33r5   c                     [        U R                   Vs1 s H  oR                  R                  5       iM     sn5      $ s  snf rW   )r9  r  rU   r   r  s     r3   r   $FrozensetVariable.as_python_constant  s.    T^^L^$$113^LMMLr&  c                   ^ TR                  U4S j5        TR                  U R                   Vs/ s H  o"R                  PM     sn5        TR	                  [        S[        U R                  5      S9/[        SS5      Q5        g s  snf )Nc                  F   > T R                  T R                  S5      /5      $ )Nr9  )r   create_load_globalr   s   r3   r   /FrozensetVariable.reconstruct.<locals>.<lambda>  s#    G))..{;r5   r/  r   r"   F)r   r  r  rU   r   r   r   r   r  s    ` r3   r   FrozensetVariable.reconstruct
  ss    	
 	t~~6~!~67"<S5HI%a/	
 7s   Br7   r)   r"  r<   rt   c                    > US;   a  [        SU S35      eUS:X  a  [        $ US;   a%  [        TU ]  XX45      n[	        UR
                  5      $ [        TU ]  XX45      $ )Nr>  r   r   r  r  r/  Illegal call_method z on a frozensetrY   )r   r  r  r  )r  r%   r   rC  r2  rs   )rX   r7   r"  r<   rt   r  r   s         r3   rC  FrozensetVariable.call_method  st     II!5dV?KLLZ *) 
 
 #Bd;A$QWW--w"2T::r5   Tc                     g)z2
Frozensets are immutable and hashable in Python.
Trr   r_   s    r3   rM   $FrozensetVariable.is_python_hashable6  s     r5   c                 4    [        U R                  5       5      $ rW   )r\   r   r_   s    r3   r^   !FrozensetVariable.get_python_hash<  s    D++-..r5   rb   c                 r    [        U[        5      =(       a!    U R                  5       UR                  5       :H  $ rW   )rI   r$   r   rf   s     r3   re   !FrozensetVariable.is_python_equal?  s1    uo. H'')U-E-E-GG	
r5   rr   r  rg  )ri   rj   rk   rl   r   r   r	  r  r  r0   r@   r  r   r   r   rk  r$   r   rC  r   rM   rn   r^   ro   rp   re   rq   rl  rm  s   @r3   r2  r2    s    
/C 
/ !3CD ! !T 4NC N
 ;#; ; ?#	;
 S/)*; 
;8GDM / /
V 
 
 
r5   r2  c            
          ^  \ rS rSrS\4S jrSS jrSSS\\   SS4S	 j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$ )DictKeySetVariableiF  r-   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([])r   zdict_keys([r  r"  r   r4  s       r3   r   DictKeySetVariable.debug_reprG  sy    zz"!EZZ(/g(>(>D$ADDOODU  W%	  
 !388E?2T99r5   Nc                     g rW   rr   r_   s    r3   r   0DictKeySetVariable.install_dict_keys_match_guardS  r  r5   r7   r)   r<   c                     g rW   rr   r  s      r3   r   .DictKeySetVariable.install_dict_contains_guardW  s     	r5   c                     U R                   $ rW   )rs   r_   s    r3   r  DictKeySetVariable.set_items]  s    zzr5   c                     [         $ rW   r   r_   s    r3   r@   DictKeySetVariable.python_typea  r;  r5   c                     [         R                  U R                   Vs1 s H  oR                  R	                  5       iM     snS 5      R                  5       $ s  snf rW   )r   r  r  rU   r   r  r  s     r3   r   %DictKeySetVariable.as_python_constantd  s@    }}04?1TT$$&?

$&	?s   #Ar"  rt   c                 N   > US;   a  [        SU S35      e[        TU ]	  XX45      $ )NrF  rG  z on a dict_keys)r  r   rC  )rX   r7   r"  r<   rt   r   s        r3   rC  DictKeySetVariable.call_methodi  s5     II!5dV?KLLw"2T::r5   rr   rh  )ri   rj   rk   rl   r   r   r   rk  r$   r   r	  r   r  r0   r@   r   r   rC  rq   rl  rm  s   @r3   rP  rP  F  s    
:C 
:)15o1F	 3  T C 
	;#	; 	; ?#		;
 S/)*	; 
	; 	;r5   rP  c            
          ^  \ rS rSr% SrSr\\   \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rU =r$ )DictViewVariableiu  zi
Models _PyDictViewObject

This is an "abstract" class. Subclasses will override kv and the items method
Nkvrp  rt   r-   c                    > [         TU ]  " S0 UD6  U R                  S;   d   e[        U[        5      (       d   eXl        g )N)r  r   rs   rr   )r   rY   rc  rI   rO   rp  rr  s      r3   rY   DictViewVariable.__init__~  s?    "6"ww5555'#45555r5   c                 ~    U R                   c   e[        U R                  R                  U R                   5      " 5       $ rW   )rc  r  rp  rs   r_   s    r3   
view_itemsDictViewVariable.view_items  s0    ww"""t||))477355r5   c                     [         erW   )NotImplementedErrorr_   s    r3   view_items_vtDictViewVariable.view_items_vt  s
     "!r5   r7   r)   c                     U R                   $ rW   )rk  ry  s     r3   rL  $DictViewVariable.unpack_var_sequence  s    !!!r5   c                     U R                   c   eU" U R                  5        UR                  U R                   5        UR                  S5        g )Nr   )rc  rp  r   rC  r   s     r3   r   DictViewVariable.reconstruct  s>    ww"""DGG$Ar5   r"  c                     U R                   c   eX R                  5       R                  ;   a  [        R                  " S5      $ [        R                  " S5      $ )NTF)rc  r@   r1   r&   rC   )rX   r7   r"  s      r3   r^  !DictViewVariable.call_obj_hasattr  sK     ww"""##%...#**400&&u--r5   r<   c                   > US:X  a  U R                   R                  XX45      $ US:X  a  SSKJn  U" U R                  [        5       S9$ US:X  a$  [        R                  " U R                  5       5      $ [        TU ]  XX45      $ )Nr*  r6  r"   r7  r9  __repr__)
rp  rC  rK  r8  rk  r#   r&   rC   r   r   rX   r7   r"  r<   rt   r8  r   s         r3   rC  DictViewVariable.call_method  s     9<<++BdCCZ3'""2B2D  Z#**4??+<==w"2T::r5   r  rg  )ri   rj   rk   rl   rm   rc  r   r   __annotations__rO   r   rY   r	  rg  rk  r$   rk  rL  r   r&   r^  r   rC  rq   rl  rm  s   @r3   rb  rb  u  s     B 1 S T  6C 6 6 "tO4 " "
"&= "$BW ".).14.	.;#; ; ?#	;
 S/)*; 
; ;r5   rb  c            
          ^  \ rS rS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  r-   c                 ,    [        U R                  5      $ rW   )r  rg  r_   s    r3   r  DictKeysVariable.set_items  s    4??##r5   c                 X    U R                    Vs/ s H  oR                  PM     sn$ s  snf rW   )rg  rU   )rX   rG   s     r3   rk  DictKeysVariable.view_items_vt  s"     #oo.oo...s   'c                     [         $ rW   r[  r_   s    r3   r@   DictKeysVariable.python_type  r;  r5   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-   $ rR  rg  r   rU   r   r   r   r   r   r4  s       r3   r   DictKeysVariable.debug_repr  sy    "!E__(/g(>(>D$ADDOODU  W%	 %
 !388E?2T99r5   r7   r)   r"  r<   rt   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[
        ;   as  [        US   [        [        45      (       d  [        R                  " [        5      $ [        R                  " [
        U   " U R                  US   R                  5      5      $ [        TU ]  XX45      $ )Nr   )r  r  r3  r5  r  r  r  r  r   )rp  rC  r  r  r  r   rI   r@  r&   rC   r  r   )rX   r7   r"  r<   rt   r  r  r   s          r3   rC  DictKeysVariable.call_method  s     >!<<++BdCC 	
 	
 -A$q'##$Aq>!))d1g5E'FGG'..~>>#**&t,T^^T!W=N=NO  w"2T::r5   rr   )ri   rj   rk   rl   rc  r	  r  r$   r  rk  rk  r0   r@   r   r   r   rC  rq   rl  rm  s   @r3   r@  r@    s    	B$3/ $ $ /tO4 / /T 
:C 
:;#; ; ?#	;
 S/)*; 
; ;r5   r@  c                   R    \ rS rSrSr\S\\   4S j5       rS\	4S jr
S\4S jrSrg)	rA  i  r   r-   c                 ,    [        U R                  5      $ rW   )rk  rg  r_   s    r3   rk   DictValuesVariable.view_items_vt  s    DOO$$r5   c                     [         $ rW   )r   r_   s    r3   r@   DictValuesVariable.python_type  s    r5   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([])r   zdict_values([r  r"  )rg  r   r   r   r   r   r   )rX   rs   rz   r   s       r3   r   DictValuesVariable.debug_repr  sf    $!E__+21g+>+>$qww-ALLNW% % #SXXe_4t;;r5   rr   N)ri   rj   rk   rl   rc  r	  rk  r$   rk  r0   r@   r   r   rq   rr   r5   r3   rA  rA    s=    	B%tO4 % %T <C <r5   rA  c            
          ^  \ rS rSrS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  rs   r-   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 rW   )rg  r   rE  rU   r   s      r3   rk  DictItemsVariable.view_items_vt  s7     @DOtq	''q	2OOOs   .Ac                     [         $ rW   )r   r_   s    r3   r@   DictItemsVariable.python_type  r  r5   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([])r   (r   r  zdict_items([r  r"  r  r   s         r3   r   DictItemsVariable.debug_repr  s    #!E(/g(>(>D$ADDOODU  ,31g+>+>$qww-ALLNq	G9A67 ( "CHHUO3d::r5   r7   r)   r"  r<   rt   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      $ [        R                  " S5      $ US:X  a  SSKJ	n  U" U R                  [        5       S	9$ [        TU ]  XX45      $ )
Nrg   r"   r%  r&  r   Fr6  r7  r9  )r   r    rI   r?  rp  rC  r&   rC   rK  r8  rk  r#   r   ru  s         r3   rC  DictItemsVariable.call_method  s     84yA~#Bh3t9+U8KL$q'#455||//HtAw>OQSTT#**511Z3'""2B2D  w"2T::r5   Fc                     g)z3
Dictionary item views are not hashable in Python.
Frr   r_   s    r3   rM   $DictItemsVariable.is_python_hashable4  rf  r5   rr   )ri   rj   rk   rl   rc  r	  rk  r$   rk  r0   r@   r   r   r   rC  r   rM   rq   rl  rm  s   @r3   r?  r?    s    	BPtO4 P PT ;C ;;#; ; ?#	;
 S/)*; 
;.GEN  r5   r?  rW   )Jrm   r   r  r  ru  collections.abcr   r   typingr   r   r   r   r	   torch.utils._ordered_setr   r:  r   r   r   bytecode_transformationr   r   r   r   r  r   r   guardsr   r   r   r   r   r   r  r   r   r   r   r   r    r!   r   r#   r$   constantr%   r&   torch._dynamo.codegenr'   r>   r)   torch._dynamo.variables.builtinr*   r  r+   rp   r4   rF   rL   rO   ro  r  rJ  r  r  r  r2  rP  rb  r@  rA  r?  rr   r5   r3   <module>r     st  (     . ? ? / 6 6  : 0 I I   4 > /D?/>C >D >
 CG	&'>?	4"? "t "I IXJ2? J2Z 1 x
+ x
|z# zz	@Uo @UF> >@S
 S
l,; ,;^<; <;~8;' 8;v<) <,3( 3r5   