+
    ;iy!                        ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RI	H
t
 ^ RIHt ^ RIt ! R R]
4      t ! R R]4      t ! R	 R
]4      tR t ! R R]4      t ! R R]4      t]R8X  d   ]P*                  ! 4        R# R# )    N)capture_cache_log)BaseCacheTest)configc                   <  a  ] tR t^t o RtRt]P                  P                  ]	4      t
]P                  P                  ]
R4      tRt]P                  ! R4      t]P                  ! R4      t]P                  ! R4      t]P                  ! R4      tR	 tR
 tR tRtV tR# )UfuncCacheTestz[
Since the cache stats is not exposed by ufunc, we test by looking at the
cache debug log.
Fzcache_usecases.pyufunc_caching_test_fodderz\[cache\] data saved toz\[cache\] index saved toz\[cache\] data loaded fromz\[cache\] index loaded fromc                    V P                   P                  V4      pV P                  P                  V4      pV P                  \	        V4      V4       V P                  \	        V4      V4       R# )z(
Check number of cache-save were issued
N)regex_data_savedfindallregex_index_savedassertEquallen)selfcachelogcount
data_savedindex_saveds   &&&  _/var/www/html/photoedit/myenv/lib/python3.14/site-packages/numba/tests/npyufunc/test_caching.pycheck_cache_saved UfuncCacheTest.check_cache_saved   sY     **228<
,,44X>Z%0[)51    c                    V P                   P                  V4      pV P                  P                  V4      pV P                  \	        V4      V4       V P                  \	        V4      V4       R# )z(
Check number of cache-load were issued
N)regex_data_loadedr   regex_index_loadedr   r   )r   r   r   data_loadedindex_loadeds   &&&  r   check_cache_loaded!UfuncCacheTest.check_cache_loaded(   sZ     ,,44X>..66x@[)51\*E2r   c                   V P                  4       p\        WA4      p\        4       ;_uu_ 4       pV! R/ VB pRRR4       XP                  4       pV P	                  WR7       \        4       ;_uu_ 4       pV! R/ VB p	RRR4       VP                  4       pV P                  WR7       XX	3#   + '       g   i     L{; i  + '       g   i     LI; i)zN
Check number of cache load/save.
There should be one per overloaded version.
Nr    )import_modulegetattrr   getvaluer   r   )
r   usecase_namen_overloadskwargsmodusecaseout	new_ufuncr   cached_ufuncs
   &&&,      r   check_ufunc_cache UfuncCacheTest.check_ufunc_cache1   s    
   "#,  C)&)I !<<>x;   C",V,L !<<><,&& !  ! s   	B*3	B=*B:	=C	r!   N)__name__
__module____qualname____firstlineno____doc___numba_parallel_test_ospathdirname__file__herejoinusecases_filemodnamerecompiler
   r   r   r   r   r   r-   __static_attributes____classdictcell____classdict__s   @r   r   r      s      "77??8$DGGLL':;M)Gzz"<=

#>?

#@A$BC23' 'r   r   c                   >   a  ] tR t^Gt o R tR tR tR tR tRt	V t
R# )TestUfuncCacheTestc                   V P                   ! RR^/VB w  r#\        P                  P                  ^
4      P                  \        P                  4      p\        P
                  P                  V! V4      V! V4      4       \        P                  ! ^
\        P                  R7      p\        P
                  P                  V! V4      V! V4      4       R# )direct_ufunc_cache_usecaser&   dtypeN)rF   	r-   nprandomastypefloat64testingassert_equalarangeintpr   r'   r+   r,   inps   &,   r   test_direct_ufunc_cache*TestUfuncCacheTest.test_direct_ufunc_cacheI   s    "&"8"8 #C67#C;A#C	 iir"))"**5


	#S0ABii"''*


	#S0ABr   c                *    V P                  R R7       R# T)forceobjNrT   r   s   &r   test_direct_ufunc_cache_objmode2TestUfuncCacheTest.test_direct_ufunc_cache_objmodeR   s    $$d$3r   c                *    V P                  R R7       R# parallel)targetNrY   rZ   s   &r    test_direct_ufunc_cache_parallel3TestUfuncCacheTest.test_direct_ufunc_cache_parallelU   s    $$J$7r   c                   V P                   ! RR^/VB w  r#\        P                  P                  ^
