Ë
    üÇ:jy!  ã                   óú   — d dl Z d dlZd dlZd dlZd dlZd dlmZ d dl	m
Z
 d dlmZ d dlZ G d„ de
«      Z G d„ de«      Z G d	„ d
e«      Zd„ Z G d„ de«      Z G d„ de«      Zedk(  r ej*                  «        yy)é    N)Úcapture_cache_log)ÚBaseCacheTest)Úconfigc                   ó(  — e Zd ZdZdZej                  j                  e«      Z	ej                  j                  e	d«      ZdZ ej                  d«      Z ej                  d«      Z ej                  d«      Z ej                  d«      Zd	„ Zd
„ Zd„ Zy)ÚUfuncCacheTestzg
    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                 óÜ   — | j                   j                  |«      }| j                  j                  |«      }| j                  t	        |«      |«       | j                  t	        |«      |«       y)z8
        Check number of cache-save were issued
        N)Úregex_data_savedÚfindallÚregex_index_savedÚassertEqualÚlen)ÚselfÚcachelogÚcountÚ
data_savedÚindex_saveds        úv/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/numba/tests/npyufunc/test_caching.pyÚcheck_cache_savedz UfuncCacheTest.check_cache_saved   sY   € ð ×*Ñ*×2Ñ2°8Ó<ˆ
Ø×,Ñ,×4Ñ4°XÓ>ˆØ×Ñœ˜Z›¨%Ô0Ø×Ñœ˜[Ó)¨5Õ1ó    c                 óÜ   — | j                   j                  |«      }| j                  j                  |«      }| j                  t	        |«      |«       | j                  t	        |«      |«       y)z8
        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_loadedz!UfuncCacheTest.check_cache_loaded(   sZ   € ð ×,Ñ,×4Ñ4°XÓ>ˆØ×.Ñ.×6Ñ6°xÓ@ˆØ×Ñœ˜[Ó)¨5Ô1Ø×Ñœ˜\Ó*¨EÕ2r   c                 ój  — | j                  «       }t        ||«      }t        «       5 } |di |¤Ž}ddd«       j                  «       }| j	                  ||¬«       t        «       5 } |di |¤Ž}	ddd«       |j                  «       }| j                  ||¬«       	fS # 1 sw Y   ŒnxY w# 1 sw Y   Œ<xY w)zf
        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_cachez UfuncCacheTest.check_ufunc_cache1   s»   € ð
 × Ñ Ó"ˆÜ˜#˜|Ó,ˆäÓ ð 	* CÙÑ) &Ñ)ˆI÷	*à—<‘<“>ˆØ×Ñ˜x¨{ÐÔ;ô Ó ð 	- CÙ"Ñ, VÑ,ˆL÷	-à—<‘<“>ˆØ×Ñ °ÐÔ<à˜,Ð&Ð&÷	*ð 	*ú÷	-ð 	-ús   §	BÁ%	B)ÂB&Â)B2N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú_numba_parallel_test_ÚosÚpathÚdirnameÚ__file__ÚhereÚjoinÚusecases_fileÚmodnameÚreÚcompiler
   r   r   r   r   r   r+   r   r   r   r   r      s’   „ ñð "Ðà�7‰7�?‰?˜8Ó$€DØ—G‘G—L‘L Ð':Ó;€MØ)€Gà!�r—z‘zÐ"<Ó=ÐØ"˜Ÿ
™
Ð#>Ó?Ðà"˜Ÿ
™
Ð#@ÓAÐØ#˜Ÿ™Ð$BÓCÐò2ò3ó'r   r   c                   ó*   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚTestUfuncCacheTestc                 ó¦  —  | j                   	 dddi|¤Ž\  }}t        j                  j                  d«      j                  t        j                  «      }t        j
                  j                   ||«       ||«      «       t        j                  dt        j                  ¬«      }t        j
                  j                   ||«       ||«      «       y )Nr$   é   é
   ©Údtype)Údirect_ufunc_cache_usecase©	r+   ÚnpÚrandomÚastypeÚfloat64ÚtestingÚassert_equalÚarangeÚintp©r   r%   r)   r*   Úinps        r   Útest_direct_ufunc_cachez*TestUfuncCacheTest.test_direct_ufunc_cacheI   s¢   € Ø"8 $×"8Ñ"8Ø(ñ#CØ67ð#CØ;Añ#CÑˆ	�<ô �i‰i×Ñ˜rÓ"×)Ñ)¬"¯*©*Ó5ˆÜ
