
    /jy                       d Z ddlZddl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mZmZ ddlmZ ddlmZmZmZ ddlmZmZ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/m0Z0 erddl1m2Z2 ddl3m4Z4 ddl5m6Z6 ddl7m8Z8 de	de9fdZ:	 d7de-ded         ddfdZ;de-de9fdZ< G d de-          Z= G d d e-          Z> G d! d"e=          Z? G d# d$e=          Z@ G d% d&e=          ZA G d' d(e-          ZB G d) d*eA          ZC G d+ d,eA          ZD G d- d.eA          ZE G d/ d0e-          ZF G d1 d2eF          ZG G d3 d4eF          ZH G d5 d6eF          ZIdS )8a  
Dictionary-related variable tracking classes for PyTorch Dynamo.

This module implements variable tracking for different types of dictionary-like objects:
- Regular Python dictionaries (dict)
- Ordered dictionaries (collections.OrderedDict)
- Default dictionaries (collections.defaultdict)
- Dictionary views (keys and values)
- Sets and frozensets (implemented internally using dictionaries)

These classes are responsible for tracking dictionary operations during graph compilation,
maintaining proper guards for dictionary mutations and key existence checks. They handle
dictionary creation, modification, key/value access, and view operations while ensuring
correct behavior in the compiled code through appropriate guard installation.

The implementation uses a special _HashableTracker wrapper to handle dictionary keys
while preserving proper aliasing semantics. Sets are implemented as dictionaries with
None values for efficiency and code reuse.
    N)IterableSequence)AnyLiteralOptionalTYPE_CHECKINGUnion
OrderedSet   )graph_break_hints	polyfills	variables)create_call_functioncreate_call_methodcreate_dup_topcreate_instruction)raise_observed_exceptionunimplemented)GuardBuilderinstall_guard)
AttrSourceis_constant_sourceis_from_local_source)cmp_name_to_op_mapping
dict_items	dict_keysdict_valuesistyperaise_args_mismatchspecialize_symnode   )ValueMutationNewVariableTracker)CONSTANT_VARIABLE_NONEConstantVariable)	PyCodegenInstructionTranslator)BuiltinVariable)UserFunctionVariableobjreturnc                 R    t          |           j                            dd          S )N__instancecheck__F)type__dict__get)r,   s    b/home/longshao/multi-rider-rag/.venv/lib/python3.11/site-packages/torch/_dynamo/variables/dicts.pywas_instancecheck_overrider4   B   s"    99!!"5u===    argtxr)   c                 L   ddl m} |ddlm}  |j                    }	 |                                 }n# t          $ r t          |           }Y nw xY wt          t          ||
                    |d|dt          |                                                      g           d S )Nr"   SourcelessBuilderr   r(   zunhashable type: z and variable tracker = args)builderr:   torch._dynamo.symbolic_convertr)   
current_txpython_type	Exceptionr0   r   	TypeErrorcreaterealize)r6   r7   r:   r)   arg_types        r3   raise_unhashablerF   F   s     +*****	zHHHHHH-"-//??$$   99 
$$]H]]S[[]]H[H[]] 
	 	 	 	 	 	s   4 AAxc                     t          | t          j                  r*|                                 s|                                 rdS |                                 S )NT)
isinstancer   LazyVariableTrackeris_realizedis_hashableis_python_hashable)rG   s    r3   rL   rL   `   sT     	1i344 MMOO
 t!!!r5   c                       e Zd Zej        Zdhej        Z G d d          Ze	fde	eef         de
deddf fdZde
de
fd	Zde	eef         fd
ZdefdZde	eef         fdZde	eef         fdZde
fdZdedefdZdddddedee         de	eef         defdZdefdZdefdZdee         dedefdZd0d Zd0d!Zddd"edefd#Zddd"edefd$Z d"edee         fd%Z!d"eddfd&Z"d1d'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
 fd+Z&ddde$e         fd,Z'ddd*ede(fd-Z)dedef fd.Z*defd/Z+ xZ,S )2ConstDictVariableuser_clsc                   >    e Zd ZdZdeddfdZdefdZdede	fdZ
dS )	"ConstDictVariable._HashableTrackeraB  
        Auxiliary opaque internal class that wraps a VariableTracker and makes it hashable
        This should not be seen or touched by anything outside of ConstDictVariable and its children
        Note that it's also fine to put VTs into dictionaries and sets, but doing so does not take into account aliasing
        vtr-   Nc                 n    t          |          }t          |          st          |           || _        d S N)r!   rL   rF   rS   )selfrS   s     r3   __init__z+ConstDictVariable._HashableTracker.__init__}   s8    #B''B r?? % $$$DGGGr5   c                 "   t          | j        t          j                  rX| j                                        s?| j                                        r&t          | j                                                  S | j                                        S )a  
            Computes the hash value for the wrapped VariableTracker.

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

            Returns:
                The hash value of the underlying variable tracker
            )	rI   rS   r   rJ   rK   rL   hashoriginal_valueget_python_hashrV   s    r3   __hash__z+ConstDictVariable._HashableTracker.__hash__   s{     47I$ABB6++--6 G''))6
 DG22445557**,,,r5   otherc                     t          |t          j                  sdS | j        |j        u rdS | j                            |j                  S )a  
            Checks equality between two _HashableTracker instances.

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

            Args:
                other: Another _HashableTracker instance to compare with

            Returns:
                True if the underlying variable trackers are Python-equal, False otherwise
            FT)rI   rO   _HashableTrackerrS   is_python_equalrV   r^   s     r3   __eq__z)ConstDictVariable._HashableTracker.__eq__   sK     e%6%GHH uw%(""t7**58444r5   )__name__
__module____qualname____doc__r$   rW   intr]   objectboolrc    r5   r3   r`   rR   v   s}        	 		 	4 	 	 	 		-c 	- 	- 	- 	-&	5 	54 	5 	5 	5 	5 	5 	5r5   r`   itemskwargsr-   Nc                 \   d|v r|                     d           d|v r|                     d            t                      j        d
i | t          j        t          fd|                                D                       sJ dt          t          df         ddffd| 	                    |          } |fd|                                D                       | _        | j
        rt          | j
                   nd	| _        |                                | _        || _        d S )Noriginal_itemsshould_reconstruct_allc              3   v   K   | ]3\  }}t          |t          f          ot          |t                    V  4d S rU   )rI   r$   ).0rG   vHashables      r3   	<genexpr>z-ConstDictVariable.__init__.<locals>.<genexpr>   s^       
 
 1 q?H566 /1o..
 
 
 
 
 
r5   keyrR   r-   c                 >    t          |           r| n
 |           S rU   )rI   )rv   rt   s    r3   make_hashablez1ConstDictVariable.__init__.<locals>.make_hashable   s&     %S(33F33#Fr5   c                 .    i | ]\  }} |          |S rk   rk   )rr   rG   rs   rx   s      r3   
<dictcomp>z.ConstDictVariable.__init__.<locals>.<dictcomp>   s)    MMMtq!}}Q//MMMr5   Trk   )popsuperrW   rO   r`   allrl   r	   r$   _get_dict_cls_from_user_clssourcer   rp   copyro   rP   )rV   rl   rP   rm   dict_clsrt   rx   	__class__s        @@r3   rW   zConstDictVariable.__init__   s~    v%%JJ'(((#v--JJ/000""6"""$5  
 
 
 
 
 
 
 
 
 	
 	
 
	G(LLM	G1	G 	G 	G 	G 	G 	G
 33H==XMMMMu{{}}MMMNN
 6:[J$T[1111d 	# $jjll r5   c                     t           t          j        t          j        f|v r|}n t	          fd|j        D                       }|v s
J |            |t          j        u rt           }|S )Nc              3   $   K   | ]
}|v |V  d S rU   rk   )rr   baseaccepted_dict_typess     r3   ru   z@ConstDictVariable._get_dict_cls_from_user_cls.<locals>.<genexpr>   s7        T=P5P5P5P5P5P5P r5   )dictcollectionsOrderedDictdefaultdictnext__mro__)rV   rP   r   r   s      @r3   r~   z-ConstDictVariable._get_dict_cls_from_user_cls   s    #[%<k>UV ***HH     !)!1    H ....... {...Hr5   c                 H    d | j                                          D             S )Nc                 l    i | ]1\  }}|j                                         |                                2S rk   rS   as_proxyrr   krs   s      r3   rz   z.ConstDictVariable.as_proxy.<locals>.<dictcomp>   s0    MMM$!QMMMr5   rl   r\   s    r3   r   zConstDictVariable.as_proxy   s$    MM$*:J:J:L:LMMMMr5   c                    g }| j                                          D ]\  }}t          |j        d          rt          |j        j                  n|j                                        }t          |d          rt          |j                  n|                                }|                    | d|            dd                    |          z   dz   S )Nvaluez: {, }rl   hasattrrS   reprr   
debug_reprappendjoinrV   rl   r   rs   key_strval_strs         r3   r   zConstDictVariable.debug_repr   s    J$$&& 	2 	2DAq*1!$*@*@Wd14:&&&adooFWFWG'.q'':':Nd17mmmGLLG00w001111TYYu%%%++r5   c                 H    d | j                                          D             S )Nc                 l    i | ]1\  }}|j                                         |                                2S rk   rS   as_python_constantr   s      r3   rz   z8ConstDictVariable.as_python_constant.<locals>.<dictcomp>   sH     
 
 
1 D##%%q';';'='=
 
 
r5   r   r\   s    r3   r   z$ConstDictVariable.as_python_constant   s1    
 

