
    ^j                        d Z ddlZddlZddlmZ ddlmZmZ ddlm	Z	 ddl
mZmZ ddlmZmZ dd	lmZmZ dd
lmZmZ ddlmZmZmZ ddlmZmZmZmZmZm Z m!Z! ddl"m#Z#m$Z$ ddl%m&Z& ddl'm(Z(m)Z) erddl*m+Z+ ddl,m-Z- ddl.m/Z/ de$de0fdZ1de$de0fdZ2de$de$fdZ3 G d de$      Z4 G d de$      Z5 G d de4      Z6 G d d e4      Z7 G d! d"e4      Z8y)#a  
Set-related variable tracking classes for PyTorch Dynamo.

This module implements variable tracking for different types of set-like objects:
- Regular Python sets (set)
- Frozen sets (frozenset)
- Ordered sets (torch.utils._ordered_set.OrderedSet)
- Dictionary key sets (dict_keys views used as sets)

These classes are responsible for tracking set operations during graph compilation,
maintaining proper guards for set mutations and element existence checks.

The implementation uses a special HashableTracker wrapper to handle set elements
while preserving proper aliasing semantics. Sets are modeled internally as
dictionaries with None values.
    N)Iterable)AnyTYPE_CHECKING
OrderedSet   )	polyfills	variables)create_call_functioncreate_instruction)raise_observed_exceptionraise_type_error)GuardBuilderinstall_guard)
AttrSourceis_constant_sourceis_from_local_source)_item_debug_reprcmp_name_to_op_mappingistyperaise_args_mismatchset_methodstracked_reprunpack_iterable   )ValueMutationNewVariableTracker)ConstantVariable)HashableTrackeris_hashable)	PyCodegen)InstructionTranslatorBase)BuiltinVariableobjreturnc                 J    t        | j                         t        t        f      S N)
issubclasspython_typeset	frozensetr$   s    g/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/torch/_dynamo/variables/sets.pypyanyset_checkr.   6   s    coo'#y)9::    c                 >    t        | j                         t              S r'   )r(   r)   r*   r,   s    r-   pyset_checkr1   :   s    coo'--r/   c                     t        | t        j                        r| j                  n| }|t	        d      |j                  |j                  j                         t               d      S )a^  Mirrors CPython's internal `set_copy` (Objects/setobject.c).

    Always allocates a fresh set/frozenset with a shallow-copied items dict.
    Distinct from the user-visible `.copy()` method, which preserves identity
    for exact frozenset (`frozenset_copy`).  Use this for binary-op scratch
    storage so mutations don't bleed into the input.
    Nz_base_vt must not be None)itemsmutation_typesource)	
isinstancer
   UserDefinedSetVariable_base_vtAssertionErrorcloner3   copyr   )r$   bases     r-   set_copyr=   ?   s]     &c9+K+KL3<<RUD|899::jjoo&(   r/   c            
       .    e Zd ZdZeZej                  Zej                  Z
deeez     deddf fdZdefdZeded   fd	       Zedefd
       ZdefdZdefdZdefdZd6dZd7dZdedefdZdefdZdedz  dedefdZddde e   fdZ!dedef fdZ"defdZ#ddde$e%ef   fdZ&dddef fdZ'dddede(fdZ)ddde e   ddfd Z*ddd!ede e   de+eef   def
d"Z,ddd#edefd$Z-dddede e   de+eef   def
 fd%Z.d8d&Z/ddd'edefd(Z0dddefd)Z1	 d9ddded*edefd+Z2dddedefd,Z3	 d9ddded*edefd-Z4dddedefd.Z5	 d9ddded*edefd/Z6dddedefd0Z7	 d9ddded*edefd1Z8dddedefd2Z9dddefd3Z:ddded4edefd5Z; xZ<S ):SetVariablez2Represents a Python set during symbolic execution.r3   kwargsr%   Nc                 $   d|v r|j                  d       d|v r|j                  d       t        |   di | g }|D ]L  }t        |t              r|j                  |       %|j                  t	        |j                                      N t        j                  |t        j                               | _        | j                  rt        | j                         nd| _        t        j                  |t        j                               | _        y )Noriginal_itemsshould_reconstruct_allT )popsuper__init__r6   r   appendrealizedictfromkeysr?   _default_valuer3   r5   r   rC   rB   )selfr3   r@   hashable_itemsitem	__class__s        r-   rG   zSetVariable.__init__Z   s     v%JJ'(#v-JJ/0"6"
  	GD$0%%d+ %%odlln&EF	G ]]>;3M3M3OP
