
    קgA                     j   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#dS )    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returnNc                 H     t                      j        di | || _        d S N )super__init__value)selfr   kwargs	__class__s      X/var/www/html/ai-engine/env/lib/python3.11/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    1DJ1111r$   c                     | j         S Nr'   r(   s    r#   as_python_constantz$ItertoolsVariable.as_python_constant$   s
    zr$   txr   argsList[VariableTracker]r!   Dict[str, VariableTracker]r   c                    | j         t          j        u rst          fd|D                       rwfd|D             }g }t          j        | D ]6}|                    t          j        t          |                               7t          j        |t                                S | j         t          j
        u rddlm} t          d                                 D                       rIt          dd                    t#                                                    d	d
hz
                                            d	          }t'          |          dv r|d                                       r|d                                       }	d
v r!t'          |          dk    rd
         j        }
nnt'          |          dk    r|d         j        }
nMt'          |          dk    r |t.          j                  j        }
nt          d           nt          d           g }||                    |           |	D ]^}||}nB	  |
||gi           }n1# t2          $ r$}t          d|
 d| | d|           Y d }~nd }~ww xY w|                    |           _t          j        |t                                S | j         t          j        u rst'          |          dk    r|d                                       r|d                                         r|d                                       }|d                                         }g }t          j        ||          D ]6}|                    t          j        t          |                               7t          j        |t                                S | j         t          j        u rt          d                                 D                       rHt          dd                    t#                                                    dhz
                        d t'          |          dk    rD|d                                       r)|d                                       }	dv rfdnd }nt          d           g }	 t          j        |	|          D ]\  }}|                    t          j        t
          j                            |          rt
          j                             |          n|t          j        t          |          t                                gt                                           n(# t2          $ r}t          d|           Y d }~nd }~ww xY wt          j        |t                                S | j         t          j!        u rkt'          |          dk     rt          j"        |dt                      iS ddl#m$} %                    |                     tL          j!                  |          S | j         t          j'        u rt          j(        |dt                      iS | j         t          j)        u rt          j*        |dt                      iS | j         t          j+        u r3t          j,        tL          j+                                      |          S | j         t          j-        u r3t          j,        tL          j-                                      |          S t]                                          |          S )Nc              3   B   K   | ]}|                               V  d S r+   )has_unpack_var_sequence.0argr-   s     r#   	<genexpr>z2ItertoolsVariable.call_function.<locals>.<genexpr>0   s1      DDC//33DDDDDDr$   c                 :    g | ]}|                               S r   )unpack_var_sequencer4   s     r#   
<listcomp>z3ItertoolsVariable.call_function.<locals>.<listcomp>2   s'    @@@CC++B//@@@r$   )mutable_localr   )BuiltinVariablec              3      K   | ]}|d vV  	dS ))initialfuncNr   )r5   keys     r#   r7   z2ItertoolsVariable.call_function.<locals>.<genexpr>:   s(      KKc311KKKKKKr$   z-Unsupported kwargs for itertools.accumulate: ,r>   r?   )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 k    V  dS )r@   Nr   )r5   kws     r#   r7   z2ItertoolsVariable.call_function.<locals>.<genexpr>s   s&      7722;777777r$   z*Unsupported kwargs for itertools.groupby: r@   c                    t          | t          j                  r|                                 S t          | t          j                  r|                                 S t          dt          t          |                     z              d S )Nz,Unsupported key type for itertools.groupby: )	
isinstancer
   SymNodeVariableevaluate_exprr   r,   r   strtyper@   s    r#   retrieve_const_keyz;ItertoolsVariable.call_function.<locals>.retrieve_const_keyy   s    c9#<== ,,...Y%?@@ 11333!FTRUYYW    r$   c                 l                          d                              | gi                     S )Nr@   )getcall_function)xr!   rM   r-   s    r#   <lambda>z1ItertoolsVariable.call_function.<locals>.<lambda>   s;    .. &

5 1 1 ? ?QC L L  r$   z+Unsupported arguments for itertools.groupbyrL   z1Unexpected failure when calling itertools.groupbyr;   )SourcelessBuilder)/r   	itertoolsproductallappendr
   TupleVariablelistListIteratorVariabler   