((**
 
 
 	
r5   c                 p    |                                   d | j                                        D             S )Nc                 H    i | ]\  }}|j                                         | S rk   r   r   s      r3   rz   z=ConstDictVariable.keys_as_python_constant.<locals>.<dictcomp>   s,    LLLA''))1LLLr5   install_dict_keys_match_guardrl   r\   s    r3   keys_as_python_constantz)ConstDictVariable.keys_as_python_constant   s6    **,,,LL9I9I9K9KLLLLr5   c                     | j         S rU   rP   r\   s    r3   r@   zConstDictVariable.python_type   s
    }r5   rS   c                     t          |t                    sJ t          j        }|                                o@ ||          | j        v o.t          | j         ||                   t          j                   S rU   )rI   r$   rO   r`   rM   rl   r   DeletedVariable)rV   rS   rt   s      r3   __contains__zConstDictVariable.__contains__   st    "o.....$5!!## T
*Ttz((2,,79RSSS	
r5   r7   r)   tree_map_fnr+   map_fnresttree_map_kwargsc           
         g }|D ]}|                                 }t          |t                    r*t          |j                  t          | j                  k    r|                     |||||          c S |                    |            t          | j                              | j                                        D ]v\  }}	g }
|D ]P}	 |
                    |j        |                    $# t          $ r  |                     |||||          cY c c S w xY w|		                    ||||
|          |<   wfdD             }| 
                    |dd t                                S )Nc                 ,    i | ]}|j         |         S rk   rS   )rr   key_trackernew_items_hasheds     r3   rz   z:ConstDictVariable.call_tree_map_branch.<locals>.<dictcomp>,  s3     "
 "
 "
 N,[9"
 "
 "
r5   T)rl   ro   rp   r   mutation_type)rD   rI   rO   lenrl   _tree_map_fallbackr   r0   KeyErrorcall_tree_mapcloner#   )rV   r7   r   r   r   r   other_dicts	candidater   r   sibling_leavesupdated_original_itemsr   s               @r3   call_tree_map_branchz&ConstDictVariable.call_tree_map_branch  s    02 	* 	*I!))++Ii):;; s@ @TZ@! @! ..VT?     y))))+4
++--"&*"2"2"4"4 	 	K46N(  	")))/+*FGGGG   22K         -2,?,?- -[))"
 "
 "
 "
/"
 "
 "

 zz"1#'*,,  
 
 	
s    C..#DDc                 b    t          d | j                                        D                       S )Nc              3   L   K   | ]}t          |t          j                   V   d S rU   )rI   r   r   rr   rG   s     r3   ru   z(ConstDictVariable.len.<locals>.<genexpr>:  sC       
 
=>
1i7888
 
 
 
 
 
r5   )sumrl   valuesr\   s    r3   r   zConstDictVariable.len9  s>     
 
BF*BSBSBUBU
 
 
 
 
 	
r5   c                 v      j         p1t           fd j                                        D                       S )Nc              3      K   | ]:\  }}                     j                            |j                  |          V  ;d S rU   )is_new_itemro   r2   rS   )rr   rv   r   rV   s      r3   ru   z2ConstDictVariable.has_new_items.<locals>.<genexpr>?  s^       2
 2
U T044SV<<eDD2
 2
 2
 2
 2
 2
r5   )rp   anyrl   r\   s   `r3   has_new_itemszConstDictVariable.has_new_items>  sS    * 
c 2
 2
 2
 2
"j..002
 2
 2
 /
 /
 	
r5   r   r^   c                    |rl|                                 rX|                                 rDt          |                                          t          |                                          k    S t          |          t          |          k    S rU   )rK   idrD   )rV   r   r^   s      r3   r   zConstDictVariable.is_new_itemD  st      	>U&&(( 	>U->->-@-@ 	>emmoo&&"U]]__*=*===%yyBuII%%r5   codegenr'   c                 H   d}| j                                          D ]a\  }}| j                            |j                  }|                     ||          s| j        r  ||j                    ||           |dz  }b|                    t          d|                     d S )Nr   r"   	BUILD_MAPr6   )rl   ro   r2   rS   r   rp   append_outputr   )rV   r   num_argsrv   r   items         r3   reconstruct_kvs_into_new_dictz/ConstDictVariable.reconstruct_kvs_into_new_dictL  s    ***,, 	 	JC&**3622De,, 0K A0(KKKLLLLLr5   c                    | j         t          j        u r.                    fd           |                                 rȉ                    g t          dd          t                                                     |            	                    t                                 
                    d           |                                                    g t          d          t          d                     d S |                                                    t          dd                     d S |                                 r                    t          dd          t                      g                               |            |                                	                    t          d	d                     d S |                                d S )
Nc                                                                 t                                         d          g          S )Nr   extend_outputcreate_load_python_moduler   create_load_attrr   s   r3   <lambda>z/ConstDictVariable.reconstruct.<locals>.<lambda>\  s>    --99+FF00??  r5   r   Fupdater"   POP_TOPr   r   DICT_UPDATE)rP   r   r   add_push_null_contains_self_referencer   r   r   	add_cacher   load_methodr   r   r   rV   r   s    `r3   reconstructzConstDictVariable.reconstructX  s%   =K333!!      ,,.. F%%-a77&((   !!$'''%%n&6&6777##H---227;;;%%+A..*955     227;;;%%&:1e&D&DEEEEE,,.. <%%*;A>>>&((   !!$'''227;;;%%&8A&N&N&NOOOOO 227;;;;;r5   r6   c                 L   t                               |          }|| j        vru	 dt          |           d|                                }n4# t
          $ r' t          j        dt          |                     }Y nw xY wt          t          ||g           | j        |         S )NzDict key lookup failed for z%. Debug representation of the key is r;   )
rO   r`   rl   strr   rA   r&   rC   r   r   )rV   r7   r6   rv   error_messages        r3   'getitem_const_raise_exception_if_absentz9ConstDictVariable.getitem_const_raise_exception_if_absent  s      0055dj  O#c(( O O:=..:J:JO O      0 7<#c((<<! ! %XrHHHHz#s   'A .A>=A>c                     t                               |          }|| j        vr3d|j         d}t	          dd|j         |dgt
          j                   | j        |         S )NzDictionary key z not found during tracingzkey not found in dictzKey z>Check if the key exists in the dictionary before accessing it.gb_typecontextexplanationhints)rO   r`   rl   r   r   r   