4      P                  \        P                  4      p\        P
                  P                  V! V4      V! V4      4       \        P                  ! ^
\        P                  R7      p\        P
                  P                  V! V4      V! V4      4       R# )indirect_ufunc_cache_usecaser&   rG   N)rd   rI   rR   s   &,   r   test_indirect_ufunc_cache,TestUfuncCacheTest.test_indirect_ufunc_cacheX   s    "&"8"8 #E89#E=C#E	 iir"))"**5


	#S0ABii"''*


	#S0ABr   c                *    V P                  R R7       R# r^   )re   rZ   s   &r   "test_indirect_ufunc_cache_parallel5TestUfuncCacheTest.test_indirect_ufunc_cache_parallela   s    &&j&9r   r!   N)r/   r0   r1   r2   rT   r[   ra   re   rh   r?   r@   rA   s   @r   rD   rD   G   s%     C48C: :r   rD   c                   2   a  ] tR t^et o R tR tR tRtV tR# )TestDUfuncCacheTestc                   V P                  4       p\        W!4      p\        4       ;_uu_ 4       pV! 4       pR R R 4       V P                  XP	                  4       ^ R7       \        4       ;_uu_ 4       pX! \
        P                  ! ^
4      4       R R R 4       V P                  VP	                  4       ^R7       V P                  VP	                  4       ^ R7       \        4       ;_uu_ 4       pV! 4       pV! \
        P                  ! ^