�
‰
×Ñ¡	¨#£±¸SÓ0AÔBÜ�i‰i˜¤"§'¡'Ô*ˆÜ
�
‰
×Ñ¡	¨#£±¸SÓ0AÕBr   c                 ó(   — | j                  d¬«       y ©NT)Úforceobj©rN   ©r   s    r   Útest_direct_ufunc_cache_objmodez2TestUfuncCacheTest.test_direct_ufunc_cache_objmodeR   s   € Ø×$Ñ$¨dÐ$Õ3r   c                 ó(   — | j                  d¬«       y ©NÚparallel)ÚtargetrR   rS   s    r   Ú test_direct_ufunc_cache_parallelz3TestUfuncCacheTest.test_direct_ufunc_cache_parallelU   s   € Ø×$Ñ$¨JÐ$Õ7r   c                 ó¦  —  | j                   	 dddi|¤Ž\  }}t        j                  j                  d«      j                  t        j                  «      }t        j
                  j                   ||«       ||«      «       t        j                  dt        j                  ¬«      }t        j
                  j                   ||«       ||«      «       y )Nr$   é   r?   r@   )Úindirect_ufunc_cache_usecaserC   rL   s        r   Útest_indirect_ufunc_cachez,TestUfuncCacheTest.test_indirect_ufunc_cacheX   s¢   € Ø"8 $×"8Ñ"8Ø*ñ#EØ89ð#EØ=Cñ#EÑˆ	�<ô �i‰i×Ñ˜rÓ"×)Ñ)¬"¯*©*Ó5ˆÜ
