
    ܙd'                        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	             Zd
 Z edd          d             Z edd          d             Z ed          d             Z edd          d             Z edd          d             Z edd          d             Z edd          d             Z edd          d             Z edd          d             Z edd          d             Z edd          d             Z edd          d             ZeZ edd          d             ZeZd Z ed          Z  ed          Z! ed          Z" ed          Z# ej$        d           Z% edd          d!             Z&d"Z' ej(        d#ej)        fd$ej*        fg          Z+ ej(        d#ej)        fd$ej*        fgd%          Z, ej-        d&e+'          Z. e/e.j0                  D ]Z1e1d"z   e.e1         d#<   e1d(z   e.e1         d$<    ej2        e.e,'          Z3 edd          d)             Z4 G d* d+e          Z5 ed,          d-             Z6 ed,          d.             Z7 ed,          d/             Z8d0 Z9 eddd1          d2             Z:dS )3z
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                     | S N xs    :lib/python3.11/site-packages/numba/tests/cache_usecases.pysimple_usecaser      s    H    c                      t          |           S r   )r   r   s    r   simple_usecase_callerr      s    !r   c                     | |z   t           z   S r   Zr   ys     r   add_usecaser          q519r   )r   forceobjc                 8    t                       | |z   t          z   S r   )objectr   r   s     r   add_objmode_usecaser"       s    
HHHq519r   )r   c                     | |z   t           z   S r   r   r   s     r   add_nocache_usecaser$   &   r   r   c                 H    t          | t          j                  rd }nd }|S )Nc                     | |z   S r   r   r   s     r   implzgenerated_usecase.<locals>.impl.       q5Lr   c                     | |z
  S r   r   r   s     r   r'   zgenerated_usecase.<locals>.impl1   r(   r   )
isinstancer   Complex)r   r   r'   s      r   generated_usecaser,   +   s>    !U]## 	 	 	 		 	 	Kr   c                     | |z   t           z   S r   r   r   s     r   innerr.   6   r   r   c                 $    t          | |           S r   r.   r   s     r   outerr1   :       !Q<<r   Fc                 $    t          | |           S r   r0   r   s     r   outer_uncachedr4   >   r2   r   c                 T    t                       d}t          |           D ]}||z   }|S )Nr   )r!   range)nresis      r   
loopliftedr:   C   s5    
HHH
C1XX  AgJr   c                      t          |           S r   r   r   s    r   	use_c_sinr<   L   s    88Or   c                      t          |           S r   )r<   r   s    r   use_c_sin_nest1r>   P   s    Q<<r   c                      t          |           S r   )r>   r   s    r   use_c_sin_nest2r@   T   s    1r   c                     | dz   S )N   r   r   s    r   ambiguous_functionrC   Y       q5Lr   c                     | dz   S )N   r   r   s    r   rC   rC   _   rD   r   c                 @     t          dd           fd            }|S )NTr   c                     | z   S r   r   )r   r   s    r   closurezmake_closure.<locals>.closureg   s    1ur   )r   )r   rI   s   ` r   make_closurerJ   f   s;    td###    $# Nr            	   i@B c                      t           S r   )biggier   r   r   use_big_arrayrQ   u   s    Mr      ab)alignrB   )dtypeg     @E@c                     | |         S r   r   )aryr9   s     r   record_returnrY      s    q6Mr   c                       e Zd ZdZ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                    |                      |                    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 )NrB   rK   rF   rR   )rB   g     E@)
assertPreciseEqualr   r"   r4   r1   r,   rY   
packed_arrtuplealigned_arr)selfmod
packed_recaligned_recs       r   check_modulez_TestModule.check_module   s*   1 5 5q999 7 71 = =qAAA 2 21a 8 8!<<<		!Q333 5 5a ; ;Q???&&s~q99
j 1 19==='';;k 2 2I>>>>>r   N)__name__
__module____qualname____doc__re   r   r   r   r[   r[      s-         
? 
? 
? 
? 
?r   r[   )r   c                     | | z  S r   r   r   s    r   first_class_function_mulrk      rD   r   c                     | | z   S r   r   r   s    r   first_class_function_addrm      rD   r   c                      | |          S r   r   )fr   s     r   first_class_function_usecaserp      s    1Q44Kr   c                  v    t           j        t                   } t                                          |            d S r   )sysmodulesrf   r[   re   )rb   s    r   	self_testrt      s,    
+h
CMMs#####r   )parallelr   r   c                     | | z  | z   S r   r   )rX   s    r   parfor_usecaserw      s    9s?r   );ri   rr   numpynpnumbar   r   r   
numba.corer   numba.tests.ctypes_usecasesr   numba.tests.supportr	   r
   r   r   r   r"   r$   r,   r.   r1   r4   r:   r<   r>   r@   rC   renamed_function1renamed_function2rJ   closure1closure2closure3closure4arangerP   rQ   r   rV   int8float64packed_record_typealigned_record_typeemptyr^   r6   sizer9   arrayr`   rY   r[   rk   rm   rp   rt   rw   r   r   r   <module>r      sD    


     , , , , , , , , , ,       - - - - - - 9 9 9 9 9 9 9 9 4$      4$    4$   
 d   TD)))  *) 4$    4$    54     !  4$    4$    4$    4$    4$    ' 4$    '    <??<??<??<?? 
5		4$    
 RXRW~RZ/@ABB bhbgbj0AB$OOO RXa1222
	z		 " "AQJqM#TJqM#bhz)<===4$   ? ? ? ? ?( ? ? ?( 4   4   4  $ $ $
 d$...  /.  r   