59[[$T[[11d 	# #mmK668
r/   c                     | j                   syg }| j                   D ]<  }t        |t              r|j                  n|}t	        |      }|j                  |       > ddj                  |      z   dz   S )Nset(){, })r3   r6   r   vtr   rH   join)rM   r3   vrV   val_strs        r-   
debug_reprzSetVariable.debug_repr}   si    zz!EZZ &'?;QTT*2.W%& 5))C//r/   r   c                 H    t        | j                  j                               S r'   r*   r3   keysrM   s    r-   	set_itemszSetVariable.set_items       4::??$%%r/   c                  ,    t        j                  d       S r'   )r   createrD   r/   r-   rL   zSetVariable._default_value   s      &&t,,r/   c                 p    | j                   D ch c]  }|j                  j                          c}S c c}w r'   )r_   rV   as_proxyrM   ks     r-   rd   zSetVariable.as_proxy   s$    )-8A888   !3c                     t         S r'   )r*   r^   s    r-   r)   zSetVariable.python_type   s    
r/   c                 p    | j                   D ch c]  }|j                  j                          c}S c c}w r'   )r_   rV   as_python_constantre   s     r-   rj   zSetVariable.as_python_constant   s'    37>>Ba'')BBBrg   txr"   c                     | j                   st        j                  d      S dj                  fd| j                  D              }t        j                  d|z   dz         S )NrR   rT   c              3   J   K   | ]  }t        |j                          y wr'   r   rV   .0rO   rk   s     r-   	<genexpr>z(SetVariable.repr_impl.<locals>.<genexpr>        O,r4773O    #rS   rU   r3   r   buildrW   r_   rM   rk   r3   s    ` r-   	repr_implzSetVariable.repr_impl   sQ    zz"((W55		OOO$$Rus):;;r/   c                     |j                  | j                  D cg c]  }|j                   c}       |j                  t	        dt        | j                                     y c c}w )N	BUILD_SETarg)foreachr_   rV   append_outputr   lenrM   codegenxs      r-   reconstructzSetVariable.reconstruct   sE    t~~6!670#dnnBUVW 7s   A$rV   c                     t        |t              st        dt        |             t	        |      syt        |      }|| j                  v S )NzExpected VariableTracker, got F)r6   r   r9   typer    r   r3   )rM   rV   keys      r-   __contains__zSetVariable.__contains__   sH    "o. #A$r(!LMM 2b!djj  r/   c                 x      j                   xs, t         fd j                  j                         D              S )Nc              3      K   | ]<  \  }}j                  j                  j                  |j                        |       > y wr'   )is_new_itemrB   getrV   )rp   r   valuerM   s      r-   rq   z,SetVariable.has_new_items.<locals>.<genexpr>   sA      2
 U T0044SVV<eD2