USER_ERROR)rV   r7   r6   rv   msgs        r3   getitem_constzConstDictVariable.getitem_const  s      0055dj  HCIHHHC/*sy**T&1	    z#r5   c                 f    t                               |          }|| j        vrd S | j        |         S rU   )rO   r`   rl   )rV   r6   rv   s      r3   maybe_getitem_constz%ConstDictVariable.maybe_getitem_const  s3    0055dj  4z#r5   c                 p   || v sJ t                               |          }t          | j                                                                      |          }t          | j                                                  |         }t          |t          j	                  r|
                                 d S d S rU   )rO   r`   tuplerl   keysindexro   rI   r   rJ   rD   )rV   r6   rv   r   original_key_vts        r3   realize_key_vtz ConstDictVariable.realize_key_vt  s    d{{{{0055djoo''((..s33 3 8 8 : :;;EBoy'DEE 	&##%%%%%	& 	&r5   c                 p    | j         r.t          |                     t          j                             d S d S rU   )r   r   
make_guardr   DICT_KEYS_MATCHr\   s    r3   r   z/ConstDictVariable.install_dict_keys_match_guard  s<    ; 	I$//,*FGGHHHHH	I 	Ir5   r<   c           	         | j         sd S |j        j                            |           rd S |d         | v }|d         j         ~|d                                         rdt          |                     t          j        t          |           j
        |d                                         |                                d S |d         j         r5|r|                     |d                    d S |                                  d S d S )Nr   )rv   invert)r   outputside_effectsis_modifiedis_python_constantr   r   	functoolspartialr0   CONTAINS_GUARDr   r   r   )rV   r7   r<   containss       r3   install_dict_contains_guardz-ConstDictVariable.install_dict_contains_guard  s   " { 	F9!--d33 	F7d?7>!d1g&@&@&B&B!%T

1 G6688#+|        !W^ 	5 5##DG,,,,,2244444		5 	5r5   namec           
      $"   ddl m}m ddlm} t
          j        |dk    ro |                    |t                    j	        |g|R i |}|j
        j                            |            | j                            |j                   t          S |dk    rQt!          |          dk    r"t#          ||dt!          |           d           |                     ||d                   S |d	k    r|s|r2t#          ||d
t!          |           dt!          |           d           |                                  | j        r$|j
        j                            | j                   t/          |           S |dk    rt!          |          r"t#          ||dt!          |           d           |                                  | j        r$|j
        j                            | j                   t1          |           S |dk    r|s|r2t#          ||d
t!          |           dt!          |           d           |                                  | j        r$|j
        j                            | j                   |s|rt3          t4          |           t7          |           S |dk    r|                                  |s|r2t#          ||d
t!          |           dt!          |           d           |                     | j                                        t=                      d           S |dk    rl|s|r2t#          ||d
t!          |           dt!          |           d           |                                   j        t!          | j                            S |dk    r|                                 r|otA          |d                   }|stC          |d         |           |                                  |st!          |          dk    r2t#          ||dt!          |           dt!          |           d           |j
        j                            |            |d         | j         |d                   <   t          S |dk    r|                                 r|otA          |d                   }|rj|                                  d| _"        |j
        j                            |            | j        #                     |d                              t          S tI                      %                    ||||          S |dk    rt!          |          dvr"t#          ||dt!          |           d           |otA          |d                   }|stC          |d         |           |d         | vr8| &                    ||           t!          |          dk    rt          S |d         S | '                    ||d                   S |dk    r|                                 rt!          |          dvr"t#          ||dt!          |           d           |otA          |d                   }|stC          |d         |           |d         | vrF| &                    ||           t!          |          dk    rt3          tP          |           |d         S d| _"        |j
        j                            |            | j        )                     |d                             S |dk    r|                                 rtU          | j+        t                    r>tU          | j+        tX          j-                  st!          |          rt#          ||           | j        s( j        d          }	t3          tP          ||	g           | j+        tX          j-        u rt!          |          dk    sd|v rt!          |          dk    r5|d         .                                r|d         /                                }
nP|0                    d          x}r)|.                                r|/                                }
nt#          ||           | j        1                    |
           \  }}n| j        1                                \  }}d| _"        |j
        j                            |            te          j3        |j4        |g          S |d!k    r||s|r2t#          ||d
t!          |           dt!          |           d           d| _"        |j
        j                            |            | j        5                                 t          S |d"k    rV|                                 rA|                                  t!          |          dk    }t!          |          dk    }|s|r|j
        j                            |            |rztm          |d         t
                    r#|d                                          |d         }n |j7        |t          |d                   }| j                            |j                   |r;fd#|                                D             }| j                            |           t          S tI                      %                    ||||          S |d$k    rt!          |          s2t#          ||d%t!          |           dt!          |           d           |otA          |d                   }|stC          |d         |           | &                    ||           |d         | v } j        |          S |d&k    r^|                                 rIt!          |          dvr2t#          ||d't!          |           dt!          |           d           |otA          |d                   }|stC          |d         |           |                                  |st!          |          dk    r2t#          ||d(t!          |           dt!          |           d           | 8                    |d                   }||S t!          |          dk    rt          }n|d         }|j
        j                            |            || j         |d                   <   |S |d)k    r|                                  |j
        j                            |            |d         | vrt3          tP          |           d}
t!          |          dk    r4|d         .                                r|d         /                                }
|rEd|v rA|d         .                                r'|0                    d          /                                }
 |d                   }| j        9                    ||
            t          S |d*k    rtu          | t
                    rrt!          |          dk    r"t#          ||dt!          |           d           |                    |tv          j<                  =                    || |d         gi           S |d+k    r, j        | %                    |d*||          j>                   S |d,k    rt!          |          dk    r"t#          ||dt!          |           d           |d         }tu          |t
          td          j?        td          j@        f          r| j+        t          ur
| j+        }| }n tm          |t
                    sJ |j+        }|}|                                 |                    | j                                        t=                      d |-          }|d                                          |j                            |d         j                   |S d.| A                                jB         d/|A                                jB         d0}t3          t4          ||g           d S |d1k    r| %                    |d"||           | S |d2k    rqdd3lCmD} | j        r8t          | j                  s$|j
        j                            | j                    || F                    |          t=                      4          S tI                      %                    ||||          S )5Nr"   )r*   r&   r9   rW   __getitem__1 args argsr   rl   0 args and 0 kwargs
 args and  kwargsr   z0 argsr   r   )rl   r   r   __len____setitem__r   z2 args and 0 kwargs__delitem__Tr2   )r"   r   z1 or 2 argsr{   popitemzpopitem(): dictionary is emptyr;   last)r  clearr   c                 J    i | ]\  }}  j         |                    | S rk   )rC   )rr   r   rs   r&   rt   s      r3   rz   z1ConstDictVariable.call_method.<locals>.<dictcomp>  sH     ' ' ' Aq !!8!1!8!;!;<<a' ' 'r5   r   zmore than 1 args and 0 kwargs
setdefaultz1 or 2 args and 0 kwargszat most 2 args and 0 kwargsmove_to_endrc   __ne____or__)rl   r   r   rP   z$unsupported operand type(s) for |: 'z'and ''__ior____iter__ListIteratorVariabler   )G r*   r&   r=   r:   rO   r`   rC   r   	call_dictr  r  mutationrl   r   r%   r   r    r   r   r   guard_on_key_orderaddDictItemsVariableDictKeysVariabler   rB   DictValuesVariabler   r   r#   
is_mutablerL   rF   rp   r  r|   call_methodr  r   r   r{   
issubclassrP   r   r   r  r   r2   r  r   TupleVariablerS   r  rI   call_custom_dictr   r  r   r   dict___eq__call_functionr   UserDefinedDictVariableDefaultDictVariabler@   rd   listsr#  r   unpack_var_sequence)rV   r7   r  r<   rm   r*   r:   temp_dict_vtarg_hashabler   r  rs   r   has_arg
has_kwargsdict_vtkwargs_hashabler
  r   rG   rv   r^   rP   to_cpynew_dict_vterr_msgr#  r&   rt   r   s                              @@r3   r.  zConstDictVariable.call_method  s    	87777777......$5:G,33B==G  # L I"++D111Jl0111))]""4yyA~~#Bh3t998K8K8KLLL??DGLLLW__ v #)4yy@@CKK@@@	   ..000{ >	,00===$T***V^^4yy M#Bh3t998K8K8KLLL..000{ >	,00===#D)))X v #)4yy@@CKK@@@	   ..000{ >	,00=== 8v 8(B777%d+++V^^..000 v #)4yy@@CKK@@@	   ::joo''7G7I7IRV     Y v #)4yy@@CKK@@@	   ..000*#*3tz??;;;]""t'8'8"8KQ$8$8L . a"---..000 Ta#)4yy@@CKK@@@	   I"++D111,0GDJxxQ(()))]""t'8'8"8KQ$8$8L C22444.2+	&//555
&&xxQ'8'8999--ww**2tT6BBBU]]4yy&&#BmD		=P=P=PQQQ8KQ$8$8L . a"---Awd""00T:::t99>>11Aw%%b$q'222U]]t00]4yy&&#BmD		=P=P=PQQQ8KQ$8$8L . a"---Awd""00T:::t99>>,Xr:::Aw*.D'I"++D111:>>((47"3"3444Y4??#4#44=$//."4=+2IJJ. II.
 $B---: C-&-.NOO(2SEBBBB} 777D		Q&F"2"2t99>>d1g&@&@&B&B>75577DD!::f---a 213G3G3I3I 2//11DD'D111z))t)4411z))++1*.D'I"++D111*AD!9555W__ v #)4yy@@CKK@@@	   +/D'I"++D111J))X$//"3"3 ..000$ii1nGVqJ C* C	&//555 5!$q'+<== V Q==???59!W"B/"B2tTRSW"U"UJ%%gm444 7' ' ' ' '$*LLNN' ' 'O J%%o666--ww**2tT6BBB^##t99 #34yy@@CKK@@@	    8KQ$8$8L . a"---,,R666Aw$H*#*8444\!!doo&7&7!4yy&&#.4yy@@CKK@@@	    8KQ$8$8L . a"---..000 TQ#14yy@@CKK@@@	   ,,T!W55E t99>>.AAQA	&//55501
88DG,,-]""..000I"++D111Awd""(2666D4yyA~~$q'"<"<">">~Aw1133 ?&F**vf~/P/P/R/R*zz&))<<>>(47##CJ""3T"222))X&##
 #
 4yyA~~#Bh3t998K8K8KLLL$++B	0EFFTTT47OR   X*#*$$R4@@FF   X4yyA~~#Bh3t998K8K8KLLLGE& %51  %H =,,#}H!FF%e->?????$~H"F44666$ll*//++"2"4"4%	 +   Q55777!((a777""<4;K;K;M;M;V < <!--//8< < <  )BgYGGGGGGYR4888KZ333333{ >#5dk#B#B >	,00===''((,,<L<N<N    77&&r4v>>>r5   c                 L    |                                   d | j        D             S )Nc                     g | ]	}|j         