accumulatebuiltinr<   anykeysr   joinsetrO   lenr3   r9   rP   operatoradd	Exceptioncombinationsis_python_constantr,   groupbyr   
is_literalcreaterepeatRepeatIteratorVariablebuilderrS   inline_user_function_returnr	   countCountIteratorVariablecycleCycleIteratorVariable	dropwhileUserFunctionVariablezip_longestr   )r    r-   r.   r!   seqsitemsitemr<   accseqr?   eiterablerkeyfuncresultkvrS   rM   r"   s    ` `               @r#   rP   zItertoolsVariable.call_function'   s    J)+++ ,DDDDtDDDDD , A@@@4@@@DE!)40 B BY4T$ZZ@@AAAA1%|~~VVVVZ9///000000KKV[[]]KKKKK LxxFKKMM 2 2i5H HIIL L  
 **Y''C4yyF""tAw'F'Fr'J'J"1g11"55V##D		Q!&>7DDYY!^^70DDYY!^^*?8<88FDD!^    NOOOES!!! " ";CC"d2T{B77$   % Bnr  B  Buy  B{~  B  B  B%&        
 S!!!!1%|~~VVVVJ)000 1D		QQ//33 Q**,,  Aw22266HQ**,,AE!.x;; B BY4T$ZZ@@AAAA1%|~~VVVVZ9,,,7777777 @xxFKKMM 2 2eW <==@ @  
   4yyA~~$q'"A"A""E"E~1g11"55          KLLLF%-cw???  DAqMM!/ $-#=#H#H#K#K!'	 : A A! D D D%& ) >$(GG<>>!" !" !"	 +7..
 
 
       G        
 1&WWWWZ9+++4yy1}} 7)5   32222211!((Y-=>>f   Z9?**2DWWWWZ9?**2DWWWWZ9...1)2EFFTTD&   Z90001)2GHHVVD&   77((T6:::s1   I
J
&JJ
:B>U9 9
VVVr   N)r-   r   r.   r/   r!   r0   r   r   )	__name__
__module____qualname__r   rJ   r)   r,   rP   __classcell__r"   s   @r#   r   r      s             2# 2 2 2 2  Z;#Z; &Z; -	Z;
 
Z; Z; Z; Z; Z; Z; Z; Z; Z; Z;r$   r   c                   J     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   Nc                 :     t                      j        di | d S r   )r   r   )r    r!   r"   s     r#   r   zIteratorVariable.__init__   s&    ""6"""""r$   c                 $    t          d           d S )Nzabstract method, must implement)r   r    r-   s     r#   next_variablezIteratorVariable.next_variable   s    788888r$   c                     g }	 	 |                     |                     |                     n# t          $ r t          |           Y nw xY wJ|S r+   )rW   r   r   r   )r    r-   r~   s      r#   force_unpack_var_sequencez*IteratorVariable.force_unpack_var_sequence   sn    	d00445555,   )"---	 s   (. A
	A
c                     dS )NTr   r   s     r#   has_force_unpack_var_sequencez.IteratorVariable.has_force_unpack_var_sequence   s    tr$   r   )r   r   r   r   r   r   r   r   boolr   r   r   s   @r#   r   r      s        # # # # # #9 9 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 )rk   rw   r   Nc                 H     t                      j        di | || _        d S r   )r   r   rw   )r    rw   r!   r"   s      r#   r   zRepeatIteratorVariable.__init__   s+    ""6"""			r$   c                     | j         S r+   )rw   r   s     r#   r   z$RepeatIteratorVariable.next_variable   s
    yr$   c                                          fd            | j                                       t          dd                     d S )Nc                                                                 t                                         d          g          S )Nrj   extend_outputcreate_load_python_modulerT   create_load_attrcodegens   r#   rR   z4RepeatIteratorVariable.reconstruct.<locals>.<lambda>   s>    G))55i@@,,X66  r$   r   F)add_push_nullrw   r   r   r    r   s    `r#   reconstructz"RepeatIteratorVariable.reconstruct   sh       	
 	
 	
 		21e<<=====r$   )r   r   r   r   r   r   r   r   r   s   @r#   rk   rk      si        _ 4      
  