s   AA)rC   anyr3   r^   s   `r-   has_new_itemszSetVariable.has_new_items   s9    ** 
c 2
 #jj..02
 /
 	
r/   r   otherc                     |rS|j                         rC|j                         r3t        |j                               t        |j                               k7  S t        |      t        |      k7  S r'   )is_realizedidrI   )rM   r   r   s      r-   r   zSetVariable.is_new_item   sQ     U&&(U->->-@emmo&"U]]_*===%yBuI%%r/   c                 T    | j                   D cg c]  }|j                   c}S c c}w r'   )r3   rV   )rM   rk   r   s      r-   unpack_var_sequencezSetVariable.unpack_var_sequence   s      #jj))))s   %c                 v    ddl m}m} t        |j	                  d      ||f      rd |d<   t        |   di |S )Nr   )AttributeMutationNewr   r4   r5   rD   )torch._dynamo.variables.baser   r   r6   r   rF   r:   )rM   r@   r   r   rP   s       r-   r:   zSetVariable.clone   sA    WJJ'*:<P)Q
  $F8w}&v&&r/   c                      y)NFrD   r^   s    r-   r    zSetVariable.is_hashable   s    r/   c                 F    ddl m}  ||d| j                          d       y )Nr   )r   unhashable type: '')excr   python_type_name)rM   rk   r   s      r-   	hash_implzSetVariable.hash_impl   s#    *1$2G2G2I1J!LMr/   namec                 v    |dk(  r$t        j                  || j                               S t        |   ||      S )NrP   )r   ru   r)   rF   var_getattr)rM   rk   r   rP   s      r-   r   zSetVariable.var_getattr   s9    ;"((T-=-=-?@@w"2t,,r/   c                 J    t        j                  |t        t        |            S r'   )r   ru   hasattrr*   )rM   rk   r   s      r-   call_obj_hasattrzSetVariable.call_obj_hasattr   s     $$Rd);<<r/   argsc           	         | j                   sy |j                  j                  j                  |       ry |d   | v }|d   j                   |d   j	                         rm|rt        |       j                  nt        |       j                  }t        | j                  t        j                  ||d   j                                            y y y )Nr   )r   )r5   outputside_effectsis_modifiedis_python_constantr   CONTAINS_GUARDNOT_CONTAINS_GUARDr   
make_guard	functoolspartialrj   )rM   rk   r   containsguard_fns        r-   install_set_contains_guardz&SetVariable.install_set_contains_guard   s     {{99!!--d37d?7>>!d1g&@&@&B-5T
))4:;X;X  %%  G668	 'C!r/   fnc                 t   	  || g|D cg c]  }|j                          c}i |j                         D ci c]  \  }}||j                          c}}}t        j                  |      S c c}w c c}}w # t        $ r4}	t        t	        |	      |t        |	j                               Y d }	~	Yd }	~	ww xY w)Nr   )	rj   r3   	Exceptionr   r   listr   r   ru   )
rM   rk   r   r   r@   r   rf   rX   resr   s
             r-   _fast_set_methodzSetVariable._fast_set_method   s    	I37-$-@Q!&&(@9?HA1a**,,HC $$R-- AH 	I$T#YchhHH	Is2   	A: A/A: A4A: /A: :	B7*B22B7rO   c                     t        |      s>t        |      st        |d|j                          d       t	        |j
                        }| j                  ||g       || v }t        j                  ||      S )Nr   r   )	r    r1   r   r   FrozensetVariabler3   r   r   ru   )rM   rk   rO   r   s       r-   sq_containszSetVariable.sq_contains  ss     4  t$ '9$:O:O:Q9RRS%TU
 %TZZ0D''TF34<$$R22r/   c                    ddl m} ddlm} |dv rM |||      rD| j	                         t
        u r.| j	                         }| j                  |t        ||      ||      S ddlm	}m
}	 |dk(  r |j                  |t
              j                  |g|i |}
|j                  j                  j                  |        | j                   j#                          | j                   j%                  |
j                          t'        j                  d       S |dk(  r|st)        |      dk7  r&t+        ||d	t)        |       d
t)        |       d       |j                  j                  j                  |        t,        j/                         | j                   t1        |d         <   t'        j                  d       S |dk(  r|s|r&t+        ||dt)        |       d
t)        |       d       	 | j2                  j5                         j6                  }d| _         |j                  j                  j                  |        | j                   j5                  t1                     |S |dk(  rl|st)        |      dk7  r&t+        ||d	t)        |       d
t)        |       d       |j                  |tB        jD                        jG                  || |d   gi       S |dk(  r`|rt+        ||dt)        |       d       |j                  |tB        jH                        jG                  || g|d| jK                         i      S |dk(  rP|rt+        ||dt)        |       d       |j                  |tB        jL                        jG                  || g|i       S |dk(  r`|rt+        ||dt)        |       d       |j                  |tB        jN                        jG                  || g|d| jK                         i      S |dk(  r`|rt+        ||dt)        |       d       |j                  |tB        jP                        jG                  || g|d| jK                         i      S |dk(  rP|rt+        ||dt)        |       d       |j                  |tB        jR                        jG                  || g|i       S |dk(  rz|st)        |      dk7  r&t+        ||d	t)        |       d
t)        |       d       |j                  |tB        jT                        jG                  || g|d| jK                         i      S |dk(  rj|st)        |      dk7  r&t+        ||d	t)        |       d
t)        |       d       |j                  |tB        jV                        jG                  || g|i       S |dk(  r`| jY                         rP|rt+        ||dt)        |       d       |j                  |tB        jZ                        jG                  || g|i       S |dk(  r|st)        |      dk7  r&t+        ||d	t)        |       d
t)        |       d       |d   | vrt;        t8        ||       d| _         |j                  j                  j                  |        | j                   j5                  t1        |d                t'        j                  d       S |dk(  r|st)        |      dk7  r&t+        ||d	t)        |       d
t)        |       d       |d   | v rSd| _         |j                  j                  j                  |        | j                   j5                  t1        |d                t'        j                  d       S |dv rt)        |      dk7  rt+        ||d t)        |       d!       t\        j^                  t\        j`                  d}|d   jc                         }te        |t,              s(|j                  |t
              jG                  ||gi       }|j                  ||jg                  |            jG                  || |gi       S |d"v rdddd"jg                  |      }ti        |d   t,        tj        jl                  ||	f      s<t;        tn        |d#| d$| jq                          d%|d   jq                          d&g       |ts        d'|       | ju                  ||||      S |d(v rd)d*d+d(jg                  |      }ti        |d   t,        tj        jl                  ||	f      s<t;        tn        |d#| d$|d   jq                          d%| jq                          d&g       |ts        d,|       |d   ju                  ||| g|      S |d-v rti        |d   t,        tj        jl                  ||	f      s<t;        tn        |d#| d$| jq                          d%|d   jq                          d&g       ddddd-jg                  |      }|ts        d.|       | ju                  ||||       | S |d/k(  rS|s|r&t+        ||dt)        |       d