S rk   r   r   s     r3   
<listcomp>z9ConstDictVariable.unpack_var_sequence.<locals>.<listcomp>T  s    ))))))r5   r   rV   r7   s     r3   r7  z%ConstDictVariable.unpack_var_sequenceR  s*    **,,,))dj))))r5   c                 r    t           fdt          t          j        t          j        fD                       rKt           j        |          rt          j        d          S  j        t          u rt          j        d          S d j         d}t          dd j         |dgt          j        	           d S )
Nc              3   *   K   | ]}j         |u V  d S rU   r   )rr   trV   s     r3   ru   z5ConstDictVariable.call_obj_hasattr.<locals>.<genexpr>[  s>       
 
 MQ
 
 
 
 
 
r5   TFzhasattr on z is not supportedzunsupported hasattr operationzClass z+Consider using a regular dictionary insteadr   )r   r   r   r   r   r   rP   r&   rC   r   r   SUPPORTABLE)rV   r7   r  r   s   `   r3   call_obj_hasattrz"ConstDictVariable.call_obj_hasattrV  s    
  
 
 
 
K3[5LM
 
 
 
 
 	6 t}d++ 5'.t444}$$'.u555<DM<<<3,T],,=".		
 	
 	
 	
 	
 	
r5   c                 ^    |                                    t                      j        di |S Nrk   )r   r|   r   rV   rm   r   s     r3   r   zConstDictVariable.cloneo  s1    **,,,uww}&&v&&&r5   c                     dS )zP
        Dictionaries are mutable and therefore not hashable in Python.
        Frk   r\   s    r3   rM   z$ConstDictVariable.is_python_hashables  	     ur5   r   r'   r-   Nr-   N)-rd   re   rf   r   DICT_CONTAINSr	  r$   _nonvar_fieldsr`   r   r0   r   rW   r~   r   r   r   r   r   r@   rj   r   r   r   rh   r   r   r   r   r   r   r   r   r   r   r   listr  r.  r7  r&   rI  r   rM   __classcell__r   s   @r3   rO   rO   n   s       !/N 			'N
45 45 45 45 45 45 45 45r %! %!O_45%! %! 	%!
 
%! %! %! %! %! %!ND T    &N$sCx. N N N N,C , , , ,
DcN 
 
 
 
Mc?.B)C M M M MT    
 
4 
 
 
 
0
#0
 ,0
  	0

 '0
 c?230
 
0
 0
 0
 0
d
S 
 
 
 


t 
 
 
 
&o.&7F&	& & & &
M 
M 
M 
M-< -< -< -<^)0?	   ")0?	   " 8O;T    &/ &d & & & &I I I I&5)&515o1F&5	&5 &5 &5 &5Pl?#l? l? ?#	l?
 S/)*l? 
l? l? l? l? l? l?\*&= *$BW * * * *
)
14
	
 
 
 
2'c 'o ' ' ' ' ' 'D        r5   rO   c            
            e Zd Zdededdf fdZdefdZdddee	         fd	Z
