
    ȅiP                        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  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-  SSK.J/r/  \(       a  SSK0J1r1  SSK2J3r3  SSK4J5r5  SSK6J7r7  S\	S\84S jr9 S8S\+S\S   SS4S jjr:S\+S\84S jr; " S S\+5      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-\@5      rC " S. S/\@5      rD " S0 S1\+5      rE " S2 S3\E5      rF " S4 S5\E5      rG " S6 S7\E5      rHg)9a  
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_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)ConstantVariable)ListIteratorVariable)	PyCodegenInstructionTranslator)BuiltinVariable)UserFunctionVariableobjreturnc                 L    [        U 5      R                  R                  SS5      $ )N__instancecheck__F)type__dict__get)r*   s    W/home/james-whalen/.local/lib/python3.13/site-packages/torch/_dynamo/variables/dicts.pywas_instancecheck_overrider2   >   s     9!!"5u==    argtxr'   c                     Uc  SSK Jn  UR                  " 5       n U R                  5       n[        [        U[        SU< S[        U R                  5       5       35      /S9  g ! [         a    [        U 5      n NOf = f)Nr   r&   zunhashable type: z and variable tracker = args)
torch._dynamo.symbolic_convertr'   
current_txpython_type	Exceptionr.   r   	TypeErrorr#   realize)r4   r5   r'   arg_types       r1   raise_unhashabler@   B   s     
zH"--/??$ 
#H</GS[[]H[G\]
  9s   A$ $A<;A<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)rA   s    r1   rF   rF   Y   s?     	1i3344MMOO!!r3   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ConstDictVariableg   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._HashableTrackero   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   rF   r@   rO   )selfrO   s     r1   __init__+ConstDictVariable._HashableTracker.__init__v   s$    #B'B r?? $Gr3   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
)	rC   rO   r   rD   rE   rF   hashoriginal_valueget_python_hashrR   s    r1   __hash__+ConstDictVariable._HashableTracker.__hash__   sl     477I$A$ABB++--GG''))DGG2245577**,,r3   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)rC   rI   _HashableTrackerrO   is_python_equalrR   r\   s     r1   __eq__)ConstDictVariable._HashableTracker.__eq__   sG     e%6%G%GHHww%(("77**58844r3   )rO   )__name__
__module____qualname____firstlineno____doc__r"   rS   intrZ   objectboolra   __static_attributes__ r3   r1   r^   rM   o   s9    		 	4 		-c 	-&	5 	54 	5r3   r^   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rQ   )rC   r"   ).0rA   vHashables      r1   	<genexpr>-ConstDictVariable.__init__.<locals>.<genexpr>   s<      
 & q?H56 /1o./%s   8;keyrM   r+   c                 :   > [        U T5      (       a  U $ T" U 5      $ rQ   )rC   )rx   ru   s    r1   make_hashable1ConstDictVariable.__init__.<locals>.make_hashable   s      %S(333F#Fr3   Trl   )popsuperrS   rI   r^   allrm   r	   r"   _get_dict_cls_from_user_clssourcer   rq   copyrp   rK   )
rR   rm   rK   rn   rz   dict_clsrA   rt   ru   	__class__s
           @r1   rS   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rQ   rl   )rs   baseaccepted_dict_typess     r1   rv   @ConstDictVariable._get_dict_cls_from_user_cls.<locals>.<genexpr>   s      !1=P5P!1s   		)dictcollectionsOrderedDictdefaultdictnext__mro__)rR   rK   r   r   s      @r1   r   -ConstDictVariable._get_dict_cls_from_user_cls   s{    #[%<%<k>U>UV **H  !)!1!1 H ..88. {...Hr3   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 rQ   )rm   rO   as_proxyrR   krt   s      r1   r   ConstDictVariable.as_proxy   s@    :>**:J:J:LM:L$!-:LMMM   5Ac                 n    SSR                  S U R                  R                  5        5       5      -   S-   $ )N{, c              3      #    U  H4  u  pUR                   R                  5        S UR                  5        3v   M6     g7f)z: NrO   
debug_repr)rs   r   rt   s      r1   rv   /ConstDictVariable.debug_repr.<locals>.<genexpr>   s4      EWTQ144??$%R'78EWs   <>})joinrm   rY   s    r1   r   ConstDictVariable.debug_repr   s?    ii EIZZEUEUEW  		
r3   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 rQ   )rm   rO   as_python_constantr   s      r1   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 rQ   )install_dict_keys_match_guardrm   rO   r   r   s      r1   keys_as_python_constant)ConstDictVariable.keys_as_python_constant   sI    **,9=9I9I9KL9K'')1,9KLLLs   'Ac                     U R                   $ rQ   rK   rY   s    r1   r;   ConstDictVariable.python_type   s    }}r3   rO   c                    [        U[        5      (       d   e[        R                  nUR	                  5       =(       aN    U" U5      U R
                  ;   =(       a2    [        U R
                  U" U5         [        R                  5      (       + $ rQ   )rC   r"   rI   r^   rG   rm   r   DeletedVariable)rR   rO   ru   s      r1   __contains__ConstDictVariable.__contains__   sm    "o....$55!!# T

*Ttzz(2,79R9RSS	
r3   r5   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)rm   rp   rq   r   mutation_type)r>   rC   rI   lenrm   _tree_map_fallbackappendr.   KeyErrorcall_tree_maprO   cloner!   )rR   r5   r   r   r   r   other_dicts	candidatenew_items_hashedkey_trackervaluesibling_leavesupdated_original_itemss                r1   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rQ   )rC   r   r   )rs   rA   s     r1   rv   (ConstDictVariable.len.<locals>.<genexpr>4  s'      
BUQ
1i77888BUs   ,.)sumrm   valuesrY   s    r1   r   ConstDictVariable.len3  s)     
BF**BSBSBU
 
 	
r3   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rQ   )is_new_itemrp   r0   rO   )rs   rx   r   rR   s      r1   rv   2ConstDictVariable.has_new_items.<locals>.<genexpr>9  s?      2
0
 T0044SVV<eDD0s   AA)rq   anyrm   rY   s   `r1   has_new_itemsConstDictVariable.has_new_items8  s7    ** 
c 2
"jj..02
 /
 	
r3   r   r\   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  $ rQ   )rE   idr>   )rR   r   r\   s      r1   r   ConstDictVariable.is_new_item>  sW     U&&((U->->-@-@emmo&"U]]_*===%yBuI%%r3   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r4   )rm   rp   r0   rO   r   rq   append_outputr   )rR   codegennum_argsrx   r   items         r1   reconstruct_kvs_into_new_dict/ConstDictVariable.reconstruct_kvs_into_new_dictF  s    ****,JC&&**3662D,,0K0K0KA - 	0(KLr3   c                    ^ U R                   [        R                  L aB  TR                  U4S j5        U R	                  T5        TR                  [        SS5      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   r1   <lambda>/ConstDictVariable.reconstruct.<locals>.<lambda>V  s1    --99+F00?r3   r    F)rK   r   r   add_push_nullr   r   r   rR   r   s    `r1   reconstructConstDictVariable.reconstructR  s\    ==K333!! ..w7!!"6q%"@A..w7r3   r4   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 r7   )
rI   r^   rm   strr   r<   r#   creater   r   )rR   r5   r4   rx   error_messages        r1   'getitem_const_raise_exception_if_absent9ConstDictVariable.getitem_const_raise_exception_if_absentb  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)rI   r^   rm   r   r   r   
USER_ERROR)rR   r5   r4   rx   msgs        r1   getitem_constConstDictVariable.getitem_consts  ss      005jj #CII;.GHC/syyk*T&11	 zz#r3   c                 j    [         R                  U5      nX R                  ;  a  g U R                  U   $ rQ   )rI   r^   rm   )rR   r4   rx   s      r1   maybe_getitem_const%ConstDictVariable.maybe_getitem_const  s-    005jj zz#r3   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 rQ   )rI   r^   tuplerm   keysindexrp   rC   r   rD   r>   )rR   r4   rx   r   original_key_vts        r1   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r3   c                 x    U R                   (       a)  [        U R                  [        R                  5      5        g g rQ   )r   r   
make_guardr   DICT_KEYS_MATCHrY   s    r1   r   /ConstDictVariable.install_dict_keys_match_guard  s%    ;;$//,*F*FGH r3   r8   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   )rx   invert)r   outputside_effectsis_modifiedis_python_constantr   r  	functoolspartialr.   CONTAINS_GUARDr   r  r   )rR   r5   r8   containss       r1   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	 r3   namec           
      @!  > SSK JnJn  [        R                  nUS:X  a  [
        R                  " [        5      R                  " U/UQ70 UD6nUR                  R                  R                  U 5        U R                  R                  UR                  5        UR                  " S 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        [-        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  [/        [0        U5        [3        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 R5                  U R                  R7                  5       [9        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    [=        US   5      n	U	(       d  [?        US   U5        U R#                  5         U(       d  [        U5      S:w  a&  [        UUS[        U5       S
[        U5       S35        UR                  R                  R                  U 5        US   U R                  U" US   5      '   UR                  " S 5      $ US:X  a  U R;                  5       (       a  U=(       a    [=        US   5      n	U	(       ar  U R#                  5         SU l         UR                  R                  R                  U 5        U R                  RC                  U" US   5      5        UR                  " S 5      $ [D        TU ]  XX45      $ US:X  a  [        U5      S;  a  [        XS[        U5       S35        U=(       a    [=        US   5      n	U	(       d  [?        US   U5        US   U ;  a7  U RI                  X5        [        U5      S:X  a  UR                  " S 5      $ US   $ U RK                  XS   5      $ US:X  a  U R;                  5       (       a  [        U5      S;  a  [        XS[        U5       S35        U=(       a    [=        US   5      n	U	(       d  [?        US   U5        US   U ;  a5  U RI                  X5        [        U5      S:X  a  [/        [L        U5        US   $ SU l         UR                  R                  R                  U 5        U R                  RO                  U" US   5      5      $ US:X  Ga  U R;                  5       (       Ga  [Q        U RR                  [        5      (       aD  [Q        U RR                  [T        RV                  5      (       d  [        U5      (       a  [        X5        U R                  (       d!  UR                  " S5      n
[/        [L        X/S9  U RR                  [T        RV                  L a  [        U5      S:X  d  SU;   a  [        U5      S:X  a,  US   RY                  5       (       a  US   R[                  5       nOIUR]                  S5      =n(       a&  URY                  5       (       a  UR[                  5       nO[        X5        U R                  R_                  WS9u  pOU R                  R_                  5       u  pSU l         UR                  R                  R                  U 5        [
        R`                  " URb                  U/5      $ US :X  a  U(       d  U(       a&  [        UUS	[        U5       S
[        U5       S35        SU l         UR                  R                  R                  U 5        U R                  Re                  5         UR                  " S 5      $ US!:X  Gam  U R;                  5       (       GaW  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  [g        US   [        5      (       a  US   R#                  5         US   nOURh                  " 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        UR                  " S 5      $ [D        TU ]  XX45      $ US":X  a  [        U5      (       d&  [        UUS#[        U5       S
[        U5       S35        U=(       a    [=        US   5      n	U	(       d  [?        US   U5        U RI                  X5        US   U ;   nUR                  " U5      $ US$:X  GaC  U R;                  5       (       Ga-  [        U5      S;  a&  [        UUS%[        U5       S
[        U5       S35        U=(       a    [=        US   5      n	U	(       d  [?        US   U5        U R#                  5         U(       d  [        U5      S:  a&  [        UUS&[        U5       S
[        U5       S35        U Rk                  US   5      nUb  U$ [        U5      S:X  a  UR                  " S 5      nOUS   nUR                  R                  R                  U 5        UU R                  U" US   5      '   U$ US':X  Ga  U R#                  5         UR                  R                  R                  U 5        US   U ;  a  [/        [L        U5        Sn[        U5      S:X  a+  US   RY                  5       (       a  US   R[                  5       nU(       a=  SU;   a7  US   RY                  5       (       a  UR]                  S5      R[                  5       nU" US   5      nU R                  Rm                  UUS9  UR                  " S 5      $ US(:X  av  [o        U [        5      (       aa  [        U5      S:w  a  [        XS[        U5       S35        [
        Rp                  " [r        Rt                  5      Rw                  XUS   /0 5      $ US):X  a2  UR                  " U RG                  US(X45      Rx                  (       + 5      $ US*:X  Ga_  [        U5      S:w  a  [        XS[        U5       S35        US   n[o        U[        [
        Rz                  45      (       dI  S+U R}                  5       R~                   S,UR}                  5       R~                   S-3n[/        [0        UU/S9  U RR                  URR                  1n[        S. U 5       5      (       a  [T        RV                  O[        nU R#                  5         U R5                  U R                  R7                  5       [9        5       S US/9nUS   R#                  5         UR                  R                  US   R                  5        U$ US0:X  a  U RG                  US!X45        U $ US1:X  a{  U R$                  (       aI  [        U R$                  5      (       d/  UR                  R&                  R)                  U R$                  5        [        U R                  U5      [9        5       S29$ [D        TU ]  XX45      $ s  snnf )3Nr    )r(   r#   rS   __getitem__1 args argsr   rm   0 args and 0 kwargs
 args and  kwargsr   z0 argsr   r   )rm   r   r   __len____setitem__r   z2 args and 0 kwargs__delitem__Tr0   )r    r   z1 or 2 argsr|   popitemzpopitem(): dictionary is emptyr7   last)r   clearupdater   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_endra   __ne____or__z$unsupported operand type(s) for |: 'z'and ''c              3   V   #    U  H  n[        U[        R                  5      v   M!     g 7frQ   )
issubclassr   r   )rs   ts     r1   rv   0ConstDictVariable.call_method.<locals>.<genexpr>  s      Jr!z![%<%<==rs   '))rm   r   r   rK   __ior____iter__r   )D r(   r#   rI   r^   r   r   	call_dictr
  r  mutationrm   r"  r   r   r   r   r   r   guard_on_key_orderaddDictItemsVariableDictKeysVariabler   r=   DictValuesVariabler   r   r!   
is_mutablerF   r@   rq   r  r}   call_methodr  r   r   r|   r)  rK   r   r   r  r   r0   r  TupleVariablerO   r!  rC   call_custom_dictr   r$  r   r)   r   dict___eq__call_functionr   UserDefinedDictVariabler;   rc   r   r   r$   unpack_var_sequence)rR   r5   r  r8   rn   r(   r#   ru   temp_dict_vtarg_hashabler   r   rt   r   has_arg
has_kwargsdict_vtkwargs_hashabler  r   rA   rx   r\   err_msgtsrK   new_dict_vtr   s                              r1   r8  ConstDictVariable.call_method  s    	8$55:$44T:DD#L II""++D1JJl001#**400]"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()#**400]"t'8'88KQ$8L224.2+		&&//5

&&xQ'89'..t44w*2TBBU]4y&#BmD	{%=PQ8KQ$8L a"-Awd"00:t9>+22488Aw%%bq'22U]t004y&#BmD	{%=PQ8KQ$8L a"-Awd"00:t9>,Xr:Aw*.D'II""++D1::>>(47"344Y4??#4#44==$//"4==+2I2IJJII#B-::&--.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#**400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'..t44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>(//5AQA		&&//501

8DG,-]"..0II""++D1Awd"(26D4yA~$q'"<"<">">Aw113&F*vf~/P/P/R/Rzz&)<<>47#CJJ""3T"2#**400X&##
 #
 4yA~#Bh3t9+U8KL11)2G2GHVV47OR  X#**$$R4@FFF  X4yA~#Bh3t9+U8KLGE& )9+L+LM  ;4;K;K;M;V;V:W X!--/889<  )BgYG --0B JrJJJ ''  ..0**jjoo'.0!	 % K G113$$T!W]]3YR48KZ{{#5dkk#B#B		,,00='((,<L<N  7&r>>g's   %ABc                 x    U R                  5         U R                   Vs/ s H  o"R                  PM     sn$ s  snf rQ   )r   rm   rO   )rR   r5   rA   s      r1   r>  %ConstDictVariable.unpack_var_sequence"  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rQ   r   )rs   r*  rR   s     r1   rv   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   hasattrrK   r#   r   r   r   SUPPORTABLE)rR   r5   r  r   s   `   r1   call_obj_hasattr"ConstDictVariable.call_obj_hasattr&  s    
  
K33[5L5LM
 
 
 t}}d++'..t44}}$'..u55DMM?*;<3T]]O,="..		
r3   c                 D   > U R                  5         [        TU ]  " S0 UD6$ Nrl   )r   r}   r   rR   rn   r   s     r1   r   ConstDictVariable.clone?  s!    **,w}&v&&r3   c                     g)z@
Dictionaries are mutable and therefore not hashable in Python.
Frl   rY   s    r1   rG   $ConstDictVariable.is_python_hashableC       r3   )rm   rp   rq   rK   r   r%   r+   Nr+   N)/rc   rd   re   rf   r   DICT_CONTAINSr  r"   _nonvar_fieldsr^   r   r.   r   rS   r   r   r   r   r   r   r;   rj   r   r   r   rh   r   r   r   r   r   r   r   r   r   r  r   listr  r8  r>  r#   rP  r   rG   rk   __classcell__r   s   @r1   rI   rI   g   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8 )0?	")0?	" 8O;T &/ &d &I&5)&515o1F&5	&5Pa?#a? a? ?#	a?
 S/)*a? 
a?F*&= *$BW *
)
14
	
2'c 'o 'D  r3   rI   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$ )MappingProxyVariableiJ  dv_dictrn   r+   Nc                 `   > [         TU ]  " S0 UD6  [        U[        5      (       d   eXl        g rS  )r}   rS   rC   rI   rb  rR   rb  rn   r   s      r1   rS   MappingProxyVariable.__init__L  s,    "6"'#45555r3   c                 "    [         R                  $ rQ   )typesMappingProxyTyperY   s    r1   r;    MappingProxyVariable.python_typeQ  s    %%%r3   r5   r'   c                 8    U R                   R                  U5      $ rQ   )rb  r>  rR   r5   s     r1   r>  (MappingProxyVariable.unpack_var_sequenceT  s    ||//33r3   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      $ )Nrh  )r   r   rg  r   r   s   r1   r   2MappingProxyVariable.reconstruct.<locals>.<lambda>h  s2    G))55e<,,-?@r3   r    F)r   r   r   rO  r   rb  r   r   )rR   r   r   s    ` r1   r    MappingProxyVariable.reconstructW  s    ;;<T[[M JL L  ?"4;;-0Y&22	 		
 	21e<=r3   r  r8   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 mutationrn  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   rb  r8  )rR   r5   r  r8   rn   r   s         r1   r8   MappingProxyVariable.call_methodr  sr     ;;29911LLNN7  G"4;;-/GHdh	 ||''$??r3   c                    > U R                  5       [        R                  L a1  [        R                  " U[        R                  R
                  ;   5      $ [        TU ]  X5      $ rQ   )r;   rg  rh  r#   r   r/   r}   rP  )rR   r5   r  r   s      r1   rP  %MappingProxyVariable.call_obj_hasattr  sN     !7!77#**453I3I3R3R+RSSw'11r3   rb  rY  )rc   rd   re   rf   rI   r   rS   r.   r;   r]  r"   r>  r   r   r   r8  r#   rP  rk   r^  r_  s   @r1   ra  ra  J  s     1 S T 
&T &4&= 4$BW 4>6@#@ @ ?#	@
 S/)*@ 
@:2)2142	2 2r3   ra  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 rQ   rl   rY   s    r1   r   7NNModuleHooksDictVariable.install_dict_keys_match_guard  s    r3   r5   r'   r8   c                     g rQ   rl   rR   r5   r8   s      r1   r  5NNModuleHooksDictVariable.install_dict_contains_guard  s     	r3   rl   rZ  )	rc   rd   re   rf   r   r]  r"   r  rk   rl   r3   r1   ry  ry    s)    )15o1F	r3   ry  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 jrSrU =r$ )DefaultDictVariablei  Nrm   rK   default_factoryrn   r+   c                    > [         TU ]  " X40 UD6  U[        R                  L d   eUc  [        R
                  " S 5      nX0l        g rQ   )r}   rS   r   r   r#   r   r  )rR   rm   rK   r  rn   r   s        r1   rS   DefaultDictVariable.__init__  sG     	3F3;22222".55d;O.r3   c                    > U R                   [        [        [        4;  a  U R                  (       d  g[
        TU ]  5       $ )NF)r  r]  r   r   rm   r}   r  rR   r   s    r1   r  &DefaultDictVariable.is_python_constant  s1     eT'::4::w)++r3   c                 |   > U R                   c   eSU R                   R                  5        S[        TU ]  5        S3$ )Nzdefaultdict(r   ))r  r   r}   r  s    r1   r   DefaultDictVariable.debug_repr  sF    ##///4//::<=R@R@T?UUVW	
r3   r4   c                    [        U [        R                  5      (       a#  U R                  [        [
        [        [        4;   $ [        U [        R                  R                  [        R                  R                  45      $ rQ   )rC   r   r(   fnr]  r   r   set	functionsBaseUserFunctionVariablePolyfilledFunctionVariabler   s    r1   is_supported_arg$DefaultDictVariable.is_supported_arg  s`    c9445566dE4555''@@''BB r3   r5   r'   r  r8   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$ [        TU ]-  XX45      $ )Nr  r    r  r  r   r7   r  )r   r   r   r   r  r#   r   r   r   r<  r}   r8  )rR   r5   r  r8   rn   default_varr   s         r1   r8  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 '&7&r>>r3   c                    ^ TR                  U4S j5        T" U R                  5        U R                  T5        TR                  [	        SS5      5        g )Nc                  n   > T R                  T R                  [        5      T R                  S5      /5      $ )Nr   r   r   s   r1   r   1DefaultDictVariable.reconstruct.<locals>.<lambda>  s1    G))55kB,,];r3   r   F)r   r  r   r   r   r   s    `r1   r   DefaultDictVariable.reconstruct  sJ    	
 	$$%**7321e<=r3   )r  rQ   rY  )rc   rd   re   rf   r   r"   r.   r   r   rS   rj   r  r   r   staticmethodr  r]  r8  r   rk   r^  r_  s   @r1   r  r    s    
 6:	/O_45/ / "/2	/
 / 
/ /,D ,
C 
 
o 
$ 
 
?#? ? ?#	?
 S/)*? 
?8> >r3   r  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 $ )SetVariablei  z.We model a sets as dictionary with None valuesrm   rn   r+   Nc                 x   > [         R                  U[        R                  5       5      n[        TU ]  " U40 UD6  g rQ   )r   fromkeysr  _default_valuer}   rS   )rR   rm   rn   r   s      r1   rS   SetVariable.__init__  s0    
 e[%?%?%AB)&)r3   c                 v    U R                   (       d  gSSR                  S U R                    5       5      -   S-   $ )Nzset()r   ,c              3   T   #    U  H  oR                   R                  5       v   M      g 7frQ   r   rs   r   s     r1   rv   )SetVariable.debug_repr.<locals>.<genexpr>	       !HZ$$//"3"3Z   &(r   rm   r   rY   s    r1   r   SetVariable.debug_repr  s/    zz!HTZZ!HHH3NNr3   rM   c                 H    [        U R                  R                  5       5      $ rQ   )r  rm   r   rY   s    r1   	set_itemsSetVariable.set_items  s    4::??$%%r3   c                  .    [         R                  " S 5      $ rQ   )r#   r   rl   r3   r1   r  SetVariable._default_value  s      &&t,,r3   c                 t    U R                    Vs1 s H  oR                  R                  5       iM     sn$ s  snf rQ   )r  rO   r   rR   r   s     r1   r   SetVariable.as_proxy  s&    )-8A888   #5c                     [         $ rQ   )r  rY   s    r1   r;   SetVariable.python_type  s    
r3   c                 t    U R                    Vs1 s H  oR                  R                  5       iM     sn$ s  snf rQ   )r  rO   r   r  s     r1   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  rO   r   r   r   rR   r   rA   s      r1   r   SetVariable.reconstruct  sG    t~~6~!~670#dnnBUVW 7s   A#r5   r'   r  r8   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)Nr7   )r   rm   r<   r   r.   r]  mapr#   r   r8   r"   build)
rR   r5   r  r8   rn   rA   r   rt   resexcs
             r1   _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  US;   aP  U" X45      (       aC  U R                  5       [        L a,  U R                  5       nU R	                  U[        Xb5      X45      $ US:X  a  [        R                  " [        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        [        R                   " S 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OxU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 ]y  XW/U5        U$ US:X  au  U(       d  [#        U5      S:w  a&  [%        UUS[#        U5       S[#        U5       S	35        [        R>                  " [@        RB                  5      RE                  XUS   /0 5      $ US:X  ah  U(       a  [%        XS[#        U5       S	35        [        R>                  " [@        RF                  5      RE                  UU /UQSU RI                  5       05      $ US:X  aW  U(       a  [%        XS[#        U5       S	35        [        R>                  " [@        RJ                  5      RE                  X/UQ0 5      $ US:X  ah  U(       a  [%        XS[#        U5       S	35        [        R>                  " [@        RL                  5      RE                  UU /UQSU RI                  5       05      $ US:X  ah  U(       a  [%        XS[#        U5       S	35        [        R>                  " [@        RN                  5      RE                  UU /UQSU RI                  5       05      $ US:X  aW  U(       a  [%        XS[#        U5       S	35        [        R>                  " [@        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        [        R>                  " [@        RR                  5      RE                  UU /UQSU RI                  5       05      $ US:X  as  U(       d  [#        U5      S:w  a&  [%        UUS[#        U5       S[#        U5       S	35        [        R>                  " [@        RT                  5      RE                  X/UQ0 5      $ US:X  al  U RW                  5       (       aW  U(       a  [%        XS[#        U5       S	35        [        R>                  " [@        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 ]y  USX45      $ US:X  aj  U(       d  [#        U5      S:w  a&  [%        UUS[#        U5       S[#        U5       S	35        US   U ;   a  [:        TU ]y  USX45      $ [        R                   " S S9$ 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+  [        R                  " [        5      RE                  X/0 5      n[        R                  " U
Re                  U5      5      RE                  XU/0 5      $ US!;   a  SSSSS!.Re                  U5      n[g        US   [&        [        Rh                  45      (       dN  [        R                   " S"U S#U Rk                  5        S$US   Rk                  5        S%35      n[3        [l        X/S9  Uc   eU R=                  XX45      $ US&;   a  [g        US   [&        [        Rh                  45      (       dN  [        R                   " S"U S#U Rk                  5        S$US   Rk                  5        S%35      n[3        [l        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   [&        [        Rh                  45      (       d  [        R                   " S(5      $ U R=                  USX45      n[        R                   " [#        UR*                  5      S:H  5      $ U[n        ;   a}  [g        US   [&        [        Rh                  45      (       d  [        R                   " [p        5      $ [        R                   " [n        U   " U R*                  US   R*                  5      5      $ [:        TU ]y  XX45      $ ! [0         aE  n	[3        [0        U[5        [7        [        R                   U	R8                  5      5      S9   S n	A	GNsS n	A	ff = f))Nr   )check_constant_args)
isdisjointunionintersection
differencesymmetric_differencerS   r3  r    z1 args and 0 kwargsr  r  r  r   r|   r  r7   r  r  z0 kwargsclsintersection_updater  r  zExpect: 0 kwargs, Actual: difference_updater  symmetric_difference_updater"  removediscard)r   )issubset
issupersetr  r  )__and__r&  __xor____sub__z unsupported operand type(s) for z: 'z' and 'r'  )__iand__r,  __ixor____isub__ra   F)9utilsr  r;   r  r  getattrr   r(   call_setr
  r  r1  rm   r!  r"  r#   r   r   r   r  r  r  r|   rO   r   r   r]  r  r8   r}   r8  r)   r   set_isdisjointr<  set_intersectionpython_type_varset_intersection_update	set_unionset_differenceset_difference_updateset_symmetric_differenceset_symmetric_difference_updater7  
set_updateoperatorleger>   r   r0   rC   UserDefinedSetVariablepython_type_namer=   r   NotImplemented)rR   r5   r  r8   rn   r  py_typetemp_set_vtresulteopr\   mr   rr   s                  r1   r8  SetVariable.call_method4  sg	    	0  $D11  "c)&&(G((WW-CTRR:#33C8AA"VtVvVKII""++D1JJJJk//0#**40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=@	 11((mBtAw45 ^##BjS[M:QR11**m,,./ **#BjS[M:QR1111mBr23 W_#BjS[M:QR11)2E2EFTT,,./ 
 \!# :3v;-wO 11((m,,./ ((#BjS[M:QR11//mBr23 ++Ta#)4ykCK=@	 1122m,,./ 22Ta#)4ykCK=@	 1199mBr23 X$//"3"3#BjS[M:QR11)2F2FGUUMDM2  XTa#)4ykCK=@	 Awd"(2A7&r5$??YTa#)4ykCK=@	 Aw$w*2udCC'..T:://4yA~#Bh3t9+U8KL %KK&kkB GOO%E%--!11#6DDRRTU,,RVVD\:HH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::U  (btC0@0G0G,P'Q s   &$g3 3
i=:h==ic                 6    [         R                  " [        5      $ rQ   )r   r(   r  rY   s    r1   r  SetVariable.python_type_var  s    ((--r3   r4   c                     [        S5      e)NzIllegal to getitem on a set)RuntimeError)rR   r5   r4   s      r1   r   SetVariable.getitem_const  s     899r3   c                     g rQ   rl   rY   s    r1   r   )SetVariable.install_dict_keys_match_guard      r3   rl   rY  r+   r(   rZ  )!rc   rd   re   rf   rg   r   SET_CONTAINSr  r   r"   r   rS   r   r   propertyr  r  r  r  r   r.   r;   r   r   r]  r   r  r8  r  r   r   rk   r^  r_  s   @r1   r  r    sh   8!..N*(* * 
	*OC O &3CD & & -O - -9# 9T CC CX.#. . ?#	.
 S/)*. 
.&^;#^; ^; ?#	^;
 S/)*^; 
^;@.:):0?:	:
 r3   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!  rn   r+   Nc                 &   > [         TU ]  " S0 UD6  g rS  )r}   rS   rT  s     r1   rS    OrderedSetClassVariable.__init__"  s    "6"r3   c                     [         $ rQ   r
   rY   s    r1   r   *OrderedSetClassVariable.as_python_constant%      r3   r5   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}   var_getattr)rR   r5   r  r  attr_sourcer   s        r1   r  #OrderedSetClassVariable.var_getattr(  sG    9-{{(d;""4kBB7&r00r3   r8   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  r.  r   )builtinr  r   r   r   OrderedSetVariabler!   r  r  rC   r  r8  r}   )rR   r5   r  r8   rn   r  resolved_fnr   s          r1   r8  #OrderedSetClassVariable.call_method4  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::r3   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   r.  )r   r   force_unpack_var_sequencer   r  r!   )rR   r5   r8   rn   rm   s        r1   r<  %OrderedSetClassVariable.call_functionN  sy     t9q=F1t9+ZF}G= t9>EG55b9E++EAQASTTr3   rl   )rc   rd   re   rf   r   rS   r.   r   r   r   r"   r  r]  r   r8  r   r<  rk   r^  r_  s   @r1   r  r  !  s    # # #DC$9 
15 
1S 
1_ 
1;#; ; ?#	;
 S/)*; 
;4U#U 'U S/)*	U
 
U Ur3   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  ic  r+   c                 v    U R                   (       d  gSSR                  S U R                    5       5      -   S-   $ )NzOrderedSet([])zOrderedSet([r  c              3   T   #    U  H  oR                   R                  5       v   M      g 7frQ   r   r  s     r1   rv   0OrderedSetVariable.debug_repr.<locals>.<genexpr>i  s     )PZ$$//*;*;Zr  ])r  rY   s    r1   r   OrderedSetVariable.debug_reprd  s4    zz# )PTZZ)P!PPSWWr3   c                     [        U R                   Vs/ s H  oR                  R                  5       PM     sn5      $ s  snf rQ   )r   r  rO   r   r  s     r1   r   %OrderedSetVariable.as_python_constantl  s.    dnnMn44224nMNNM   #>c                     [         $ rQ   r
   rY   s    r1   r;   OrderedSetVariable.python_typeo  r  r3   c                     [        5       $ rQ   )r  rY   s    r1   r  "OrderedSetVariable.python_type_vars  s    &((r3   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   r1   r   0OrderedSetVariable.reconstruct.<locals>.<lambda>x  s    G,,-GVr3   
BUILD_LISTr   r    F)	r   r  r  rO   r   r   r   r   r   r  s    ` r1   r   OrderedSetVariable.reconstructv  sq    V	
 	t~~6~!~6703t~~CVWX21e<= 7s   Brl   rY  )rc   rd   re   rf   r   r   r   r   r   r.   r;   r  r  r   rk   rl   r3   r1   r  r  c  sG    C OJsO OT*S/2 )!8 )>r3   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                 v    U R                   (       d  gSSR                  S U R                    5       5      -   S-   $ )Nzfrozenset()r   r  c              3   T   #    U  H  oR                   R                  5       v   M      g 7frQ   r   r  s     r1   rv   /FrozensetVariable.debug_repr.<locals>.<genexpr>  r  r  r   r  rY   s    r1   r   FrozensetVariable.debug_repr  s/    zz !HTZZ!HHH3NNr3   rM   c                 6    U R                   R                  5       $ rQ   )rm   r   rY   s    r1   r  FrozensetVariable.set_items  s    zz  r3   c                     [         $ rQ   )	frozensetrY   s    r1   r;   FrozensetVariable.python_type      r3   c                 6    [         R                  " [        5      $ rQ   )r   r(   r0  rY   s    r1   r  !FrozensetVariable.python_type_var  s    ((33r3   c                     [        U R                   Vs1 s H  oR                  R                  5       iM     sn5      $ s  snf rQ   )r0  r  rO   r   r  s     r1   r   $FrozensetVariable.as_python_constant  s.    T^^L^$$113^LMMLr  c                    ^ TR                  U R                   Vs/ s H  o"R                  PM     sn5        TR                  U4S j5        TR	                  [        SS5      5        g s  snf )Nc                  F   > T R                  T R                  S5      /5      $ )Nr0  )r   create_load_globalr   s   r1   r   /FrozensetVariable.reconstruct.<locals>.<lambda>  s#    G))..{;r3   r   F)r  r  rO   r   r   r   r  s    ` r1   r   FrozensetVariable.reconstruct  sT    t~~6~!~67	
 	21e<= 7s   A(r5   r'   r  r8   rn   c                    > US;   a  [        SU S35      eUS:X  a  [        R                  " S 5      $ US;   a%  [        TU ]  XX45      n[        UR                  5      $ [        TU ]  XX45      $ )Nr3  r|   r"  r  r  r!  Illegal call_method z on a frozensetrS   )r   r  r  r  )r  r#   r   r}   r8  r(  rm   )rR   r5   r  r8   rn   r  r   s         r1   r8  FrozensetVariable.call_method  s     II!5dV?KLLZ $**400 
 
 #Bd;A$QWW--w"2T::r3   Tc                     g)z2
Frozensets are immutable and hashable in Python.
Trl   rY   s    r1   rG   $FrozensetVariable.is_python_hashable  s     r3   c                 4    [        U R                  5       5      $ rQ   )rV   r   rY   s    r1   rX   !FrozensetVariable.get_python_hash  s    D++-..r3   r\   c                 r    [        U[        5      =(       a!    U R                  5       UR                  5       :H  $ rQ   )rC   r"   r   r`   s     r1   r_   !FrozensetVariable.is_python_equal  s1    uo. H'')U-E-E-GG	
r3   rl   r  rY  )rc   rd   re   rf   r   r   r  r  r  r.   r;   r  r   r   r   r]  r"   r   r8  r   rG   rh   rX   ri   rj   r_   rk   r^  r_  s   @r1   r(  r(    s    OC O !3CD ! !T 4NC N	>;#; ; ?#	;
 S/)*; 
;8GDM / /
V 
 
 
r3   r(  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$ )DictKeySetVariablei  r+   c                 v    U R                   (       d  gSSR                  S U R                    5       5      -   S-   $ )Nzdict_keys([])zdict_keys([r  c              3   T   #    U  H  oR                   R                  5       v   M      g 7frQ   r   r  s     r1   rv   0DictKeySetVariable.debug_repr.<locals>.<genexpr>  s     (OJq):):Jr  r  r  rY   s    r1   r   DictKeySetVariable.debug_repr  s4    zz" (ODJJ(O OORVVr3   Nc                     g rQ   rl   rY   s    r1   r   0DictKeySetVariable.install_dict_keys_match_guard  r  r3   r5   r'   r8   c                     g rQ   rl   r}  s      r1   r  .DictKeySetVariable.install_dict_contains_guard  s     	r3   c                     U R                   $ rQ   )rm   rY   s    r1   r  DictKeySetVariable.set_items  s    zzr3   c                     [         $ rQ   r   rY   s    r1   r;   DictKeySetVariable.python_type  r2  r3   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 rQ   )r   r  r  rO   r   r   r  s     r1   r   %DictKeySetVariable.as_python_constant  s@    }}04?1TT$$&?

$&	?s   #Ar  rn   c                 N   > US;   a  [        SU S35      e[        TU ]	  XX45      $ )Nr=  r>  z on a dict_keys)r  r}   r8  rR   r5   r  r8   rn   r   s        r1   r8  DictKeySetVariable.call_method  s5     II!5dV?KLLw"2T::r3   rl   rZ  )rc   rd   re   rf   r   r   r   r]  r"   r  r  r   r  r.   r;   r   r   r8  rk   r^  r_  s   @r1   rG  rG    s    C )15o1F	 3  T C 
	;#	; 	; ?#		;
 S/)*	; 
	; 	;r3   rG  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$ )DictViewVariablei  zi
Models _PyDictViewObject

This is an "abstract" class. Subclasses will override kv and the items method
Nkvrb  rn   r+   c                    > [         TU ]  " S0 UD6  U R                  S;   d   e[        U[        5      (       d   eXl        g )N)r   r   rm   rl   )r}   rS   r\  rC   rI   rb  rd  s      r1   rS   DictViewVariable.__init__  s?    "6"ww5555'#45555r3   c                 ~    U R                   c   e[        U R                  R                  U R                   5      " 5       $ rQ   )r\  r  rb  rm   rY   s    r1   
view_itemsDictViewVariable.view_items  s0    ww"""t||))477355r3   c                     [         erQ   )NotImplementedErrorrY   s    r1   view_items_vtDictViewVariable.view_items_vt	  s
     "!r3   r5   r'   c                     U R                   $ rQ   )rd  rk  s     r1   r>  $DictViewVariable.unpack_var_sequence  s    !!!r3   c                     U R                   c   eU" U R                  5        UR                  U R                   5        UR                  S5        g )Nr   )r\  rb  load_methodr8  r   s     r1   r   DictViewVariable.reconstruct  s>    ww"""DGG$Ar3   r  c                     U R                   c   eX R                  5       R                  ;   a  [        R                  " S5      $ [        R                  " S5      $ )NTF)r\  r;   r/   r#   r   )rR   r5   r  s      r1   rP  !DictViewVariable.call_obj_hasattr  sK     ww"""##%...#**400&&u--r3   r8   c                    > US:X  a  U R                   R                  XX45      $ US:X  a  [        U R                  [	        5       S9$ [
        TU ]  XX45      $ )Nr  r-  r.  )rb  r8  r$   rd  r!   r}   rX  s        r1   r8  DictViewVariable.call_method   s\     9<<++BdCCZ'""2B2D  w"2T::r3   rw  rY  )rc   rd   re   rf   rg   r\  r   r   __annotations__rI   r   rS   r  r`  r]  r"   rd  r>  r   r#   rP  r   r8  rk   r^  r_  s   @r1   r[  r[    s     B 1 S T  6C 6 6 "tO4 " "
"&= "$BW ".).14.	.;#; ; ?#	;
 S/)*; 
; ;r3   r[  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SS	\S
\	\   S\\\4   S\4
U 4S jjrSrU =r$ )r5  i0  r   r+   c                 ,    [        U R                  5      $ rQ   )r  r`  rY   s    r1   r  DictKeysVariable.set_items3  s    4??##r3   c                 X    U R                    Vs/ s H  oR                  PM     sn$ s  snf rQ   )r`  rO   )rR   rA   s     r1   rd  DictKeysVariable.view_items_vt7  s"     #oo.oo...s   'c                     [         $ rQ   rS  rY   s    r1   r;   DictKeysVariable.python_type<  r2  r3   r5   r'   r  r8   rn   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  r&  r,  r  r  r  r  r   )rb  r8  r  r  r  r   rC   r5  r#   r   r  r}   )rR   r5   r  r8   rn   r  r  r   s          r1   r8  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::r3   rl   )rc   rd   re   rf   r\  r  r  r"   r  r]  rd  r.   r;   r   r   r8  rk   r^  r_  s   @r1   r5  r5  0  s    	B$3/ $ $ /tO4 / /T ;#; ; ?#	;
 S/)*; 
; ;r3   r5  c                   D    \ rS rSrSr\S\\   4S j5       rS\	4S jr
Srg)r6  i_  r   r+   c                 ,    [        U R                  5      $ rQ   )r]  r`  rY   s    r1   rd   DictValuesVariable.view_items_vtc  s    DOO$$r3   c                     [         $ rQ   )r   rY   s    r1   r;   DictValuesVariable.python_typeg  s    r3   rl   N)rc   rd   re   rf   r\  r  r]  r"   rd  r.   r;   rk   rl   r3   r1   r6  r6  _  s1    	B%tO4 % %T r3   r6  c            
          ^  \ rS rSrSr\S\\   4S j5       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$ )r4  ik  rm   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 rQ   )r`  r   r9  rO   r   s      r1   rd  DictItemsVariable.view_items_vtn  s7     @DOtq	''q	2OOOs   .Ac                     [         $ rQ   )r   rY   s    r1   r;   DictItemsVariable.python_types  r  r3   r5   r'   r  r8   rn   c                 4  > 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      $ [        TU ]  XX45      $ )Nra   r    r  r  r   F)	r   r   rC   r4  rb  r8  r#   r   r}   rX  s        r1   r8  DictItemsVariable.call_methodv  s     84yA~#Bh3t9+U8KL$q'#455||//HtAw>OQSTT#**511w"2T::r3   Fc                     g)z3
Dictionary item views are not hashable in Python.
Frl   rY   s    r1   rG   $DictItemsVariable.is_python_hashable  rX  r3   rl   )rc   rd   re   rf   r\  r  r]  r"   rd  r.   r;   r   r   r8  r   rG   rk   r^  r_  s   @r1   r4  r4  k  s    	BPtO4 P PT ;#; ; ?#	;
 S/)*; 
;"GEN  r3   r4  rQ   )Irg   r   r  r  rg  collections.abcr   r   typingr   r   r   r   r	   torch.utils._ordered_setr   r/  r   r   r   bytecode_transformationr   r   r  r   r   guardsr   r   r   r   r   r   r  r   r   r   r   r   r   r   r   r!   r"   constantr#   listsr$   torch._dynamo.codegenr%   r9   r'   torch._dynamo.variables.builtinr(   r  r)   rj   r2   r@   rF   rI   ra  ry  r  r  r  r  r(  rG  r[  r5  r6  r4  rl   r3   r1   <module>r     sk  (     . ? ? / 6 6 N 9 0 I I   4 & ' /D?/>C >D >
 CG	&'>?	."? "t "` `FJ2? J2Z 1 P>+ P>lf# fR	?Uo ?UD> >8H
 H
V(; (;V8; 8;v,;' ,;^	) 	 (  r3   