t)        |       d       tw        jx                  |t)        | j                               S |d0k(  r5|s|r&t+        ||dt)        |       d
t)        |       d       t{        |       S |d1k(  r|s|r&t+        ||dt)        |       d
t)        |       d       d| _         |j                  j                  j                  |        | j                   j#                          t'        j                  d       S t|        |   ||||      S # t8        $ r0}t;        t8        |t=        |j>                               Y d }~	dd }~ww xY w)2Nr   )check_constant_argsr   )SourcelessBuilder)
isdisjointunionintersection
differencesymmetric_difference)DictItemsVariableDictKeysVariablerG   addz1 args and 0 kwargs
 args and  kwargsr   rE   0 args and 0 kwargsr   Tr   r   z0 kwargsclsintersection_updater   r   zExpect: 0 kwargs, Actual: difference_updater   symmetric_difference_updateupdateremovediscard)issubset
issupersetz1 argsz args)__and____xor____sub__z unsupported operand type(s) for z: 'z' and 'r   zUnexpected set method name: )__rand____rxor____rsub__r   r   r   z$Unexpected reverse set method name: )__iand____ior____ixor____isub__z$Unexpected inplace set method name: __len__r;   clear)?utilsr   builderr   r)   r*   r   getattrdictsr   r   rb   call_setr   r   mutationr3   r   r   r   r~   r   r?   rL   r   r_   rE   rV   KeyErrorr   r   r   rC   r	   set_isdisjointcall_functionset_intersectionpython_type_varset_intersection_update	set_unionset_differenceset_difference_updateset_symmetric_differenceset_symmetric_difference_update
is_mutable
set_updateoperatorlegerI   r   r   r6   r
   r7   	TypeErrorr   r9   call_methodr   ru   r=   rF   )rM   rk   r   r   r@   r   r   py_typer   r   temp_set_vtresulteopr   mrP   s                   r-   r   zSetVariable.call_method  s    	0.  $D&1  "c)&&(G((WWd-CT6RR 	?:D+222s;DD#K II""++D1JJJJk//0#**400U]Ta#)4ykCK=@	 II""++D13>3M3M3ODJJtAw/0#**400U]#)4ykCK=@	J*...*<*<*>*A*A +/D'II""++D1JJNN?623M\!Ta#)4ykCK=@	 %++B	0H0HIWWT47OR  ^##BjS[M:QR$++I..m,,./ **#BjS[M:QR$++I55mBr23 W_#BjS[M:QR$++B	0C0CDRR,,./ 
 \!# :3v;-wO %++B	0H0HIWW,,./ 
 ((#BjS[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#BjS[M:QR$++B	0D0DESSTMDM2  XTa#)4ykCK=@	 Awd"(2DA*.D'II""++D1JJNN?4734#**400YTa#)4ykCK=@	 Aw$.2+		&&//5

tAw78#**400//4yA~#Bh3t9+U8KL %KK&kkB GOO%E%-)00S9GGUGUWX$++Bt=KKT5M2  66)1' c$i	 
 Q44%$	 ):4&DDYDYD[C\\cdhijdkd|d|d~c  @A  B y$'CD6%JKK##B48899%%% c$i	 
 Q44%$	 ):4&DGD\D\D^C__fgkg|g|g~f  @A  B y$'KD6%RSS7&&r1tff==DDQ44%$	 ):4&DDYDYD[C\\cdhijdkd|d|d~c  @A  B 2#9/	
 c$i  y$'KD6%RSSRD&1KYv#)4ykCK=@	 #((S_==V^v#)4ykCK=@	 D>!W_v#)4ykCK=@	 +/D'II""++D1JJ#**400w"2tT6::[  J(2DLIIJs   !$l5 5	m.>%m))m.c                 4    t        j                  t              S r'   )r
   r#   r*   r^   s    r-   r   zSetVariable.python_type_varB  s    ((--r/   r{   c                     t        d      )NzIllegal to getitem on a set)RuntimeError)rM   rk   r{   s      r-   getitem_constzSetVariable.getitem_constE  s     899r/   c                     ddl m} | j                  rDt        | j                        s/|j                  j
                  j                  | j                          || j                        S )Nr   )SetIterator)iterr  r5   r   r   guard_on_key_orderr   r3   )rM   rk   r  s      r-   tp_iter_implzSetVariable.tp_iter_implJ  sC    %;;1$++>II((,,T[[94::&&r/   reversec                     |r|| fn| |f\  }}t        |      rt        |      st        j                  t              S t	        |      }||u r|S |j
                  j                  |j
                         |S r'   )r.   r   rb   NotImplementedr=   r3   r   )rM   rk   r   r  self_other_r   s          r-   
nb_or_implzSetVariable.nb_or_implQ  si     *1tUmve$N6,B#**>::%F?MFLL)r/   c                     t        |      st        j                  t              S |j                  j
                  j                  |        | j                  j                  |j                         | S r'   )	r.   r   rb   r  r   r   r   r3   r   rM   rk   r   s      r-   nb_inplace_or_implzSetVariable.nb_inplace_or_implc  sP     e$#**>::
		''-

%++&r/   c                    |r|| fn| |f\  }}t        |      rt        |      st        j                  t              S t	        |      }t        |j                  j                               D ]  }|j                  j                  |d          |S r'   )	r.   r   rb   r  r=   r   r3   r]   rE   )rM   rk   r   r  r	  r
  r   rf   s           r-   nb_subtract_implzSetVariable.nb_subtract_impln  s|     *1tUmve$N6,B#**>::%fll'')* 	&ALLQ%	&r/   c                     t        |      st        j                  t              S |j                  j
                  j                  |        t        |j                  j                               D ]  }| j                  j                  |d          | S r'   )r.   r   rb   r  r   r   r   r   r3   r]   rE   )rM   rk   r   rf   s       r-   nb_inplace_subtract_implz$SetVariable.nb_inplace_subtract_impl  sm     e$#**>::
		''-ekk&&() 	$AJJNN1d#	$r/   c                     |r|| fn| |f\  }}t        |      rt        |      st        j                  t              S |j	                  |d|gi       S Nr   r.   r   rb   r  r   rM   rk   r   r  r	  r
  s         r-   nb_and_implzSetVariable.nb_and_impl  sR     *1tUmve$N6,B#**>::  ^fXrBBr/   c                 x    t        |      st        j                  t              S | j	                  |d|gi        | S )Nr   r  r  s      r-   nb_inplace_and_implzSetVariable.nb_inplace_and_impl  s9     e$#**>::2UGR@r/   c                     |r|| fn| |f\  }}t        |      rt        |      st        j                  t              S |j	                  |d|gi       S Nr   r  r  s         r-   nb_xor_implzSetVariable.nb_xor_impl  sS     *1tUmve$N6,B#**>::  %;fXrJJr/   c                 x    t        |      st        j                  t              S | j	                  |d|gi        | S )Nr   r  r  s      r-   nb_inplace_xor_implzSetVariable.nb_inplace_xor_impl  s9     e$#**>:::UGRHr/   c                 T    t        j                  |t        | j                              S r'   )r   ru   r~   r_   )rM   rk   s     r-   	sq_lengthzSetVariable.sq_length  s    $$RT^^)<==r/   r   c                    t        |t              s@	 |j                         }t        |t        t        f      st	        j
                  t              S | j                  }|j                  }|dk(  rEt        |      t        |      k7  rt	        j
                  d      S t        j                  |||k        S |dk(  rFt        |      t        |      k7  rt	        j
                  d      S t        j                  |||k         S t        j                  |t        |   ||            S # t        $ r t	        j
                  t              cY S w xY w)zset_richcompare: subset/superset comparisons for all 6 ops.

        https://github.com/python/cpython/blob/e76aa128fe/Objects/setobject.c#L2097
        CPython uses PyAnySet_Check: only accepts set/frozenset (not dict views).
        __eq__F__ne__T)r6   r?   r)   NotImplementedErrorr   rb   r  r(   r*   r+   r_   r~   r   ru   r   )rM   rk   r   r   