d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 fdZ xZS )MappingProxyVariabledv_dictrm   r-   Nc                 v     t                      j        di | t          |t                    sJ || _        d S rK  )r|   rW   rI   rO   rX  rV   rX  rm   r   s      r3   rW   zMappingProxyVariable.__init__|  sB    ""6"""'#455555r5   c                     t           j        S rU   )typesMappingProxyTyper\   s    r3   r@   z MappingProxyVariable.python_type  s    %%r5   r7   r)   c                 6    | j                             |          S rU   )rX  r7  rD  s     r3   r7  z(MappingProxyVariable.unpack_var_sequence  s    |//333r5   r   r'   c                    | j         r3d| j          d}t          dd| j          |dgt          j                                       fd            | j                                       t          dd	                     d S )
Nz*Preexisting MappingProxyVariable (source: zS) cannot be reconstructed because the connection to the original dict will be lost.z%mapping proxy cannot be reconstructedSource: zCUse a mapping proxy constructed in the same `torch.compile` region.r   c                                                                 t                                         d          g          S )Nr]  )r   r   r\  r   r   s   r3   r   z2MappingProxyVariable.reconstruct.<locals>.<lambda>  s?    G))55e<<,,-?@@  r5   r"   F)r   r   r   rH  r   rX  r   r   )rV   r   r   s    ` r3   r   z MappingProxyVariable.reconstruct  s    ; 	LT[ L L L  ?04;00Y&2	    	   	
 	
 	
 	21e<<=====r5   r  r<   c                     | j         r>|j        j                                        r d}t	          dd| j          d|ddg           | j                            ||||          S )Na  A dict has been modified while we have an existing mappingproxy object. A mapping proxy object, as the name suggest, proxies a mapping object (usually a dict). If the original dict object mutates, it is reflected in the proxy object as well. For an existing proxy object, we do not know the original dict it points to. Therefore, for correctness we graph break when there is dict mutation and we are trying to access a proxy object.z-mapping proxy affected by dictionary mutationr`  z, Dict mutation detectedzNAvoid modifying dictionaries that might be referenced by mapping proxy objectszROr avoid using the mapping proxy objects after modifying its underlying dictionaryr   )r   r  r  has_existing_dict_mutationr   rX  r.  )rV   r7   r  r<   rm   r   s         r3   r.  z MappingProxyVariable.call_method  s     ; 	291LLNN 	7  GH4;HHHdh	    |''D$???r5   c                     |                                  t          j        u r%t          j        |t          j        j        v           S t                                          ||          S rU   )r@   r\  r]  r&   rC   r1   r|   rI  rV   r7   r  r   s      r3   rI  z%MappingProxyVariable.call_obj_hasattr  sU     !777#*453I3R+RSSSww''D111r5   rO  )rd   re   rf   rO   r   rW   r0   r@   rS  r$   r7  r   r   r   r.  r&   rI  rT  rU  s   @r3   rW  rW  z  s<        1 S T      
&T & & & &4&= 4$BW 4 4 4 4> > > >6@#@ @ ?#	@
 S/)*@ 
@ @ @ @:2)2142	2 2 2 2 2 2 2 2 2 2r5   rW  c                   6    e Zd ZddZdddee         ddfdZdS )	NNModuleHooksDictVariabler-   Nc                     d S rU   rk   r\   s    r3   r   z7NNModuleHooksDictVariable.install_dict_keys_match_guard  s    r5   r7   r)   r<   c                     d S rU   rk   rV   r7   r<   s      r3   r  z5NNModuleHooksDictVariable.install_dict_contains_guard  s	     	r5   rP  )rd   re   rf   r   rS  r$   r  rk   r5   r3   rg  rg    sY           )15o1F	     r5   rg  c                        e Zd Z	 ddeeef         dedee         deddf
 fdZde	f fdZ
def fd	Ze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dddedef fdZddZ xZS )r5  Nrl   rP   default_factoryrm   r-   c                 ~     t                      j        ||fi | |t          j        u sJ |t          }|| _        d S rU   )r|   rW   r   r   r%   rl  )rV   rl   rP   rl  rm   r   s        r3   rW   zDefaultDictVariable.__init__  sS     	33F333;22222"4O.r5   c                     | j         t          t          t          fvr	| j        sdS t                                                      S )NF)rl  rS  r   r   rl   r|   r  rV   r   s    r3   r  z&DefaultDictVariable.is_python_constant  s<     eT':::4::5ww))+++r5   c                     | j         J d| j                                          dt                                                       dS )Nzdefaultdict(r   ))rl  r   r|   ro  s    r3   r   zDefaultDictVariable.debug_repr  sL    #///W4/::<<WW@R@R@T@TWWW	
r5   r6   c                     t          | t          j        t          j        j        t          j        j        f          p"t          | t          j                  o| j        d u S rU   )rI   r   r*   	functionsBaseUserFunctionVariablePolyfilledFunctionVariabler&   r   r   s    r3   is_supported_argz$DefaultDictVariable.is_supported_arg  sY    )#<#>
 
 Q i899Oci4>O	Qr5   r7   r)   r  r<   c                    |dk    rt          |          dk    r"t          ||dt          |           d           |d         | v r|                     ||d                   S t          | j        t
                    r,| j        j         t          t          ||d         g           d S | j        	                    |g i           }t                                          |d|d         |g|           |S |dk    r| j        rt          |          d	k    r"t          ||d
t          |           d           t          |d         t
                    r_|d         j        dk    rN|                     |d                   r3|j        j                            |            |d         | _        t"          S t                                          ||||          S |dk    rpt          |          dk    r"t          ||dt          |           d           t%          j        t(          j                  	                    || |d         gi           S t                                          ||||          S )Nr  r"   r  r  r   r;   r  __setattr__r   z2 argsrl  rc   )r   r    r   r   rl  r&   r   r   r   r3  r|   r.  r-  rv  r  r  r'  r%   r   r+   r   r2  )rV   r7   r  r<   rm   default_varr   s         r3   r.  zDefaultDictVariable.call_method  sc    =  4yyA~~#Bh3t998K8K8KLLLAw$))"d1g666 4/1ABB
',2:,Xra	JJJJJJ"&"6"D"DRR"P"PKGG''MDG[+A6   '&]""t"4yyA~~#Bh3t998K8K8KLLL tAw 011.6:1gmGX6X6X''Q00 7Y	&//555'+Aw$--77&&r4v>>>X4yyA~~#Bh3t998K8K8KLLL1)2GHHVVT47OR   77&&r4v>>>r5   c                 b    |dk    r| j         S t                                          ||          S )Nrl  )rl  r|   var_getattrre  s      r3   r{  zDefaultDictVariable.var_getattr&  s4    
 $$$''ww""2t,,,r5   r   r'   c                                         fd            | j                                       g t          dd          t	                                                     |                                t	                                                     d           |                                                    g t          d          t          d                     d S )Nc                                                                 t                                         d          g          S )Nr   r   r   s   r3   r   z1DefaultDictVariable.reconstruct.<locals>.<lambda>2  s>    G))55kBB,,];;  r5   r"   Fr   r   )r   rl  r   r   r   r   r   r   r   r   r   r   s    `r3   r   zDefaultDictVariable.reconstruct/  s       	
 	
 	
 	$%%%%a//  	
 	
 	
 	$n..///H%%%**7333#A&&"9--	
 	
 	
 	
 	
r5   rU   rO  )rd   re   rf   r   r$   r0   r   r   rW   rj   r  r   r   staticmethodrv  rS  r.  r{  r   rT  rU  s   @r3   r5  r5    s       
 6:	/ /O_45/ / "/2	/
 / 
/ / / / / /,D , , , , , ,
C 
 
 
 
 
 
 Qo Q$ Q Q Q \Q,?#,? ,? ?#	,?
 S/)*,? 
,? ,? ,? ,? ,? ,?\-#- - 
	- - - - - -
 
 
 
 
 
 
 
r5   r5  c            
       ^    e Zd ZdZej        Zdee         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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Z xZS ) SetVariablez.We model a sets as dictionary with None valuesrl   rm   r-   Nc                 \   g }|D ]Y}t          |t          j                  r|                    |           2|                    |                                           Zt
                              |t                                                    } t                      j
        |fi | d S rU   )rI   rO   r`   r   rD   r   fromkeysr  _default_valuer|   rW   )rV   rl   rm   realized_itemsr   r   s        r3   rW   zSetVariable.__init__U  s      	6 	6D$ 1 BCC 6%%d++++ %%dllnn5555nk.H.H.J.JKK))&)))))r5   c                 B   | j         sdS g }| j         D ]r}t          |t          j                  r|j        n|}t          |d          rt          |j                  n|                                }|	                    |           sdd
                    |          z   dz   S )Nzset()r   r   ,r   )rl   rI   rO   r`   rS   r   r   r   r   r   r   )rV   rl   rs   rS   r   s        r3   r   zSetVariable.debug_reprk  s    z 	/7!EZ & &'+<+MNNUQTTTU,3B,@,@U$rx...bmmooW%%%%%(3..r5   rR   c                 N    t          | j                                                  S rU   )setrl   r   r\   s    r3   	set_itemszSetVariable.set_itemsv  s    4:??$$%%%r5   c                      t           S rU   )r%   rk   r5   r3   r  zSetVariable._default_valuez  s
     &%r5   c                 $    d | j         D             S )Nc                 @    h | ]}|j                                         S rk   r   rr   r   s     r3   	<setcomp>z'SetVariable.as_proxy.<locals>.<setcomp>  s"    888A888r5   r  r\   s    r3   r   zSetVariable.as_proxy  s    888888r5   c                     t           S rU   )r  r\   s    r3   r@   zSetVariable.python_type  s    
r5   c                 $    d | j         D             S )Nc                 @    h | ]}|j                                         S rk   r   r  s     r3   r  z1SetVariable.as_python_constant.<locals>.<setcomp>  s&    BBBa''))BBBr5   r  r\   s    r3   r   zSetVariable.as_python_constant  s    BB4>BBBBr5   r   r'   c                     |                     d | j        D                        |                    t          dt	          | j                                       d S )Nc                     g | ]	}|j         
S rk   r   r   s     r3   rC  z+SetVariable.reconstruct.<locals>.<listcomp>      666!666r5   	BUILD_SETr   )foreachr  r   r   r   r   s     r3   r   zSetVariable.reconstruct  sW    66t~6667770#dnBUBUVVVWWWWWr5   r7   r)   fnr<   c                 R   	  |d | g|D             i d |                                 D             }n`# t          $ rS}t          t          |          |t	          t          t          j        |j                                       Y d }~nd }~ww xY wt          j
        ||          S )Nc                 6    g | ]}|                                 S rk   r   r   s     r3   rC  z0SetVariable._fast_set_method.<locals>.<listcomp>  s$    @@@Q!&&((@@@r5   c                 >    i | ]\  }}||                                 S rk   r  r   s      r3   rz   z0SetVariable._fast_set_method.<locals>.<dictcomp>  s*    HHHA1a**,,HHHr5   r;   )rl   rA   r   r0   rS  mapr&   rC   r<   r$   build)rV   r7   r  r<   rm   resexcs          r3   _fast_set_methodzSetVariable._fast_set_method  s    	"@@4-$-@@@HHHHH CC  	 	 	$S		2D-=-Dch)O)O$P$P        	
 $R---s   14 
BA	BBr  c                    ddl m} ddlm} |dv ra |||          rU|                                 t
          u r:|                                 }|                     |t          ||          ||          S |dk    r |                    |t
                    j	        |g|R i |}|j
        j                            |            | j                                         | j                            |j                   t           S |dk    rl|st#          |          dk    r2t%          ||dt#          |           d	t#          |           d
           d}|d         t&                                          g}	n|dk    r|s|r2t%          ||dt#          |           d	t#          |           d
           	 | j                                        j        }	nX# t0          $ rK}
t3          t0          |t5          t7          t8          j        |
j                                       Y d }
~
nd }
~
ww xY wt=                                          |||	g|           |	S |dk    r|st#          |          dk    r2t%          ||dt#          |           d	t#          |           d
           |                    |t@          j!                  "                    || |d         gi           S |dk    rp|r"t%          ||dt#          |           d
           |                    |t@          j#                  "                    || g|d| $                                i          S |dk    r\|r"t%          ||dt#          |           d
           |                    |t@          j%                  "                    || g|i           S |dk    rp|r"t%          ||dt#          |           d
           |                    |t@          j&                  "                    || g|d| $                                i          S |dk    rp|r"t%          ||dt#          |           d
           |                    |t@          j'                  "                    || g|d| $                                i          S |dk    r\|r"t%          ||dt#          |           d
           |                    |t@          j(                  "                    || g|i           S |dk    r|st#          |          dk    r2t%          ||dt#          |           d	t#          |           d
           |                    |t@          j)                  "                    || g|d| $                                i          S |dk    r|st#          |          dk    r2t%          ||dt#          |           d	t#          |           d
           |                    |t@          j*                  "                    || g|i           S |dk    rp| +                                r\|r"t%          ||dt#          |           d
           |                    |t@          j,                  "                    || g|i           S |dk    r|st#          |          dk    r2t%          ||dt#          |           d	t#          |           d
           |d         | vrt3          t0          ||           t=                                          |d||          S |dk    r||st#          |          dk    r2t%          ||dt#          |           d	t#          |           d
           |d         | v r$t=                                          |d||          S t           S |dv rt#          |          dk    r"t%          ||dt#          |           d            tZ          j.        tZ          j/        d}|d         0                                }tc          |t&                    s1|                    |t
                    "                    ||gi           }|                    ||2                    |                    "                    || |gi           S |d!v rddddd!2                    |          }tg          |d         t&          th          j5        f          s`t9          j        d"| d#| 6                                 d$|d         6                                 d%          }t3          tn          ||g           |J |                     ||||          S |d&v rtg          |d         t&          th          j5        f          s`t9          j        d"| d#| 6                                 d$|d         6                                 d%          }t3          tn          ||g           ddddd&2                    |          }|J |                     ||||           | S |d'k    r}tg          |d         t&          th          j5        f          st9          j        d(          S |                     |d||          }t9          j        t#          |j                  dk              S |tp          v rxtg          |d         t&          th          j5        f          st9          j        tr                    S t9          j        tq          |         | j        |d         j                            S t=                                          ||||          S ))Nr   )check_constant_argsr"   r9   )
isdisjointunionintersection
differencesymmetric_differencerW   r)  z1 args and 0 kwargsr  r  r  r   r{   r  r;   r  r  z0 kwargsclsintersection_updater  r  zExpect: 0 kwargs, Actual: difference_updater  symmetric_difference_updater   removediscard)issubset
issupersetr  r  )__and__r  __xor____sub__z unsupported operand type(s) for z: 'z' and 'r  )__iand__r   __ixor____isub__rc   F):utilsr  r=   r:   r@   r  r  getattrrC   call_setr  r  r'  rl   r  r   r%   r   r    r  r  r  r{   rS   r   r   rS  r  r&   r<   r|   r.  r   set_isdisjointr3  set_intersectionpython_type_varset_intersection_update	set_unionset_differenceset_difference_updateset_symmetric_differenceset_symmetric_difference_updater-  
set_updateoperatorlegerD   r   r2   rI   r   UserDefinedSetVariablepython_type_namerB   r   NotImplemented)rV   r7   r  r<   rm   r  r:   py_typetemp_set_vtresulteopr^   mr   rr   s                   r3   r.  zSetVariable.call_method  st    	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))U]] Ta#)4yy@@CKK@@@	   !DG[7799:DDU]]  #)4yy@@CKK@@@	  *..*<*<*>*>*A   (btC0@0G,P,P'Q'Q        
 GGD6(F;;;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77&&r5$???Y Ta#)4yy@@CKK@@@	   Aw$ww**2udFCCC--///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  d1gY5U'VWW D&-}t}}@U@U@W@W}}`def`g`x`x`z`z}}}  )BcUCCCC===##B4888DDDd1gY5U'VWW D&-}t}}@U@U@W@W}}`def`g`x`x`z`z}}}  )BcUCCCC1#9/	 
 c$ii  ===RD&111KXd1gY5U'VWW 6'.u555  %;T6JJA#*3q{+;+;q+@AAA+++d1gY5U'VWW ?'.~>>>#*&t,T^T!W=NOO   ww""2tT6:::s   0G 
H$AHH$r*   c                 4    t          j        t                    S rU   )r   r*   r  r\   s    r3   r  zSetVariable.python_type_var  s    (---r5   r6   c                      t          d          )NzIllegal to getitem on a set)RuntimeError)rV   r7   r6   s      r3   r   zSetVariable.getitem_const  s     8999r5   c                     d S rU   rk   r\   s    r3   r   z)SetVariable.install_dict_keys_match_guard      r5   rO  r-   r*   rP  )rd   re   rf   rg   r   SET_CONTAINSr	  r   r$   r   rW   r   r   propertyr  r  r~  r  r   r0   r@   r   r   rS  r   r  r.  r  r   r   rT  rU  s   @r3   r  r  P  sY       88!.N*(* * 
	* * * * * *,	/C 	/ 	/ 	/ 	/ &3CD & & & X& &O & & & \&9# 9 9 9 9T    CC C C C CX X X X.#. . ?#	.
 S/)*. 
. . . .&_;#_; _; ?#	_;
 S/)*_; 
_; _; _; _; _; _;B. . . .:):0?:	: : : :
       r5   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 )OrderedSetClassVariablerm   r-   Nc                 :     t                      j        di | d S rK  )r|   rW   rL  s     r3   rW   z OrderedSetClassVariable.__init__  s&    ""6"""""r5   c                     t           S rU   r
   r\   s    r3   r   z*OrderedSetClassVariable.as_python_constant      r5   r7   r)   r  c                     |dk    r3ddl m} | j        rt          | j        |          }nd } || ||          S t	                                          ||          S )N__new__r"   )GetAttrVariable)r   )miscr  r   r   r|   r{  )rV   r7   r  r  attr_sourcer   s        r3   r{  z#OrderedSetClassVariable.var_getattr  ss    9------{ #(d;;""?4kBBBB77&&r4000r5   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  r   r    r   OrderedSetVariabler#   r  r  rI   r  r.  r|   )rV   r7   r  r<   rm   r  resolved_fnr   s          r3   r.  z#OrderedSetClassVariable.call_method  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:::r5   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$  )r   r    force_unpack_var_sequencer   r  r#   )rV   r7   r<   rm   rl   s        r3   r3  z%OrderedSetClassVariable.call_function  s     t99q==F==t99= =(+F= = =   t99>>EEG55b99E+EAQASASTTTTr5   )rd   re   rf   r   rW   r0   r   r   r   r$   r{  rS  r   r.  r   r3  rT  rU  s   @r3   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r5   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 ]a\  }}t          |j        d          rt          |j        j                  n|j                                        }|                    |           bdd                    |          z   dz   S )NzOrderedSet([])r   zOrderedSet([r  ])r   )rV   rl   r   rs   r   s        r3   r   zOrderedSetVariable.debug_repr  s    z 		;##!E
 & &1(/g(>(>UD$$$ADOODUDU  W%%%%!CHHUOO3d::r5   c                 >    t          d | j        D                       S )Nc                 @    g | ]}|j                                         S rk   r   r  s     r3   rC  z9OrderedSetVariable.as_python_constant.<locals>.<listcomp>  s&    MMM142244MMMr5   )r   r  r\   s    r3   r   z%OrderedSetVariable.as_python_constant  s!    MMdnMMMNNNr5   c                     t           S rU   r
   r\   s    r3   r@   zOrderedSetVariable.python_type  r  r5   c                     t                      S rU   )r  r\   s    r3   r  z"OrderedSetVariable.python_type_var  s    &(((r5   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_fromr   s   r3   r   z0OrderedSetVariable.reconstruct.<locals>.<lambda>  s    G,,-GVV r5   c                     g | ]	}|j         
