
    3jr                     |   S 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	  SSK
Jr  SSKJrJr  SSKJrJr  SS	K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  SSKJ r J!r!  SSK"J#r#  SSK$J%r%J&r&J'r'  \	(       a  SSK(J)r)  SSK*J+r+  SSK,J-r-   " S S\!5      r. " S S\!5      r/ " S S\.5      r0 " S S\.5      r1 " S S\.5      r2g)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Sequence)AnyLiteralTYPE_CHECKING
OrderedSet   )	polyfills	variables)create_call_functioncreate_instruction)raise_observed_exception)GuardBuilderinstall_guard)
AttrSourceis_constant_sourceis_from_local_source)cmp_name_to_op_mappingistyperaise_args_mismatch   )ValueMutationNewVariableTracker)ConstantVariable)HashableTrackeris_hashableraise_unhashable)	PyCodegen)InstructionTranslator)BuiltinVariablec            
       Z  ^  \ rS rSrSr\r\R                  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\4S jrS\4S jrS\4S jr S\S-  S\S\4S jr!SSS\"\   4S jr#S\S\4U 4S jjr$S\4S jr%SSS\4U 4S jjr&SSS\S\'4S jr(SSS\"\   SS4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S\4S' jr/S(r0U =r1$ )+SetVariable.   z2Represents a Python set during symbolic execution.itemskwargsreturnNc                 P  > SU;   a  UR                  S5        SU;   a  UR                  S5        [        TU ]  " S0 UD6  / nU HS  n[        U[        5      (       a  UR                  U5        M+  UR                  [	        UR                  5       5      5        MU     [        R                  U[        R                  5       5      U l        U R                  (       a  [        U R                  5      (       + OSU l        [        R                  U[        R                  5       5      U l        g )Noriginal_itemsshould_reconstruct_allT )popsuper__init__
isinstancer   appendrealizedictfromkeysr#   _default_valuer%   sourcer   r*   r)   )selfr%   r&   hashable_itemsitem	__class__s        V/home/wildlama/miniconda3/lib/python3.13/site-packages/torch/_dynamo/variables/sets.pyr.   SetVariable.__init__7   s     v%JJ'(#v-JJ/0"6"
 D$00%%d+ %%odlln&EF  ]]>;3M3M3OP
59[[$T[[11d 	# #mmK668
    c                 R   U R                   (       d  g/ nU R                    Hm  n[        U[        5      (       a  UR                  OUn[	        US5      (       a  [        UR                  5      OUR                  5       nUR                  U5        Mo     SSR                  U5      -   S-   $ )Nzset()value{,})
r%   r/   r   vthasattrreprr>   
debug_reprr0   join)r6   r%   vrB   val_strs        r:   rE   SetVariable.debug_reprX   s}    zz!EZZ'?;;QTT,3B,@,@$rxx.bmmoW%   %(3..r<   r   c                 H    [        U R                  R                  5       5      $ Nsetr%   keysr6   s    r:   	set_itemsSetVariable.set_itemsc       4::??$%%r<   c                  .    [         R                  " S 5      $ rK   )r   creater+   r<   r:   r4   SetVariable._default_valueg   s      &&t,,r<   c                 t    U R                    Vs1 s H  oR                  R                  5       iM     sn$ s  snf rK   )rP   rB   as_proxyr6   ks     r:   rW   SetVariable.as_proxyl   s&    )-8A888   #5c                     [         $ rK   )rM   rO   s    r:   python_typeSetVariable.python_typeo   s    
r<   c                 t    U R                    Vs1 s H  oR                  R                  5       iM     sn$ s  snf rK   )rP   rB   as_python_constantrX   s     r:   r`   SetVariable.as_python_constantr   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_SETarg)foreachrP   rB   append_outputr   lenr6   codegenxs      r:   reconstructSetVariable.reconstructu   sG    t~~6~!~670#dnnBUVW 7s   A#rB   c                     [        U[        5      (       d   e[        U5      (       d  g[        U5      nX R                  ;   =(       a,    [        U R                  U   [
        R                  5      (       + $ NF)r/   r   r   r   r%   r   DeletedVariable)r6   rB   keys      r:   __contains__SetVariable.__contains__y   s^    "o....2b!jj  
JJsOY66*
 &
 	
r<   c                 V    [        S U R                  R                  5        5       5      $ )Nc              3   `   #    U  H$  n[        U[        R                  5      (       + v   M&     g 7frK   )r/   r   rp   ).0rk   s     r:   	<genexpr>"SetVariable.len.<locals>.<genexpr>   s'      
BUQ
1i77888BUs   ,.)sumr%   valuesrO   s    r:   rh   SetVariable.len   s)     
BF**BSBSBU
 
 	
r<   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rK   )is_new_itemr)   getrB   )rv   rq   r>   r6   s      r:   rw   ,SetVariable.has_new_items.<locals>.<genexpr>   s?      2
0
 T0044SVV<eDD0s   AA)r*   anyr%   rO   s   `r:   has_new_itemsSetVariable.has_new_items   s7    ** 
c 2
"jj..02
 /
 	
r<   r>   otherc                     U(       a]  UR                  5       (       aH  UR                  5       (       a3  [        UR                  5       5      [        UR                  5       5      :g  $ [        U5      [        U5      :g  $ rK   )is_realizedidr1   )r6   r>   r   s      r:   r~   SetVariable.is_new_item   sW     U&&((U->->-@-@emmo&"U]]_*===%yBuI%%r<   txr    c                 X    U R                    Vs/ s H  o"R                  PM     sn$ s  snf rK   )r%   rB   )r6   r   rk   s      r:   unpack_var_sequenceSetVariable.unpack_var_sequence   s     "jj)jj)))s   'c                 $   > [         TU ]  " S0 UD6$ Nr+   )r-   cloner6   r&   r9   s     r:   r   SetVariable.clone   s    w}&v&&r<   c                     gro   r+   rO   s    r:   is_python_hashableSetVariable.is_python_hashable   s    r<   namec                 v   > US:X  a$  [         R                  " XR                  5       5      $ [        TU ]  X5      $ )Nr9   )r   buildr]   r-   var_getattr)r6   r   r   r9   s      r:   r   SetVariable.var_getattr   s5    ;"((-=-=-?@@w"2,,r<   c                 L    [         R                  " U[        [        U5      5      $ rK   )r   r   rC   rM   )r6   r   r   s      r:   call_obj_hasattrSetVariable.call_obj_hasattr   s     $$Rd);<<r<   argsc           	         U R                   (       d  g UR                  R                  R                  U 5      (       a  g US   U ;   nUS   R                   c  US   R	                  5       (       ap  U(       a  [        U 5      R                  O[        U 5      R                  n[        U R                  [        R                  " UUS   R                  5       S95      5        g g g )Nr   )rq   )r5   outputside_effectsis_modifiedis_python_constanttypeCONTAINS_GUARDNOT_CONTAINS_GUARDr   
make_guard	functoolspartialr`   )r6   r   r   containsguard_fns        r:   install_set_contains_guard&SetVariable.install_set_contains_guard   s     {{99!!--d337d?7>>!d1g&@&@&B&B-5T
))4:;X;X  %%  G668	 'C!r<   fnc                 x    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 ! [         a1  n	[        [	        U	5      U[        U	R                  5      S9   S n	A	NXS n	A	ff = f)Nr   )	r`   r%   	Exceptionr   r   listr   r   r   )
r6   r   r   r   r&   rk   rY   rG   resexcs
             r:   _fast_set_methodSetVariable._fast_set_method   s    	I37-$-@-Q&&(-@9?H1**,,HC $$R-- AH 	I$T#YchhH	Is2   	A> A3A> A8A> 3A> >
B9'B44B9c                   > SSK Jn  SSKJn  US;   aP  U" X45      (       aC  U R	                  5       [
        L a,  U R	                  5       nU R                  U[        Xr5      X45      $ SSKJ	nJ
n	  US:X  a  UR                  U[
        5      R                  " U/UQ70 UD6n
UR                  R                  R                  U 5        U R                   R#                  5         U R                   R%                  U
R                   5        [&        R                  " S 5      $ US:X  a  U(       d  [)        U5      S:w  a&  [+        UUS	[)        U5       S
[)        U5       S35        [-        US   5      (       d  [/        US   U5        UR                  R                  R                  U 5        [0        R3                  5       U R                   [5        US   5      '   [&        R                  " S 5      $ US:X  a  U(       d  U(       a&  [+        UUS[)        U5       S
[)        U5       S35         U R6                  R9                  5       R:                  nSU l"        UR                  R                  R                  U 5        U R                   R9                  [5        W5      5        U$ US:X  aq  U(       d  [)        U5      S:w  a&  [+        UUS	[)        U5       S
[)        U5       S35        UR                  U[F        RH                  5      RK                  XUS   /0 5      $ US:X  ad  U(       a  [+        XS[)        U5       S35        UR                  U[F        RL                  5      RK                  UU /UQSU RO                  5       05      $ US:X  aS  U(       a  [+        XS[)        U5       S35        UR                  U[F        RP                  5      RK                  X/UQ0 5      $ US:X  ad  U(       a  [+        XS[)        U5       S35        UR                  U[F        RR                  5      RK                  UU /UQSU RO                  5       05      $ US:X  ad  U(       a  [+        XS[)        U5       S35        UR                  U[F        RT                  5      RK                  UU /UQSU RO                  5       05      $ US:X  aS  U(       a  [+        XS[)        U5       S35        UR                  U[F        RV                  5      RK                  X/UQ0 5      $ US:X  a  U(       d  [)        U5      S:w  a&  [+        UUS	[)        U5       S
[)        U5       S35        UR                  U[F        RX                  5      RK                  UU /UQSU RO                  5       05      $ US:X  ao  U(       d  [)        U5      S:w  a&  [+        UUS	[)        U5       S
[)        U5       S35        UR                  U[F        RZ                  5      RK                  X/UQ0 5      $ US:X  ah  U R]                  5       (       aS  U(       a  [+        XS[)        U5       S35        UR                  U[F        R^                  5      RK                  X/UQ0 5      $ US:X  a  U(       d  [)        U5      S:w  a&  [+        UUS	[)        U5       S
[)        U5       S35        US   U ;  a  [?        [<        XS9  SU l"        UR                  R                  R                  U 5        U R                   R9                  [5        US   5      5        [&        R                  " S 5      $ US:X  a  U(       d  [)        U5      S:w  a&  [+        UUS	[)        U5       S
[)        U5       S35        US   U ;   aS  SU l"        UR                  R                  R                  U 5        U R                   R9                  [5        US   5      5        [&        R                  " S 5      $ US;   a  [)        U5      S:w  a  [+        XS [)        U5       S!35        [`        Rb                  [`        Rd                  S.nUS   Rg                  5       n[i        U[0        5      (       d'  UR                  U[
        5      RK                  X/0 5      nUR                  XRk                  U5      5      RK                  XU/0 5      $ US";   a  SSSSS".Rk                  U5      n[m        US   [0        [n        Rp                  UU	45      (       d9  [?        [r        US#U S$U Ru                  5        S%US   Ru                  5        S&3/S9  Uc   eU Rw                  XX45      $ US';   a  S(S)S*S+S'.Rk                  U5      n[m        US   [0        [n        Rp                  UU	45      (       d9  [?        [r        US#U S$US   Ru                  5        S%U Ru                  5        S&3/S9  Uc   eUS   Rw                  XU /U5      $ US,;   a  [m        US   [0        [n        Rp                  UU	45      (       d9  [?        [r        US#U S$U Ru                  5        S%US   Ru                  5        S&3/S9  SSSSS,.Rk                  U5      nUc   eU Rw                  XX45        U $ US-:X  a  [m        US   [0        [n        Rp                  UU	45      (       d  [&        R                  " S.5      $ U Rw                  USX45      n[x        Rz                  " U[)        UR6                  5      S:H  5      $ US/:X  a9  U Rw                  US-X45      n[x        Rz                  " UUR|                  (       + 5      $ U[~        ;   a  [m        US   [0        [n        Rp                  UU	45      (       d  [x        Rz                  " U[        5      $ [x        Rz                  " U[~        U   " U R6                  US   R6                  5      5      $ US0:X  a  [)        U5      (       d&  [+        UUS1[)        U5       S
[)        U5       S35        U(       a  [-        US   5      (       d  [/        US   U5        U R                  X5        US   U ;   n[x        Rz                  " UU5      $ US2:X  a^  U(       d  U(       a&  [+        UUS[)        U5       S
[)        U5       S35        [x        Rz                  " U[)        U R                   5      5      $ US3:X  ae  U(       d  U(       a&  [+        UUS[)        U5       S
[)        U5       S35        U R                  U R                   R                  5       [        5       S S49$ US5: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                   R#                  5         [&        R                  " S 5      $ US6:X  a~  SS7KEJFn  U R                  (       aI  [        U R                  5      (       d/  UR                  R                  R                  U R                  5        U" U R                  U5      [        5       S89$ [        TU ]  XX45      $ ! [<         a-  n[?        [<        U[A        URB                  5      S9   S nAGNAS nAff = f)9Nr
   )check_constant_argsr   )SourcelessBuilder)
isdisjointunionintersection
differencesymmetric_difference)DictItemsVariableDictKeysVariabler.   addz1 args and 0 kwargs
 args and  kwargsr   r,   z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____or____xor____sub__z unsupported operand type(s) for z: 'z' and '')__rand____ror____rxor____rsub__r   r   r   r   )__iand____ior____ixor____isub____eq__F__ne__rr   zmore than 1 args and 0 kwargs__len__copy)r%   mutation_typer5   clear__iter__)ListIteratorVariabler   )Mutilsr   builderr   r]   rM   r   getattrdictsr   r   rT   call_setr   r   mutationr%   r   r   r   rh   r   r   r   r#   r4   r   rP   r,   rB   KeyErrorr   r   r   r*   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ger1   r   r   r/   r   UserDefinedSetVariable	TypeErrorpython_type_namecall_methodr   r   r>   r   NotImplementedr   r   r   r   listsr   r5   r   guard_on_key_orderr   r   r-   )r6   r   r   r   r&   r   r   py_typer   r   temp_set_vtresulteopr   mr	eq_resultr   r   r9   s                       r:   r   SetVariable.call_method   s    	0.  $D11  "c)&&(G((WW-CTRR 	?:+222s;DD#K II""++D1JJJJk//0#**400U]Ta#)4ykCK=@	 tAw'' a"-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47OR  ^##BjS[M:QR$++I..m,,./ **#BjS[M:QR$++I55mBr23 W_#BjS[M:QR$++B	0C0CDRR,,./ 
 \!# :3v;-wO %++B	0H0HIWW,,./ 
 ((#BjS[M:QR$++I33mBr23 ++Ta#)4ykCK=@	 %++I66m,,./ 22Ta#)4ykCK=@	 %++I==mBr23 X$//"3"3#BjS[M:QR$++B	0D0DESSMDM2  XTa#)4ykCK=@	 Awd"(2A*.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~#Bh3t9+U8KL %KK&kkB GOO%E%--)00S9GGGUWX$++Bt=KK5M2  @@)!1'	
 c$i  Q44%$	  ):4&DDYDYD[C\\cdhijdkd|d|d~c  @A  B = =##B488DD%#%%	
 c$i  Q44%$	  ):4&DGD\D\D^C__fgkg|g|g~f  @A  B = =7&&rtff==DDQ44%$	  ):4&DDYDYD[C\\cdhijdkd|d|d~c  @A  B 2#9/	
 c$i  = =RD1KXQ44%$	  (..u55  %;TJA"((S-=-BCCX((XtDI"((-@AA++Q44%$	  ',,R@@"((&t,T^^T!W=N=NO  ^#t99#34ykCK=@	 [a11 a"-++B5Aw$H"((X66Yv#)4ykCK=@	 #((S_==V^v#)4ykCK=@	 ::jjoo'7G7IRV    W_v#)4ykCK=@	 +/D'II""++D1JJ#**400Z3{{#5dkk#B#B		,,00='((,<L<N  w"2T::E	  J(2DLIIJs   $y 
z"zzc                 6    [         R                  " [        5      $ rK   )r   r!   rM   rO   s    r:   r   SetVariable.python_type_var/  s    ((--r<   re   c                     [        S5      e)NzIllegal to getitem on a set)RuntimeError)r6   r   re   s      r:   getitem_constSetVariable.getitem_const2  s     899r<   c                 V    [         R                  " U[        U R                  5      5      $ rK   )r   r   rh   rP   )r6   r   s     r:   	sq_lengthSetVariable.sq_length7  s    $$RT^^)<==r<   )r%   r)   r*   rj   r   r'   Nr'   r!   )2__name__
__module____qualname____firstlineno____doc__rM   _cpython_typer   SET_CONTAINSr   SET_NOT_CONTAINSr   r   r   r   r   r.   strrE   propertyrP   staticmethodr4   rW   r   r]   r`   rl   boolrr   intrh   r   r~   r   r   r   r   r   r   r   r   r2   r   r   r   r  r  __static_attributes____classcell__r9   s   @r:   r#   r#   .   sf   < M!..N%66
/9:
 
 
	
B	/C 	/ &301 & & -O - -9# 9T CC CX
 
4 

S 


t 
&$t+&4C&	&*&= *$BW *'c 'o 'D -5 -S -
=)=14=	=
)15o1F	..#. . ?#	.
 S/)*. 
. _;#_; _; ?#	_;
 S/)*_; 
_;B.:):0?:	:
>3 > > >r<   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;  r&   r'   Nc                 &   > [         TU ]  " S0 UD6  g r   )r-   r.   r   s     r:   r.    OrderedSetClassVariable.__init__<  s    "6"r<   c                     [         $ rK   r   rO   s    r:   r`   *OrderedSetClassVariable.as_python_constant?      r<   r   r    r   c           
         > US:X  aO  SSK Jn  U R                  (       a  [        U R                  U5      nOS nU" X[	        [        [        U5      5      US9$ [        TU ]!  X5      $ )N__new__r   )GetAttrVariable)r   r5   )	miscr,  r5   r   r   r   r	   r-   r   )r6   r   r   r,  attr_sourcer9   s        r:   r   #OrderedSetClassVariable.var_getattrB  s\    9-{{(d;""DT)B$CK  7&r00r<   r   c           
        > SSK Jn  US:X  aY  [        U5      S:w  d  U(       a&  [        UUS[        U5       S[        U5       S35        [        R
                  " / [        5       S9$ [        [        U5      nXe;   a;  [        US	   [        R                  5      (       a  US	   R                  XUSS  U5      $ [        TU ]-  XX45      $ )
Nr   )set_methodsr+  r
   z'OrderedSet.__new__ only accepts one argr   r   r   r   )builtinr1  rh   r   r   OrderedSetVariabler   r   rM   r/   r#   r   r-   )r6   r   r   r   r&   r1  resolved_fnr9   s          r:   r   #OrderedSetClassVariable.call_methodP  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::r<   r3  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   )rh   r   force_unpack_var_sequencer   r3  r   )r6   r   r   r&   r%   s        r:   r   %OrderedSetClassVariable.call_functionj  sy     t9q=F1t9+ZF}G= t9>EG55b9E++EAQASTTr<   r+   )r  r  r  r  r   r.   r   r	   r`   r  r   r   r   r2   r   r   r   r   r!  r"  s   @r:   r$  r$  ;  s    # # #DC$9 15 1S 1_ 1;#; ; ?#	;
 S/)*; 
;4U#U 'U S/)*	U
 
U Ur<   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)r3  i  r'   c                 H   U R                   (       d  g/ nU R                    Hh  n[        UR                  S5      (       a  [        UR                  R                  5      OUR                  R                  5       nUR                  U5        Mj     SSR                  U5      -   S-   $ )NzOrderedSet([])r>   zOrderedSet([r@   ])r%   rC   rB   rD   r>   rE   r0   rF   r6   r%   rY   key_strs       r:   rE   OrderedSetVariable.debug_repr  sy    zz#!EZZ(/g(>(>D$ADDOODU  W%	  
 "CHHUO3d::r<   c                     [        U R                   Vs/ s H  oR                  R                  5       PM     sn5      $ s  snf rK   )r	   rP   rB   r`   rX   s     r:   r`   %OrderedSetVariable.as_python_constant  s.    dnnMn44224nMNNM   #>c                     [         $ rK   r   rO   s    r:   r]   OrderedSetVariable.python_type  r)  r<   c                     [        5       $ rK   )r$  rO   s    r:   r   "OrderedSetVariable.python_type_var  s    &((r<   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_fromrj   s   r:   <lambda>0OrderedSetVariable.reconstruct.<locals>.<lambda>  s    G,,-GVr<   
BUILD_LISTrd   r   F)	add_push_nullrf   rP   rB   rg   r   rh   extend_outputr   ri   s    ` r:   rl   OrderedSetVariable.reconstruct  sq    V	
 	t~~6~!~6703t~~CVWX21e<= 7s   Br+   r  )r  r  r  r  r  rE   r	   r   r`   r   r]   r$  r   rl   r   r+   r<   r:   r3  r3    sG    
;C 
;OJsO OT*S/2 )!8 )>r<   r3  c            
          ^  \ rS rSr\rS\4S jr\S\	S   4S j5       r
S\4S jrSS jrS\4S jrSS	 jrS
SS\S\\   S\\\4   S\4
U 4S jjrS\S   4S jrS\4S jrS\S\4S jrSrU =r$ )FrozensetVariablei  r'   c                 H   U R                   (       d  g/ nU R                    Hh  n[        UR                  S5      (       a  [        UR                  R                  5      OUR                  R                  5       nUR                  U5        Mj     SSR                  U5      -   S-   $ )Nzfrozenset()r>   r?   r@   rA   r<  r=  s       r:   rE   FrozensetVariable.debug_repr  sy    zz !EZZ(/g(>(>D$ADDOODU  W%	  
 %(3..r<   r   c                 H    [        U R                  R                  5       5      $ rK   rL   rO   s    r:   rP   FrozensetVariable.set_items  rR   r<   c                     [         $ rK   )	frozensetrO   s    r:   r]   FrozensetVariable.python_type  s    r<   c                 6    [         R                  " [        5      $ rK   )r   r!   rX  rO   s    r:   r   !FrozensetVariable.python_type_var  s    ((33r<   c                     [        U R                   Vs1 s H  oR                  R                  5       iM     sn5      $ s  snf rK   )rX  rP   rB   r`   rX   s     r:   r`   $FrozensetVariable.as_python_constant  s.    T^^L^$$113^LMMLrB  c                   ^ TR                  U4S j5        TR                  U R                   Vs/ s H  o"R                  PM     sn5        TR	                  [        S[        U R                  5      S9/[        SS5      Q5        g s  snf )Nc                  F   > T R                  T R                  S5      /5      $ )NrX  )rO  create_load_globalrJ  s   r:   rK  /FrozensetVariable.reconstruct.<locals>.<lambda>  s#    G))..{;r<   rM  rd   r   F)rN  rf   rP   rB   rO  r   rh   r   ri   s    ` r:   rl   FrozensetVariable.reconstruct  ss    	
 	t~~6~!~67"<S5HI%a/	
 7s   Br   r    r   r   r&   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r   r,   r   r   r   r   Illegal call_method z on a frozensetr.   )r   r   r   r   )r  r   rT   r-   r   rR  r%   )r6   r   r   r   r&   r  r9   s         r:   r   FrozensetVariable.call_method  s}     II!5dV?KLLZ#**400 
 
 #Bd;A$QWW--w"2T::r<   Tc                     g)z2
Frozensets are immutable and hashable in Python.
Tr+   rO   s    r:   r   $FrozensetVariable.is_python_hashable  s     r<   c                 4    [        U R                  5       5      $ rK   )hashr`   rO   s    r:   get_python_hash!FrozensetVariable.get_python_hash  s    D++-..r<   r   c                 r    [        U[        5      =(       a!    U R                  5       UR                  5       :H  $ rK   )r/   r   r`   )r6   r   s     r:   is_python_equal!FrozensetVariable.is_python_equal  s1    uo. H'')U-E-E-GG	
r<   r+   r  r  )r  r  r  r  rX  r  r  rE   r  rM   rP   r   r]   r   r   r`   rl   r   r   r2   r   r   r   r  rk  objectr  rn  r   r!  r"  s   @r:   rR  rR    s    M
/C 
/ &301 & &T 4NC N
 ;#; ; ?#	;
 S/)*; 
;,GDM / /
V 
 
 
r<   rR  c            
          ^  \ rS rSrS\4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                 H   U R                   (       d  g/ nU R                    Hh  n[        UR                  S5      (       a  [        UR                  R                  5      OUR                  R                  5       nUR                  U5        Mj     SSR                  U5      -   S-   $ )Nzdict_keys([])r>   zdict_keys([r@   r;  r<  r=  s       r:   rE   DictKeySetVariable.debug_repr  sy    zz"!EZZ(/g(>(>D$ADDOODU  W%	  
 !388E?2T99r<   r   r    r   Nc                     g rK   r+   )r6   r   r   s      r:   r   -DictKeySetVariable.install_set_contains_guard   s     	r<   c                     U R                   $ rK   )r%   rO   s    r:   rP   DictKeySetVariable.set_items  s    zzr<   c                     SSK Jn  U$ )Nr
   )	dict_keys)r   rz  )r6   rz  s     r:   r]   DictKeySetVariable.python_type
  s    %r<   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 rK   )r2   r3   rP   rB   r`   rN   rX   s     r:   r`   %DictKeySetVariable.as_python_constant  s@    }}04?1TT$$&?

$&	?s   #Ar   r&   c                 N   > US;   a  [        SU S35      e[        TU ]	  XX45      $ )Nrd  re  z on a dict_keys)r  r-   r   )r6   r   r   r   r&   r9   s        r:   r   DictKeySetVariable.call_method  s5     II!5dV?KLLw"2T::r<   r+   )r  r  r  r  r  rE   r   r   r   r  r   rP   r   r]   r`   r2   r   r   r!  r"  s   @r:   rr  rr    s    
:C 
:)15o1F	 3  T 
C 
	;#	; 	; ?#		;
 S/)*	; 
	; 	;r<   rr  )3r  r   r   collections.abcr   r   typingr   r   r   torch.utils._ordered_setr	    r   r   bytecode_transformationr   r   r   r   guardsr   r   r5   r   r   r   r   r   r   r   baser   r   constantr   hashabler   r   r   torch._dynamo.codegenr   torch._dynamo.symbolic_convertr    torch._dynamo.variables.builtinr!   r#   r$  r3  rR  rr  r+   r<   r:   <module>r     s   "   . . . / # N * 0 I I G G 3 & D D /D?J>/ J>ZBUo BUJ> >@P
 P
f*; *;r<   