
    sgA                     >   d dl Z d dlZd dlZd dlmZ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mZmZ ddlmZmZ dd	lmZ erd d
lmZ 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      Z! G d de      Z" G d de"      Z#y)    N)DictListOptionalTYPE_CHECKINGUnion   )	polyfills	variables)create_call_functioncreate_instruction)handle_observed_exceptionObservedUserStopIterationraise_observed_exceptionunimplemented	UserError   )MutableLocalVariableTracker)ConstantVariable)InstructionTranslatori  c                   N     e Zd Zd fdZdefdZd Z	 	 	 	 	 	 	 	 d fdZ xZS )ItertoolsVariablereturnc                 2    t        |   di | || _        y N )super__init__value)selfr   kwargs	__class__s      O/var/www/html/venv/lib/python3.12/site-packages/torch/_dynamo/variables/iter.pyr   zItertoolsVariable.__init__   s    "6"
    c                 "    d| j                    dS )NzItertoolsVariable()r   r    s    r#   __repr__zItertoolsVariable.__repr__!   s    #DJJ<q11r$   c                     | j                   S Nr'   r(   s    r#   as_python_constantz$ItertoolsVariable.as_python_constant$   s    zzr$   c                    | j                   t        j                  u rst        fd|D              r|D cg c]  }|j	                         }}g }t        j                  | D ]/  }|j                  t        j                  t        |                   1 t        j                  |t                     S | j                   t        j                  u rddlm} t        d j                         D              r9t!        ddj#                  t%        j                               dd	hz
                j'                  d      }	t)        |      d
v r|d   j+                        r|d   j	                        }
d	v rt)        |      dk(  rd	   j,                  }ndt)        |      dk(  r|d   j,                  }nFt)        |      dk(  r! |t.        j0                        j,                  }nt!        d       nt!        d       g }|	|j                  |	       
D ]%  }|	|}	n	  |	|gi       }	|j                  |	       ' t        j                  |t                     S | j                   t        j4                  u rǉst)        |      dk(  r|d   j+                        r|d   j7                         r|d   j	                        }|d   j9                         }g }t        j4                  ||      D ]/  }|j                  t        j                  t        |                   1 t        j                  |t                     S | j                   t        j:                  u rt        d j                         D              r8t!        ddj#                  t%        j                               dhz
                d t)        |      dk(  r6|d   j+                        r"|d   j	                        }
dv rfdnd }nt!        d       g }	 t        j:                  
      D ]  \  }}|j                  t        j                  t        j<                  j?                  |      rt        j<                  jA                  |      n|t        j                  t        |      t                     gt                             	 t        j                  |t                     S | j                   t        jB                  u rbt)        |      dk  rt        jD                  |dt               iS ddl#m$} jK                  |jA                  tL        jB                        |      S | j                   t        jN                  u rt        jP                  |dt               iS | j                   t        jR                  u rt        jT                  |dt               iS | j                   t        jV                  u r4t        jX                  tL        jV                        j-                  |      S | j                   t        jZ                  u r4t        jX                  tL        jZ                        j-                  |      S t\        | Y  |      S c c}w # t2        $ r!}t!        d d| |	 d|       Y d }~}d }~ww xY w# t2        $ r}t!        d|       Y d }~d }~ww xY w)Nc              3   @   K   | ]  }|j                          y wr+   )has_unpack_var_sequence).0argtxs     r#   	<genexpr>z2ItertoolsVariable.call_function.<locals>.<genexpr>0   s     DC//3Ds   )mutable_localr   )BuiltinVariablec              3   $   K   | ]  }|d v 
 yw))initialfuncNr   )r0   keys     r#   r3   z2ItertoolsVariable.call_function.<locals>.<genexpr>:   s     Kc311Ks   z-Unsupported kwargs for itertools.accumulate: ,r7   r8   )r   r   r   r   zDitertools.accumulate can only accept one of: `func` kwarg, pos 2 argz.Unsupported arguments for itertools.accumulatezOUnexpected failure in invoking function during accumulate. Failed running func (r&   )from_excc              3   &   K   | ]	  }|d k7    yw)r9   Nr   )r0   kws     r#   r3   z2ItertoolsVariable.call_function.<locals>.<genexpr>s   s     722;7s   z*Unsupported kwargs for itertools.groupby: r9   c                     t        | t        j                        r| j                         S t        | t        j                        r| j                         S t        dt        t        |             z          y )Nz,Unsupported key type for itertools.groupby: )	
