
    Bjr                        d Z ddlZddlZddlmZmZ ddlmZ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 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 ddlm Z m!Z! ddl"m#Z# ddl$m%Z%m&Z&m'Z' e	rddl(m)Z) ddl*m+Z+ ddl,m-Z-  G d de!          Z. G d de!          Z/ G d de.          Z0 G d de.          Z1 G d de.          Z2dS )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            
       D    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d*dZdedefdZdefdZdefdZdedz  dedefdZ 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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!e         de)eef         def
 fd$Z+d+d&Z,ddd'edefd(Z-dddefd)Z. xZ/S ),SetVariablez2Represents a Python set during symbolic execution.itemskwargsreturnNc                    d|v r|                     d           d|v r|                     d            t                      j        di | g }|D ]a}t          |t                    r|                    |           -|                    t	          |                                                     bt                              |t          
                                          | _        | j        rt          | j                   nd| _        t                              |t          
                                          | _        d S )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        _/var/www/html/Carbon-Document/venv/lib/python3.11/site-packages/torch/_dynamo/variables/sets.pyr-   zSetVariable.__init__7   s>    v%%JJ'(((#v--JJ/000""6"""
  	G 	GD$00 G%%d++++ %%odllnn&E&EFFFF]]>;3M3M3O3OPP
59[J$T[1111d 	# #mmK6688
 
    c                 8   | j         sdS g }| j         D ]m}t          |t                    r|j        n|}t	          |d          rt          |j                  n|                                }|                    |           ndd	                    |          z   dz   S )Nzset()value{,})
r$   r.   r   vthasattrreprr<   
debug_reprr/   join)r5   r$   vr@   val_strs        r9   rC   zSetVariable.debug_reprX   s    z 	/7!EZ & &'?;;BQTT,3B,@,@U$rx...bmmooW%%%%%(3..r:   r   c                 N    t          | j                                                  S Nsetr$   keysr5   s    r9   	set_itemszSetVariable.set_itemsc       4:??$$%%%r:   c                  *    t          j        d           S rH   )r   creater*   r:   r9   r3   zSetVariable._default_valueg   s      &t,,,r:   c                 $    d | j         D             S )Nc                 @    h | ]}|j                                         S r*   )r@   as_proxy.0ks     r9   	<setcomp>z'SetVariable.as_proxy.<locals>.<setcomp>m   s"    888A888r:   rM   rL   s    r9   rS   zSetVariable.as_proxyl   s    888888r:   c                     t           S rH   )rJ   rL   s    r9   python_typezSetVariable.python_typeo   s    
r:   c                 $    d | j         D             S )Nc                 @    h | ]}|j                                         S r*   r@   as_python_constantrT   s     r9   rW   z1SetVariable.as_python_constant.<locals>.<setcomp>s   s&    BBBa''))BBBr:   rX   rL   s    r9   r^   zSetVariable.as_python_constantr   s    BB4>BBBBr:   codegenr   c                     |                     d | j        D                        |                    t          dt	          | j                                       d S )Nc                     g | ]	}|j         
S r*   r@   rU   xs     r9   
<listcomp>z+SetVariable.reconstruct.<locals>.<listcomp>v       666!666r:   	BUILD_SETarg)foreachrM   append_outputr   lenr5   r_   s     r9   reconstructzSetVariable.reconstructu   sW    66t~6667770#dnBUBUVVVWWWWWr:   r@   c                     t          |t                    sJ t          |          sdS t          |          }|| j        v o%t          | j        |         t
          j                   S NF)r.   r   r   r   r$   r   DeletedVariable)r5   r@   keys      r9   __contains__zSetVariable.__contains__y   sk    "o.....2 	5b!!dj  
JsOY6*
 *
 &
 	
r:   c                 b    t          d | j                                        D                       S )Nc              3   L   K   | ]}t          |t          j                   V   d S rH   )r.   r   rq   rc   s     r9   	<genexpr>z"SetVariable.len.<locals>.<genexpr>   sC       
 
=>
1i7888
 
 
 
 
 