S rk   r   r   s     r3   rC  z2OrderedSetVariable.reconstruct.<locals>.<listcomp>  r  r5   
BUILD_LISTr   r"   F)r   r  r  r   r   r   r   r   r   s    `r3   r   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<<=====r5   rO  )rd   re   rf   r   r   r   r   r   r0   r@   r  r  r   rk   r5   r3   r  r    s        
;C 
; 
; 
; 
;OJsO O O O OT*S/2    )!8 ) ) ) )> > > > > >r5   r  c            
            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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   rV   rl   r   r   s       r3   r   zFrozensetVariable.debug_repr  s    z 		/ =!EZ & &(/g(>(>UD$$$ADOODUDU  W%%%%%(3..r5   rR   c                 4    | j                                         S rU   )rl   r   r\   s    r3   r  zFrozensetVariable.set_items  s    z   r5   c                     t           S rU   )	frozensetr\   s    r3   r@   zFrozensetVariable.python_type      r5   r*   c                 4    t          j        t                    S rU   )r   r*   r  r\   s    r3   r  z!FrozensetVariable.python_type_var  s    (333r5   c                 >    t          d | j        D                       S )Nc                 @    h | ]}|j                                         S rk   r   r  s     r3   r  z7FrozensetVariable.as_python_constant.<locals>.<setcomp>  s&    LLL!$1133LLLr5   )r  r  r\   s    r3   r   z$FrozensetVariable.as_python_constant  s!    LLT^LLLMMMr5   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_globalr   s   r3   r   z/FrozensetVariable.reconstruct.<locals>.<lambda>  s-    G))..{;;  r5   c                     g | ]	}|j         