�
‰
×Ñ¡	¨#£±¸SÓ0AÔBÜ�i‰i˜¤"§'¡'Ô*ˆÜ
�
‰
×Ñ¡	¨#£±¸SÓ0AÕBr   c                 ó(   — | j                  d¬«       y rV   )r]   rS   s    r   Ú"test_indirect_ufunc_cache_parallelz5TestUfuncCacheTest.test_indirect_ufunc_cache_parallela   s   € Ø×&Ñ&¨jÐ&Õ9r   N)r,   r-   r.   rN   rT   rY   r]   r_   r   r   r   r<   r<   G   s   „ òCò4ò8òCó:r   r<   c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚTestDUfuncCacheTestc                 ó†  — | j                  «       }t        ||«      }t        «       5 } |«       }d d d «       | j                  j	                  «       d¬«       t        «       5 } t        j                  d«      «       d d d «       | j                  |j	                  «       d¬«       | j                  |j	                  «       d¬«       t        «       5 } |«       } |t        j                  d«      «       d d d «       | j                  |j	                  «       d¬«       y # 1 sw Y   ŒñxY w# 1 sw Y   Œ®xY w# 1 sw Y   ŒCxY w)Nr   r   r?   é   )r    r!   r   r   r"   rD   rJ   r   )r   r#   r&   r'   r(   Úufuncs         r   Úcheck_dufunc_usecasez(TestDUfuncCacheTest.check_dufunc_usecaseh   s  € Ø× Ñ Ó"ˆÜ˜#˜|Ó,ˆäÓ ð 	 CÙ“IˆE÷	à×Ñ˜sŸ|™|›~°QÐÔ7äÓ ð 	! CÙ”"—)‘)˜B“-Ô ÷	!à×Ñ˜sŸ|™|›~°QÐÔ7Ø×Ñ §¡£°aÐÔ8äÓ ð 	! CÙ“IˆEÙ”"—)‘)˜B“-Ô ÷	!ð 	×Ñ §¡£°aÐÕ8÷	ð 	ú÷	!ð 	!ú÷
	!ð 	!ús#   §DÁ"D+Ã#D7ÄD(Ä+D4Ä7E c                 ó&   — | j                  d«       y )NÚdirect_dufunc_cache_usecase©re   rS   s    r   Útest_direct_dufunc_cachez,TestDUfuncCacheTest.test_direct_dufunc_cachez   s   € à×!Ñ!Ð"?Õ@r   c                 ó&   — | j                  d«       y )NÚindirect_dufunc_cache_usecaserh   rS   s    r   Útest_indirect_dufunc_cachez.TestDUfuncCacheTest.test_indirect_dufunc_cache~   s   € Ø×!Ñ!Ð"AÕBr   N)r,   r-   r.   re   ri   rl   r   r   r   ra   ra   e   s   „ ò9ò$AóCr   ra   c                 óJ   — t         j                  r| j                  dd«      } | S )Nú/z\\\\)r   ÚIS_WIN32Úreplace)Úrstrs    r   Ú_fix_raw_pathrr   ‚   s   € Ü‡‚Ø�|‰|˜D 'Ó*ˆØ€Kr   c                   ó0   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚTestGUfuncCacheTestc                 ó  — | j                  «       }t        |d«      }t        «       5 } |«        d d d «       j                  «       }t	        d«      }t        j                  |j                  | j                  «      |«      }t	        d«      }t        j                  |j                  | j                  «      |«      }| j                  t        |«      d«       | j                  t        |«      t        |«      «       y # 1 sw Y   ŒÍxY w)NÚdirect_gufunc_cache_usecasez/__pycache__/guf-{}z/__pycache__/{}r>   )r    r!   r   r"   rr   r9   r   Úformatr8   ÚassertGreaterr   r   )	r   r&   r'   r(   r   Úfmt1ÚprefixedÚfmt2Únormals	            r   Útest_filename_prefixz(TestGUfuncCacheTest.test_filename_prefixŠ   sÆ   € Ø× Ñ Ó"ˆÜ˜#Ð<Ó=ˆÜÓ ð 	 CÙŒI÷	à—<‘<“>ˆäÐ3Ó4ˆÜ—:‘:˜dŸk™k¨$¯,©,Ó7¸ÓBˆÜÐ/Ó0ˆÜ—‘˜DŸK™K¨¯©Ó5°xÓ@ˆà×Ñœ3˜v›;¨Ô*à×Ñœ˜V›¤c¨(£mÕ4÷	ð 	ús   §C;Ã;Dc                 ó¦  —  | j                   	 dddi|¤Ž\  }}t        j                  j                  d«      j                  t        j                  «      }t        j
                  j                   ||«       ||«      «       t        j                  dt        j                  ¬«      }t        j
                  j                   ||«       ||«      «       y )Nr$   é   r?   r@   )rv   rC   rL   s        r   Útest_direct_gufunc_cachez,TestGUfuncCacheTest.test_direct_gufunc_cacheš   s¤   € ð #9 $×"8Ñ"8Ø)ñ#HØ7<ð#HØ@Fñ#HÑˆ	�<ô �i‰i×Ñ˜rÓ"×)Ñ)¬"¯*©*Ó5ˆÜ
�
‰
×Ñ¡	¨#£±¸SÓ0AÔBÜ�i‰i˜¤"§'¡'Ô*ˆÜ
�
‰
×Ñ¡	¨#£±¸SÓ0AÕBr   c                 ó(   — | j                  d¬«       y rP   ©r€   rS   s    r   Ú test_direct_gufunc_cache_objmodez4TestGUfuncCacheTest.test_direct_gufunc_cache_objmode¥   s   € Ø×%Ñ%¨tÐ%Õ4r   c                 ó(   — | j                  d¬«       y rV   r‚   rS   s    r   Ú!test_direct_gufunc_cache_parallelz5TestGUfuncCacheTest.test_direct_gufunc_cache_parallel¨   s   € Ø×%Ñ%¨ZÐ%Õ8r   c                 ó¦  —  | j                   	 dddi|¤Ž\  }}t        j                  j                  d«      j                  t        j                  «      }t        j
                  j                   ||«       ||«      «       t        j                  dt        j                  ¬«      }t        j
                  j                   ||«       ||«      «       y )Nr$   r[   r?   r@   )Úindirect_gufunc_cache_usecaserC   rL   s        r   Útest_indirect_gufunc_cachez.TestGUfuncCacheTest.test_indirect_gufunc_cache«   s¤   € ð #9 $×"8Ñ"8Ø+ñ#FØ9:ð#FØ>Dñ#FÑˆ	�<ô �i‰i×Ñ˜rÓ"×)Ñ)¬"¯*©*Ó5ˆÜ