isinstancer
   SymNodeVariableevaluate_exprr   r,   r   strtyper9   s    r#   retrieve_const_keyz;ItertoolsVariable.call_function.<locals>.retrieve_const_keyy   sY    c9#<#<=,,..Y%?%?@1133!FTRUYWr$   c                 V     j                  d      j                  | gi             S )Nr9   )getcall_function)xr!   rF   r2   s    r#   <lambda>z1ItertoolsVariable.call_function.<locals>.<lambda>   s-    . &

5 1 ? ?QC L r$   z+Unsupported arguments for itertools.groupbyrE   z1Unexpected failure when calling itertools.groupbyr4   )SourcelessBuilder)/r   	itertoolsproductallunpack_var_sequenceappendr
   TupleVariablelistListIteratorVariabler   
accumulatebuiltinr5   anykeysr   joinsetrH   lenr/   rI   operatoradd	Exceptioncombinationsis_python_constantr,   groupbyr   
is_literalcreaterepeatRepeatIteratorVariablebuilderrL   inline_user_function_returnr	   countCountIteratorVariablecycleCycleIteratorVariable	dropwhileUserFunctionVariablezip_longestr   )r    r2   argsr!   r1   seqsitemsitemr5   accseqr8   eiterablerkeyfuncresultkvrL   rF   r"   s    ` `                @r#   rI   zItertoolsVariable.call_function'   s    JJ)+++DtDD;?@CC++B/@D@E!))40 BY44T$Z@AB11%|~VVZZ9///0KV[[]KKCxxFKKM 2i5H HIJL
 **Y'C4yF"tAw'F'Fr'J1g11"5V#D	Q!&>77DY!^700DY!^*8<<8FFD!^ NOES! ";C"2T{B7 S!" 11%|~VVJJ)000D	QQ//3Q**,Aw2226HQ**,AE!..x; BY44T$Z@AB11%|~VVZZ9,,,777@xxFKKM 2eW <=>@
 4yA~$q'"A"A""E1g11"5    KLF%--cw? DAqMM!// $-#=#=#H#H#K !* : : A A! D%& ) > >$(G<>!"	 +7.
& 11&WWZZ9+++4y1} 77)5  311!((Y-=-=>f  ZZ9??*22DWWWZZ9??*22DWWWZZ9...11)2E2EFTTD&  ZZ900011)2G2GHVVD&  7(T6::_ AT % %mnrmsstuytz{~z  @A  B%& N  G s6   Z"ZB3Z3 	Z0Z++Z03	[<[[r   N)r2   r   ro   zList[VariableTracker]r!   zDict[str, VariableTracker]r   r   )	__name__
__module____qualname__r   rC   r)   r,   rI   __classcell__r"   s   @r#   r   r      sO    2# 2Z;#Z; &Z; -	Z;
 
Z; Z;r$   r   c                   D     e Zd Zd fdZd Zdee   fdZdefdZ	 xZ
S )IteratorVariabler   c                 $    t        |   di | y r   )r   r   )r    r!   r"   s     r#   r   zIteratorVariable.__init__   s    "6"r$   c                     t        d       y )Nzabstract method, must implement)r   r    r2   s     r#   next_variablezIteratorVariable.next_variable   s    78r$   c                     g }	 	 |j                  | j                  |             "# t        $ r t        |       Y |S w xY wr+   )rQ   r   r   r   )r    r2   ry   s      r#   force_unpack_var_sequencez*IteratorVariable.force_unpack_var_sequence   sL    d0045  - )"-s    & >>c                      y)NTr   r   s     r#   has_force_unpack_var_sequencez.IteratorVariable.has_force_unpack_var_sequence   s    r$   r|   )r}   r~   r   r   r   r   r   r   boolr   r   r   s   @r#   r   r      s*    #9tO/D 4 r$   r   c                   4     e Zd Zdeddf fdZd Zd Z xZS )re   rr   r   Nc                 2    t        |   di | || _        y r   )r   r   rr   )r    rr   r!   r"   s      r#   r   zRepeatIteratorVariable.__init__   s    "6"	r$   c                     | j                   S r+   )rr   r   s     r#   r   z$RepeatIteratorVariable.next_variable   s    yyr$   c                     j                  fd        | j                         j                  t        dd             y )Nc                  n     j                   j                  t               j                  d      g      S )Nrd   extend_outputcreate_load_python_modulerM   create_load_attrcodegens   r#   rK   z4RepeatIteratorVariable.reconstruct.<locals>.<lambda>   s3    G))55i@,,X6 r$   r   F)add_push_nullrr   r   r   r    r   s    `r#   reconstructz"RepeatIteratorVariable.reconstruct   s:    	
 			21e<=r$   )r}   r~   r   r   r   r   r   r   r   s   @r#   re   re      s     _ 4 