S rk   r   r   s     r3   rC  z1FrozensetVariable.reconstruct.<locals>.<listcomp>  r  r5   r  r   r"   F)r   r  r  r   r   r   r   r   s    `r3   r   zFrozensetVariable.reconstruct
  s       	
 	
 	
 	66t~666777"<S5H5HIII%a//	
 	
 	
 	
 	
r5   r7   r)   r  r<   rm   c                    |dv rt          d| d          |dk    rt          S |dv r8t                                          ||||          }t	          |j                  S t                                          ||||          S )Nr)  r{   r   r  r  r  Illegal call_method z on a frozensetrW   )r   r  r  r  )r  r%   r|   r.  r  rl   )rV   r7   r  r<   rm   r  r   s         r3   r.  zFrozensetVariable.call_method  s     IIIKdKKKLLLZ *) 
 
 
 ##BdF;;A$QW---ww""2tT6:::r5   Tc                     dS )zB
        Frozensets are immutable and hashable in Python.
        Trk   r\   s    r3   rM   z$FrozensetVariable.is_python_hashable6  s	     tr5   c                 D    t          |                                           S rU   )rY   r   r\   s    r3   r[   z!FrozensetVariable.get_python_hash<  s    D++--...r5   r^   c                     t          |t                    o)|                                 |                                k    S rU   )rI   r$   r   rb   s     r3   ra   z!FrozensetVariable.is_python_equal?  s:    uo.. H''))U-E-E-G-GG	
r5   r  rO  )rd   re   rf   r   r   r  r  r  r0   r@   r  r   r   r   rS  r$   r   r.  r   rM   rh   r[   ri   rj   ra   rT  rU  s   @r3   r  r    s       
/C 
/ 
/ 
/ 
/ !3CD ! ! ! X!T    4 4 4 4NC N N N N
 
 
 
 ;#; ; ?#	;
 S/)*; 
; ; ; ; ; ;8GDM    / / / / /
V 
 
 
 
 
 
 
 
 
r5   r  c            
            e Zd ZdefdZd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       r3   r   zDictKeySetVariable.debug_reprG  s    z 		:"?!EZ & &(/g(>(>UD$$$ADOODUDU  W%%%% 388E??2T99r5   Nc                     d S rU   rk   r\   s    r3   r   z0DictKeySetVariable.install_dict_keys_match_guardS  r  r5   r7   r)   r<   c                     d S rU   rk   rj  s      r3   r  z.DictKeySetVariable.install_dict_contains_guardW  s	     	r5   c                     | j         S rU   r   r\   s    r3   r  zDictKeySetVariable.set_items]  s
    zr5   c                     t           S rU   r   r\   s    r3   r@   zDictKeySetVariable.python_typea  r  r5   c                 z    t                               d | j        D             d                                           S )Nc                 @    h | ]}|j                                         S rk   r   r  s     r3   r  z8DictKeySetVariable.as_python_constant.<locals>.<setcomp>f  s&    ???1QT$$&&???r5   )r   r  r  r   r\   s    r3   r   z%DictKeySetVariable.as_python_constantd  s6    }}?????
 

$&&	r5   r  rm   c                 z    |dv rt          d| d          t                                          ||||          S )Nr  r  z on a dict_keys)r  r|   r.  )rV   r7   r  r<   rm   r   s        r3   r.  zDictKeySetVariable.call_methodi  sI     IIIKdKKKLLLww""2tT6:::r5   rP  )rd   re   rf   r   r   r   rS  r$   r  r  r   r  r0   r@   r   r   r.  rT  rU  s   @r3   r  r  F  s9       
:C 
: 
: 
: 
:   )15o1F	    3    XT    C    
	;#	; 	; ?#		;
 S/)*	; 
	; 	; 	; 	; 	; 	; 	; 	; 	; 	;r5   r  c            
           e Zd ZU dZdZee         ed<   dede	ddf fdZ