> 
> 
> 
> 
> 
> 
>r$   rk   c                   :     e Zd Zd
dededdf fdZd Zd	 Z xZS )ro   r   r   rw   stepr   Nc                      t                      j        di | t          |t                    st	          j        |          }t          |t                    st	          j        |          }|| _        || _        d S r   )r   r   rG   r   r   ri   rw   r   )r    rw   r   r!   r"   s       r#   r   zCountIteratorVariable.__init__   sv    ""6"""$00 	1#*400D$00 	1#*400D				r$   c                     | j         sJ | j        }|j        j                            |            | j                            |d| j        gi           | _        |S )N__add__)r;   rw   outputside_effectsmutationcall_methodr   )r    r-   old_items      r#   r   z#CountIteratorVariable.next_variable   sW    !!!!9
	''---I))"i$)bII	r$   c                                          fd            | j                    | j                                       t	          dd                     d S )Nc                                                                 t                                         d          g          S )Nrn   r   r   s   r#   rR   z3CountIteratorVariable.reconstruct.<locals>.<lambda>  s>    G))55i@@,,W55  r$   r   F)r   rw   r   r   r   r   s    `r#   r   z!CountIteratorVariable.reconstruct  sz       	
 	
 	
 			21e<<=====r$   )r   r   )r   r   r   intr   r   r   r   r   s   @r#   ro   ro      su         S C $        > > > > > > >r$   ro   c                   Z     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 )rq   Nr   iteratorsavedsaved_indexrw   r   c                 z    |g } t                      j        di | || _        || _        || _        || _        d S r   )r   r   r   r   r   rw   )r    r   r   r   rw   r!   r"   s         r#   r   zCycleIteratorVariable.__init__  sM     =E""6""" 
&			r$   c                    | j         sJ | j        	 | j                            |          }t          | j                  t
          k    rt          d           |j        j        	                    |            | j        
                    |           || _        | j        |                     |          S | j        S # t          $ r. t          |           d | _        |                     |          cY S w xY wt          | j                  dk    rJ|j        j        	                    |            | j        dz   t          | j                  z  | _        | j        S t          t           ||            d S )Nz4input iterator to itertools.cycle has too many itemsr   r   )r;   r   r   ra   r   MAX_ITERATOR_LIMITr   r   r   r   rW   rw   r   r   r   r   StopIteration)r    r-   new_items      r#   r   z#CycleIteratorVariable.next_variable%  sm   !!!!=$.=66r::tz??%777!N   	&//555
!!(+++$	9$--b111y , . . .)"--- $))"-----. __q  I"++D111 $ 01 4DJGD9$]B=====s   B!B; 4B; ;5C32C3)Nr   N)r   r   r   r   r   r   r   r   r   r   r   r   s   @r#   rq   rq     s         (,*. " O$ 	
 ' 
      > > > > > > >r$   rq   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strictF	iterablesr   Nc                      t                      j        di | t          |t                    sJ || _        d| _        || _        d S )Nr   r   )r   r   rG   rY   r   r   r   )r    r   r   r!   r"   s       r#   r   zZipVariable.__init__L  sQ     	""6""")T*****"
r$   c                     t           S r+   )zipr(   s    r#   python_typezZipVariable.python_typeY      
r$   c                 D    t          fd| j        D                       S )Nc              3   l   K   | ].}t          |t                    p|                              V  /d S r+   )rG   rY   r3   )r5   itr-   s     r#   r7   z6ZipVariable.has_unpack_var_sequence.<locals>.<genexpr>]  sT       
 
 r4  BB$>$>r$B$B
 
 
 
 
 
