o
    i                     @   s   d Z ddlmZmZ ddlmZmZmZmZm	Z	m
Z
mZ edejdd Zeeejeeejejdd Zed	ejeejd
d Zeeeejdd Zed	ejeejdd Zed	ejeejdd ZdS )z8
Implementation of various iterable and iterator types.
    )typescgutils)lower_builtiniternext_implcall_iternextcall_getiterimpl_ret_borrowedimpl_ret_new_refRefTypeZgetiterc                 C   s   |\}t | ||j|S N)r   return_type)contextbuildersigargsit r   f/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/site-packages/numba/cpython/iterators.pyiterator_getiter   s   r   c                 C   s   t |dkst |dksJ |jd }t |dkr%|d }| tjd}nt |dkr=|d }| ||d |jd tj}t| |||}| ||j}t	
||j}	|||	 |	|_||_| }
t| ||j|
S )N      r   )lenr   get_constantr   intpcastr   make_helperr   r   alloca_oncetypestorecountiter	_getvaluer	   )r   r   r   r   srctysrcZ	start_valiterobjenumZcountptrresr   r   r   make_enumerate_object   s    
r'   Ziternextc              	   C   s   |j \}|\}| j|||d}||j}||| tjd}|||j t	| ||j
|j}	|	 }
||
 ||
 |	 }|| ||j||g W d    d S 1 s[w   Y  d S )Nvaluer   )r   r   loadr   addr   r   r   r   r   Zsource_typer    is_valid	set_validif_thenyielded_valueyield_Z
make_tuple
yield_type)r   r   r   r   resultZenumtyr%   r   Zncountsrcresr,   Zsrcvalr   r   r   iternext_enumerate.   s   
"r4   c           
      C   sp   |j }t|t|jksJ | ||}tt||jD ]\}\}}t| |||||< q| }	t	| ||j |	S r   )
r   r   source_typesr   	enumeratezipr   r   r!   r	   )
r   r   r   r   zip_typezipobjiargr"   r&   r   r   r   make_zip_objectG   s   r<   c              	   C   sN  |j \}|\}| j|||d}t|dkr|  d S t|| |j}tj|tj	d}t
t||jD ]G\}	\}
}||}||/ t| |||
}||| }||| | }t||d|	}||| W d    n1 sww   Y  q5||}|| || ||| W d    d S 1 sw   Y  d S )Nr(   r   )r   r   r   set_exhaustedr   r   Zget_value_typer1   Zalloca_once_valueZtrue_bitr6   r7   r5   r*   r.   r   and_r,   r   r/   Zgep_inboundsr-   r0   )r   r   r   r   r2   r8   r9   Z	p_ret_tupZ
p_is_validr:   r$   r"   r,   r3   valZptrr   r   r   iternext_zipU   s4   



"r@   c           
   	   C   s  |j \}|\}| |}|| |||\}}	| t|dd t||j |d ||	 W d    n1 s:w   Y  t	||j
 |  W d    n1 sUw   Y  t	|||j||j
 | j|| W d    d S 1 s|w   Y  d S )NZlibsr   T)r   Zget_generator_implZadd_linking_libsgetattrr   Z	if_likelyZis_okr-   r0   Zif_unlikelyZis_stop_iterationr=   r>   Zis_errornot_Z	call_convZreturn_status_propagate)
r   r   r   r   r2   Zgentygenimplstatusretvalr   r   r   r@   {   s&   



"N)__doc__Z
numba.corer   r   Znumba.core.imputilsr   r   r   r   r   r	   r
   ZIteratorTyper   r6   ZIterableTypeIntegerr'   ZEnumerateTypeZNEWr4   r7   ZVarArgAnyr<   ZZipTyper@   	GeneratorZBORROWEDr   r   r   r   <module>   s&    $






$