other_type
self_itemsother_itemss          r-   richcompare_implzSetVariable.richcompare_impl  s#    %-?"..0
 j3	*:;'..~>> ^^
oo>:#k"22'..u55"((Z;-FGG8^:#k"22'..t44"((*2K-LMM"((&r*:{C + ' ?'..~>>?s   D! !"EErk   r"   r%   r   r   r!   r%   Nr%   r#   F)=__name__
__module____qualname____doc__r*   _cpython_typer   SET_CONTAINSr   SET_NOT_CONTAINSr   r   r   r   r   rG   strrZ   propertyr_   staticmethodrL   rd   r   r)   rj   rw   r   boolr   r   r   r   r   r:   r    tupleintr   r   r   r   r   rJ   r   r   r   r   r   r  r  r  r  r  r  r  r  r  r   r(  __classcell__rP   s   @r-   r?   r?   Q   s   < M!..N%66!
/9:!
 !
 
	!
F	0C 	0 &301 & & -O - -9# 9T CC C<X	! 	!4 	!
t 
&$t+&4C&	&*-*	o	*
'c 'o 'T N7 NE#t)<L N
-9 - -
=-=58=	=
-59/5J	..'. . ?#	.
 S/)*. 
. 3-35D3	3&h;'h; h; ?#	h;
 S/)*h; 
