o
    0 i                     @   s  d Z ddlZddlZddl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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d.d/ Z$d0Z%e&d1ej'fd2ej(fgZ)ej&d1ej'fd2ej(fgdd3Z*ej+d4e)d5Z,e-e,j.D ]Z/e/d0 e,e/ d1< e/d6 e,e/ d2< qej0e,e*d5Z1edddd7d8 Z2G d9d: d:eZ3edd;d<d= Z4edd;d>d? Z5edd;d@dA Z6dBdC Z7eddddDdEdF Z8dS )Gz
This file will be copied to a temporary directory in order to
exercise caching compiled Numba functions.

See test_dispatcher.py.
    N)jitprange)typesc_sin)TestCasecaptured_stderrTcachenopythonc                 C   s   | S N xr   r   f/home/app/PaddleOCR-VL-test/.venv_paddleocr/lib/python3.10/site-packages/numba/tests/cache_usecases.pysimple_usecase      r   c                 C      t | S r   )r   r   r   r   r   simple_usecase_caller   s   r   c                 C      | | t  S r   Zr   yr   r   r   add_usecase      r   )r
   Z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   r   r   r   r   r   r   r   inner+   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_uncached3   r   r#   c                 C   s$   t   d}t| D ]}|| }q	|S )Nr   )r   range)nresir   r   r   
looplifted8   s
   
r(   c                 C   r   r   r   r   r   r   r   	use_c_sinA      r)   c                 C   r   r   )r)   r   r   r   r   use_c_sin_nest1E   r*   r+   c                 C   r   r   )r+   r   r   r   r   use_c_sin_nest2I   r*   r,   c                 C      | d S )N   r   r   r   r   r   ambiguous_functionN   r*   r/   c                 C   r-   )N   r   r   r   r   r   r/   T   r*   c                    s   t ddd fdd}|S )NTr	   c                    s    |  S r   r   )r   r   r   r   closure\   r*   zmake_closure.<locals>.closure)r   )r   r1   r   r   r   make_closure[   s   
r2            	   i@B c                   C   s   t S r   )biggier   r   r   r   use_big_arrayj   r   r8      ab)alignr.   )dtypeg     @E@c                 C   s   | | S r   r   )aryr'   r   r   r   record_return~   r*   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 ||jd}|  t|d ||jd}|  t|d d S )Nr.   r3   r0   r9   )r.   g     E@)	ZassertPreciseEqualr   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__rF   r   r   r   r   r@      s    r@   )r
   c                 C   s   | |  S r   r   r   r   r   r   first_class_function_mul   r*   rK   c                 C   s   | |  S r   r   r   r   r   r   first_class_function_add   r*   rL   c                 C   s   | |S r   r   )fr   r   r   r   first_class_function_usecase   r*   rN   c                  C   s   t jt } t |  d S r   )sysmodulesrG   r@   rF   )rE   r   r   r   	self_test   s   
rQ   )Zparallelr
   r   c                 C   s   | |  |  S r   r   )r>   r   r   r   parfor_usecase   r   rR   )9rJ   rO   numpynpZnumbar   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/   Zrenamed_function1Zrenamed_function2r2   Zclosure1Zclosure2Zclosure3Zclosure4Zaranger7   r8   r   r=   Zint8Zfloat64Zpacked_record_typeZaligned_record_typeemptyrA   r$   sizer'   arrayrC   r?   r@   rK   rL   rN   rQ   rR   r   r   r   r   <module>   s    
