r:   )sumr$   valuesrL   s    r9   rl   zSetVariable.len   s>     
 
BF*BSBSBUBU
 
 
 
 
 	
r:   c                 v      j         p1t           fd j                                        D                       S )Nc              3      K   | ]:\  }}                     j                            |j                  |          V  ;d S rH   )is_new_itemr(   getr@   )rU   rr   r<   r5   s      r9   rv   z,SetVariable.has_new_items.<locals>.<genexpr>   s^       2
 2
U T044SV<<eDD2
 2
 2
 2
 2
 2
r:   )r)   anyr$   rL   s   `r9   has_new_itemszSetVariable.has_new_items   sS    * 
c 2
 2
 2
 2
"j..002
 2
 2
 /
 /
 	
r:   r<   otherc                    |rl|                                 rX|                                 rDt          |                                          t          |                                          k    S t          |          t          |          k    S rH   )is_realizedidr0   )r5   r<   r   s      r9   r{   zSetVariable.is_new_item   st      	>U&&(( 	>U->->-@-@ 	>emmoo&&"U]]__*=*===%yyBuII%%r:   txr    c                 $    d | j         D             S )Nc                     g | ]	}|j         
S r*   rb   rc   s     r9   re   z3SetVariable.unpack_var_sequence.<locals>.<listcomp>   s    ))))))r:   r$   r5   r   s     r9   unpack_var_sequencezSetVariable.unpack_var_sequence   s    ))dj))))r:   c                 6     t                      j        di |S Nr*   )r,   cloner5   r%   r8   s     r9   r   zSetVariable.clone   s    uww}&&v&&&r:   c                     dS rp   r*   rL   s    r9   is_python_hashablezSetVariable.is_python_hashable   s    ur:   namec                     |dk    r't          j        ||                                           S t                                          ||          S )Nr8   )r   buildrZ   r,   var_getattr)r5   r   r   r8   s      r9   r   zSetVariable.var_getattr   sG    ;"(T-=-=-?-?@@@ww""2t,,,r:   c                 R    t          j        |t          t          |                    S rH   )r   r   rA   rJ   )r5   r   r   s      r9   call_obj_hasattrzSetVariable.call_obj_hasattr   s!     $Rd););<<<r:   argsc           	         | j         sd S |j        j                            |           rd S |d         | v }|d         j         |d                                         r||rt          |           j        nt          |           j        }t          | 	                    t          j        ||d                                                                        d S d S d S )Nr   )rr   )r4   outputside_effectsis_modifiedis_python_constanttypeCONTAINS_GUARDNOT_CONTAINS_GUARDr   
make_guard	functoolspartialr^   )r5   r   r   containsguard_fns        r9   install_set_contains_guardz&SetVariable.install_set_contains_guard   s     { 	F9!--d33 	F7d?7>!d1g&@&@&B&B!-5XT

))4::;X  %  G6688       	 "!!!r:   fnc                 "   	  |d | g|D             i d |                                 D             }nH# t          $ r;}t          t          |          |t	          |j                             Y d }~nd }~ww xY wt          j        ||          S )Nc                 6    g | ]}|                                 S r*   r^   rc   s     r9   re   z0SetVariable._fast_set_method.<locals>.<listcomp>   s$    @@@Q!&&((@@@r:   c                 >    i | ]\  }}||                                 S r*   r   )rU   rV   rE   s      r9   
<dictcomp>z0SetVariable._fast_set_method.<locals>.<dictcomp>   s*    HHHA1a**,,HHHr:   r   )r$   	Exceptionr   r   listr   r   r   )r5   r   r   r   r%   resexcs          r9   _fast_set_methodzSetVariable._fast_set_method   s    	I"@@4-$-@@@HHHHH CC  	I 	I 	I$T#YYchHHHHHHHHH	I$R---s   14 
A91A44A9c                 `   ddl m} ddlm} |dv ra |||          rU|                                 t
          u r:|                                 }|                     |t          ||          ||          S ddlm	}m
}	 |dk    r |                    |t
                    j        |g|R i |}