ede	fd            Zedee         fd	            Zd
ddee         fdZd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 xZS )DictViewVariablezu
    Models _PyDictViewObject

    This is an "abstract" class. Subclasses will override kv and the items method
    NkvrX  rm   r-   c                      t                      j        di | | j        dv sJ t          |t                    sJ || _        d S )N)r   r   rl   rk   )r|   rW   r  rI   rO   rX  rZ  s      r3   rW   zDictViewVariable.__init__~  sV    ""6"""w55555'#455555r5   c                 b    | j         J  t          | j        j        | j                               S rU   )r  r  rX  rl   r\   s    r3   
view_itemszDictViewVariable.view_items  s/    w"""3wt|)4733555r5   c                     t           rU   )NotImplementedErrorr\   s    r3   view_items_vtzDictViewVariable.view_items_vt  s
     "!r5   r7   r)   c                     | j         S rU   )r  rD  s     r3   r7  z$DictViewVariable.unpack_var_sequence  s    !!r5   r   r'   c                     | j         J  || j                   |                    | j                    |                    d           d S )Nr   )r  rX  r   r.  r   s     r3   r   zDictViewVariable.reconstruct  sR    w"""DG$$$Ar5   r  c                     | j         J ||                                 j        v rt          j        d          S t          j        d          S )NTF)r  r@   r1   r&   rC   )rV   r7   r  s      r3   rI  z!DictViewVariable.call_obj_hasattr  sN     w"""4##%%...#*4000&u---r5   r<   c                 >   |dk    r| j                             ||||          S |dk    r$ddlm}  || j        t                                S |dk    r&t          j        |                                           S t                                          ||||          S )Nr  r!  r"   r"  r$  __repr__)
rX  r.  r6  r#  r  r#   r&   rC   r   r|   rV   r7   r  r<   rm   r#  r   s         r3   r.  zDictViewVariable.call_method  s     9<++BdFCCCZ333333''"2B2D2D    Z#*4??+<+<===ww""2tT6:::r5   rO  )rd   re   rf   rg   r  r   r   __annotations__rO   r   rW   r  r  rS  r$   r  r7  r   r&   rI  r   r.  rT  rU  s   @r3   r  r  u  s          B 1 S T       6C 6 6 6 X6 "tO4 " " " X"
"&= "$BW " " " "   .).14.	. . . .;#; ; ?#	;
 S/)*; 
; ; ; ; ; ; ; ; ; ;r5   r  c            
            e Zd ZdZedee         fd            Zede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 )r+  r   r-   c                 *    t          | j                  S rU   )r  r  r\   s    r3   r  zDictKeysVariable.set_items  s    4?###r5   c                 $    d | j         D             S )Nc                     g | ]	}|j         
S rk   r   r   s     r3   rC  z2DictKeysVariable.view_items_vt.<locals>.<listcomp>  s    ......r5   r  r\   s    r3   r  zDictKeysVariable.view_items_vt  s     /.do....r5   c                     t           S rU   r  r\   s    r3   r@   zDictKeysVariable.python_type  r  r5   c                    | j         sdS g }| j         D ]^}t          |j        d          rt          |j        j                  n|j                                        }|                    |           _dd                    |          z   dz   S r  r  r   rS   r   r   r   r   r   r  s       r3   r   zDictKeysVariable.debug_repr  s     		:"?!E_ & &(/g(>(>UD$$$ADOODUDU  W%%%% 388E??2T99r5   r7   r)   r  r<   rm   c                    |dk    r| j                             ||||          S |dv r:t          | j        |          } ||d         j                  }t	          |          S |t
          v rst          |d         t          t          f          st          j	        t                    S t          j	        t          |         | j        |d         j                            S t                                          ||||          S )Nr   )r  r  r  r   r  r  r  r  r   )rX  r.  r  r  r  r   rI   r+  r&   rC   r  r|   )rV   r7   r  r<   rm   r  r  r   s          r3   r.  zDictKeysVariable.call_method  s     >!!<++BdFCCC 	
 	
 	
 --A$q'#$$Aq>>!)))d1g5E'FGG ?'.~>>>#*&t,T^T!W=NOO   ww""2tT6:::r5   )rd   re   rf   r  r  r  r$   r  rS  r  r0   r@   r   r   r   r.  rT  rU  s   @r3   r+  r+    s       	B$3/ $ $ $ X$ /tO4 / / / X/T    
:C 
: 
: 
: 
:;#; ; ?#	;
 S/)*; 
; ; ; ; ; ; ; ; ; ;r5   r+  c                   R    e Zd ZdZedee         fd            ZdefdZ	de
fdZdS )r,  r   r-   c                 *    t          | j                  S rU   )rS  r  r\   s    r3   r  z DictValuesVariable.view_items_vt  s    DO$$$r5   c                     t           S rU   )r   r\   s    r3   r@   zDictValuesVariable.python_type  s    r5   c                     | j         sdS g }| j         D ]O}t          |d          rt          |j                  n|                                }|                    |           Pdd                    |          z   dz   S )Nzdict_values([])r   zdict_values([r  r  )r  r   r   r   r   r   r   )rV   rl   rs   r   s       r3   r   zDictValuesVariable.debug_repr  s     	<$$!E_ & &+21g+>+>R$qw---ALLNNW%%%%"SXXe__4t;;r5   N)rd   re   rf   r  r  rS  r$   r  r0   r@   r   r   rk   r5   r3   r,  r,    sy        	B%tO4 % % % X%T    <C < < < < < <r5   r,  c            
            e Zd ZdZede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ded         fdZ xZS )r*  rl   r-   c                 $    d | j         D             S )Nc                 J    g | ] \  }}t          j        |j        |g          !S rk   )r   r0  rS   r   s      r3   rC  z3DictItemsVariable.view_items_vt.<locals>.<listcomp>  s-    OOOtq!	'q	22OOOr5   r+  r\   s    r3   r  zDictItemsVariable.view_items_vt  s     POtOOOOr5   c                     t           S rU   )r   r\   s    r3   r@   zDictItemsVariable.python_type  r  r5   c                    | j         sdS g }| j         D ]\  }}t          |j        d          rt          |j        j                  n|j                                        }t          |d          rt          |j                  n|                                }|                    d| d| d           dd                    |          z   dz   S )	Nzdict_items([])r   (r   rq  zdict_items([r  r  r.  r   s         r3   r   zDictItemsVariable.debug_repr  s     
	;##!E 8 81(/g(>(>UD$$$ADOODUDU  ,31g+>+>R$qw---ALLNN666G6667777!CHHUOO3d::r5   r7   r)   r  r<   rm   c                    |dk    rt          |          dk    r"t          ||dt          |           d           t          |d         t                    r)| j                            |d|d         j        gi           S t          j        d          S |dk    r$ddlm	}  || j
        t                      	          S t                                          ||||          S )
Nrc   r"   r  r  r   Fr!  r"  r$  )r   r    rI   r*  rX  r.  r&   rC   r6  r#  r  r#   r|   r%  s         r3   r.  zDictItemsVariable.call_method  s     84yyA~~#Bh3t998K8K8KLLL$q'#455 U|//HtAw>OQSTTT#*5111Z333333''"2B2D2D    ww""2tT6:::r5   Fc                     dS )zC
        Dictionary item views are not hashable in Python.
        Frk   r\   s    r3   rM   z$DictItemsVariable.is_python_hashable4  rN  r5   )rd   re   rf   r  r  rS  r$   r  r0   r@   r   r   r   r.  r   rM   rT  rU  s   @r3   r*  r*    s       	BPtO4 P P P XPT    ;C ; ; ; ;;#; ; ?#	;
 S/)*; 
; ; ; ; ; ;.GEN        r5   r*  rU   )Jrg   r   r  r  r\  collections.abcr   r   typingr   r   r   r   r	   torch.utils._ordered_setr   r%  r   r   r   bytecode_transformationr   r   r   r   r  r   r   guardsr   r   r   r   r   r   r  r   r   r   r   r   r    r!   r   r#   r$   constantr%   r&   torch._dynamo.codegenr'   r>   r)   torch._dynamo.variables.builtinr*   rs  r+   rj   r4   rF   rL   rO   rW  rg  r5  r  r  r  r  r  r  r+  r,  r*  rk   r5   r3   <module>rD     s   (           . . . . . . . . ? ? ? ? ? ? ? ? ? ? ? ? ? ? / / / / / / 6 6 6 6 6 6 6 6 6 6            : 9 9 9 9 9 9 9 0 0 0 0 0 0 0 0 I I I I I I I I I I                  4 3 3 3 3 3 3 3 > > > > > > > >  0//////DDDDDD??????//////>C >D > > > >
 CG 	&'>?	   4"? "t " " " "I I I I I I I IXJ2 J2 J2 J2 J2? J2 J2 J2Z     1   x
 x
 x
 x
 x
+ x
 x
 x
|z z z z z# z z zz	@U @U @U @U @Uo @U @U @UF> > > > > > > >@S
 S
 S
 S
 S
 S
 S
 S
l,; ,; ,; ,; ,; ,; ,; ,;^<; <; <; <; <; <; <; <;~8; 8; 8; 8; 8;' 8; 8; 8;v< < < < <) < < <,3 3 3 3 3( 3 3 3 3 3r5   