r$   )rV   r   r   s    `r#   r3   z#ZipVariable.has_unpack_var_sequence\  s=     
 
 
 
n
 
 
 
 
 	
r$   r   c                 \   |                      |          sJ g }| j        D ]b}t          |t                    r#|                    || j        d                     :|                    |                    |                     c| j        r	d| j        ini }t          |i |}d |D             S )Nr   c                 P    g | ]#}t          j        t          |                    $S r   )r
   rX   rY   )r5   vars     r#   r:   z3ZipVariable.unpack_var_sequence.<locals>.<listcomp>l  s)    EEEs	'S		22EEEr$   )	r3   r   rG   rY   rW   r   r9   r   r   )r    r-   r   r   r!   zippeds         r#   r9   zZipVariable.unpack_var_sequenceb  s    ++B/////	. 	= 	=B"d## =  DJLL!12222  !7!7!;!;<<<<,0K?(DK((Ri*6**EEfEEEEr$   c                 &     j         sJ  j        g } fd}	 t           j                  D ]#\  }}|                     ||                     $ny# t
          $ rl  j        rc|dk    r8 j        D ]/}	  ||           n# t
          $ r t                     Y *w xY w n t                     t          t          d          d  w xY wj
        j                                         xj        dz  c_        t          j        |          S )Nc                     t          | t                    r1t          |           k    rt          t                     |          S |                               S r+   )rG   rY   ra   r   r   r   )r   	old_indexr    r-   s    r#   get_itemz+ZipVariable.next_variable.<locals>.get_items  sV    "d## ,B'',]BEEE)}$''+++r$   r   z3zip() has one argument of len differing from othersr   )r;   r   	enumerater   rW   r   r   r   r   
ValueErrorr   r   r   r
   rX   )r    r-   r.   r   idxr   r   s   ``    @r#   r   zZipVariable.next_variablen  s   !!!!J		, 	, 	, 	, 	, 	, 	,	$T^44 * *RHHRLL))))*( 	 	 	{ !88"n 
 
%$HRLLLL8 % % %5b999$H%  )"---I   )	, 		''---

a

&t,,,s/   8A  C8BCB CB  -Cc           	         | j         D ]x}t          |t                    rV|| j        d          }|                    |           |                    t          dt          |                               m ||           yd S )NBUILD_TUPLEr6   )r   rG   rY   r   foreachappend_outputr   ra   )r    r   r   remaining_itemss       r#   reconstruct_itemszZipVariable.reconstruct_items  s    . 	 	B"d## "$TZ\\"2000%%&}#o:N:NOOO    	 	r$   c           	                              fdd           |                                                    t          dt	          | j                                       t          j        dk    rd                    	                    d          	                    | j
                  t          dd	          t          d
d	          g           d S                     t          d
d                     d S )Nc                  0                          dd          S )Nbuiltinsr   load_import_fromr   s   r#   rR   z)ZipVariable.reconstruct.<locals>.<lambda>      G,,Z?? r$   Tcall_function_exr   r   )   
   r   	BUILD_MAPr   CALL_FUNCTION_EXr   )r   r   r   r   ra   r   sysversion_infor   create_load_constr   r   s    `r#   r   zZipVariable.reconstruct  s   ????RV 	 	
 	
 	
 	w'''}#dn2E2EFFF	
 	
 	
 w&&!!--h77--dk::&{:::&'9qAAA	     !!"45GQ"O"O"OPPPPPr$   )F)r   r   r   __doc__r   _nonvar_fieldsr   r   r   r   r   r   r3   r9   r   r   r   r   r   s   @r#   r   r   A  s"        
 	 
	(N  d?3_DEF 
 
       
T 
 
 
 

F.?)@ 
F 
F 
F 
F(- (- (-T	 	 	Q Q Q Q Q Q Qr$   r   c                   z     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                 J     t                      j        |fi | || _        d S 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                     dS )NFr   r   s     r#   r3   z#MapVariable.has_unpack_var_sequence  s    ur$   c                     t                                          |          }| j                            ||j        i           S r+   )r   r   r   rP   rv   )r    r-   r.   r"   s      r#   r   zMapVariable.next_variable  s6    ww$$R((w$$RR888r$   c                                         fdd            | j                   |                                                    t	          dt          | j                  dz             t	          dd          g           d S )	Nc                  0                          dd          S )Nr   r   r   r   s   r#   rR   z)MapVariable.reconstruct.<locals>.<lambda>  r   r$   Tr   r   r   r   r   r   )r   r   r   r   r   ra   r   r   s    `r#   r   zMapVariable.reconstruct  s    ????RV 	 	
 	
 	
 	w'''"=c$.6I6IA6MNNN"#51===	
 	
 	
 	
 	
r$   )r   r   r   r   r   r   r   r   r   r   r3   r   r   r   r   s   @r#   r   r     s          d?3_DEF
 
       T    9 9 9 9 9
 
 
 
 
 
 
r$   r   )$rT   rb   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   rk   ro   rq   r   r   r   r$   r#   <module>r      se        



 = = = = = = = = = = = = = = # # # # # # # # N N N N N N N N              0 / / / / / / / & & & & & &  EDDDDDD   e; e; e; e; e; e; e; e;P       6> > > > >- > > >,> > > > >, > > >>*> *> *> *> *>, *> *> *>ZtQ tQ tQ tQ tQ" tQ tQ tQn#
 #
 #
 #
 #
+ #
 #
 #
 #
 #
r$   