§
    2@Äj]"  ã                   ó  — 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        ¦   «          dS dS )é    N)Úcapture_cache_log)ÚBaseCacheTest)Úconfigc                   ó  — e Zd ZdZdZej                             e¦  «        Z	e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dS )Ú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                             |¦  «        }|                      t	          |¦  «        |¦  «         |                      t	          |¦  «        |¦  «         dS )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        úRC:\Projects\Historical\venv\Lib\site-packages\numba/tests/npyufunc/test_caching.pyÚcheck_cache_savedz UfuncCacheTest.check_cache_saved   sp   € ð Ô*×2Ò2°8Ñ<Ô<ˆ
ØÔ,×4Ò4°XÑ>Ô>ˆØ×Ò�˜Z™œ¨%Ñ0Ô0Ð0Ø×Ò�˜[Ñ)Ô)¨5Ñ1Ô1Ð1Ð1Ð1ó    c                 óú   — | j                              |¦  «        }| j                             |¦  «        }|                      t	          |¦  «        |¦  «         |                      t	          |¦  «        |¦  «         dS )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(   sr   € ð Ô,×4Ò4°XÑ>Ô>ˆØÔ.×6Ò6°xÑ@Ô@ˆØ×Ò�˜[Ñ)Ô)¨5Ñ1Ô1Ð1Ø×Ò�˜\Ñ*Ô*¨EÑ2Ô2Ð2Ð2Ð2r   c                 ó¶  — |                       ¦   «         }t          ||¦  «        }t          ¦   «         5 } |di |¤Ž}ddd¦  «         n# 1 swxY w Y   |                     ¦   «         }|                      ||¬¦  «         t          ¦   «         5 } |di |¤Ž}	ddd¦  «         n# 1 swxY w Y   |                     ¦   «         }|                      ||¬¦  «         ||	fS )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   sc  € ð
 × Ò Ñ"Ô"ˆÝ˜#˜|Ñ,Ô,ˆåÑ Ô ð 	* CØ˜Ð)Ð) &Ð)Ð)ˆIð	*ð 	*ð 	*ñ 	*ô 	*ð 	*ð 	*ð 	*ð 	*ð 	*ð 	*øøøð 	*ð 	*ð 	*ð 	*à—<’<‘>”>ˆØ×Ò˜x¨{ÐÑ;Ô;Ð;õ Ñ Ô ð 	- CØ"˜7Ð,Ð, VÐ,Ð,ˆLð	-ð 	-ð 	-ñ 	-ô 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-øøøð 	-ð 	-ð 	-ð 	-à—<’<‘>”>ˆØ×Ò °ÐÑ<Ô<Ð<à˜,Ð&Ð&s#   ³	AÁAÁAÂ	B!Â!B%Â(B%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�?Š?˜8Ñ$Ô$€DØ”G—L’L Ð':Ñ;Ô;€MØ)€Gà!�r”zÐ"<Ñ=Ô=ÐØ"˜œ