�
‰
×Ñ¡	¨#£±¸SÓ0AÔBÜ�i‰i˜¤"§'¡'Ô*ˆÜ
�
‰
×Ñ¡	¨#£±¸SÓ0AÕBr   c                 ó(   — | j                  d¬«       y rV   )rˆ   )r   r%   s     r   Ú#test_indirect_gufunc_cache_parallelz7TestGUfuncCacheTest.test_indirect_gufunc_cache_parallel¶   s   € Ø×'Ñ'¨zÐ'Õ:r   N)	r,   r-   r.   r}   r€   rƒ   r…   rˆ   rŠ   r   r   r   rt   rt   ˆ   s"   „ ò5ò 	Cò5ò9ò	Có;r   rt   c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚTestCacheSpecificIssuec                 óp  — dt        | j                  | j                  |¬«      z  }t        j                  t
        j                  d|gt        j                  t        j                  ¬«      }|j                  «       \  }}|j                  dk7  r*t        d|j                  ›d|j                  «       ›d�«      ‚y )	Nzœif 1:
            import sys

            sys.path.insert(0, %(tempdir)r)
            mod = __import__(%(modname)r)
            mod.%(runcode)s
            )Útempdirr8   Úruncodez-c)ÚstdoutÚstderrr   zprocess failed with code z: stderr follows
ú
)ÚdictrŽ   r8   Ú
subprocessÚPopenÚsysÚ
executableÚPIPEÚcommunicateÚ
returncodeÚAssertionErrorÚdecode)r   r�   ÚcodeÚpopenr(   Úerrs         r   Úrun_in_separate_processz.TestCacheSpecificIssue.run_in_separate_process¼   sŸ   € ðô ˜tŸ|™|°T·\±\Ø&ô(ñ(ˆô × Ñ ¤#§.¡.°$¸Ð!=Ü(2¯©Ä
ÇÁôQˆà×$Ñ$Ó&‰ˆˆSØ×Ñ˜qÒ Ý Ø-2×-=Ó-=¸s¿z¹z½|ð"Mó Nð Nð !r   c                 óH   — | j                  d«       | j                  d«       y )Nzdirect_ufunc_cache_usecase()©r    rS   s    r   Útest_first_load_cached_ufuncz3TestCacheSpecificIssue.test_first_load_cached_ufuncÔ   s"   € à×$Ñ$Ð%CÔDð 	×$Ñ$Ð%CÕDr   c                 óH   — | j                  d«       | j                  d«       y )Nzdirect_gufunc_cache_usecase()r¢   rS   s    r   Útest_first_load_cached_gufuncz4TestCacheSpecificIssue.test_first_load_cached_gufuncÛ   s"   € à×$Ñ$Ð%DÔEð 	×$Ñ$Ð%DÕEr   N)r,   r-   r.   r    r£   r¥   r   r   r   rŒ   rŒ   º   s   „ òNò0EóFr   rŒ   Ú__main__)r–   Úos.pathr1   r9   r”   ÚnumpyrD   Únumba.tests.supportr   Únumba.tests.test_cachingr   Ú
numba.corer   Úunittestr   r<   ra   rr   rt   rŒ   r,   Úmainr   r   r   ú<module>r®      s‚   ðÛ 
Û Û 	Û ã å 1Ý 2Ý Û ô6'�]ô 6'ôr:˜ô :ô<C˜.ô Cò:ô/;˜.ô /;ôd&F˜^ô &FðR ˆzÒØ€H‡M�M…Oð r   