o
    8ήc'                     @   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   A/tmp/pip-target-vg8gfxp4/lib/python/numba/tests/cache_usecases.pysimple_usecase      r   c                 C      t | S r   )r   r   r   r   r   simple_usecase_caller      r   c                 C      | | t  S r   Zr   yr   r   r   add_usecase      r   )r   forceobjc                 C   s   t   | | t S r   )objectr   r   r   r   r   add_objmode_usecase    s   r    )r   c                 C   r   r   r   r   r   r   r   add_nocache_usecase&   r   r!   c                 C   s$   t | tjrdd }|S dd }|S )Nc                 S   s   | | S r   r   r   r   r   r   impl.   r   zgenerated_usecase.<locals>.implc                 S   s   | | S r   r   r   r   r   r   r"   1   r   )
isinstancer   Complex)r   r   r"   r   r   r   generated_usecase+   s
   r%   c                 C   r   r   r   r   r   r   r   inner6   r   r&   c                 C      t | | S r   r&   r   r   r   r   outer:   r   r)   Fc                 C   r'   r   r(   r   r   r   r   outer_uncached>   r   r*   c                 C   s$   t   d}t| D ]}|| }q	|S )Nr   )r   range)nresir   r   r   
loopliftedC   s
   
r/   c                 C   r   r   r   r   r   r   r   	use_c_sinL      r0   c                 C   r   r   )r0   r   r   r   r   use_c_sin_nest1P   r1   r2   c                 C   r   r   )r2   r   r   r   r   use_c_sin_nest2T   r1   r3   c                 C      | d S )N   r   r   r   r   r   ambiguous_functionY   r1   r6   c                 C   r4   )N   r   r   r   r   r   r6   _   r1   c                    s   t ddd fdd}|S )NTr
   c                    s    |  S r   r   )r   r   r   r   closureg   r1   zmake_closure.<locals>.closure)r   )r   r8   r   r   r   make_closuref   s   
r9            	   i@B c                   C   s   t S r   )biggier   r   r   r   use_big_arrayu   r   r?      ab)alignr5   )dtypeg     @E@c                 C   s   | | S r   r   )aryr.   r   r   r   record_return   r1   rF   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 )Nr5   r:   r7   r@   )r5   g     E@)
assertPreciseEqualr   r    r*   r)   r%   rF   
packed_arrtuplealigned_arr)selfmod
packed_recaligned_recr   r   r   check_module   s   z_TestModule.check_moduleN)__name__
__module____qualname____doc__rP   r   r   r   r   rG      s    rG   )r   c                 C   s   | |  S r   r   r   r   r   r   first_class_function_mul   r1   rU   c                 C   s   | |  S r   r   r   r   r   r   first_class_function_add   r1   rV   c                 C   s   | |S r   r   )fr   r   r   r   first_class_function_usecase   r1   rX   c                  C   s   t jt } t |  d S r   )sysmodulesrQ   rG   rP   )rM   r   r   r   	self_test   s   
r[   )parallelr   r   c                 C   s   | |  |  S r   r   )rE   r   r   r   parfor_usecase   r   r]   );rT   rY   numpynpnumbar   r   r   
numba.corer   numba.tests.ctypes_usecasesr   numba.tests.supportr   r	   r   r   r   r    r!   r%   r&   r)   r*   r/   r0   r2   r3   r6   renamed_function1renamed_function2r9   closure1closure2closure3closure4aranger>   r?   r   rD   int8float64packed_record_typealigned_record_typeemptyrI   r+   sizer.   arrayrK   rF   rG   rU   rV   rX   r[   r]   r   r   r   r   <module>   s    











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