Ð#>Ñ?Ô?Ðà"˜œ
Ð#@ÑAÔAÐØ#˜œÐ$BÑCÔCÐð2ð 2ð 2ð3ð 3ð 3ð'ð 'ð 'ð 'ð 'r   r   c                   ó,   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚTestUfuncCacheTestc                 ó¬  —  | j         	 dddi|¤Ž\  }}t          j                             d¦  «                             t          j        ¦  «        }t          j                              ||¦  «         ||¦  «        ¦  «         t          j        dt          j        ¬¦  «        }t          j                              ||¦  «         ||¦  «        ¦  «         d S )NÚdirect_ufunc_cache_usecaser$   é   é
   ©Údtype)r>   ©	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Ø(ð#Cð #CØ67ð#CØ;Að#Cð #CÑˆ	�<õ Œi×Ò˜rÑ"Ô"×)Ò)­"¬*Ñ5Ô5ˆÝ
Œ
×Ò 	 	¨#¡¤°°¸SÑ0AÔ0AÑBÔBÐBÝŒi˜¥"¤'Ð*Ñ*Ô*ˆÝ
Œ
×Ò 	 	¨#¡¤°°¸SÑ0AÔ0AÑBÔBÐBÐBÐBr   c                 ó2   — |                       d¬¦  «         d S ©NT)Úforceobj©rN   ©r   s    r   Útest_direct_ufunc_cache_objmodez2TestUfuncCacheTest.test_direct_ufunc_cache_objmodeR   s   € Ø×$Ò$¨dÐ$Ñ3Ô3Ð3Ð3Ð3r   c                 ó2   — |                       d¬¦  «         d S ©NÚparallel)ÚtargetrR   rS   s    r   Ú test_direct_ufunc_cache_parallelz3TestUfuncCacheTest.test_direct_ufunc_cache_parallelU   s   € Ø×$Ò$¨JÐ$Ñ7Ô7Ð7Ð7Ð7r   c                 ó¬  —  | j         	 dddi|¤Ž\  }}t          j                             d¦  «                             t          j        ¦  «        }t          j                              ||¦  «         ||¦  «        ¦  «         t          j        dt          j        ¬¦  «        }t          j                              ||¦  «         ||¦  «        ¦  «         d S )NÚindirect_ufunc_cache_usecaser$   é   r@   rA   )r[   rC   rL   s        r   Útest_indirect_ufunc_cachez,TestUfuncCacheTest.test_indirect_ufunc_cacheX   sÏ   € Ø"8 $Ô"8Ø*ð#Eð #EØ89ð#EØ=Cð#Eð #EÑˆ	�<õ Œi×Ò˜rÑ"Ô"×)Ò)­"¬*Ñ5Ô5ˆÝ
Œ
×Ò 	 	¨#¡¤°°¸SÑ0AÔ0AÑBÔBÐBÝŒi˜¥"¤'Ð*Ñ*Ô*ˆÝ
Œ
×Ò 	 	¨#¡¤°°¸SÑ0AÔ0AÑBÔBÐBÐBÐBr   c                 ó2   — |                       d¬¦  «         d S rV   )r]   rS   s    r   Ú"test_indirect_ufunc_cache_parallelz5TestUfuncCacheTest.test_indirect_ufunc_cache_parallela   s   € Ø×&Ò&¨jÐ&Ñ9Ô9Ð9Ð9Ð9r   N)r,   r-   r.   rN   rT   rY   r]   r_   r   r   r   r<   r<   G   se   € € € € € ðCð Cð Cð4ð 4ð 4ð8ð 8ð 8ðCð Cð Cð:ð :ð :ð :ð :r   r<   c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚTestDUfuncCacheTestc                 ó  — |                       ¦   «         }t          ||¦  «        }t          ¦   «         5 } |¦   «         }d d d ¦  «         n# 1 swxY w Y   |                      |                     ¦   «         d¬¦  «         t          ¦   «         5 } |t          j        d¦  «        ¦  «         d d d ¦  «         n# 1 swxY w Y   |                      |                     ¦   «         d¬¦  «         |                      |                     ¦   «         d¬¦  «         t          ¦   «         5 } |¦   «         } |t          j        d¦  «        ¦  «         d d d ¦  «         n# 1 swxY w Y   |                      |                     ¦   «         d¬¦  «         d S )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Ø�G‘I”IˆEð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	à×Ò˜sŸ|š|™~œ~°QÐÑ7Ô7Ð7åÑ Ô ð 	! CØˆE•"”)˜B‘-”-Ñ Ô Ð ð	!ð 	!ð 	!ñ 	!ô 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!øøøð 	!ð 	!ð 	!ð 	!à×Ò˜sŸ|š|™~œ~°QÐÑ7Ô7Ð7Ø×Ò §¢¡¤°aÐÑ8Ô8Ð8åÑ Ô ð 	! CØ�G‘I”IˆEØˆE•"”)˜B‘-”-Ñ Ô Ð ð	!ð 	!ð 	!ñ 	!ô 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!øøøð 	!ð 	!ð 	!ð 	!ð 	×Ò §¢¡¤°aÐÑ8Ô8Ð8Ð8Ð8s5   ³A
Á
AÁAÂB6Â6B:Â=B:Ä!(EÅEÅEc                 ó0   — |                       d¦  «         d S )NÚdirect_dufunc_cache_usecase©re   rS   s    r   Útest_direct_dufunc_cachez,TestDUfuncCacheTest.test_direct_dufunc_cachez   s   € à×!Ò!Ð"?Ñ@Ô@Ð@Ð@Ð@r   c                 ó0   — |                       d¦  «         d S )NÚindirect_dufunc_cache_usecaserh   rS   s    r   Útest_indirect_dufunc_cachez.TestDUfuncCacheTest.test_indirect_dufunc_cache~   s   € Ø×!Ò!Ð"AÑBÔBÐBÐBÐBr   N)r,   r-   r.   re   ri   rl   r   r   r   ra   ra   e   sI   € € € € € ð9ð 9ð 9ð$Að Að AðCð Cð Cð Cð Cr   ra   c                 óJ   — t           j        r|                      dd¦  «        } | S )Nú/z\\\\)r   ÚIS_WIN32Úreplace)Úrstrs    r   Ú_fix_raw_pathrr   ‚   s$   € Ý„ð +Ø�|Š|˜D 'Ñ*Ô*ˆØ€Kr   c                   ó2   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚTestGUfuncCacheTestc                 ól  — |                       ¦   «         }t          |d¦  «        }t          ¦   «         5 } |¦   «          d d d ¦  «         n# 1 swxY w Y   |                     ¦   «         }t	          d¦  «        }t          j        |                     | j        ¦  «        |¦  «        }t	          d¦  «        }t          j        |                     | j        ¦  «        |¦  «        }|  	                    t          |¦  «        d¦  «         |                      t          |¦  «        t          |¦  «        ¦  «         d S )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Š   s7  € Ø× Ò Ñ"Ô"ˆÝ˜#Ð<Ñ=Ô=ˆÝÑ Ô ð 	 CØˆG‰IŒIˆIð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	à—<’<‘>”>ˆåÐ3Ñ4Ô4ˆÝ”:˜dŸkšk¨$¬,Ñ7Ô7¸ÑBÔBˆÝÐ/Ñ0Ô0ˆÝ”˜DŸKšK¨¬Ñ5Ô5°xÑ@Ô@ˆà×Ò�3˜v™;œ;¨Ñ*Ô*Ð*à×Ò�˜V™œ¥c¨(¡m¤mÑ4Ô4Ð4Ð4Ð4s   ³A
Á
AÁAc                 ó¬  —  | j         	 dddi|¤Ž\  }}t          j                             d¦  «                             t          j        ¦  «        }t          j                              ||¦  «         ||¦  «        ¦  «         t          j        dt          j        ¬¦  «        }t          j                              ||¦  «         ||¦  «        ¦  «         d S )Nrv   r$   é   r@   rA   )rv   rC   rL   s        r   Útest_direct_gufunc_cachez,TestGUfuncCacheTest.test_direct_gufunc_cacheš   sÑ   € ð #9 $Ô"8Ø)ð#Hð #HØ7<ð#HØ@Fð#Hð #HÑˆ	�<õ Œi×Ò˜rÑ"Ô"×)Ò)­"¬*Ñ5Ô5ˆÝ
Œ
×Ò 	 	¨#¡¤°°¸SÑ0AÔ0AÑBÔBÐBÝŒi˜¥"¤'Ð*Ñ*Ô*ˆÝ
Œ
×Ò 	 	¨#¡¤°°¸SÑ0AÔ0AÑBÔBÐBÐBÐBr   c                 ó2   — |                       d¬¦  «         d S rP   ©r€   rS   s    r   Ú test_direct_gufunc_cache_objmodez4TestGUfuncCacheTest.test_direct_gufunc_cache_objmode¥   s   € Ø×%Ò%¨tÐ%Ñ4Ô4Ð4Ð4Ð4r   c                 ó2   — |                       d¬¦  «         d S rV   r‚   rS   s    r   Ú!test_direct_gufunc_cache_parallelz5TestGUfuncCacheTest.test_direct_gufunc_cache_parallel¨   s   € Ø×%Ò%¨ZÐ%Ñ8Ô8Ð8Ð8Ð8r   c                 ó¬  —  | j         	 dddi|¤Ž\  }}t          j                             d¦  «                             t          j        ¦  «        }t          j                              ||¦  «         ||¦  «        ¦  «         t          j        dt          j        ¬¦  «        }t          j                              ||¦  «         ||¦  «        ¦  «         d S )NÚindirect_gufunc_cache_usecaser$   r\   r@   rA   )r‡   rC   rL   s        r   Útest_indirect_gufunc_cachez.TestGUfuncCacheTest.test_indirect_gufunc_cache«   sÑ   € ð #9 $Ô"8Ø+ð#Fð #FØ9:ð#FØ>Dð#Fð #FÑˆ	�<õ Œi×Ò˜rÑ"Ô"×)Ò)­"¬*Ñ5Ô5ˆÝ
Œ
×Ò 	 	¨#¡¤°°¸SÑ0AÔ0AÑBÔBÐBÝŒi˜¥"¤'Ð*Ñ*Ô*ˆÝ
Œ
×Ò 	 	¨#¡¤°°¸SÑ0AÔ0AÑBÔBÐBÐBÐBr   c                 ó2   — |                       d¬¦  «         d S 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   ˆ   st   € € € € € ð5ð 5ð 5ð 	Cð 	Cð 	Cð5ð 5ð 5ð9ð 9ð 9ð	Cð 	Cð 	Cð;ð ;ð ;ð ;ð ;r   rt   c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚTestCacheSpecificIssuec                 óR  — dt          | j        | j        |¬¦  «        z  }t          j        t
          j        d|gt          j        t          j        ¬¦  «        }|                     ¦   «         \  }}|j	        dk    r-t          d|j	        ›d|                     ¦   «         ›d�¦  «        ‚d S )	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ñ Qô Qˆà×$Ò$Ñ&Ô&‰ˆˆSØÔ˜qÒ Ð Ý �.Ø-2Ô-=Ð-=Ð-=¸s¿zºz¹|¼|¸|¸|ð"Mñ Nô Nð Nð !Ð r   c                 óZ   — |                       d¦  «         |                       d¦  «         d S )Nzdirect_ufunc_cache_usecase()©r    rS   s    r   Útest_first_load_cached_ufuncz3TestCacheSpecificIssue.test_first_load_cached_ufuncÔ   s4   € à×$Ò$Ð%CÑDÔDÐDð 	×$Ò$Ð%CÑDÔDÐDÐDÐDr   c                 óZ   — |                       d¦  «         |                       d¦  «         d S )Nzdirect_gufunc_cache_usecase()r¢   rS   s    r   Útest_first_load_cached_gufuncz4TestCacheSpecificIssue.test_first_load_cached_gufuncÛ   s4   € à×$Ò$Ð%DÑEÔEÐEð 	×$Ò$Ð%DÑEÔEÐEÐEÐEr   N)r,   r-   r.   r    r£   r¥   r   r   r   rŒ   rŒ   º   sL   € € € € € ðNð Nð Nð0Eð Eð EðFð Fð Fð Fð 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Ð 1Ð 1Ð 1Ð 1Ð 1Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø Ð Ð Ð Ð Ð Ø €€€ð6'ð 6'ð 6'ð 6'ð 6'�]ñ 6'ô 6'ð 6'ðr:ð :ð :ð :ð :˜ñ :ô :ð :ð<Cð Cð Cð Cð C˜.ñ Cô Cð Cð:ð ð ð/;ð /;ð /;ð /;ð /;˜.ñ /;ô /;ð /;ðd&Fð &Fð &Fð &Fð &F˜^ñ &Fô &Fð &FðR ˆzÒÐØ€H„M�O„O€O€O€Oð Ðr   