>r$   re   c                   :     e Zd Zddededdf fdZd Zd Z xZS )	ri   rr   stepr   Nc                     t        |   di | t        |t              st	        j
                  |      }t        |t              st	        j
                  |      }|| _        || _        y r   )r   r   r@   r   r   rc   rr   r   )r    rr   r   r!   r"   s       r#   r   zCountIteratorVariable.__init__   sU    "6"$0#**40D$0#**40D		r$   c                     | j                   sJ | j                  }|j                  j                  j	                  |        | j                  j                  |d| j                  gi       | _        |S )N__add__)r4   rr   outputside_effectsmutationcall_methodr   )r    r2   old_items      r#   r   z#CountIteratorVariable.next_variable   sY    !!!!99
		''-II))"i$))bI	r$   c                     j                  fd        | j                          | j                         j                  t	        dd             y )Nc                  n     j                   j                  t               j                  d      g      S )Nrh   r   r   s   r#   rK   z3CountIteratorVariable.reconstruct.<locals>.<lambda>  s3    G))55i@,,W5 r$   r   F)r   rr   r   r   r   r   s    `r#   r   z!CountIteratorVariable.reconstruct  sF    	
 					21e<=r$   )r   r   )r}   r~   r   intr   r   r   r   r   s   @r#   ri   ri      s'    S C $ >r$   ri   c                   N     e Zd Z	 	 	 d	dedee   dedee   ddf
 fdZd Z	 xZ
S )
rk   Niteratorsavedsaved_indexrr   r   c                 d    |g }t        |   di | || _        || _        || _        || _        y r   )r   r   r   r   r   rr   )r    r   r   r   rr   r!   r"   s         r#   r   zCycleIteratorVariable.__init__  s<     =E"6" 
&	r$   c                 
   | j                   sJ | j                  	 | j                  j                  |      }t        | j                        t
        kD  rt        d       |j                  j                  j                  |        | j                  j                  |       || _        | j                  | j                  |      S | j                  S t        | j                        dkD  r[|j                  j                  j                  |        | j                  dz   t        | j                        z  | _        | j                  S t        t         ||        y # t        $ r& t        |       d | _        | j                  |      cY S w xY w)Nz4input iterator to itertools.cycle has too many itemsr   r   )r4   r   r   r[   r   MAX_ITERATOR_LIMITr   r   r   r   rQ   rr   r   r   r   r   StopIteration)r    r2   new_items      r#   r   z#CycleIteratorVariable.next_variable%  s9   !!!!==$.==66r:tzz?%77!N 		&&//5

!!(+$	99$--b11yy 
 _q II""++D1 $ 0 01 4DJJGD99$]B= - .)"- $))"--.s   B%E E ,FF)Nr   N)r}   r~   r   r   r   r   r   r   r   r   r   r   s   @r#   rk   rk     sR     (,*." O$ 	
 ' 
 >r$   rk   c                        e Zd ZdZddhej
                  Z	 ddeeee   ef      de	ddf fdZ
d Zde	fd	Zded
   fdZd Zd Zd Z xZS )ZipVariablez$
    Represents zip(*iterables)
    indexstrict	iterablesr   Nc                 r    t        |   di | t        |t              sJ || _        d| _        || _        y )Nr   r   )r   r   r@   rS   r   r   r   )r    r   r   r!   r"   s       r#   r   zZipVariable.__init__L  s:     	"6")T***"
r$   c                     t         S r+   )zipr(   s    r#   python_typezZipVariable.python_typeY      
r$   c                 @    t        fd| j                  D              S )Nc              3   d   K   | ]'  }t        |t              xs |j                         ) y wr+   )r@   rS   r/   )r0   itr2   s     r#   r3   z6ZipVariable.has_unpack_var_sequence.<locals>.<genexpr>]  s3      
 r4 BB$>$>r$BB