|j        j                            |            | j                                         | j                            |
j                   t'          j        d           S |dk    r|st)          |          dk    r2t+          ||d	t)          |           d
t)          |           d           t-          |d                   st/          |d         |           |j        j                            |            t0                                          | j        t5          |d                   <   t'          j        d           S |dk    r|s|r2t+          ||dt)          |           d
t)          |           d           	 | j                                        j        }n@# t<          $ r3}t?          t<          |tA          |j!                             Y d }~nd }~ww xY wd| _"        |j        j                            |            | j                            t5          |                     |S |dk    r|st)          |          dk    r2t+          ||d	t)          |           d
t)          |           d           |                    |tF          j$                  %                    || |d         gi           S |dk    rp|r"t+          ||dt)          |           d           |                    |tF          j&                  %                    || g|d| '                                i          S |dk    r\|r"t+          ||dt)          |           d           |                    |tF          j(                  %                    || g|i           S |dk    rp|r"t+          ||dt)          |           d           |                    |tF          j)                  %                    || g|d| '                                i          S |dk    rp|r"t+          ||dt)          |           d           |                    |tF          j*                  %                    || g|d| '                                i          S |dk    r\|r"t+          ||dt)          |           d           |                    |tF          j+                  %                    || g|i           S |dk    r|st)          |          dk    r2t+          ||d	t)          |           d
t)          |           d           |                    |tF          j,                  %                    || g|d| '                                i          S |dk    r|st)          |          dk    r2t+          ||d	t)          |           d
t)          |           d           |                    |tF          j-                  %                    || g|i           S |dk    rp| .                                r\|r"t+          ||dt)          |           d           |                    |tF          j/                  %                    || g|i           S |dk    r|st)          |          dk    r2t+          ||d	t)          |           d
t)          |           d           |d         | vrt?          t<          ||           d| _"        |j        j                            |            | j                            t5          |d                              t'          j        d           S |dk    r|st)          |          dk    r2t+          ||d	t)          |           d
t)          |           d           |d         | v rSd| _"        |j        j                            |            | j                            t5          |d                              t'          j        d           S |dv rt)          |          dk    r"t+          ||d t)          |           d!           t`          j1        t`          j2        d}|d         3                                }ti          |t0                    s1|                    |t
                    %                    ||gi           }|                    ||5                    |                    %                    || |gi           S |d"v rddddd"5                    |          }tm          |d         t0          tn          j8        ||	f          sLt?          tr          |d#| d$| :                                 d%|d         :                                 d&g           |J | ;                    ||||          S |d'v rd(d)d*d+d'5                    |          }tm          |d         t0          tn          j8        ||	f          sLt?          tr          |d#| d$|d         :                                 d%| :                                 d&g           |J |d         ;                    ||| g|          S |d,v rtm          |d         t0          tn          j8        ||	f          sLt?          tr          |d#| d$| :                                 d%|d         :                                 d&g           ddddd,5                    |          }|J | ;                    ||||           | S |d-k    rtm          |d         t0          tn          j8        ||	f          st'          j        d.          S | ;                    |d||          }ty          j=        |t)          |j                  dk              S |d/k    r3| ;                    |d-||          }ty          j=        ||j>                   S |t~          v r|tm          |d         t0          tn          j8        ||	f          sty          j=        |t                    S ty          j=        |t          |         | j        |d         j                            S |d0k    rt)          |          s2t+          ||d1t)          |           d
