U
    9%e'                     @   s  d Z ddlZddlZddlmZmZmZ ddlm	Z	 ddl
mZ ddlmZmZ edddd	d
 Zdd Zeddddd Zeddddd Zedddd Zeddddd Zeddddd Zeddddd Zeddddd Zeddddd Zedddd d! Zedddd"d# Zedddd$d% Zedddd&d' ZeZedddd(d' ZeZd)d* Zed+Z ed,Z!ed-Z"ed.Z#e$d/Z%edddd0d1 Z&d2Z'e(d3ej)fd4ej*fgZ+ej(d3ej)fd4ej*fgdd5Z,ej-d6e+d7Z.e/e.j0D ]&Z1e1d2 e.e1 d3< e1d8 e.e1 d4< qej2e.e,d7Z3edddd9d: Z4G d;d< d<eZ5edd=d>d? Z6edd=d@dA Z7edd=dBdC Z8dDdE Z9eddddFdGdH Z:dS )Iz
This file will be copied to a temporary directory in order to
exercise caching compiled Numba functions.

See test_dispatcher.py.
    N)jitgenerated_jitprange)typesc_sin)TestCasecaptured_stderrTcachenopythonc                 C   s   | S N xr   r   Y/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/numba/tests/cache_usecases.pysimple_usecase   s    r   c                 C   s   t | S r   )r   r   r   r   r   simple_usecase_caller   s    r   c                 C   s   | | t  S r   Zr   yr   r   r   add_usecase   s    r   )r   Zforceobjc                 C   s   t   | | t S r   )objectr   r   r   r   r   add_objmode_usecase    s    r   )r   c                 C   s   | | t  S r   r   r   r   r   r   add_nocache_usecase&   s    r   c                 C   s"   t | tjrdd }ndd }|S )Nc                 S   s   | | S r   r   r   r   r   r   impl.   s    zgenerated_usecase.<locals>.implc                 S   s   | | S r   r   r   r   r   r   r   1   s    )
isinstancer   Complex)r   r   r   r   r   r   generated_usecase+   s    
r   c                 C   s   | | t  S r   r   r   r   r   r   inner6   s    r    c                 C   s   t | | S r   r    r   r   r   r   outer:   s    r"   Fc                 C   s   t | | S r   r!   r   r   r   r   outer_uncached>   s    r#   c                 C   s$   t   d}t| D ]}|| }q|S )Nr   )r   range)nresir   r   r   
loopliftedC   s
    
r(   c                 C   s   t | S r   r   r   r   r   r   	use_c_sinL   s    r)   c                 C   s   t | S r   )r)   r   r   r   r   use_c_sin_nest1P   s    r*   c                 C   s   t | S r   )r*   r   r   r   r   use_c_sin_nest2T   s    r+   c                 C   s   | d S )N   r   r   r   r   r   ambiguous_functionY   s    r-   c                 C   s   | d S )N   r   r   r   r   r   r-   _   s    c                    s   t ddd fdd}|S )NTr
   c                    s    |  S r   r   )r   r   r   r   closureg   s    zmake_closure.<locals>.closure)r   )r   r/   r   r   r   make_closuref   s    
r0            	   i@B c                   C   s   t S r   )biggier   r   r   r   use_big_arrayu   s    r6      ab)alignr,   )dtypeg     @E@c                 C   s   | | S r   r   )aryr'   r   r   r   record_return   s    r=   c                   @   s   e Zd ZdZdd ZdS )_TestModulez
    Tests for functionality of this module's functions.
    Note this does not define any "test_*" method, instead check_module()
    should be called by hand.
    c                 C   s   |  |ddd |  |ddd |  |ddd |  |ddd |  |ddd ||jd}|  t|d ||j	d}|  t|d d S )Nr,   r1   r.   r7   )r,   g     E@)
ZassertPreciseEqualr   r   r#   r"   r   r=   
packed_arrtuplealigned_arr)selfmodZ
packed_recZaligned_recr   r   r   check_module   s    z_TestModule.check_moduleN)__name__
__module____qualname____doc__rD   r   r   r   r   r>      s   r>   )r   c                 C   s   | |  S r   r   r   r   r   r   first_class_function_mul   s    rI   c                 C   s   | |  S r   r   r   r   r   r   first_class_function_add   s    rJ   c                 C   s   | |S r   r   )fr   r   r   r   first_class_function_usecase   s    rL   c                  C   s   t jt } t |  d S r   )sysmodulesrE   r>   rD   )rC   r   r   r   	self_test   s    
rO   )parallelr   r   c                 C   s   | |  |  S r   r   )r<   r   r   r   parfor_usecase   s    rQ   );rH   rM   numpynpZnumbar   r   r   Z
numba.corer   Znumba.tests.ctypes_usecasesr   Znumba.tests.supportr   r	   r   r   r   r   r   r   r    r"   r#   r(   r)   r*   r+   r-   Zrenamed_function1Zrenamed_function2r0   Zclosure1Zclosure2Zclosure3Zclosure4Zaranger5   r6   r   r;   Zint8Zfloat64Zpacked_record_typeZaligned_record_typeemptyr?   r$   sizer'   arrayrA   r=   r>   rI   rJ   rL   rO   rQ   r   r   r   r   <module>   s   



