4      4       R R R 4       V P                  VP	                  4       ^R7       R #   + '       g   i     EL; i  + '       g   i     L; i  + '       g   i     LZ; i)Nr    )r"   r#   r   r   r$   rJ   rP   r   )r   r%   r(   r)   r*   ufuncs   &&    r   check_dufunc_usecase(TestDUfuncCacheTest.check_dufunc_usecaseh   s      "#,  CIE !s||~Q7  C"))B-  !s||~Q7a8  CIE"))B-  ! 	a8 !   ! 
 ! s#   D91E*$E 9E
	E	 E0	c                (    V P                  R 4       R# )direct_dufunc_cache_usecaseNrn   rZ   s   &r   test_direct_dufunc_cache,TestDUfuncCacheTest.test_direct_dufunc_cachez   s    !!"?@r   c                (    V P                  R 4       R# )indirect_dufunc_cache_usecaseNrr   rZ   s   &r   test_indirect_dufunc_cache.TestDUfuncCacheTest.test_indirect_dufunc_cache~   s    !!"ABr   r!   N)	r/   r0   r1   r2   rn   rs   rw   r?   r@   rA   s   @r   rk   rk   e   s     9$AC Cr   rk   c                 V    \         P                  '       d   V P                  R R4      p V # )/z\\\\)r   IS_WIN32replace)rstrs   &r   _fix_raw_pathr~      s     ||D'*Kr   c                   D   a  ] tR t^t o R tR tR tR tR tR t	Rt
V tR# )	TestGUfuncCacheTestc                2   V P                  4       p\        VR 4      p\        4       ;_uu_ 4       pV! 4        RRR4       XP                  4       p\	        R4      p\
        P                  ! VP                  V P                  4      V4      p\	        R4      p\
        P                  ! VP                  V P                  4      V4      pV P                  \        V4      ^4       V P                  \        V4      \        V4      4       R#   + '       g   i     L; i)direct_gufunc_cache_usecaseNz/__pycache__/guf-{}z/__pycache__/{})r"   r#   r   r$   r~   r=   r   formatr<   assertGreaterr   r   )	r   r(   r)   r*   r   fmt1prefixedfmt2normals	   &        r   test_filename_prefix(TestGUfuncCacheTest.test_filename_prefix   s      "#<=  CI !<<>34::dkk$,,7B/0DKK5x@3v;*Vc(m4 ! s   DD	c                   V P                   ! RR^/VB w  r#\        P                  P                  ^
4      P                  \        P                  4      p\        P
                  P                  V! V4      V! V4      4       \        P                  ! ^
\        P                  R7      p\        P
                  P                  V! V4      V! V4      4       R# )r   r&   rG   N)r   rI   rR   s   &,   r   test_direct_gufunc_cache,TestGUfuncCacheTest.test_direct_gufunc_cache   s     #'"8"8 #H7<#H@F#H	 iir"))"**5


	#S0ABii"''*


	#S0ABr   c                *    V P                  R R7       R# rW   r   rZ   s   &r    test_direct_gufunc_cache_objmode4TestGUfuncCacheTest.test_direct_gufunc_cache_objmode   s    %%t%4r   c                *    V P                  R R7       R# r^   r   rZ   s   &r   !test_direct_gufunc_cache_parallel5TestGUfuncCacheTest.test_direct_gufunc_cache_parallel   s    %%Z%8r   c                   V P                   ! RR^/VB w  r#\        P                  P                  ^
4      P                  \        P                  4      p\        P
                  P                  V! V4      V! V4      4       \        P                  ! ^
\        P                  R7      p\        P
                  P                  V! V4      V! V4      4       R# )indirect_gufunc_cache_usecaser&   rG   N)r   rI   rR   s   &,   r   test_indirect_gufunc_cache.TestGUfuncCacheTest.test_indirect_gufunc_cache   s     #'"8"8 #F9:#F>D#F	 iir"))"**5


	#S0ABii"''*


	#S0ABr   c                *    V P                  R R7       R# r^   )r   )r   r'   s   &,r   #test_indirect_gufunc_cache_parallel7TestGUfuncCacheTest.test_indirect_gufunc_cache_parallel   s    ''z':r   r!   N)r/   r0   r1   r2   r   r   r   r   r   r   r?   r@   rA   s   @r   r   r      s*     5 	C59	C; ;r   r   c                   2   a  ] tR t^t o R tR tR tRtV tR# )TestCacheSpecificIssuec                   R \        V P                  V P                  VR7      ,          p\        P                  ! \
        P                  RV.\        P                  \        P                  R7      pVP                  4       w  rEVP                  ^ 8w  d-   \        RVP                  : RVP                  4       : R24      hR# )zif 1:
            import sys

            sys.path.insert(0, %(tempdir)r)
            mod = __import__(%(modname)r)
            mod.%(runcode)s
            )tempdirr<   runcodez-c)stdoutstderrzprocess failed with code z: stderr follows

N)dictr   r<   
subprocessPopensys
executablePIPEcommunicate
returncodeAssertionErrordecode)r   r   codepopenr*   errs   &&    r   run_in_separate_process.TestCacheSpecificIssue.run_in_separate_process   s     t||T\\&((   #..$!=(2
Q$$&q  -2-=-=szz|"M N N !r   c                J    V P                  R 4       V P                  R 4       R# )zdirect_ufunc_cache_usecase()Nr   rZ   s   &r   test_first_load_cached_ufunc3TestCacheSpecificIssue.test_first_load_cached_ufunc   s"    $$%CD 	$$%CDr   c                J    V P                  R 4       V P                  R 4       R# )zdirect_gufunc_cache_usecase()Nr   rZ   s   &r   test_first_load_cached_gufunc4TestCacheSpecificIssue.test_first_load_cached_gufunc   s"    $$%DE 	$$%DEr   r!   N)	r/   r0   r1   r2   r   r   r   r?   r@   rA   s   @r   r   r      s     N0EF Fr   r   __main__)r   os.pathr5   r=   r   numpyrJ   numba.tests.supportr   numba.tests.test_cachingr   
numba.corer   unittestr   rD   rk   r~   r   r   r/   mainr!   r   r   <module>r      s    
  	   1 2  6'] 6'r: :<C. C:/;. /;d&F^ &FR zMMO r   