t)          |           d           |rt-          |d                   st/          |d         |           | A                    ||           |d         | v }ty          j=        ||          S |d2k    r]|s|r2t+          ||dt)          |           d
t)          |           d           ty          j=        |t)          | j                            S |d3k    rq|s|r2t+          ||dt)          |           d
t)          |           d           | B                    | j        C                                t                      d 4          S |d5k    r|s|r2t+          ||dt)          |           d
t)          |           d           d| _"        |j        j                            |            | j                                         t'          j        d           S |d6k    rqdd7lEmF} | jG        r8t          | jG                  s$|j        jI        J                    | jG                    || K                    |          t                      8          S t                      ;                    ||||          S )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__rs   zmore than 1 args and 0 kwargs__len__copy)r$   mutation_typer4   clear__iter__)ListIteratorVariabler   )Mutilsr   builderr   rZ   rJ   r   getattrdictsr   r   rP   call_setr   r   mutationr$   r   r   r   rl   r   r   r   r#   r3   r   rM   r+   r@   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ger0   r   r|   r.   r   UserDefinedSetVariable	TypeErrorpython_type_namecall_methodr   r   r<   r   NotImplementedr   r   r   r   listsr   r4   r   guard_on_key_orderr   r   r,   )r5   r   r   r   r%   r   r   py_typer   r   temp_set_vtresulteopr   mr	eq_resultr   r   r8   s                       r9   r   zSetVariable.call_method   s    	0/////......   $#D&11   ""c))&&((G((WWd-C-CT6RRR 	?>>>>>>>:D+222s;;D  # K I"++D111JJk/000#*4000U]] Ta#)4yy@@CKK@@@	   tAw'' . a"---I"++D1113>3M3M3O3ODJtAw//0#*4000U]]  #)4yy@@CKK@@@	  J*..*<*<*>*>*A J J J(2DLLIIIIIIIIIJ*.D'I"++D111JNN?622333M\!! Ta#)4yy@@CKK@@@	   %++B	0HIIWWT47OR   ^## S#BjS[[:Q:Q:QRRR$++I. m,,../  *** S#BjS[[:Q:Q:QRRR$++I5 mBr223 W__ S#BjS[[:Q:Q:QRRR$++B	0CDDRR,,../  
 \!! #O3v;;OOO   %++B	0HIIWW,,../  
 ((( S#BjS[[:Q:Q:QRRR$++I3 mBr223 +++ Ta#)4yy@@CKK@@@	   %++I6 m,,../  222 Ta#)4yy@@CKK@@@	   %++I= mBr223 X$//"3"3 S#BjS[[:Q:Q:QRRR$++B	0DEESSTMDM2   X Ta#)4yy@@CKK@@@	   Awd""(2DAAAA*.D'I"++D111JNN?4733444#*4000Y Ta#)4yy@@CKK@@@	   Aw$.2+	&//555
tAw77888#*4000///4yyA~~#Bh3t998K8K8KLLL %K&k B GOO%%E%-- Y)00S99GGUGUWXX$++Bt==KKT5M2   @@@)!1'	 
 c$ii  Q4%$	   ) B4  B  BDDYDYD[D[  B  Bdhijdkd|d|d~d~  B  B  B    ===##B4888DDD%#%%	 
 c$ii  Q4%$	   ) B4  B  BDGD\D\D^D^  B  Bgkg|g|g~g~  B  B  B    ===7&&r1tff===DDDQ4%$	   ) B4  B  BDDYDYD[D[  B  Bdhijdkd|d|d~d~  B  B  B    2#9/	 
 c$ii  ===RD&111KXQ4%$	  	6 (.u555  %;T6JJA"(S-=-=-BCCCX((XtVDDI"(-@AAA+++Q4%$	  	A ',R@@@"(&t,T^T!W=NOO   ^##t99 #34yy@@CKK@@@	    .[a11 . a"---++B555Aw$H"(X666Y v #)4yy@@CKK@@@	   #(S__===V^^ v #)4yy@@CKK@@@	   ::joo''7G7I7IRV     W__ v #)4yy@@CKK@@@	   +/D'I"++D111J#*4000Z333333{ >#5dk#B#B >	,00===''((,,<L<N<N    ww""2tT6:::s   2I 
J)J		Jr!   c                 4    t          j        t                    S rH   )r   r!   rJ   rL   s    r9   r   zSetVariable.python_type_var/  s    (---r:   ri   c                      t          d          )NzIllegal to getitem on a set)RuntimeError)r5   r   ri   s      r9   getitem_constzSetVariable.getitem_const2  s     8999r:   c                 P    t          j        |t          | j                            S rH   )r   r   rl   rM   r   s     r9   	sq_lengthzSetVariable.sq_length7  s    $RT^)<)<===r:   r_   r   r&   Nr&   r!   )0__name__
__module____qualname____doc__rJ   _cpython_typer   SET_CONTAINSr   SET_NOT_CONTAINSr   r   r   r   r   r-   strrC   propertyrM   staticmethodr3   rS   r   rZ   r^   rn   boolrs   intrl   r~   r{   r   r   r   r   r   r   r   r   r1   r   r   r   r  r  __classcell__r8   s   @r9   r#   r#   .   s        << M!.N%6
/9:
 
 
	
 
 
 
 
 
B	/C 	/ 	/ 	/ 	/ &301 & & & X& -O - - - \-9# 9 9 9 9T    CC C C C CX X X X
 
4 
 
 
 

S 
 
 
 


t 
 
 
 
&$t+&4C&	& & & &*&= *$BW * * * *'c 'o ' ' ' ' ' 'D    -5 -S - - - - - -
=)=14=	= = = =
)15o1F	   ..#. . ?#	.
 S/)*. 
