U
    9%e                     @   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   V/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/numba/cpython/iterators.pyiterator_getiter   s    r   c                 C   s   t |dkst |dkst|jd }t |dkrJ|d }| tjd}n0t |dkrz|d }| ||d |jd tj}t| |||}| ||j	}t
||j}	|||	 |	|_||_| }
t| ||j	|
S )N      r   )lenAssertionErrorr   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 5 Q R X 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    
r5   c           
      C   sp   |j }t|t|jkst| ||}tt||jD ]\}\}}t| |||||< q8|	 }	t
| ||j |	S r   )r   r   source_typesr   r   	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   s$  |j \}|\}| j|||d}t|dkr6|  d S t|| |j}tj|tj	d}t
t||jD ]z\}	\}
}||}||T t| |||
}||| }||| | }t||d|	}||| W 5 Q R X qj||}|| || ||| W 5 Q R X d S )Nr)   r   )r   r   r   set_exhaustedr   r   Zget_value_typer2   Zalloca_once_valueZtrue_bitr7   r8   r6   r+   r/   r   and_r-   r   r0   Zgep_inboundsr.   r1   )r   r   r   r   r3   r9   r:   Z	p_ret_tupZ
p_is_validr;   r%   r#   r-   r4   valZptrr   r   r   iternext_zipU   s.    



rA   c           
   	   C   s   |j \}|\}| |}|| |||\}}	| t|dd t||j |d ||	 W 5 Q R X t	||j
 |  W 5 Q R X t	|||j||j
 | j|| W 5 Q R X d S )NZlibsr   T)r   Zget_generator_implZadd_linking_libsgetattrr   Z	if_likelyZis_okr.   r1   Zif_unlikelyZis_stop_iterationr>   r?   Zis_errornot_Z	call_convZreturn_status_propagate)
r   r   r   r   r3   Zgentygenimplstatusretvalr   r   r   rA   {   s     


N)__doc__Z
numba.corer   r   Znumba.core.imputilsr   r   r   r   r   r	   r
   ZIteratorTyper   r7   ZIterableTypeIntegerr(   ZEnumerateTypeZNEWr5   r8   ZVarArgAnyr=   ZZipTyperA   	GeneratorZBORROWEDr   r   r   r   <module>   s$   $





$