s   -0)rO   r   r   s    `r#   r/   z#ZipVariable.has_unpack_var_sequence\  s!     
nn
 
 	
r$   r   c                    | j                  |      sJ g }| j                  D ]Q  }t        |t              r|j	                  || j
                  d         2|j	                  |j                  |             S | j                  rd| j                  ini }t        |i |}|D cg c]   }t        j                  t        |            " c}S c c}w )Nr   )r/   r   r@   rS   rQ   r   rP   r   r   r
   rR   )r    r2   r   r   r!   zippedvars          r#   rP   zZipVariable.unpack_var_sequenceb  s    ++B///	.. 	=B"d#  DJJL!12  !7!7!;<		=
 -1KK(DKK(Ri*6*>DEs	''S	2EEEs   !%C	c                 <     j                   sJ  j                  g } fd}	 t         j                        D ]  \  }}|j	                   ||              	 j                  j                  j                           xj                  dz  c_        t        j                  |      S # t
        $ rf  j                  rXdk(  r7 j                  D ]'  }	  ||       n# t
        $ r t               Y #w xY w n  t               t        t        d      d  w xY w)Nc                     t        | t              r$t        |       k\  rt        t               |    S | j                        S r+   )r@   rS   r[   r   r   r   )r   	old_indexr    r2   s    r#   get_itemz+ZipVariable.next_variable.<locals>.get_items  s@    "d#B',]BE)}$''++r$   r   z3zip() has one argument of len differing from othersr   )r4   r   	enumerater   rQ   r   r   r   r   
ValueErrorr   r   r   r
   rR   )r    r2   ro   r   idxr   r   s   ``    @r#   r   zZipVariable.next_variablen  s   !!!!JJ		,	$T^^4 *RHRL)*0 			''-

a
&&t,,1 ) 	{{!8"nn 
%$RL8 %5b9$% 
 )"-I  )	s/   4B, ,)DCDC63D5C66%Dc           	          | j                   D ]`  }t        |t              rF|| j                  d  }|j	                  |       |j                  t        dt        |                   Y ||       b y )NBUILD_TUPLEr1   )r   r@   rS   r   foreachappend_outputr   r[   )r    r   r   remaining_itemss       r#   reconstruct_itemszZipVariable.reconstruct_items  sa    .. 	B"d#"$TZZ\"20%%&}#o:NO 	r$   c           	         j                  fdd       | j                         j                  t        dt	        | j
                                     t        j                  dk\  rTj                  j                  d      j                  | j                        t        dd	      t        d
d	      g       y j                  t        d
d             y )Nc                  (     j                  dd      S )Nbuiltinsr   load_import_fromr   s   r#   rK   z)ZipVariable.reconstruct.<locals>.<lambda>      G,,Z? r$   Tcall_function_exr   r   )   
   r   	BUILD_MAPr   CALL_FUNCTION_EXr   )r   r   r   r   r[   r   sysversion_infor   create_load_constr   r   s    `r#   r   zZipVariable.reconstruct  s    ?RV 	 	
 	w'}#dnn2EF	
 w&!!--h7--dkk:&{:&'9qA	 !!"45GQ"OPr$   )F)r}   r~   r   __doc__r   _nonvar_fieldsr   r   r   r   r   r   r/   rP   r   r   r   r   r   s   @r#   r   r   A  s    
 	 
	(	(N d?3_DEF 
 

T 

F.?)@ 
F(-T	Qr$   r   c                   h     e Zd ZdZdedeeee   ef      ddf fdZd Zde	fdZ
 fd	Zd
 Z xZS )MapVariablez(
    Represents map(fn, *iterables)
    fnr   r   Nc                 4    t        |   |fi | || _        y r+   )r   r   r   )r    r   r   r!   r"   s       r#   r   zMapVariable.__init__  s     	-f-r$   c                     t         S r+   )mapr(   s    r#   r   zMapVariable.python_type  r   r$   c                      y)NFr   r   s     r#   r/   z#MapVariable.has_unpack_var_sequence  s    r$   c                 p    t         |   |      }| j                  j                  ||j                  i       S r+   )r   r   r   rI   rq   )r    r2   ro   r"   s      r#   r   zMapVariable.next_variable  s/    w$R(ww$$RR88r$   c                     j                  fdd        | j                         | j                         j                  t	        dt        | j                        dz         t	        dd      g       y )	Nc                  (     j                  dd      S )Nr   r   r   r   s   r#   rK   z)MapVariable.reconstruct.<locals>.<lambda>  r   r$   Tr   r   r   r   r   r   )r   r   r   r   r   r[   r   r   s    `r#   r   zMapVariable.reconstruct  sn    ?RV 	 	
 	w'"=c$..6IA6MN"#51=	
r$   )r}   r~   r   r   r   r   r   r   r   r   r/   r   r   r   r   s   @r#   r   r     sX     d?3_DEF
 
T 9
r$   r   )$rM   r\   r   typingr   r   r   r   r    r	   r
   bytecode_transformationr   r   excr   r   r   r   r   baser   r   constantr   torch._dynamo.symbolic_convertr   r   r   r   re   ri   rk   r   r   r   r$   r#   <module>r      s      
 = = # N  0 & D   e; e;P 6>- >,>, >>*>, *>ZtQ" tQn#
+ #
r$   