. . . . _;#_; _; ?#	_;
 S/)*_; 
_; _; _; _; _; _;B. . . .:):0?:	: : : :
>3 > > > > > > > > >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                      j        di | d S r   )r,   r-   r   s     r9   r-   z OrderedSetClassVariable.__init__<  s&    ""6"""""r:   c                     t           S rH   r   rL   s    r9   r^   z*OrderedSetClassVariable.as_python_constant?      r:   r   r    r   c           
          |dk    rTddl m} | j        rt          | j        |          }nd } || |t	          t          t          |                    |          S t                                          ||          S )N__new__r   )GetAttrVariable)r   r4   )	miscr  r4   r   r   r   r	   r,   r   )r5   r   r   r  attr_sourcer8   s        r9   r   z#OrderedSetClassVariable.var_getattrB  s    9------{ #(d;;""?dDT)B)B$C$CK    77&&r4000r:   r   c           
         ddl m} |dk    rit          |          dk    s|r2t          ||dt          |           dt          |           d           t	          j        g t                                S t          t          |          }||v rFt          |d	         t          j
                  r&|d	                             |||dd          |          S t                                          ||||          S )
Nr   )set_methodsr  r
   z'OrderedSet.__new__ only accepts one argr   r   r   r   )builtinr"  rl   r   r   OrderedSetVariabler   r   rJ   r.   r#   r   r,   )r5   r   r   r   r%   r"  resolved_fnr8   s          r9   r   z#OrderedSetClassVariable.call_methodP  s    	)(((((94yyA~~~#A4yyA A,/KKA A A   /BRBTBTUUUUc4((+%%*T!Wi>S*T*T%7&&r4abb6BBBww""2tT6:::r:   r$  c           
      6   t          |          dk    s|r2t          |ddt          |           dt          |           d           t          |          dk    rg }n|d                             |          }t          j        |t                                S )Nr   r	   zOrderedSet only accepts one argr   r   r   r   )rl   r   force_unpack_var_sequencer   r$  r   )r5   r   r   r%   r$   s        r9   r   z%OrderedSetClassVariable.call_functionj  s     t99q==F==t99= =(+F= = =   t99>>EEG55b99E+EAQASASTTTTr:   )r	  r
  r  r   r-   r   r	   r^   r  r   r   r   r1   r   r   r   r  r  s   @r9   r  r  ;  sU       # # # # # # # #DC$9    15 1S 1_ 1 1 1 1 1 1;#; ; ?#	;
 S/)*; 
; ; ; ; ; ;4U#U 'U S/)*	U
 
U U U U U U U Ur:   r  c                   j    e Zd ZdefdZdee         fdZdeee                  fdZ	de
fdZd
d	ZdS )r$  r&   c                    | j         sdS g }| j         D ]^}t          |j        d          rt          |j        j                  n|j                                        }|                    |           _dd                    |          z   dz   S )NzOrderedSet([])r<   zOrderedSet([r>   ])r$   rA   r@   rB   r<   rC   r/   rD   r5   r$   rV   key_strs       r9   rC   zOrderedSetVariable.debug_repr  s    z 		;##!EZ & &(/g(>(>UD$$$ADOODUDU  W%%%%!CHHUOO3d::r:   c                 >    t          d | j        D                       S )Nc                 @    g | ]}|j                                         S r*   r]   rT   s     r9   re   z9OrderedSetVariable.as_python_constant.<locals>.<listcomp>  s&    MMM142244MMMr:   )r	   rM   rL   s    r9   r^   z%OrderedSetVariable.as_python_constant  s!    MMdnMMMNNNr:   c                     t           S rH   r   rL   s    r9   rZ   zOrderedSetVariable.python_type  r  r:   c                     t                      S rH   )r  rL   s    r9   r   z"OrderedSetVariable.python_type_var  s    &(((r:   r_   r   Nc                 2                        fd                               d | j        D                                            t	          dt          | j                                                           t          dd                     d S )Nc                  0                          dd          S )Nztorch.utils._ordered_setr	   )load_import_fromr_   s   r9   <lambda>z0OrderedSetVariable.reconstruct.<locals>.<lambda>  s    G,,-GVV r:   c                     g | ]	}|j         
S r*   rb   rc   s     r9   re   z2OrderedSetVariable.reconstruct.<locals>.<listcomp>  rf   r:   
BUILD_LISTrh   r   F)add_push_nullrj   rM   rk   r   rl   extend_outputr   rm   s    `r9   rn   zOrderedSetVariable.reconstruct  s    VVVV	
 	
 	
 	66t~66677703t~CVCVWWWXXX21e<<=====r:   r  )r	  r
  r  r  rC   r	   r   r^   r   rZ   r  r   rn   r*   r:   r9   r$  r$    s        
;C 
; 
; 
; 
;OJsO O O O OT*S/2    )!8 ) ) ) )> > > > > >r:   r$  c            
            e Zd Ze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dedee         deeef         def
 fdZded         fdZdefdZdedefdZ xZS )FrozensetVariabler&   c                    | j         sdS g }| j         D ]^}t          |j        d          rt          |j        j                  n|j                                        }|                    |           _dd                    |          z   dz   S )Nzfrozenset()r<   r=   r>   r?   r+  r,  s       r9   rC   zFrozensetVariable.debug_repr  s    z 		/ =!EZ & &(/g(>(>UD$$$ADOODUDU  W%%%%%(3..r:   r   c                 N    t          | j                                                  S rH   rI   rL   s    r9   rM   zFrozensetVariable.set_items  rN   r:   c                     t           S rH   )	frozensetrL   s    r9   rZ   zFrozensetVariable.python_type  s    r:   r!   c                 4    t          j        t                    S rH   )r   r!   r@  rL   s    r9   r   z!FrozensetVariable.python_type_var  s    (333r:   c                 >    t          d | j        D                       S )Nc                 @    h | ]}|j                                         S r*   r]   rT   s     r9   rW   z7FrozensetVariable.as_python_constant.<locals>.<setcomp>  s&    LLL!$1133LLLr:   )r@  rM   rL   s    r9   r^   z$FrozensetVariable.as_python_constant  s!    LLT^LLLMMMr:   r_   r   Nc                                         fd                               d | j        D                                            t	          dt          | j                            gt          dd                     d S )Nc                  V                                               d          g          S )Nr@  )r:  create_load_globalr5  s   r9   r6  z/FrozensetVariable.reconstruct.<locals>.<lambda>  s-    G))..{;;  r:   c                     g | ]	}|j         
S r*   rb   rc   s     r9   re   z1FrozensetVariable.reconstruct.<locals>.<listcomp>  rf   r:   r8  rh   r   F)r9  rj   rM   r:  r   rl   r   rm   s    `r9   rn   zFrozensetVariable.reconstruct  s       	
 	
 	
 	66t~666777"<S5H5HIII%a//	
 	
 	
 	
 	
r:   r   r    r   r   r%   c                 &   |dv rt          d| d          |dk    rt          j        d           S |dv r8t                                          ||||          }t          |j                  S t                                          ||||          S )Nr   r+   r   r   r   r   Illegal call_method z on a frozensetr-   )r   r   r   r   )r  r   rP   r,   r   r<  r$   )r5   r   r   r   r%   r   r8   s         r9   r   zFrozensetVariable.call_method  s     IIIKdKKKLLLZ#*4000 
 
 
 ##BdF;;A$QW---ww""2tT6:::r:   Tc                     dS )zB
        Frozensets are immutable and hashable in Python.
        Tr*   rL   s    r9   r   z$FrozensetVariable.is_python_hashable  s	     tr:   c                 D    t          |                                           S rH   )hashr^   rL   s    r9   get_python_hashz!FrozensetVariable.get_python_hash  s    D++--...r:   r   c                     t          |t                    o)|                                 |                                k    S rH   )r.   r   r^   )r5   r   s     r9   is_python_equalz!FrozensetVariable.is_python_equal  s:    uo.. H''))U-E-E-G-GG	
r:   r  r  )r	  r
  r  r@  r  r  rC   r  rJ   rM   r   rZ   r   r   r^   rn   r   r   r1   r   r   r   r  rN  objectr  rP  r  r  s   @r9   r<  r<    s       M
/C 
/ 
/ 
/ 
/ &301 & & & X&T    4 4 4 4NC N N N N
 
 
 
 ;#; ; ?#	;
 S/)*; 
; ; ; ; ; ;,GDM    / / / / /
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dS g }| j         D ]^}t          |j        d          rt          |j        j                  n|j                                        }|                    |           _dd                    |          z   dz   S )Nzdict_keys([])r<   zdict_keys([r>   r*  r+  r,  s       r9   rC   zDictKeySetVariable.debug_repr  s    z 		:"?!EZ & &(/g(>(>UD$$$ADOODUDU  W%%%% 388E??2T99r:   r   r    r   Nc                     d S rH   r*   )r5   r   r   s      r9   r   z-DictKeySetVariable.install_set_contains_guard   s	     	r:   c                     | j         S rH   r   rL   s    r9   rM   zDictKeySetVariable.set_items  s
    zr:   c                     ddl m} |S )Nr
   )	dict_keys)r   rX  )r5   rX  s     r9   rZ   zDictKeySetVariable.python_type
  s    %%%%%%r:   c                 z    t                               d | j        D             d                                           S )Nc                 @    h | ]}|j                                         S r*   r]   rT   s     r9   rW   z8DictKeySetVariable.as_python_constant.<locals>.<setcomp>  s&    ???1QT$$&&???r:   )r1   r2   rM   rK   rL   s    r9   r^   z%DictKeySetVariable.as_python_constant  s6    }}?????
 

$&&	r:   r   r%   c                 z    |dv rt          d| d          t                                          ||||          S )NrI  rJ  z on a dict_keys)r  r,   r   )r5   r   r   r   r%   r8   s        r9   r   zDictKeySetVariable.call_method  sI     IIIKdKKKLLLww""2tT6:::r:   )r	  r
  r  r  rC   r   r   r   r  r   rM   r   rZ   r^   r1   r   r  r  s   @r9   rS  rS    s%       
:C 
: 
: 
: 
:)15o1F	    3    XT    
C    
	;#	; 	; ?#		;
 S/)*	; 
	; 	; 	; 	; 	; 	; 	; 	; 	; 	;r:   rS  )3r  r   r   collections.abcr   r   typingr   r   r   torch.utils._ordered_setr	    r   r   bytecode_transformationr   r   r   r   guardsr   r   r4   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  r$  r<  rS  r*   r:   r9   <module>rh     s   "      . . . . . . . . . . . . . . . . . . / / / / / / # # # # # # # # N N N N N N N N * * * * * * 0 0 0 0 0 0 0 0 I I I I I I I I I I G G G G G G G G G G 3 3 3 3 3 3 3 3 & & & & & & D D D D D D D D D D  @//////DDDDDD??????J> J> J> J> J>/ J> J> J>ZBU BU BU BU BUo BU BU BUJ> > > > > > > >@P
 P
 P
 P
 P
 P
 P
 P
f*; *; *; *; *; *; *; *; *; *;r:   