ó
    „ñ:ir°  ã                   ó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      Ú[/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/numba/tests/test_caching.pyÚcheck_access_is_preventabler0   3   s  € ô ˜\Ó*€GÜ—‘—‘˜W oÓ6€HÜ‡H‚HˆXÔä	Œb�g‰g�l‰l˜8 ZÓ0°$Ô	7¸1Ø	�‰�Ô÷ 
8ô ‡H‚HˆX�uÔð Ü”"—'‘'—,‘,˜xÐ):Ó;¸TÔBÀaØ�G‰G�HÔ÷ 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Ü�‹7�Aˆ:Ðó    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Ù“h�O€FÙ“g�O€FØÓÐÐØÓÐÑ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Ü
‰v‹x‹.€CÜ
‰u‹w‹-€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§>¡>×#:Ñ#:Ó;ˆ	Ü×)Ò)Ó+ˆØ—y‘y“{ˆØ�{‰{Ü-Ø¨5Ð1ð ð 
ˆð 	�
‰
ŒØ�	‰	ŒØ&×*Ñ*Ó,‰ˆö Ø�I‰I�fÔà×ÑØØØ;ô	
ð �{‰{Ü-Ø¨4Ð0ð ð 
ˆð 	�
‰
ŒØ�	‰	ŒØ&×*Ñ*Ó,‰ˆö Ø�I‰I�fÔà×ÑØØØ;õ	
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Ñ	ó	ó 
ð	ð	Ù“VˆFö Ø×'Ñ'¨¯©¸Ñ(:Ñ;¸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Õ	0ús#   �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Ÿ<™<Ô(Ü—w‘w—|‘| D§L¡L°$·,±,ÀÑ2FÓGˆŒÜŸ™Ÿ™ d§l¡l°MÓBˆŒÜ�Š�D×&Ñ&¨¯©Ô5Ü
�Š�—‘œtŸ|™|¬d¯m©mÑ;Ô<Øˆ�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“   € ô �k‰k�o‰o˜dŸl™l¨DÓ1ˆØ‰?à—n‘nÐ%ˆFÛ�ðÜ—I’I˜b–Mñ ô
 ˜TŸ\™\Ó*ˆØ×Ñ˜Ÿ™×,Ñ,¨TÓ2°D·L±LÔ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   € ð	Ü!#§¢¨D¯N©NÔ!;ó :Ò!;˜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 )
Nzœif 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_processÚ3DispatcherCacheUsecasesTest.run_in_separate_process  sÍ   € ð ‰?ØˆGðô ˜tŸ|™|°T·\±\ÑBñCˆô —:‘:—?‘?Ó$ˆØ�‰˜Ô Ü× Ò ¤#§.¡.°$¸Ð!=Ü(2¯©Ä
ÇÁØ%-ñ/ˆð ×$Ñ$Ó&‰ˆØ×Ñ˜qÓ Ý ð ×#Ô# S§Z¡Z¦\°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   € Ø�Z‰ZˆØ×Ñœ˜RŸ]™]×1Ñ1Ó3Ó4°d¿M¹MÔ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;   † Ø�7‰7�?‰?˜8Ó$€DØ—G‘G—L‘L Ð':Ó;€MØ.€Gà15õ ÷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Ôà�O‰OˆØ×Ñ¡ ! Q£¨Ô+Ø×Ñ˜1ÔØ×Ñ¡ # q£	¨3Ô/Ø×Ñ˜1ÔØ�‰˜˜1˜aÔ à×#Ñ#ˆØ×Ñ¡ ! Q£¨Ô+Ø×Ñ˜1ÔØ×Ñ¡ # q£	¨3Ô/Ø×Ñ˜1ÔØ�‰˜˜1˜aÔ à×ÑˆÙ�—‘ Ó#ˆØ×Ñ¤ c£
¨IÔ6Ù�—‘ Ó"ˆØ×Ñ¤ c£
¨IÔ6Ø×Ñ˜1ÔØ�‰˜˜1˜aÔ ð 	×$Ñ$Õ&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Ôà�O‰OˆØ×Ñ¡ ! Q£¨Ô+Ø×Ñ˜1Ôà×Ñ¡ !¤R§Y¢Y¨q£\Ó 2°A¼¿	º	À!»Ñ4DÀqÑ4HÔIØ×Ñ˜1ÔØ�‰˜˜1˜aÕ 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Ôà�I‰IˆØ×Ñ¡ ! 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Ñ 2°1°aÓ 8¸!Ô<Ø×Ñ˜1ÔØ× Ñ Ó"ˆØ�I‰IˆØ×Ñ¡ ! 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Ò1°QÜ×!Ò! (¬LÔ9à—‘ˆAØ×#Ñ#¡A a£D¨!Ô,Ø×Ñ˜qÔ!÷ 2ð 	×Ñœ˜Q› Ô#Ø�‰ð /Ü03°A°a±D·L±LÓ0Aõ	C÷ 2Õ1ús   ¥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Ò1°QÜ×!Ò! (¬LÔ9à×!Ñ!ˆAÜ�J‰J×#Ñ#¡A£C¨¯©Ô4Ø×Ñ˜qÔ!÷ 2ð 	×Ñœ˜Q› Ô#Ø�‰ð 3Ü47¸¸!¹¿¹Ó4Eõ	G÷ 2Õ1ús   ¥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Ñ!4°c×6IÑ6IÓJˆAÜ×(Ò(°Ò5¸Ü×%Ò% h´Ô=à×'Ñ'©¨#«°Ô4Ø×"Ñ" 1Ô%÷	 6ð ×ÑœS ›V QÔ'Ø�M‰MØ5×<Ñ<¸Q¿Z¹ZÓHÜ�A�a‘D—L‘LÓ!öò Kß5Õ5ús   Á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Ø×#Ñ#¡A a£D¨!Ô,Ø—‘ˆAØ×#Ñ#¡A a£D¨!Ô,Ø—‘ˆAØ×#Ñ#¡A a£D¨"Ô-Ø—‘ˆAØ×#Ñ#¡A a£D¨"Ô-Ø×Ñ˜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Ô%Ø×Ñ˜1˜aÔ Ø�	‰	�!�QŒØ×Ñ˜#Ÿ.™.¨!Ô,Ø×Ñ˜#Ÿ/™/¨1Ô-Ø×&Ñ&Ó(ˆà�‰˜Ÿ™¨¨AÔ.à×!Ñ!Ó#ˆØ×Ñ˜Ô#Ø×ÑˆÙ	ˆ!ˆQŒØ�‰˜˜1˜aÔ Ù	ˆ#ˆsŒØ�‰˜˜1˜aÔ Ø×$Ñ$ˆÙ	ˆ!ˆQŒØ�‰˜˜1˜aÔ ð 	×Ñ˜×.Ñ.Ó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«   € Ø× Ñ Ó"ˆØ�O‰OˆØ×Ñ¡ ! Q£¨Ô+ô �$—,‘, Ô$¨Ø�G‰G�LÔ!÷ %ð × Ñ Ó"ˆØ�O‰OˆØ×Ñ¡ ! 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±   € à× Ñ Ó"ˆØ�O‰OˆØ×Ñ¡ ! Q£¨Ô+à× Ñ Ó"ˆØ�O‰OˆØˆŒØ×Ñ¡ ! Q£¨Ô+Ø	�‰ŒØ×Ñ¡ ! Q£¨Ô,ð × Ñ Ó"ˆØ�O‰OˆØ×Ñ¡ ! 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¸ÓJˆGØ×Ñ˜gÔ&àŒCŒJô +×8Ò8¸ÓJˆGØ×!Ñ! 'Ô+?Ô@ð !)ÔÜ‘
øð !)ÔÜ‘
ú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´   € ð
 × Ñ Ó"ˆØ�O‰Oˆð 	�‰œŸ™ q§w¡w×'9Ñ'9ÈˆÑNà×Ñ¡ ! Q£¨Ô+à�‰˜˜1˜aÔ ð ×!Ñ!Ó#ˆØ×ÑˆØ×Ñ¡ ! Q£¨Ô+Ø�‰˜˜1˜aÔ ð 	×Ñ˜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   € ô
 —G’G˜DŸL™LÓ)×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Ÿ|™|¨]Ó;ˆÜ
�Š�ÔÜ—G’G˜GÓ$×,Ñ,ˆ	Ü
�Š�˜%Ô Ø�‰œŸ™ 'Ô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NÜS 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_inputÚ2TestCache.test_ipython.<locals>.execute_with_input„  ó„   ø€ ä�g˜tÔ$¨Ü×$Ò$ X°UÜ,6¯O©OÜ,6¯O©OØ8<ñ>�ð Ÿ=™=›?‘�Ø—<‘< 2Ó%Ø—I‘Ið 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÷   ú€ ä—N‘N D¨)Ð4ˆØÒMÑMˆð	*Ü×)Ò)¨(°k°]Ñ*BÓCˆCð �i‰i‹k× Ñ Ó"ˆä—'‘'—,‘,˜tŸ|™|Ð-HÓIˆÜ�'˜3Ô 1Ø�G‰Gð ô ÷  ÷*	ñ 	Ôá Ó"ˆØ�‰Ð&¨¯	©	«Õ4øô[ ×,Ñ,ó 	*Ø�M‰MÐAØŸL™Lñ)÷ *ñ *ûð	*ú÷  Õú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NÈS 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ñ   ú€ ô
 —N‘N D¨)Ð4ˆØÒMÑMˆð	*Ü×)Ò)¨(°k°]Ñ*BÓCˆCð �i‰i‹k× Ñ Ó"ˆå&Ø×,Ñ,Ó.ˆÜ�'˜3Ô 1Ø�G‰Gð ô ÷  ÷*	ñ 	Ôá Ó"ˆØ�‰Ð&¨¯	©	«Õ4øô] ×,Ñ,ó 	*Ø�M‰MÐAØŸL™Lñ)÷ *ñ *ûð	*ú÷  Õú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 Ø‡_‚_�R—W‘W ‘_ØJóLñ&óLó ð&ð Ø‡_‚_�R—W‘W ‘_ØJóLñ&óLó ð&ò35ðj ‡_‚_�i 4Ð'×K¨Y×-CÑ-CÀAÑ-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~   ø€ Ü‰‰Œðˆð (ˆØ)ˆô —7‘7—<‘< §¡¨lÓ;ˆÜ�_Š_˜X sÔ+¨rØ�K‰K˜Ô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Ô.ð 	�‰˜Ÿ™¨Ô+ô �K‰K˜Ð&Ü×#Ò#Ô%Ûð —/‘/ ! 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´Ð5KÓ0LÓ,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ÔØ×ÑˆÜ�gŠg�b‹kˆØ×Ñ¡ #£¨©	°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Ö3‰DˆAØ�Ø×'Ñ'¨°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  Xxp©OXxpšU 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Ôð 	×$Ñ$Ü')×';Ò';Ó'=Ø+-ñ/ð 	%ñ 	