h;T	.:-:4C:	:
': ' ' 	'  	
 
$	-	6E			 	'  	
 
"
-
6E
	
  	C'C C 	C
 
C-6E	 	K'K K 	K
 
K-6E	>7 >O >&'& & 	&
 
&r/   r?   c            
            e Zd Zdeddf fdZdeee      fdZdddede	f fd	Z
ddded
ee	   deee	f   de	f
 fdZddd
ee	   deee	f   ddfdZ xZS )OrderedSetClassVariabler@   r%   Nc                 $    t        |   di | y )NrD   )rF   rG   )rM   r@   rP   s     r-   rG   z OrderedSetClassVariable.__init__  s    "6"r/   c                     t         S r'   r   r^   s    r-   rj   z*OrderedSetClassVariable.as_python_constant      r/   rk   r"   r   c           
          |dk(  rNddl m} | j                  rt        | j                  |      }nd } || |t	        t        t        |            |      S t        | !  ||      S )N__new__r   )GetAttrVariable)r   r5   )	miscrC  r5   r   r   r   r   rF   r   )rM   rk   r   rC  attr_sourcerP   s        r-   r   z#OrderedSetClassVariable.var_getattr  sb     9-{{(d;""dDT)B$CK  7&r400r/   r   c           
      z   |dk(  rUt        |      dk7  s|r&t        ||dt        |       dt        |       d       t        j                  g t	                     S t        t        |      }|t        v r7t        |d   t        j                        r|d   j                  |||dd  |      S t        | )  ||||      S )	NrB  r   z'OrderedSet.__new__ only accepts one argr   r   r4   r   r   )r~   r   r
   OrderedSetVariabler   r   r*   r   r6   r?   r   rF   )rM   rk   r   r   r@   resolved_fnrP   s         r-   r   z#OrderedSetClassVariable.call_method  s     94yA~#=4ykCK=A //BRBTUUc4(+%*T!Wi>S>S*T7&&r4ab6BBw"2tT6::r/   rH  c           
          t        |      dkD  s|r&t        |ddt        |       dt        |       d       t        |      dk(  rg }nt        ||d         }t        j                  |t                     S )Nr   r   zOrderedSet only accepts one argr   r   r   rG  )r~   r   r   r
   rH  r   )rM   rk   r   r@   r3   s        r-   r   z%OrderedSetClassVariable.call_function  su     t9q=F1t9+ZF}G= t9>E#BQ0E++EAQASTTr/   )r-  r.  r/  r   rG   r   r   rj   r4  r   r   r   rJ   r   r   r:  r;  s   @r-   r=  r=    s    # # #DC$9 1-1581	1 ;'; ; ?#	;
 S/)*; 
;0U'U ?#U S/)*	U
 
