
    |hr                     f   S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	r	S SK
r
S SKrS SKJr  S SKJr  S SKrS SKJr  S SKJr  S SKJr  S SKJrJrJrJrJr  S SKJ r   S SK!J"r"  S S	K#J$r$J%r%J&r&J'r'J(r(J)r)J*r*J+r+J,r,J-r-  S S
K.J/r/   S SK0r0S r2\2" 5       r3Sr4\	Rj                  " \3\45      r6S r7S r8S r9S r:S r;S r< " S S\$\%5      r=S r> " S S\%5      r? " S S\?5      r@ " S S\@5      rA " S S\@5      rB " S S\@5      rC\+ " S  S!\@5      5       rD " S" S#\@5      rE " S$ S%\?5      rF\* " S& S'\	RJ                  5      5       rGS( rH " S) S*\	RJ                  5      rI " S+ S,\?5      rJ " S- S.\5      rK " S/ S0\%5      rL " S1 S2\%5      rM\NS3:X  a  \	R                  " 5         gg! \1 a    Sr0 GNf = f)4    N)Path)floor)njit)codegen)UserWideCacheLocatorZipCacheLocatorFunctionCacheInTreeCacheLocatorInTreeCacheLocatorFsAgnostic)NumbaWarning)parfor)
SerialMixinTestCasecapture_cache_logimport_dynamicoverride_configrun_in_new_process_cachingskip_if_typeguardskip_parfors_unsupportedtemp_directoryoverride_env_config)
cpu_targetc                  D   [        S5      n [        R                  R                  U S5      n[        R                  " U5        [        [        R                  R                  US5      S5       nUR                  S5        S S S 5        [        R                  " US5         [        [        R                  R                  US5      S5       nUR                  S5        S S S 5         [        R                  " US	5        [        R                  " U5        g
! , (       d  f       N= f! , (       d  f       NN= f! [         a0     [        R                  " US	5        [        R                  " U5        gf = f! [        R                  " US	5        [        R                  " U5        f = f)N
test_cachewritable_testwrite_okwtcheck1@  write_forbiddencheck2i  FT)r   ospathjoinmkdiropenwritechmodshutilrmtreePermissionError)tempdirtest_dirfs      R/home/james-whalen/.local/lib/python3.13/site-packages/numba/tests/test_caching.pycheck_access_is_preventabler0   3   s    \*GWo6HHHX	bggll8Z0$	71	 
8 HHXu "'',,x):;TBaGGH C  	5!h% 
8	7
 CB   
5!h 	5!hsH   ,D*D3 D"D3 
D"
D0,D3 3
E-=E0 ,E--E0 0/Fz9Cannot create a directory to which writes are preventablec                       Sn [        U 5      U 4$ )Nabcd)hash)cs    r/   constant_unicode_cacher5   W   s    A7A:    c                  n    [         n [        SS9" U 5      nU " 5       u  p#U" 5       u  pEX$:X  d   eX5:X  d   eg NTcache)r5   r   )pyfunccfuncexp_hvexp_strgot_hvgot_strs         r/   check_constant_unicode_cacherA   \   s@    #FtV$EhOFgOFr6   c                      SSS.$ )N      )ab rG   r6   r/   
dict_cacherH   e   s    r6   c                  X    [         n [        SS9" U 5      nU " 5       nU" 5       nX#:X  d   eg r8   )rH   r   r;   r<   expgots       r/   check_dict_cacherM   i   s.    FtV$E
(C
'C::r6   c               #   &   #    S H  n U v   M	     g 7f)N)rC   rD      rG   )vs    r/   generator_cacherQ   q   s      s   c                  |    [         n [        SS9" U 5      n[        U " 5       5      n[        U" 5       5      nX#:X  d   eg r8   )rQ   r   listrJ   s       r/   check_generator_cacherT   v   s6    FtV$E
vx.C
uw-C::r6   c                   2    \ rS rSrS rS rS rS rS rSr	g)	TestCaching~   c                 R    U" 5         [        U5      nU R                  US   S5        g )Nexitcoder   )r   assertEqual)selffuncress      r/   run_testTestCaching.run_test   s%    (.Z!,r6   c                 .    U R                  [        5        g N)r^   rA   r[   s    r/   test_constant_unicode_cache'TestCaching.test_constant_unicode_cache   s    23r6   c                 .    U R                  [        5        g ra   )r^   rM   rb   s    r/   test_dict_cacheTestCaching.test_dict_cache   s    &'r6   c                 .    U R                  [        5        g ra   )r^   rT   rb   s    r/   test_generator_cache TestCaching.test_generator_cache   s    +,r6   c                 X   [        U R                  R                  5      n[        R                  " 5       nUR                  5       nUR                  [        X1S4S9nUR                  5         UR                  5         UR                  5       u  pVU(       d  U R                  U5        U R                  USS5        UR                  [        X1S4S9nUR                  5         UR                  5         UR                  5       u  pVU(       d  U R                  U5        U R                  USS5        g )NFtargetargs  z-Omitted function returned an incorrect outputT)r   	__class____name__multiprocessingget_contextQueueProcessomitted_child_test_wrapperstartr$   getfailrZ   )r[   	cache_dirctxresult_queueprocsuccessoutputs          r/   test_omittedTestCaching.test_omitted   s    #4>>#:#:;	))+yy{{{-51  
 	

		&**, IIf;	
 {{-40  
 	

		&**, IIf;	
r6   rG   N)
rq   
__module____qualname____firstlineno__r^   rc   rf   ri   r   __static_attributes__rG   r6   r/   rV   rV   ~   s    -
4(-(
r6   rV   c                 .   [        SU5         [        SS9SS j5       n U" 5       nU(       aO  UR                  UR                  S      S:X  d   S5       eUR                  UR                  S      S:X  d   S5       eONUR                  UR                  S      S:X  d   S	5       eUR                  UR                  S      S:X  d   S
5       eSnU R                  XT45        S S S 5        g !   [
        R                  " 5       nSn N6= f! , (       d  f       g = f)N	CACHE_DIRTr9   c                     U $ ra   rG   )nums    r/   test(omitted_child_test_wrapper.<locals>.test   s    Jr6   r   rC   zCache did not hit as expectedzCache has an unexpected misszCache did not miss as expectedzCache has an unexpected hitF)ro   )r   r   _cache_hits
signatures_cache_misses	traceback
format_excput)r|   rz   second_callr   r   r~   s         r/   rv   rv      s)   	i	0	D		 
		VF ''(:;q@ 434@))$//!*<=B 323B ))$//!*<=B 545B''(:;q@ 212@G
 	'*+1 
1	0*	))+FG/ 
1	0s#   DB-C(D(DD
Dc                   F    \ rS rSrSrSrS rS rS rS r	S r
S rS	 rS
rg)BaseCacheTest   Nc                 2   [        S5      U l        [        R                  R	                  SU R                  5        [
        R                  R                  U R                  U R                  S-   5      U l        [
        R                  R                  U R                  S5      U l	        [        R                  " U R                  U R                  5        [
        R                  " U R                  [        R                  [        R                   -  5        S U l        g )Nr   r   z.py__pycache__)r   r,   sysr#   insertr"   r$   modnamemodfilerz   r)   copyusecases_filer(   statS_IREADS_IWRITEmaxDiffrb   s    r/   setUpBaseCacheTest.setUp   s    %l34<<(ww||DLL$,,2FGdllMBD&&5
t||dmm;<r6   c                     [         R                  R                  U R                  S 5        [         R                  R                  U R                  5        g ra   )r   modulespopr   r#   remover,   rb   s    r/   tearDownBaseCacheTest.tearDown   s,    d+%r6   c                 p   [         R                  R                  U R                  S 5      nUb-  UR                  /nU H  n [
        R                  " U5        M     [        U R                  5      nU R                  UR                  R                  S5      U R                  5        U$ ! [         a     Mw  f = f)Nco)r   r   r   r   
__cached__r"   unlinkFileNotFoundErrorr   rZ   __file__rstripr   )r[   oldcachedfnmods        r/   import_moduleBaseCacheTest.import_module   s     kkoodllD1?nn%FIIbM 
 T\\*,,T2DLLA
	 ) s   B''
B54B5c                      [         R                  " U R                  5       Vs/ s H  nUR                  S5      (       a  M  UPM     sn$ s  snf ! [         a    / s $ f = f)N)z.pycz.pyo)r"   listdirrz   endswithr   )r[   r   s     r/   cache_contentsBaseCacheTest.cache_contents   sZ    	!#DNN!; :!;2;;'78 !; : : :  	I	s(   "A AAA A AAc                 \   ^  [        U 4S j[        T R                  5       5       5       5      $ )Nc              3      >#    U  HN  nU[         R                  R                  [         R                  R                  TR                  U5      5      4v   MP     g 7fra   )r"   r#   getmtimer$   rz   ).0r   r[   s     r/   	<genexpr>1BaseCacheTest.get_cache_mtimes.<locals>.<genexpr>   s?      =; ))"'',,t~~r*JKL;s   AA)dictsortedr   rb   s   `r/   get_cache_mtimesBaseCacheTest.get_cache_mtimes   s+     =$T%8%8%:;= = 	=r6   c                 Z    U R                  5       nU R                  [        U5      X5        g ra   )r   rZ   len)r[   nr4   s      r/   check_pycacheBaseCacheTest.check_pycache  s$    !Q&r6   c                     g ra   rG   rb   s    r/   
dummy_testBaseCacheTest.dummy_test  s    r6   )rz   r   r   r,   )rq   r   r   r   r   r   r   r   r   r   r   r   r   r   rG   r6   r/   r   r      s/    MG&"='r6   r   c                       \ rS rSr\R
                  R                  \5      r\R
                  R                  \S5      r
SrSS.S jrS	S jrSrg)
DispatcherCacheUsecasesTesti  cache_usecases.pydispatcher_caching_test_fodderNenvvarsc          	         Uc  0 nS[        U R                  U R                  S9-  n[        R                  R                  5       nUR                  U5        [        R                  " [        R                  SU/[        R                  [        R                  US9nUR                  5       u  pVUR                  S:w  a>  [        SUR                  < SUR                  5       < SUR                  5       < S	35      eg )
Nzif 1:
            import sys

            sys.path.insert(0, %(tempdir)r)
            mod = __import__(%(modname)r)
            mod.self_test()
            r,   r   -c)stdoutstderrenvr   process failed with code z: 
stdout follows
z
stderr follows

)r   r,   r   r"   environr   update
subprocessPopenr   
executablePIPEcommunicate
returncodeAssertionErrordecode)r[   r   codesubp_envpopenouterrs          r/   run_in_separate_process3DispatcherCacheUsecasesTest.run_in_separate_process  s     ?G t||T\\BC ::??$   #..$!=(2
%-/ $$&q   ##SZZ\3::<A  !r6   c                    UR                   nU R                  [        UR                  R	                  5       5      X$R                  5        Ub?  U R                  [        UR
                  R	                  5       5      UUR
                  5        g g ra   )statsrZ   sum
cache_hitsvaluescache_misses)r[   r\   hitsmissessts        r/   
check_hits&DispatcherCacheUsecasesTest.check_hits,  sg    ZZR]]1134dMMJS!7!7!9:F__. r6   rG   ra   )rq   r   r   r   r"   r#   dirnamer   herer$   r   r   r   r   r   rG   r6   r/   r   r     s;    77??8$DGGLL':;M.G15 8.r6   r   c                      \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS r\\R,                  " \R0                  S:H  S5      S 5       5       r\\R,                  " \R0                  S:H  S5      S 5       5       rS r\R,                  " \SL =(       d    \R:                  S   S:  S5      S 5       rSrg)	TestCachei4  c                 l   U R                  S5        U R                  5       nU R                  S5        UR                  nU R                  U" SS5      S5        U R                  S5        U R                  U" SS5      S5        U R                  S5        U R	                  USS5        UR
                  nU R                  U" SS5      S5        U R                  S5        U R                  U" SS5      S5        U R                  S5        U R	                  USS5        UR                  nU" UR                  S5      nU R                  [        U5      S	5        U" UR                  S5      nU R                  [        U5      S	5        U R                  S
5        U R	                  USS5        U R                  5         g )Nr   rD   rO            @      @   rC   )rD   g     E@	   )r   r   add_usecaseassertPreciseEqualr   add_objmode_usecaserecord_returnaligned_arrtuple
packed_arrr   )r[   r   r.   recs       r/   test_cachingTestCache.test_caching6  so   1  "1OO!Q+1#q	3/11a ##!Q+1#q	3/11a #c
I6"c
I611a  	$$&r6   c                    U R                  S5        U R                  5       nU R                  S5        UR                  nU R                  U" SS5      S5        U R                  S5        U R                  U" S[        R
                  " S5      5      S[        R
                  " S5      -   S-   5        U R                  S5        U R                  USS5        g )Nr   rD   rO   r   rC   )r   r   r  r  nparanger   r[   r   r.   s      r/   test_caching_nrt_pruned!TestCache.test_caching_nrt_prunedT  s    1  "1OO!Q+1!RYYq\ 2A		!4Dq4HI11a r6   c                 B   U R                  5       nU R                  UR                  SS5      S5        U R                  S5        UR                  nU R                  U" SS5      S5        U R                  S5        U R                  5       nUR                  nU R                  U" SS5      S5        U R                  S5        UR
                  nU R                  U" SS5      S5        U R                  S5        U R                  U" SS5      S5        U R                  S5        g )NrO   rD   r            @r   )r   r  innerr   outer_uncachedouterr  s      r/   test_inner_then_outerTestCache.test_inner_then_outera  s      "		!Q31!Q+1  "!Q+1II!Q+1#q	3/1r6   c                    U R                  5       nU R                  UR                  SS5      S5        U R                  S5        U R                  UR	                  SS5      S5        U R                  S5        U R                  5       nUR
                  nU R                  U" SS5      S5        U R                  S5        U R                  U" SS5      S5        U R                  S5        g )NrO   rD   r  r   r  r   r   )r   r  r  r   r  r  r  s      r/   test_outer_then_innerTestCache.test_outer_then_inneru  s      "		!Q31 2 21a 8!<1  "II!Q+1#q	3/1r6   c                     U R                  5       nUR                  nU R                  U" SS5      S5        U R                  S5        g )NrD   rO   r   r   )r   add_nocache_usecaser  r   r  s      r/   test_no_cachingTestCache.test_no_caching  s?      "##!Q+1r6   c                    U R                  5       n[        R                  " SS9 n[        R                  " S[        5        UR
                  nU R                  U" S5      S5        U R                  S5        S S S 5        U R                  [        W5      S5        U R                  S[        US   R                  5      5        g ! , (       d  f       NR= f)	NTrecordalwaysr  r   r   rC   zBCannot cache compiled function "looplifted" as it uses lifted code)r   warningscatch_warningssimplefilterr   
loopliftedr  r   rZ   r   assertInstrmessager[   r   wr.   s       r/   test_loopliftedTestCache.test_looplifted  s      "$$D1Q!!(L9A##AaD!,q! 2 	Q# /03AaDLL0A	C 21s   AC
Cc                    U R                  5       n[        R                  " SS9 n[        R                  " S[        5        UR
                  n[        R                  R                  U" 5       UR                  5        U R                  S5        S S S 5        U R                  [        W5      S5        U R                  S[        US   R                  5      5        g ! , (       d  f       NR= f)NTr"  r$  r   rC   zICannot cache compiled function "use_big_array" as it uses dynamic globals)r   r%  r&  r'  r   use_big_arrayr  testingassert_equalbiggier   rZ   r   r)  r*  r+  r,  s       r/   test_big_arrayTestCache.test_big_array  s      "$$D1Q!!(L9!!AJJ##AC4q! 2 	Q# 347!4E	G 21s   A(C
C'c                    U R                  5       nUR                  UR                  UR                  4 H  n[        R
                  " SS9 n[        R                  " S[        5        U R                  U" S5      S5        U R                  S5        S S S 5        U R                  [        W5      S5        U R                  SR                  UR                  5      [        US   R                   5      5        M     g ! , (       d  f       No= f)NTr"  r$  g        r   rC   z#Cannot cache compiled function "{}")r   	use_c_sinuse_c_sin_nest1use_c_sin_nest2r%  r&  r'  r   r  r   rZ   r   r)  formatrq   r*  r+  )r[   r   r.   r-  s       r/   test_ctypesTestCache.test_ctypes  s       "--!4!4c6I6IJA((5%%h=''#4""1%	 6 SVQ'MM5<<QZZHAaDLL! K55s   AC99
D	c                    U R                  5       n[        R                  " 5          [        R                  " S[        5        UR
                  nU R                  U" S5      S5        UR                  nU R                  U" S5      S5        UR                  nU R                  U" S5      S5        UR                  nU R                  U" S5      S5        U R                  S5        S S S 5        g ! , (       d  f       g = f)NerrorrO   r      
      r   )r   r%  r&  r'  r   closure1r  closure2closure3closure4r   r  s      r/   test_closureTestCache.test_closure  s      "$$&!!'<8A##AaD!,A##AaD!,A##AaD"-A##AaD"-q! '&&s   B=C,,
C:c                 v   U R                  5       nUR                  nU R                  U" UR                  S5      S5        U R                  U" UR                  S5      S5        U R                  U" UR                  S5      S5        U R                  U" UR                  S5      S5        U R                  S5        g )NrC   rA  d   rD         )r   first_class_function_usecaserZ   first_class_function_mulfirst_class_function_addr   r  s      r/   test_first_class_function#TestCache.test_first_class_function  s      ",,377;Q?377<cB377;Q?377<bA 	1r6   c                 \   U R                  5       nUR                  SS5        UR                  SS5        UR                  SS5        UR                  SS5        UR	                  SS5        UR                  UR                  S5        UR                  UR                  S5        U R                  5       nU R                  UR                  SS5        U R                  5       nU R                  X5        UR                  nU" SS5        U R                  USS5        U" SS5        U R                  USS5        UR                  nU" SS5        U R                  USS5        U R                  U R                  5       U5        U R                  5         U R                  U R                  5       U5        g )NrD   rO   r   r  r   rC   )r   r  r  r  r  r  r  r  r   r   assertIsNotrZ   r   )r[   r   mtimesmod2r.   s        r/   test_cache_reuseTestCache.test_cache_reuse  s`     "1S!1%1a 		!Q#..!,#//1-&&(A.!!##	!Q1a 	#s1a $$	!Q1a  	..0&9$$&..0&9r6   c                    U R                  5       nUR                  nU R                  U" SS5      S5        [        U R                  S5       nUR                  S5        S S S 5        U R                  5       nUR                  nU R                  U" SS5      S5        UR                  nU R                  U" SS5      S5        g ! , (       d  f       Ni= f)NrD   rO   r   rE   z
Z = 10
   )r   r  r  r&   r   r'   r  r  s      r/   test_cache_invalidateTestCache.test_cache_invalidate  s      "OO!Q+ $,,$GGL! %   "OO!Q,##!Q, %$s   C
Cc                    U R                  5       nUR                  nU R                  U" SS5      S5        U R                  5       nUR                  nSUl        U R                  U" SS5      S5        UR	                  5         U R                  U" SS5      S5        U R                  5       nUR                  nU R                  U" SS5      S5        g )NrD   rO   r   rA  rY  )r   r  r  Z	recompiler  s      r/   test_recompileTestCache.test_recompile  s      "OO!Q+  "OO!Q+	!Q,   "OO!Q,r6   c                     U R                  5       nUR                  nU R                  U" S5      S5        UR                  nU R                  U" S5      S5        g )NrD   r  r@  )r   renamed_function1r  renamed_function2r  s      r/   test_same_namesTestCache.test_same_names  sN      "!!!a(!!!a(r6   c                 r   SSK Jn  UR                  n[        SSS5      n X1l        [        R
                  " U5      n[        R                  " X5      nU R                  U5        S[        l
        [        R                  " X5      nU R                  U[        5        X!l        [        ?
g ! X!l        [        ?
f = f)NrC   functionpassztests/dummy_module.pyexecT)dummy_modulerh  __code__compileinspectgetfiler   from_functionassertIsNoner   frozenassertIsInstance)r[   rh  old_codecode_objsourcelocators         r/   test_frozenTestCache.test_frozen  s    *$$6#:FC	 (__X.F +88JGg&CJ +88JG!!'+?@ !)
 !)
s   A:B( (B6c                    U R                  5       nUR                  nU R                  [        R                  UR
                  R                  SS9  U R                  U" SS5      S5        U R                  USS5        U R                  5       nUR                  nU R                  U" SS5      S5        U R                  USS5        U R                  S5        g)	za
With a disabled __pycache__, test there is a working fallback
(e.g. on the user-wide cache dir)
T)ignore_errorsrD   rO   r   r   rC   N)
r   r  
addCleanupr)   r*   r   
cache_pathr  r   r   )r[   r   r.   rU  s       r/   _test_pycache_fallback TestCache._test_pycache_fallback2  s    
   "OO 	qww'9'9N!Q+1a  !!#!Q+1a  	1r6   ntz3cannot easily make a directory read-only on Windowsc                    [         R                  " U R                  5      R                  n[         R                  " U R                  S5        U R                  [         R                  U R                  U5        U R                  5         g )Nr   )r"   r   r,   st_moder(   r|  r~  )r[   	old_permss     r/   test_non_creatable_pycache$TestCache.test_non_creatable_pycacheK  sR    
 GGDLL)11	
u%$,,	:##%r6   c                 R   [         R                  R                  U R                  S5      n[         R                  " U5        [         R
                  " U5      R                  n[         R                  " US5        U R                  [         R                  X5        U R                  5         g )Nr   r   )
r"   r#   r$   r,   r%   r   r  r(   r|  r~  )r[   pycacher  s      r/   test_non_writable_pycache#TestCache.test_non_writable_pycacheV  sh    
 '',,t||];
GGG$,,	
% '5##%r6   c                 \  ^ ^^ [         R                  SS/mT/ SQ-  m [        R                  " TS/-   5      nWR                  5       R                  5       n[        R                  R                  T R                  S5      m[        TS5       nUR                  S5        S S S 5        UUU 4S	 jnU" 5         U" 5       nT R                  S
UR                  5       5        g ! [        R                   a(  nT R                  SUR                  -  5         S nANS nAff = f! , (       d  f       N= f)N-mIPythonz--quietz--quickz--no-bannerz--colors=NoColor	--version%ipython not available: return code %dzipython_cache_usecase.txtr-  }  
                import os
                import sys

                from numba import jit

                # IPython 5 does not support multiline input if stdin isn't
                # a tty (https://github.com/ipython/ipython/issues/9752)
                f = jit(cache=True)(lambda: 42)

                res = f()
                # IPython writes on stdout, so use stderr instead
                sys.stderr.write(u"cache hits = %d\n" % f.stats.cache_hits[()])

                # IPython hijacks sys.exit(), bypass it
                sys.stdout.flush()
                sys.stderr.flush()
                os._exit(res)
                c            	      B  > [        TS5       n [        R                  " TU [        R                  [        R                  SS9nUR	                  5       u  p#UR
                  S:w  a   TR                  SUR
                  X#4-  5        UsS S S 5        $ ! , (       d  f       g = fNrbT)stdinr   r   universal_newlines*   z6unexpected return code %d
-- stdout:
%s
-- stderr:
%s
r&   r   r   r   r   r   ry   r  pr   r   base_cmdinputfnr[   s       r/   execute_with_input2TestCache.test_ipython.<locals>.execute_with_input      gt$$$XU,6OO,6OO8<> ==?<<2%II 1 "#s 89 :  %$$   A8B
Bcache hits = 1)r   r   r   check_outputCalledProcessErrorskipTestr   stripr   r"   r#   r$   r,   r&   r'   r)  )r[   verer.   r  r   r  r  s   `     @@r/   test_ipythonTestCache.test_ipythonc  s    NND)4MM	*))(k]*BCC iik  "'',,t||-HI'31GG    *	 	 "&		4[ ,, 	*MMALL) * *	*  s#   C DD2DD
D+Nr   r   zrequires ipykernel >= 6c                 4  ^ ^^ [         R                  SS/mT/ SQ-  m [        R                  " TS/-   5      nWR                  5       R                  5       nSSK	J
n  UR                  5       m[        TS5       nUR                  S	5        S S S 5        UUU 4S
 jnU" 5         U" 5       nT R                  SUR                  5       5        g ! [        R                   a(  nT R                  SUR                  -  5         S nANS nAff = f! , (       d  f       N= f)Nr  r  r  r  r  r   )compilerr-  r  c            	      B  > [        TS5       n [        R                  " TU [        R                  [        R                  SS9nUR	                  5       u  p#UR
                  S:w  a   TR                  SUR
                  X#4-  5        UsS S S 5        $ ! , (       d  f       g = fr  r  r  s       r/   r  4TestCache.test_ipykernel.<locals>.execute_with_input  r  r  r  )r   r   r   r  r  r  r   r  r   	ipykernelr  get_tmp_directoryr&   r'   r)  )	r[   r  r  r  r.   r  r   r  r  s	   `      @@r/   test_ipykernelTestCache.test_ipykernel  s    
 NND)4MM	*))(k]*BCC iik  "&,,.'31GG    *	 	 "&		4] ,, 	*MMALL) * *	*  s#   C
 9D	
DDD	
DrG   ) rq   r   r   r   r
  r  r  r  r  r.  r5  r<  rG  rP  rV  rZ  r_  rd  rx  r~  skip_bad_accessunittestskipIfr"   namer  r  r  r  version_infor  r   rG   r6   r/   r   r   4  s    '<!(CG$" 	:<--$).2 __RWW_JL&L & __RWW_JL&L &35j __i4'KY-C-CA-F-J.055055r6   r   c                   4   ^  \ rS rSrU 4S jrS rS rSrU =r$ )TestCacheZipi  c                 T  > [         TU ]  5         SnSnSn[        R                  R	                  U R
                  U5      n[        R                  " US5       nUR                  X!5        S S S 5        [        R                  R                  SU5        SU l        g ! , (       d  f       N6= f)NzI
from numba import jit

@jit(cache=True)
def add(x, y):
    return x + y
ztest_module.pyztest_archive.zipr-  r   test_module)superr   r"   r#   r$   r,   zipfileZipFilewritestrr   r   r   )r[   mod_contentmod_filenamezip_filenamezip_pathzfrp   s         r/   r   TestCacheZip.setUp  s~     () 77<<l;__Xs+rKK2 , 	8$$ ,+s   B
B'c                     [         R                  R                  S5        [         R                  R                  SS 5        g )Nr   r  )r   r#   r   r   rb   s    r/   r   TestCacheZip.tearDown  s#    Qt,r6   c                    SS K nUR                  SS5      nU R                  US5        U R                  UR                  SS5        U R                  UR                  S5        [        R
                  S	 [        R                  " 5         SS K nUR                  SS5      nU R                  US5        U R                  UR                  S5        g )Nr   rD   rO   r   rC   r  )r  addrZ   r   r   r   	importlibinvalidate_caches)r[   r  result1result2s       r/   test_zip_cachingTestCacheZip.test_zip_caching  s     	//!Q'!$A. 	+ KK&##% //!Q'!$ 	+r6   )r   )	rq   r   r   r   r   r   r  r   __classcell__rp   s   @r/   r  r    s    %.-, ,r6   r  c                   $    \ rS rSrSrS rS rSrg)TestCacheZipLibi  zJ
ZipCache tests that don't require the setup/teardown from `TestCacheZip`
c                     S nSn[         R                  " X5      nU R                  U5        U R                  UR                  [        [        S5      5      5        U R                  UR                  S5        g )Nc                      g ra   rG   rG   r6   r/   	mock_func<TestCacheZipLib.test_zip_locator_creation.<locals>.mock_func      r6   z/path/to/archive.zip/module.pyz/path/to/archive.zipz	module.py)r   rp  assertIsNotNonerZ   	_zip_pathr*  r   _internal_path)r[   r  r  rw  s       r/   test_zip_locator_creation)TestCacheZipLib.test_zip_locator_creation  sc    	 4!//	DW%**C5K0L,MN//=r6   c                 \    S nSn[         R                  " X5      nU R                  U5        g )Nc                      g ra   rG   rG   r6   r/   r  @TestCacheZipLib.test_zip_locator_non_zip_path.<locals>.mock_func  r  r6   z/path/to/module.py)r   rp  rq  )r[   r  non_zip_pathrw  s       r/   test_zip_locator_non_zip_path-TestCacheZipLib.test_zip_locator_non_zip_path  s,    	 ,!//	H'"r6   rG   N)rq   r   r   r   __doc__r  r  r   rG   r6   r/   r  r    s    
>#r6   r  c                   :   ^  \ rS rSrU 4S jrU 4S jrS rSrU =r$ )TestSequentialParForsCachei(  c                 @   > [         [        U ]  5         S[        l        g )NT)r  r  r   r   sequential_parfor_loweringr[   rp   s    r/   r    TestSequentialParForsCache.setUp*  s    ($57,0)r6   c                 @   > [         [        U ]  5         S[        l        g )NF)r  r  r   r   r  r  s    r/   r   #TestSequentialParForsCache.tearDown/  s    ($8:,1)r6   c                    U R                  5       nU R                  S5        UR                  n[        R                  " S5      nU R                  U" U5      X3-  U-   5        UR                  R                  5        Vs/ s H  nUR                  R                  PM     nnU R                  US/5        U R                  S5        g s  snf )Nr   rA  FrD   )r   r   parfor_usecaser  onesr  	overloadsr   libraryhas_dynamic_globalsrZ   )r[   r   r.   arycresdynamic_globalss         r/   r
  'TestSequentialParForsCache.test_caching4  s      "1ggbk#	C8'({{'9'9';=';t  <<;;'; 	 =5'21=s   = CrG   )	rq   r   r   r   r   r   r
  r   r  r  s   @r/   r  r  (  s    1
2
	 	r6   r  c                   z    \ rS rSrSrS r\R                  " \R                  " 5       S:H  S5      S 5       r
S rSrg	)
TestCacheWithCpuSettingi@  Fc                     SnU R                  5       R                  5        H%  u  p4X1;   d  M  U R                  XAU   5        US-  nM'     U R                  USSS9  g )Nr   rC   znothing to comparemsg)r   itemsassertGreaterEqualassertGreater)r[   
mtimes_oldmatch_countkrP   s        r/   check_later_mtimes*TestCacheWithCpuSetting.check_later_mtimesD  sb    ))+113DA''a=9q  4 	;3 	 	5r6   genericzLLVM detected 'generic' CPUc                 @   U R                  S5        U R                  [        R                  " 5       SS.S9  U R	                  5       n[        U R                  5       5      nU R                  SSS.S9  U R                  U5        U R                  [        U R                  5       5      U5        U R                  5       nUR                  R                  nUR                  nUR                  5       nU R                  [        U5      S5        UR                  5       u  pxUS   S   S:X  a  XxpOXxpU R                  U
S   S   [        R                  " 5       5        U R                  U
S   S   S5        U R                  U	S   S   S5        U R                  U	S   S   S5        g )Nr    )NUMBA_CPU_NAMENUMBA_CPU_FEATURESr   r  rD   rC   )r   r   llget_host_cpu_namer   r   r   r   r  r   r  _cache_cache_file_load_indexrZ   keys)r[   rT  
cache_sizer   r:   
cache_filecache_indexkey_akey_bkey_generickey_hosts              r/   test_user_set_cpu_name.TestCacheWithCpuSetting.test_user_set_cpu_nameM  s    	1 	$$')';';'=+-/ 	% 	
 &&(,,./
 	$$'"$.
$ 	
 	'3t2245zB  "&&&&
 ,,.[)1-$))+8A;)#$)$)k!Q)=)=)?@!Q,Q*I6Q*B/r6   c                    U R                  S5        [        R                  R                  5       n[        R                  " 5       nU R                  SU0S9  [        U R                  5       5      nU R                  5       nSnU R                  X%5        U R                  SU0S9  U R                  U5        U R                  [        U R                  5       5      U5        U R                  5       nUR                  R                  nUR                  nUR!                  5       n	U R#                  [        U	5      S5        U	R%                  5       u  pU
S   S   U:X  a  XpOXpU R#                  US   S   UR'                  5       5        U R#                  US   S   U5        U R#                  US   S   UR'                  5       5        U R#                  US   S   U5        g )Nr   r  r   z	-sse;-avxrD   rC   )r   r   target_contextr   get_host_cpu_featuresr   r   r   r   assertNotEqualr   r  r   r  r	  r
  r  rZ   r  _get_host_cpu_name)r[   cpu_codegensystem_featuresr  rT  my_cpu_featuresr   r:   r  r  r  r  key_modifiedr  s                 r/   test_user_set_cpu_features2TestCacheWithCpuSetting.test_user_set_cpu_featuresr  s   1 //779!779 	$$)?; 	% 	
 ,,./
&&(%O=$$)?; 	% 	
 	'3t2245zB  "&&&&
 ,,.[)1-$))+8A;/)%*(%*l!Q)G)G)IJ!Q9a+[-K-K-MNa+_=r6   rG   N)rq   r   r   r   _numba_parallel_test_r   r  r  r  r  r  r  r   rG   r6   r/   r  r  @  sC    !5 __R))+y824!04!0F'>r6   r  c                       \ rS rSrSr\R                  R                  \5      r	\R                  R                  \	S5      rSrS rSrg)TestMultiprocessCachei  Fr   r   c                    U R                  5       nUR                  nSn [        R                  " S5      nUR                  U5      n [        UR                  U[        U5      5      5      nUR                  5         U R                  XcUS-
  -  S-  5        g ! [         a	    [        n Nsf = f! UR                  5         f = f)NrO   spawnrC   rD   )r   simple_usecase_callerrr   rs   AttributeErrorPoolr   imaprangecloserZ   )r[   r   r.   r   r{   poolr]   s          r/   test_multiprocessing*TestMultiprocessCache.test_multiprocessing  s      " %%	"!--g6C xx{	dii58,-CJJL1q5kQ./  	"!C	" JJLs   B $B- B*)B*-B?rG   N)rq   r   r   r   r!  r"   r#   r   r   r   r$   r   r   r-  r   rG   r6   r/   r#  r#    s;     "77??8$DGGLL':;M.G0r6   r#  c                       \ rS rSrSr\R                  R                  \5      r	\R                  R                  \	S5      rSrSrSrS rS rS	 rS
 rS r\R*                  " \" \S5      S5      S 5       rSrg)TestCacheFileCollisioni  Fr   caching_file_loc_fodderzD
from numba import njit
@njit(cache=True)
def bar():
    return 123
zD
from numba import njit
@njit(cache=True)
def bar():
    return 321
c                 4   [        S5      U l        [        R                  R	                  SU R                  5        SU l        U R                  U R
                  [        R                  5        U R
                  U l        SR                  U R
                  S/5      U l
        [        R                  R                  U R                  U R
                  5      n[        R                  " U5        [        [        R                  R                  US5      S5       n[        U R                  US9  S S S 5        [        [        R                  R                  US	5      S5       n[        U R                   US9  S S S 5        g ! , (       d  f       NV= f! , (       d  f       g = f)
Ntest_cache_file_locr   module_name_that_is_unlikely.fooz__init__.pyr-  filezfoo.py)r   r,   r   r#   r   r   assertNotInr   modname_bar1r$   modname_bar2r"   r%   r&   printsource_text_1source_text_2)r[   foomodfouts      r/   r   TestCacheFileCollision.setUp  s   %&;<4<<(5s{{3 LLHHdllE%:;dllDLL9
"'',,v}5s;t$$$40 <"'',,vx0#6$$$$40 76 <;66s   E8F	8
F	
Fc                     [         R                  R                  U R                  S 5        [         R                  R                  U R                  S 5        [         R
                  R                  U R                  5        g ra   )r   r   r   r:  r;  r#   r   r,   rb   s    r/   r   TestCacheFileCollision.tearDown  sF    ))40))40%r6   c                 @    [        U R                  5      R                  $ ra   )r   r:  barrb   s    r/   import_bar1"TestCacheFileCollision.import_bar1      d//0444r6   c                 @    [        U R                  5      R                  $ ra   )r   r;  rE  rb   s    r/   import_bar2"TestCacheFileCollision.import_bar2  rH  r6   c                 f   U R                  5       nU R                  5       nUR                  R                  R                  nUR                  R                  R                  nU R                  X45        U R                  UR                  S5      5        U R                  UR                  S5      5        g )Nz__init__.bar-3.pyzfoo.bar-3.py)rF  rJ  r	  r
  _index_namer  
assertTrue
startswith)r[   bar1bar2idxname1idxname2s        r/   test_file_location)TestCacheFileCollision.test_file_location  s    !!;;**66;;**66H/++,?@A++N;<r6   rs   z)Test requires multiprocessing.get_contextc                 l   U R                  5       nU R                  5       n[        5        nU" 5       nS S S 5        WR                  5       nU R	                  UR                  S5      S5        U R	                  UR                  S5      S5        U R	                  UR                  S5      S5        U R	                  UR                  S5      S5        [        5        nU" 5       nS S S 5        UR                  5       nU R	                  UR                  S5      S5        U R	                  UR                  S5      S5        U R	                  UR                  S5      S5        U R	                  UR                  S5      S5        U R                  WW5         [        R                  " S5      nWR                  5       nUR                  [        XR                  U R                  U R                   4S	9n	U	R#                  5         UR%                  5       n
UR%                  5       nUR%                  5       nUR%                  5       nU	R'                  5         U R	                  X5        U R	                  X5        U R	                  U
R                  S5      S5        U R	                  U
R                  S5      S5        U R	                  U
R                  S5      S5        U R	                  U
R                  S5      S5        U R	                  UR                  S5      S5        U R	                  UR                  S5      S5        U R	                  UR                  S5      S5        U R	                  UR                  S5      S5        g ! , (       d  f       GNJ= f! , (       d  f       GN= f! [         a    [        S5         GNf = f)
Nzindex savedrC   z
data savedzindex loadedr   zdata loadedr%  zmissing spawn contextrl   )rF  rJ  r   getvaluerZ   countr  rr   rs   
ValueErrorr<  rt   ru   cache_file_collision_testerr,   r:  r;  rw   rx   r$   )r[   rP  rQ  bufres1cachelogres2mpqr}   log1got1log2got2s                 r/   test_no_collision(TestCacheFileCollision.test_no_collision  s    !! C6D !<<>6:5q97;6: C6D !<<>6:5q97;6:D$'	+ !,,W5B HHJzz!< !<< $ 1 1 $ 1 1 3  4 	

uuwuuwuuwuuw		 	$$ 	M2A6L115N3Q7M2A6 	M2A6L115N3Q7M2A6m !  !   	+)*	+s)   M6NN 6
N
NN32N3)r   r:  r;  r,   N)rq   r   r   r   r!  r"   r#   r   r   r   r$   r   r   r=  r>  r   r   rF  rJ  rT  r  
skipUnlesshasattrrr   re  r   rG   r6   r/   r0  r0    s    !77??8$DGGLL':;M'GMM1&
55= -@DF97F97r6   r0  c                    [         R                  R                  SU5        [        U5      R                  n[        U5      R                  n[        5        nU" 5       nS S S 5        U R                  WR                  5       5        U R                  W5        [        5        nU" 5       nS S S 5        U R                  UR                  5       5        U R                  W5        g ! , (       d  f       N= f! , (       d  f       NP= f)Nr   )r   r#   r   r   rE  r   r   rW  )	r`  r,   r:  r;  rP  rQ  r[  r1r2s	            r/   rZ  rZ  .  s    HHOOAw,'++D,'++D		V 
EE#,,.EE"I		V 
EE#,,.EE"I 
	 
	s   C C1 
C.1
C?c                   2    \ rS rSrSrSrSrS rS rS r	Sr
g	)
#TestCacheMultipleFilesWithSignaturei<  Fz
from file2 import function2
z
from numba import njit

@njit('float64(float64)', cache=True)
def function1(x):
    return x

@njit('float64(float64)', cache=True)
def function2(x):
    return x
c                    [        S5      U l        [        R                  R	                  U R                  S5      U l        [        U R
                  S5       n[        U R                  US9  S S S 5        [        R                  R	                  U R                  S5      U l	        [        U R                  S5       n[        U R                  US9  S S S 5        g ! , (       d  f       Nq= f! , (       d  f       g = f)Nr3  zfile1.pyr-  r7  zfile2.py)r   r,   r"   r#   r$   file1r&   r<  source_text_file1file2source_text_file2)r[   r@  s     r/   r   )TestCacheMultipleFilesWithSignature.setUpP  s    %&;<WW\\$,,
;
$**c"d$((t4 # WW\\$,,
;
$**c"d$((t4 #"	 #" #"s   C8C'
C$'
C5c                 D    [         R                  " U R                  5        g ra   )r)   r*   r,   rb   s    r/   r   ,TestCacheMultipleFilesWithSignature.tearDown[  s    dll#r6   c                 |   [         R                  " [        R                  U R                  /[         R
                  [         R
                  S9nUR                  5       u  p#SUR                  5        SUR                  5        3nU R                  UR                  SUS9  [         R                  " [        R                  U R                  /[         R
                  [         R
                  S9nUR                  5       u  p#SUR                  5        SUR                  5        3nU R                  UR                  SU5        g )Nr   r   zstdout:
z


stderr:
r   r  )r   r   r   r   ro  r   r   r   rZ   r   rq  )r[   r   r   r   r  s        r/   *test_caching_mutliple_files_with_signatureNTestCacheMultipleFilesWithSignature.test_caching_mutliple_files_with_signature^  s      #..$**!=(2(29 $$&#**,}SZZ\NC))1#6   #..$**!=(2(29 $$&#**,}SZZ\NC))1c2r6   )ro  rq  r,   N)rq   r   r   r   r!  rp  rr  r   r   rx  r   rG   r6   r/   rm  rm  <  s)     "
	5$3r6   rm  c                       \ rS rSr\R
                  R                  \5      r\R
                  R                  \S5      r
SrS rS rS rSrg)	TestCFuncCacheip  zcfunc_cache_usecases.pycfunc_caching_test_fodderc                 d   S[        U R                  U R                  S9-  n[        R                  " [
        R                  SU/[        R                  [        R                  S9nUR                  5       u  p4UR                  S:w  a*  [        SUR                   SUR                  5        S35      eg )	Naf  if 1:
            import sys

            sys.path.insert(0, %(tempdir)r)
            mod = __import__(%(modname)r)
            mod.self_test()

            f = mod.add_usecase
            assert f.cache_hits == 1
            f = mod.outer
            assert f.cache_hits == 1
            f = mod.div_usecase
            assert f.cache_hits == 1
            r   r   rw  r   r   z:stderr follows
r   )r   r,   r   r   r   r   r   r   r   r   r   r   )r[   r   r   r   r   s        r/   r   &TestCFuncCache.run_in_separate_processv  s     t||T\\BC   #..$!=(2
Q$$&q  #<U=M=M<N O447JJL>"E F F !r6   c                 $    UR                  5         g ra   )	self_testr[   r   s     r/   check_moduleTestCFuncCache.check_module  s    r6   c                 n   U R                  S5        U R                  5       nU R                  S5        U R                  UR                  R                  S5        U R                  UR
                  R                  S5        U R                  UR                  R                  S5        U R                  UR                  R                  S5        U R                  U5        U R                  5       nU R                  S5        U R                  UR                  R                  S5        U R                  UR
                  R                  S5        U R                  UR                  R                  S5        U R                  UR                  R                  S5        U R                  U5        U R                  5         g )Nr   r   rC   )
r   r   rZ   r  r   r  r  div_usecaser  r   r  s     r/   r
  TestCFuncCache.test_caching  sF   1  "133Q7--q100;;Q?33Q7#   "133Q7--q100;;Q?33Q7#$$&r6   rG   N)rq   r   r   r   r"   r#   r   r   r   r$   r   r   r   r  r
  r   rG   r6   r/   r{  r{  p  s>    77??8$DGGLL'@AM)GF0'r6   r{  c                       \ rS rSrSrg)TestLocatori  rG   N)rq   r   r   r   r   rG   r6   r/   r  r    s    r6   r  c                   6    \ rS rSrSrS rS rS rS rS r	Sr
g	)
&TestCacheLocatorEnvironmentIntegrationi  z9Integration tests for environment variable functionality.c                     S n[        SS5         U R                  [        5         [        U5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nc                      gNr  rG   rG   r6   r/   r  \TestCacheLocatorEnvironmentIntegration.test_locators_env_override_unknown.<locals>.mock_func      r6   NUMBA_CACHE_LOCATOR_CLASSESzfoo,bar)r   assertRaisesRuntimeErrorr	   )r[   r  s     r/   "test_locators_env_override_unknownITestCacheLocatorEnvironmentIntegration.test_locators_env_override_unknown  sR    	 !)
 ""<0i( 1	
 
 10	
 
s!   AAA
A	A
A"c                     S n[        SS5         [        U5      n[        nU R                  UR                  R
                  U5        S S S 5        g ! , (       d  f       g = f)Nc                      gr  rG   rG   r6   r/   r  [TestCacheLocatorEnvironmentIntegration.test_locators_env_override_single.<locals>.mock_func  r  r6   r  r   )r   r	   r   rs  _implrw  r[   r  r:   expectedLocators       r/   !test_locators_env_override_singleHTestCacheLocatorEnvironmentIntegration.test_locators_env_override_single  sU    	 !)*
 "),E:O!!%++"5"5"13
 
 
s   8A
Ac                     S n[        S[         S35         [        U5      n[        nU R	                  UR
                  R                  U5        S S S 5        g ! , (       d  f       g = f)Nc                      gr  rG   rG   r6   r/   r  [TestCacheLocatorEnvironmentIntegration.test_locators_env_override_custom.<locals>.mock_func  r  r6   r  z.TestLocator)r   rq   r	   r  rs  r  rw  r  s       r/   !test_locators_env_override_customHTestCacheLocatorEnvironmentIntegration.test_locators_env_override_custom  s\    	 !)j%
 "),E)O!!%++"5"5"13
 
 
s   8A
A&c                     S nSn[         n[        SU5         [        U5      nU R                  UR                  R
                  U5        S S S 5        g ! , (       d  f       g = f)Nc                      gr  rG   rG   r6   r/   r  YTestCacheLocatorEnvironmentIntegration.test_locators_env_override_list.<locals>.mock_func  r  r6   zXInTreeCacheLocatorFsAgnostic,InTreeCacheLocator,IPythonCacheLocator,UserWideCacheLocatorr  )r   r   r	   rs  r  rw  )r[   r  locatorClassesr  r:   s        r/   test_locators_env_override_listFTestCacheLocatorEnvironmentIntegration.test_locators_env_override_list  sX    	E6 )
 "),E!!%++"5"5G
 
 
s   2A
A!c                 x    S n[        U5      n[        nU R                  UR                  R                  U5        g )Nc                      gr  rG   rG   r6   r/   r  OTestCacheLocatorEnvironmentIntegration.test_default_locators.<locals>.mock_func  r  r6   )r	   r
   rs  r  rw  r  s       r/   test_default_locators<TestCacheLocatorEnvironmentIntegration.test_default_locators  s2    	 i(,ekk11?Cr6   rG   N)rq   r   r   r   r  r  r  r  r  r  r   rG   r6   r/   r  r    s     C	)33HDr6   r  c                   $    \ rS rSrSrS rS rSrg) TestInTreeCacheLocatorFsAgnostici  z7Test _InTreeCacheLocatorFsAgnostic class functionality.c                 &   SSK Jn  [        R                  " U5      n[        R
                  " X5      n[        R
                  " X5      nU R                  U5        U R                  U5        UR                  5       nUR                  5       nU R                  [        U5      S5        U R                  [        U5      S5        U R                  US   US   5        U R                  US   [        US   5      5        U R                  US   US   5        g)z9Test that FsAgnostic locator floors timestamp to seconds.rC   rg  rD   r   N)rk  rh  rn  ro  r
   rp  r   r  get_source_stamprZ   r   r   assertLessEqual)r[   rh  rv  regular_locatorfs_agnostic_locatorregular_stampfs_agnostic_stamps          r/   test_source_stamp_precision<TestInTreeCacheLocatorFsAgnostic.test_source_stamp_precision  s    ** -::8L:HH

 	_-01 (88:/@@B 	]+Q/./3 	q)+<Q+?@ 	*1-u]15E/FG 	.q1=3CDr6   c                 J   SSK Jn  [        R                  " U5      n[        R
                  " X5      n[        R                  " U5      nUR                  nUR                  5       n[        U5      nU R                  US   U5        U R                  US   UR                  5        g)z:Test FsAgnostic timestamp handling using filesystem mtime.rC   rg  r   N)rk  rh  rn  ro  r   rp  r"   r   st_mtimer  r   rZ   st_size)r[   rh  rv  r  stat_resultoriginal_mtimestampexpected_timestamps           r/   test_timestamp_precision_on_fs?TestInTreeCacheLocatorFsAgnostic.test_timestamp_precision_on_fs  s     	+* ;HH

 ggfo$-- $446 #>2q#56 	q;#6#67r6   rG   N)rq   r   r   r   r  r  r  r   rG   r6   r/   r  r    s    AEB8r6   r  __main__)Pr  rn  rr   r"   r)   r   r   r   r   r  r%  r  pathlibr   llvmlite.bindingbindingr  numpyr  mathr   numbar   
numba.corer   numba.core.cachingr   r   r	   r
   r   numba.core.errorsr   numba.parforsr   numba.tests.supportr   r   r   r   r   r   r   r   r   r   numba.core.registryr   r  ImportErrorr0   _access_preventable_access_msgrg  r  r5   rA   rH   rM   rQ   rT   rV   rv   r   r   r   r  r  r  r  r#  r0  rZ  rm  r{  r  r  r  rq   mainrG   r6   r/   <module>r     s      	    
            +     +
 > 23 I%%&9;G

7
+x 7
t,84H 4n&.- &.R[5+ [5|8,. 8,v#1 #6 !<  .Y>9 Y>x0M 0: q7X.. q7 q7h13(*;*; 13h6'] 6'r	$ 	=DX =D@<8x <8~ zMMO {'  Is   F$ $F0/F0