
    Ph6                         d Z ddlmZmZ ddlmZ ddlmZ ddlm	Z	  G d d	e      Z
 G d
 de
      Z G d de
      Z G d de
      Zy)i      )ListOptional   unimplemented   )VariableTracker)ConstantVariablec                   $     e Zd Z fdZd Z xZS )IteratorVariablec                 $    t        |   di | y N )super__init__)selfkwargs	__class__s     gC:\Users\daisl\Desktop\realtime-object-detection\venv\Lib\site-packages\torch/_dynamo/variables/iter.pyr   zIteratorVariable.__init__   s    "6"    c                     t        d       y )Nzabstract method, must implementr   r   txs     r   next_variableszIteratorVariable.next_variables   s    78r   )__name__
__module____qualname__r   r   __classcell__r   s   @r   r   r      s    #9r   r   c                   *     e Zd Zdef fdZd Z xZS )RepeatIteratorVariableitemc                 2    t        |   di | || _        y r   )r   r   r"   )r   r"   r   r   s      r   r   zRepeatIteratorVariable.__init__   s    "6"	r   c                 :    | j                   j                         | fS )N)r"   cloner   s     r   r   z%RepeatIteratorVariable.next_variables   s    yy $&&r   )r   r   r   r	   r   r   r   r   s   @r   r!   r!      s    _ 
'r   r!   c                   0     e Zd Zddedef fdZd Z xZS )CountIteratorVariabler"   stepc                     t        |   di | t        |t              st	        j
                  |      }t        |t              st	        j
                  |      }|| _        || _        y r   )r   r   
isinstancer	   r
   creater"   r(   )r   r"   r(   r   r   s       r   r   zCountIteratorVariable.__init__   sU    "6"$0#**40D$0#**40D		r   c                     | j                   sJ | j                  j                  |d| j                  gi       }| j	                  |      }|j                  | |       | j                  |fS )N__add__)r"   )mutable_localr"   call_methodr(   r%   replace_all)r   r   	next_item	next_iters       r   r   z$CountIteratorVariable.next_variables'   s^    !!!!II))"i$))bI	JJIJ.	
tY'yy)##r   )r   r   )r   r   r   intr   r   r   r   s   @r   r'   r'      s    S C $r   r'   c            
       J     e Zd Z	 	 	 ddedee   dedee   f fdZd Z	 xZ
S )CycleIteratorVariableiteratorsavedsaved_indexr"   c                 d    |g }t        |   di | || _        || _        || _        || _        y r   )r   r   r6   r7   r8   r"   )r   r6   r7   r8   r"   r   r   s         r   r   zCycleIteratorVariable.__init__0   s<     =E"6" 
&	r   c                 V   | j                   sJ | j                  	 | j                  j                  |      \  }}|j                  | j                  |       t	        | j
                        t        kD  rt        d       | j                  || j
                  |gz   |      }|j                  | |       | j                  |j                  |      S | j                  |fS t	        | j
                        dkD  rm| j                  | j                  dz   t	        | j
                        z  | j
                  | j                           }|j                  | |       | j                  |fS t        # t        $ r8 | j                  d       }|j                  | |       |j                  |      cY S w xY w)Nz4input iterator to itertools.cycle has too many items)r6   r7   r"   )r6   r   r   )r8   r"   )r.   r6   r   r0   lenr7   	MAX_CYCLEr   r%   r"   StopIterationr8   )r   r   new_itemnext_inner_iterr2   s        r   r   z$CycleIteratorVariable.next_variables@   s   !!!!==$4,0MM,H,H,L)/t}}o>tzz?Y.!N !JJ,**z1! ' 	 tY/99$$33B77yy)++ _q 

!--1S_DZZ 0 01 # I NN4+99i'' ! 4 JJJ5	 tY/ //334s   B1E' E' '>F('F()Nr   N)r   r   r   r   r   r	   r3   r   r   r   r   r   s   @r   r5   r5   /   sH     (,*." O$ 	
 ' $$r   r5   N)r<   typingr   r   excr   baser	   constantr
   r   r!   r'   r5   r   r   r   <module>rD      sI   	 !  ! &9 9'- '$, $$5$, 5$r   