Ur/   r=  c            	            e Zd ZdefdZddZdee   fdZde	ee      fdZ
defdZdd	Z	 dddd
ededef fdZ	 dddd
ededef fdZ	 dddd
ededef fdZ	 dddd
ededefdZddd
edefdZ xZS )rH  r%   c                     | j                   syg }| j                   D ](  }t        |j                        }|j                  |       * ddj	                  |      z   dz   S )NzOrderedSet([])OrderedSet([rT   ])r3   r   rV   rH   rW   rM   r3   rf   key_strs       r-   rZ   zOrderedSetVariable.debug_repr-  sY    zz#!EZZ &*1440W%& "DIIe$44t;;r/   rk   r"   c                     dj                  fd| j                  D              }t        j                  d| d      S )NrT   c              3   J   K   | ]  }t        |j                          y wr'   rn   ro   s     r-   rq   z/OrderedSetVariable.repr_impl.<locals>.<genexpr>8  rr   rs   rM  rN  )rW   r_   r   ru   rv   s    ` r-   rw   zOrderedSetVariable.repr_impl7  s7    		OOO$$R<wb)ABBr/   c                     t        | j                  D cg c]  }|j                  j                          c}      S c c}w r'   )r   r_   rV   rj   re   s     r-   rj   z%OrderedSetVariable.as_python_constant;  s,    dnnM144224MNNM   !<c                     t         S r'   r   r^   s    r-   r)   zOrderedSetVariable.python_type>  r@  r/   c                     t               S r'   )r=  r^   s    r-   r   z"OrderedSetVariable.python_type_varB  s    &((r/   c                 2   j                  fd       j                  | j                  D cg c]  }|j                   c}       j	                  t        dt        | j                                     j                  t        dd             y c c}w )Nc                  (     j                  dd      S )Nztorch.utils._ordered_setr   )load_import_fromr   s   r-   <lambda>z0OrderedSetVariable.reconstruct.<locals>.<lambda>G  s    G,,-GV r/   
BUILD_LISTrz   r   F)	add_push_nullr|   r_   rV   r}   r   r~   extend_outputr   r   s    ` r-   r   zOrderedSetVariable.reconstructE  so    V	
 	t~~6!6703t~~CVWX21e<= 7s   Br   r  c                 *    t         |   |d|gi       S )Nr   rF   r   rM   rk   r   r  rP   s       r-   r  zOrderedSetVariable.nb_or_implM  s     w"2w<<r/   c                 *    t         |   |d|gi       S r  ra  rb  s       r-   r  zOrderedSetVariable.nb_and_implW  s     w"2~wCCr/   c                 *    t         |   |d|gi       S r  ra  rb  s       r-   r  zOrderedSetVariable.nb_xor_impla  s     w"2'=wKKr/   c                 F    |r|| fn| |f\  }}|j                  |d|gi       S )Nr   )r   r  s         r-   r  z#OrderedSetVariable.nb_subtract_implk  s2     *1tUmv  \F8R@@r/   c                 z    |j                   j                  j                  |        | j                  |d|gi        | S )Nr   )r   r   r   r   r  s      r-   r  z+OrderedSetVariable.nb_inplace_subtract_implt  s8     			''-05'2>r/   r)  r*  r,  )r-  r.  r/  r4  rZ   rw   r   r   rj   r   r)   r=  r   r   r   r7  r  r  r  r  r  r:  r;  s   @r-   rH  rH  ,  s:   <C <COJsO OT*S/2 )!8 )> 	='= = 	=
 
= 	D'D D 	D
 
D 	L'L L 	L
 
L 	A'A A 	A
 
A-6E	r/   rH  c            
            e Zd ZeZdZdefdZede	d   fd       Z
defdZddZdefdZddZddZd	d
dedee   deeef   def
 fdZdefdZd	d
deeef   fdZdedefdZ xZS )r   Nr%   c                     | j                   syg }| j                   D ](  }t        |j                        }|j                  |       * ddj	                  |      z   dz   S )Nfrozenset()frozenset({rT   })rO  rP  s       r-   rZ   zFrozensetVariable.debug_repr  sY    zz !EZZ &*1440W%& !499U#33d::r/   r   c                 H    t        | j                  j                               S r'   r\   r^   s    r-   r_   zFrozensetVariable.set_items  r`   r/   c                     t         S r'   )r+   r^   s    r-   r)   zFrozensetVariable.python_type  s    r/   c                 4    t        j                  t              S r'   )r
   r#   r+   r^   s    r-   r   z!FrozensetVariable.python_type_var  s    ((33r/   c                     t        | j                  D ch c]  }|j                  j                          c}      S c c}w r'   )r+   r_   rV   rj   re   s     r-   rj   z$FrozensetVariable.as_python_constant  s,    T^^L!$$113LMMLrU  rk   r"   c                     | j                   st        j                  d      S dj                  fd| j                  D              }t        j                  d| d      S )Nri  rT   c              3   J   K   | ]  }t        |j                          y wr'   rn   ro   s     r-   rq   z.FrozensetVariable.repr_impl.<locals>.<genexpr>  rr   rs   rj  rk  rt   rv   s    ` r-   rw   zFrozensetVariable.repr_impl  sQ    zz"((];;		OOO$$R<wc)BCCr/   c                    j                  fd       j                  | j                  D cg c]  }|j                   c}       j	                  t        dt        | j                              gt        dd             y c c}w )Nc                  F     j                   j                  d      g      S )Nr+   )r_  create_load_globalr[  s   r-   r\  z/FrozensetVariable.reconstruct.<locals>.<lambda>  s%    G))..{; r/   r]  rz   r   F)r^  r|   r_   rV   r_  r   r~   r   r   s    ` r-   r   zFrozensetVariable.reconstruct  sq    	
 	t~~6!67"<S5HI%a/	
 7s   Br   r   r@   c           
         |dv rt        d| d      |dk(  rt        j                  d       S |dk(  rO|s|r&t        ||dt	        |       dt	        |       d       t        |       t        u r| S t        | !  ||||      S |d	v r't        | !  ||||      }t        |j                        S t        | !  ||||      S )
Nr   rE   r   r   r   r   Illegal call_method z on a frozensetrG   r;   r   r   r   )r   r   r   )
r   r   rb   r   r~   r   r   rF   r   r3   )rM   rk   r   r   r@   rrP   s         r-   r   zFrozensetVariable.call_method  s     II!5dV?KLLZ#**400V^v#)4ykCK=@	 Dz..7&r4v>> 
 

 #BdF;A$QWW--w"2tT6::r/   c                      y)NTrD   r^   s    r-   r    zFrozensetVariable.is_hashable  s    r/   c                 ,   ddl m} ddlm} | j	                         rt        | j                               dfS d}g }| j                  D ]5  } |||j                        \  }}|xs |}|j                   ||             7 t        t        |            |fS )Nr   )RawHash)generic_hash_implF)hashabler{  object_protocolr|  r   hashrj   r_   rV   rH   r+   )	rM   rk   r{  r|  is_fake