ð ×&Ñ&Ó(ˆÜ˜×,Ñ,Ó.Ó/ˆ
ð 	×$Ñ$Ø'Ø"$ñ.
Ð$ñ 	ð
 	×Ñ Ô'Ø×Ñœ3˜t×2Ñ2Ó4Ó5°zÔBà× Ñ Ó"ˆØ—‘×&Ñ&ˆØ×&Ñ&ˆ
Ø ×,Ñ,Ó.ˆØ×Ñœ˜[Ó)¨1Ô-Ø$×)Ñ)Ó+‰ˆØ�‰8�A‰;˜)Ó#Ø$)™à$)�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  p«U
S   S   U:X  a  X«pÜOX«pÍU 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_featuresÚ2TestCacheWithCpuSetting.test_user_set_cpu_featuresr  s·  € Ø×Ñ˜1Ôä ×/Ñ/×7Ñ7Ó9ˆä!×7Ò7Ó9ˆð 	×$Ñ$Ø)¨?Ð;ð 	%ñ 	
ô ˜×,Ñ,Ó.Ó/ˆ
à×&Ñ&Ó(ˆà%ˆà×Ñ˜OÔ=Ø×$Ñ$Ø)¨?Ð;ð 	%ñ 	
ð 	×Ñ Ô'Ø×Ñœ3˜t×2Ñ2Ó4Ó5°zÔBà× Ñ Ó"ˆØ—‘×&Ñ&ˆØ×&Ñ&ˆ
Ø ×,Ñ,Ó.ˆØ×Ñœ˜[Ó)¨1Ô-Ø$×)Ñ)Ó+‰ˆà�‰8�A‰;˜/Ó)Ø%*™(à%*�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ð!0õF'>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Ó6ˆCð �x‰x˜‹{ˆð	Ü�d—i‘i ¤5¨£8Ó,Ó-ˆCà�J‰JŒLØ×Ñ˜ 1 q¡5™k¨QÑ.Õ/øô ó 	"Ü!ŠCð	"ûð �J‰J�Lús    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;   † ð "Ðà�7‰7�?‰?˜8Ó$€DØ—G‘G—L‘L Ð':Ó;€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Ø ŸL™LˆÔØŸH™H d§l¡l°EÐ%:Ó;ˆÔÜ—‘—‘˜dŸl™l¨D¯L©LÓ9ˆÜ
�Š�ÔÜ”"—'‘'—,‘,˜v }Ó5°sÔ;¸tÜ�$×$Ñ$¨4Ò0÷ <ä”"—'‘'—,‘,˜v xÓ0°#Ô6¸$Ü�$×$Ñ$¨4Ò0÷ 7Ð6÷ <Õ;úç6Õ6ús   Ä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                  [        X€R                  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	                  X´5        U R	                  XÖ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        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Ù“6ˆD÷ !à—<‘<“>ˆà×Ñ˜Ÿ™¨Ó6¸Ô:Ø×Ñ˜Ÿ™¨Ó5°qÔ9Ø×Ñ˜Ÿ™¨Ó7¸Ô;Ø×Ñ˜Ÿ™¨Ó6¸Ô:ÜÔ  CÙ“6ˆD÷ !à—<‘<“>ˆà×Ñ˜Ÿ™¨Ó6¸Ô:Ø×Ñ˜Ÿ™¨Ó5°qÔ9Ø×Ñ˜Ÿ™¨Ó7¸Ô;Ø×Ñ˜Ÿ™¨Ó6¸Ô:Ø×Ñ˜D $Ô'ð	+ô !×,Ò,¨WÓ5ˆBð �H‰H‹Jˆà�z‰zÔ!<Ø !§<¡<Ø $× 1Ñ 1Ø $× 1Ñ 1ð 3ð ð 4ˆð 	�
‰
Œà�u‰u‹wˆØ�u‰u‹wˆØ�u‰u‹wˆØ�u‰u‹wˆØ�	‰	Œð 	×Ñ˜Ô$Ø×Ñ˜Ô$ð 	×Ñ˜Ÿ™ MÓ2°AÔ6Ø×Ñ˜Ÿ™ LÓ1°1Ô5Ø×Ñ˜Ÿ™ NÓ3°QÔ7Ø×Ñ˜Ÿ™ MÓ2°AÔ6ð 	×Ñ˜Ÿ™ MÓ2°AÔ6Ø×Ñ˜Ÿ™ LÓ1°1Ô5Ø×Ñ˜Ÿ™ NÓ3°QÔ7Ø×Ñ˜Ÿ™ MÓ2°AÕ6÷m !Ö ú÷ !Ö ûô ó 	+ÜÐ)×*ð	+ú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ˆ   † à!Ðà�7‰7�?‰?˜8Ó$€DØ—G‘G—L‘L Ð':Ó;€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¨   € Ü‡H�H‡O�O�A�wÔÜ˜,Ó'×+Ñ+€DÜ˜,Ó'×+Ñ+€DÜ	Ô	 Ù‹Vˆ÷ 
à‡E�Eˆ#�,‰,‹.ÔØ‡E�Eˆ"„IÜ	Ô	 Ù‹Vˆ÷ 
à‡E�Eˆ#�,‰,‹.ÔØ‡E�Eˆ"…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¤   € Ü%Ð&;Ó<ˆŒä—W‘W—\‘\ $§,¡,°
Ó;ˆŒ
Ü�$—*‘*˜cÔ" dÜ�$×(Ñ(¨tÒ4÷ #ô —W‘W—\‘\ $§,¡,°
Ó;ˆŒ
Ü�$—*‘*˜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   € Ü�Š�d—l‘lÕ#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_signatureÚNTestCacheMultipleFilesWithSignature.test_caching_mutliple_files_with_signature^  sñ   € ä× Ò ¤#§.¡.°$·*±*Ð!=Ü(2¯©Ü(2¯©ñ9ˆð ×$Ñ$Ó&‰ˆØ˜#Ÿ*™*›,˜ }°S·Z±Z³\°NÐCˆØ×Ñ˜×)Ñ)¨1°#ÐÑ6ô × Ò ¤#§.¡.°$·*±*Ð!=Ü(2¯©Ü(2¯©ñ9ˆð ×$Ñ$Ó&‰ˆØ˜#Ÿ*™*›,˜ }°S·Z±Z³\°NÐCˆØ×Ñ˜×)Ñ)¨1¨cÕ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4Ø47·J±J³L°>Àð"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Ñ3°QÔ7Ø×Ñ˜Ÿ™×-Ñ-¨qÔ1Ø×Ñ˜×0Ñ0×;Ñ;¸QÔ?Ø×Ñ˜Ÿ™×3Ñ3°QÔ7Ø×Ñ˜#Ôð × Ñ Ó"ˆØ×Ñ˜1Ôà×Ñ˜Ÿ™×3Ñ3°QÔ7Ø×Ñ˜Ÿ™×-Ñ-¨qÔ1Ø×Ñ˜×0Ñ0×;Ñ;¸QÔ?Ø×Ñ˜Ÿ™×3Ñ3°QÔ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>   † à�7‰7�?‰?˜8Ó$€DØ—G‘G—L‘L Ð'@ÓA€MØ)€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_unknownÚITestCacheLocatorEnvironmentIntegration.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_singleÚHTestCacheLocatorEnvironmentIntegration.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_customÚHTestCacheLocatorEnvironmentIntegration.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_listÚFTestCacheLocatorEnvironmentIntegration.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Ó(ˆÜ,ˆØ×Ñ˜eŸk™k×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°]À1Ñ5EÓ/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Øó
Ðô
 —g’g˜f“oˆØ$×-Ñ-ˆð $×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0˜Mô 0ð: ôq7˜X×.Ñ.ó q7ó ðq7òhô13¨(×*;Ñ*;ô 13ôh6'�]ô 6'ôr	Ð$ô 	ô=D¨Xô =Dô@<8 xô <8ð~ ˆzÓØ‡M‚M…Oð øð{' ó ØƒIðús   ÂF$ Æ$F0Æ/F0