raw_hashesrO   hfakes	            r-   r   zFrozensetVariable.hash_impl  s     	&6""$//12E99
NN 	*D'DGG4GAtoGgaj)	* Ij)*G33r/   r   c                 h    t        |t              xr! | j                         |j                         k(  S r'   )r6   r   rj   )rM   r   s     r-   is_python_equalz!FrozensetVariable.is_python_equal  s1    uo. H'')U-E-E-GG	
r/   r+  r)  r*  )r-  r.  r/  r+   r1  r  r4  rZ   r5  r*   r_   r   r)   r   r   rj   rw   r   r   r   rJ   r   r7  r    r8  r9  r   objectr  r:  r;  s   @r-   r   r   |  s    M#;C ; &301 & &T 4NC ND
 ;'; ; ?#	;
 S/)*; 
;@T 47 4E#t)<L 4 
V 
 
r/   r   c            
            e Zd ZdefdZdddee   ddfdZede	fd       Z
defd	Zde	fd
Zdddedee   deeef   def
 fdZ xZS )DictKeySetVariabler%   c                     | j                   syg }| j                   D ](  }t        |j                        }|j                  |       * ddj	                  |      z   dz   S )Nzdict_keys([])zdict_keys([rT   rN  rO  rP  s       r-   rZ   zDictKeySetVariable.debug_repr  sY    zz"!EZZ &*1440W%& !499U#33d::r/   rk   r"   r   Nc                      y r'   rD   )rM   rk   r   s      r-   r   z-DictKeySetVariable.install_set_contains_guard  s     	r/   c                     | j                   S r'   )r3   r^   s    r-   r_   zDictKeySetVariable.set_items  s    zzr/   c                     ddl m} |S )Nr   )	dict_keys)r   r  )rM   r  s     r-   r)   zDictKeySetVariable.python_type  s    %r/   c                     t         j                  | j                  D ch c]  }|j                  j	                          c}d       j                         S c c}w r'   )rJ   rK   r_   rV   rj   r]   re   s     r-   rj   z%DictKeySetVariable.as_python_constant  s>    }}04?1QTT$$&?

$&	?s   !Ar   r@   c                 N    |dv rt        d| d      t        | 	  ||||      S )Nrv  rw  z on a dict_keys)r   rF   r   )rM   rk   r   r   r@   rP   s        r-   r   zDictKeySetVariable.call_method	  s9     II!5dV?KLLw"2tT6::r/   )r-  r.  r/  r4  rZ   r   r   r   r5  r   r_   r   r)   rj   rJ   r   r:  r;  s   @r-   r  r    s    ;C ;-59/5J	 3  T 
C 
	;'	; 	; ?#		;
 S/)*	; 
	; 	;r/   r  )9r0  r   r   collections.abcr   typingr   r   torch.utils._ordered_setr    r	   r
   bytecode_transformationr   r   r   r   r   guardsr   r   r5   r   r   r   r   r   r   r   r   r   r   r   r<   r   r   constantr   r}  r   r    torch._dynamo.codegenr!   torch._dynamo.symbolic_convertr"   torch._dynamo.variables.builtinr#   r7  r.   r1   r=   r?   r=  rH  r   r  rD   r/   r-   <module>r     s   "   $ % / # N < 0 I I   4 & 2 /H?; ;D ;._ . .
/ o $S
/ S
lBUo BUJM M`k
 k
\(; (;r/   