Ë
    èÿæir°  ã                   ób  — d dl Z d dlZd dlZd dlZd dlZd dlZd dlZ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Zd dlmZ d dlmZ d dlmZ d dlmZmZmZmZmZ d dlm Z  d dl!m"Z" d d	l#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z- d d
l.m/Z/ 	 d dl0Z0d„ Z2 e2«       Z3dZ4 e	jj                  e3e4«      Z6d„ Z7d„ Z8d„ Z9d„ Z:d„ Z;d„ Z< G d„ de$e%«      Z=d„ Z> G d„ de%«      Z? G d„ de?«      Z@ G d„ de@«      ZA G d„ de@«      ZB G d„ de@«      ZCe+ G d „ d!e@«      «       ZD G d"„ d#e@«      ZE G d$„ d%e?«      ZFe* G d&„ d'e	jJ                  «      «       ZGd(„ ZH G d)„ d*e	jJ                  «      ZI G d+„ d,e?«      ZJ G d-„ d.e«      ZK G d/„ d0e%«      ZL G d1„ d2e%«      ZMeNd3k(  r e	jž                  «        yy# e1$ r dZ0Y �Œw xY w)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                  ó  — t        d«      } t        j                  j                  | d«      }t        j                  |«       t        t        j                  j                  |d«      d«      5 }|j                  d«       d d d «       t        j                  |d«       	 t        t        j                  j                  |d«      d«      5 }|j                  d«       d d d «       	 t        j                  |d	«       t        j                  |«       y
# 1 sw Y   Œ‘xY w# 1 sw Y   ŒBxY w# t        $ r. Y t        j                  |d	«       t        j                  |«       yw xY w# t        j                  |d	«       t        j                  |«       w xY w)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      úm/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/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Â*D% ÃDÃD% ÄDÄD"ÄD% Ä%	EÄ.E ÅEÅE Å-Fz9Cannot create a directory to which writes are preventablec                  ó    — d} t        | «      | fS )NÚabcd)Úhash)Úcs    r/   Úconstant_unicode_cacher5   W   s   € Ø€AÜ�‹7�Aˆ:Ðó    c                  óx   — t         }  t        d¬«      | «      } | «       \  }} |«       \  }}||k(  sJ ‚||k(  sJ ‚y ©NT©Úcache)r5   r   )ÚpyfuncÚcfuncÚexp_hvÚexp_strÚgot_hvÚgot_strs         r/   Úcheck_constant_unicode_cacherA   \   sJ   € Ü#€FØŒD�tÔ˜VÓ$€EÙ“h�O€FˆGÙ“g�O€FˆGØ�VÒÐÐØ�gÒÐÑr6   c                  ó   — dddœS )Né   é   )ÚaÚb© rG   r6   r/   Ú
dict_cacherH   e   s   € Ø˜ÑÐr6   c                  ó^   — t         }  t        d¬«      | «      } | «       } |«       }||k(  sJ ‚y r8   )rH   r   ©r;   r<   ÚexpÚgots       r/   Úcheck_dict_cacherM   i   s2   € Ü€FØŒD�tÔ˜VÓ$€EÙ
‹(€CÙ
‹'€CØ�#Š:Ð‰:r6   c               #   ó"   K  — dD ]  } | –— Œ y ­w)N)rC   rD   é   rG   )Úvs    r/   Úgenerator_cacherQ   q   s   è ø€ ÛˆØ‹ñ ùs   ‚c                  ó‚   — t         }  t        d¬«      | «      }t         | «       «      }t         |«       «      }||k(  sJ ‚y r8   )rQ   r   ÚlistrJ   s       r/   Úcheck_generator_cacherT   v   s:   € Ü€FØŒD�tÔ˜VÓ$€EÜ
‰v‹x‹.€CÜ
‰u‹w‹-€CØ�#Š:Ð‰:r6   c                   ó*   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚTestCachingc                 óR   —  |«        t        |«      }| j                  |d   d«       y )NÚexitcoder   )r   ÚassertEqual)ÚselfÚfuncÚress      r/   Úrun_testzTestCaching.run_test   s%   € ÙŒÜ(¨Ó.ˆØ×Ñ˜˜Z™¨!Õ,r6   c                 ó.   — | j                  t        «       y ©N)r]   rA   ©rZ   s    r/   Útest_constant_unicode_cachez'TestCaching.test_constant_unicode_cache„   s   € Ø�‰Ô2Õ3r6   c                 ó.   — | j                  t        «       y r_   )r]   rM   r`   s    r/   Útest_dict_cachezTestCaching.test_dict_cache‡   s   € Ø�‰Ô&Õ'r6   c                 ó.   — | j                  t        «       y r_   )r]   rT   r`   s    r/   Útest_generator_cachez TestCaching.test_generator_cacheŠ   s   € Ø�‰Ô+Õ,r6   c                 óV  — t        | j                  j                  «      }t        j                  «       }|j                  «       }|j                  t        ||df¬«      }|j                  «        |j                  «        |j                  «       \  }}|s| j                  |«       | j                  |dd«       |j                  t        ||df¬«      }|j                  «        |j                  «        |j                  «       \  }}|s| j                  |«       | j                  |dd«       y )NF©ÚtargetÚargséè  z-Omitted function returned an incorrect outputT)r   Ú	__class__Ú__name__ÚmultiprocessingÚget_contextÚQueueÚProcessÚomitted_child_test_wrapperÚstartr$   ÚgetÚfailrY   )rZ   Ú	cache_dirÚctxÚresult_queueÚprocÚsuccessÚoutputs          r/   Útest_omittedzTestCaching.test_omitted�   s  € ô # 4§>¡>×#:Ñ#:Ó;ˆ	Ü×)Ñ)Ó+ˆØ—y‘y“{ˆØ�{‰{Ü-Ø 	¨5Ð1ð ó 
ˆð 	�
‰
ŒØ�	‰	ŒØ&×*Ñ*Ó,‰ˆ�ñ Ø�I‰I�fÔà×ÑØØØ;ô	
ð �{‰{Ü-Ø 	¨4Ð0ð ó 
ˆð 	�
‰
ŒØ�	‰	ŒØ&×*Ñ*Ó,‰ˆ�ñ Ø�I‰I�fÔà×ÑØØØ;õ	
r6   N)rl   Ú
__module__Ú__qualname__r]   ra   rc   re   r{   rG   r6   r/   rV   rV   ~   s   „ ò-ò
4ò(ò-ó(
r6   rV   c                 ó  — t        d|«      5  t        d¬«      dd„«       }	  |«       }|rL|j                  |j                  d      dk(  sJ d«       ‚|j                  |j                  d      dk(  sSJ d«       ‚|j                  |j                  d      dk(  sJ d	«       ‚|j                  |j                  d      dk(  sJ d
«       ‚d}| j                  ||f«       d d d «       y #  t        j                  «       }d}Y Œ6xY w# 1 sw Y   y xY w)NÚ	CACHE_DIRTr9   c                 ó   — | S r_   rG   )Únums    r/   Útestz(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)rj   )r   r   Ú_cache_hitsÚ
signaturesÚ_cache_missesÚ	tracebackÚ
format_excÚput)rw   ru   Úsecond_callr‚   rz   ry   s         r/   rq   rq   ¸   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ð
 	×Ñ˜' 6Ð*Ô+÷1 
1Ð	0øð*	Ü×)Ñ)Ó+ˆFØŠGú÷/ 
1Ð	0ús#   �C>¢B#C!ÃC>Ã!C;Ã9C>Ã>Dc                   ó>   — e Zd ZdZdZd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d„ Zy)	ÚBaseCacheTestNc                 ó.  — t        d«      | _        t        j                  j	                  d| j                  «       t
        j                  j                  | j                  | j                  dz   «      | _        t
        j                  j                  | j                  d«      | _	        t        j                  | j                  | j                  «       t        j                  | j                  t        j                  t        j                   z  «       d | _        y )Nr   r   z.pyÚ__pycache__)r   r,   Úsysr#   Úinsertr"   r$   ÚmodnameÚmodfileru   r)   ÚcopyÚusecases_filer(   ÚstatÚS_IREADÚS_IWRITEÚmaxDiffr`   s    r/   ÚsetUpz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                 óª   — t         j                  j                  | j                  d «       t         j                  j                  | j                  «       y r_   )rŽ   ÚmodulesÚpopr�   r#   Úremover,   r`   s    r/   ÚtearDownzBaseCacheTest.tearDownã   s,   € Ü�‰�‰˜Ÿ™ dÔ+Ü�‰�‰˜Ÿ™Õ%r6   c                 ód  — t         j                  j                  | j                  d «      }|�*|j                  g}|D ]  }	 t        j                  |«       Œ t        | j                  «      }| j                  |j                  j                  d«      | j                  «       |S # t        $ r Y Œrw xY w)NÚco)rŽ   rš   r›   r�   Ú
__cached__r"   ÚunlinkÚFileNotFoundErrorr   rY   Ú__file__Úrstripr‘   )rZ   ÚoldÚcachedÚfnÚmods        r/   Úimport_modulez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#Â#	B/Â.B/c                 ó¬   — 	 t        j                  | j                  «      D �cg c]  }|j                  d«      s|‘Œ c}S c c}w # t        $ r g cY S w xY w)N)z.pycz.pyo)r"   Úlistdirru   Úendswithr¢   )rZ   r§   s     r/   Úcache_contentszBaseCacheTest.cache_contentsø   sZ   € ð	Ü!#§¡¨D¯N©NÔ!;ó :Ñ!;˜2ØŸ;™;Ð'7Ô8ò Ð!;ñ :ð :ùò :øä ò 	ØŠIð	ús!   ‚!A £A ½A Á A ÁAÁAc                 óZ   ‡ — t        ˆ fd„t        ‰ j                  «       «      D «       «      S )Nc              3   ó°   •K  — | ]M  }|t         j                  j                  t         j                  j                  ‰j                  |«      «      f–— ŒO y ­wr_   )r"   r#   Úgetmtimer$   ru   )Ú.0r§   rZ   s     €r/   Ú	<genexpr>z1BaseCacheTest.get_cache_mtimes.<locals>.<genexpr>   s@   øè ø€ ð =Ù;˜ð œŸ™×)Ñ)¬"¯'©'¯,©,°t·~±~ÀrÓ*JÓKÔLÙ;ùs   ƒAA)ÚdictÚsortedr­   r`   s   `r/   Úget_cache_mtimeszBaseCacheTest.get_cache_mtimesÿ   s+   ø€ Üó =Ü$ T×%8Ñ%8Ó%:Ô;ó=ó =ð 	=r6   c                 ó\   — | j                  «       }| j                  t        |«      ||«       y r_   )r­   rY   Úlen)rZ   Únr4   s      r/   Úcheck_pycachezBaseCacheTest.check_pycache  s&   € Ø×ÑÓ!ˆØ×Ñœ˜Q›  AÕ&r6   c                  ó   — y r_   rG   r`   s    r/   Ú
dummy_testzBaseCacheTest.dummy_test  s   € Ør6   )rl   r|   r}   r“   r�   r˜   r�   r©   r­   rµ   r¹   r»   rG   r6   r/   r‹   r‹   Ô   s/   „ à€Mà€Gòò&òò"ò=ò'ór6   r‹   c                   ó’   — e Zd Zej                  j                  e«      Zej                  j                  ed«      Z	dZ
ddœd„Zdd„Zy)ÚDispatcherCacheUsecasesTestúcache_usecases.pyÚdispatcher_caching_test_fodderN©Úenvvarsc          	      óø  — |€i }dt        | j                  | j                  ¬«      z  }t        j                  j                  «       }|j                  |«       t        j                  t        j                  d|gt        j                  t        j                  |¬«      }|j                  «       \  }}|j                  dk7  r;t        d|j                  ›d|j                  «       ›d|j                  «       ›d	�«      ‚y )
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)rZ   rÁ   ÚcodeÚsubp_envÚpopenÚoutÚerrs          r/   Úrun_in_separate_processz3DispatcherCacheUsecasesTest.run_in_separate_process  sÏ   € ð ˆ?ØˆGðô ˜tŸ|™|°T·\±\ÔBñCˆô —:‘:—?‘?Ó$ˆØ�‰˜Ô Ü× Ñ ¤#§.¡.°$¸Ð!=Ü(2¯©Ä
ÇÁØ%-ô/ˆð ×$Ñ$Ó&‰ˆˆSØ×Ñ˜qÒ Ý ð ×#Ó# S§Z¡Z¥\°3·:±:µ<ðAóð ð !r6   c                 ó  — |j                   }| j                  t        |j                  j	                  «       «      ||j                  «       |�?| j                  t        |j
                  j	                  «       «      ||j
                  «       y y r_   )ÚstatsrY   ÚsumÚ
cache_hitsÚvaluesÚcache_misses)rZ   r[   ÚhitsÚmissesÚsts        r/   Ú
check_hitsz&DispatcherCacheUsecasesTest.check_hits,  si   € Ø�Z‰ZˆØ×Ñœ˜RŸ]™]×1Ñ1Ó3Ó4°d¸B¿M¹MÔJØÐØ×ÑœS §¡×!7Ñ!7Ó!9Ó:¸FØŸ_™_õ.ð r6   r_   )rl   r|   r}   r"   r#   Údirnamer£   Úherer$   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                   ó|  — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Ze ej*                  ej.                  dk(  d«      d„ «       «       Ze ej*                  ej.                  dk(  d«      d„ «       «       Zd„ Z ej*                  edu xs ej8                  d   dk  d«      d„ «       Zy)Ú	TestCachec                 ól  — | j                  d«       | j                  «       }| j                  d«       |j                  }| j                   |dd«      d«       | j                  d«       | j                   |dd«      d«       | j                  d«       | j	                  |dd«       |j
                  }| j                   |dd«      d«       | j                  d«       | j                   |dd«      d«       | j                  d«       | j	                  |dd«       |j                  } ||j                  d«      }| j                  t        |«      d	«        ||j                  d«      }| j                  t        |«      d	«       | j                  d
«       | j	                  |dd«       | j                  «        y )Nr   rD   rO   é   ç      @ç      @é   rC   )rD   g     ÀE@é	   )r¹   r©   Úadd_usecaseÚassertPreciseEqualrã   Úadd_objmode_usecaseÚrecord_returnÚaligned_arrÚtupleÚ
packed_arrrÙ   )rZ   r¨   r.   Úrecs       r/   Útest_cachingz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                 ó¦  — | j                  d«       | j                  «       }| j                  d«       |j                  }| j                   |dd«      d«       | j                  d«       | j                   |dt	        j
                  d«      «      dt	        j
                  d«      z   dz   «       | j                  d«       | j                  |dd«       y )Nr   rD   rO   ré   rC   )r¹   r©   rî   rï   ÚnpÚarangerã   ©rZ   r¨   r.   s      r/   Útest_caching_nrt_prunedz!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  — | j                  «       }| j                  |j                  dd«      d«       | j                  d«       |j                  }| j                   |dd«      d«       | j                  d«       | j                  «       }|j                  }| j                   |dd«      d«       | j                  d«       |j
                  }| j                   |dd«      d«       | j                  d«       | j                   |dd«      d«       | j                  d«       y )NrO   rD   ré   é   ç      @rê   )r©   rï   Úinnerr¹   Úouter_uncachedÚouterrú   s      r/   Útest_inner_then_outerzTestCache.test_inner_then_outera  sõ   € à× Ñ Ó"ˆØ×Ñ §	¡	¨!¨Q£°Ô3Ø×Ñ˜1Ôà×ÑˆØ×Ñ¡ ! Q£¨Ô+Ø×Ñ˜1ÔØ× Ñ Ó"ˆØ×ÑˆØ×Ñ¡ ! Q£¨Ô+Ø×Ñ˜1Ôà�I‰IˆØ×Ñ¡ ! Q£¨Ô+Ø×Ñ˜1ÔØ×Ñ¡ # q£	¨3Ô/Ø×Ñ˜1Õr6   c                 óÐ  — | j                  «       }| j                  |j                  dd«      d«       | j                  d«       | j                  |j	                  dd«      d«       | j                  d«       | j                  «       }|j
                  }| j                   |dd«      d«       | j                  d«       | j                   |dd«      d«       | j                  d«       y )NrO   rD   rý   ré   rþ   rë   rì   )r©   rï   r  r¹   r   rÿ   rú   s      r/   Útest_outer_then_innerzTestCache.test_outer_then_inneru  sÂ   € à× Ñ Ó"ˆØ×Ñ §	¡	¨!¨Q£°Ô3Ø×Ñ˜1ÔØ×Ñ × 2Ñ 2°1°aÓ 8¸!Ô<Ø×Ñ˜1ÔØ× Ñ Ó"ˆØ�I‰IˆØ×Ñ¡ ! Q£¨Ô+Ø×Ñ˜1ÔØ×Ñ¡ # q£	¨3Ô/Ø×Ñ˜1Õr6   c                 ó�   — | j                  «       }|j                  }| j                   |dd«      d«       | j                  d«       y )NrD   rO   ré   r   )r©   Úadd_nocache_usecaserï   r¹   rú   s      r/   Útest_no_cachingzTestCache.test_no_cachingƒ  s?   € Ø× Ñ Ó"ˆà×#Ñ#ˆØ×Ñ¡ ! Q£¨Ô+Ø×Ñ˜1Õr6   c                 óž  — | j                  «       }t        j                  d¬«      5 }t        j                  dt        «       |j
                  }| j                   |d«      d«       | j                  d«       d d d «       | j                  t        «      d«       | j                  dt        |d   j                  «      «       y # 1 sw Y   ŒMxY w)	NT©ÚrecordÚalwaysrý   ré   r   rC   zBCannot cache compiled function "looplifted" as it uses lifted code)r©   ÚwarningsÚcatch_warningsÚsimplefilterr   Ú
loopliftedrï   r¹   rY   r·   ÚassertInÚstrÚmessage©rZ   r¨   Úwr.   s       r/   Útest_loopliftedz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                 óÌ  — | j                  «       }t        j                  d¬«      5 }t        j                  dt        «       |j
                  }t        j                  j                   |«       |j                  «       | j                  d«       d d d «       | j                  t        «      d«       | j                  dt        |d   j                  «      «       y # 1 sw Y   ŒMxY w)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¹   rY   r·   r  r  r  r  s       r/   Útest_big_arrayz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                 ó  — | j                  «       }|j                  |j                  |j                  fD ]À  }t	        j
                  d¬«      5 }t	        j                  dt        «       | j                   |d«      d«       | j                  d«       d d d «       | j                  t        «      d«       | j                  dj                  |j                  «      t        |d   j                   «      «       ŒÂ y # 1 sw Y   ŒhxY w)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¹   rY   r·   r  Úformatrl   r  r  )rZ   r¨   r.   r  s       r/   Útest_ctypesz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C8Ã8D	c                 óì  — | j                  «       }t        j                  «       5  t        j                  dt        «       |j
                  }| j                   |d«      d«       |j                  }| j                   |d«      d«       |j                  }| j                   |d«      d«       |j                  }| j                   |d«      d«       | j                  d«       d d d «       y # 1 sw Y   y xY w)NÚerrorrO   ré   é   é
   é   rì   )r©   r  r  r  r   Úclosure1rï   Úclosure2Úclosure3Úclosure4r¹   rú   s      r/   Útest_closurez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*Ã*C3c                 óv  — | j                  «       }|j                  }| j                   ||j                  d«      d«       | j                   ||j                  d«      d«       | j                   ||j                  d«      d«       | j                   ||j                  d«      d«       | j                  d«       y )NrC   r%  éd   rD   é   é   )r©   Úfirst_class_function_usecaserY   Úfirst_class_function_mulÚfirst_class_function_addr¹   rú   s      r/   Útest_first_class_functionz#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                 ó^  — | j                  «       }|j                  dd«       |j                  dd«       |j                  dd«       |j                  dd«       |j	                  dd«       |j                  |j                  d«       |j                  |j                  d«       | j                  «       }| j                  |j                  dd«       | j                  «       }| j                  ||«       |j                  } |dd«       | j                  |dd«        |dd«       | j                  |dd«       |j                  } |dd«       | j                  |dd«       | j                  | j                  «       |«       | j                  «        | j                  | j                  «       |«       y )NrD   rO   rê   rþ   r   rC   )r©   rî   rð   r   r  rñ   rô   rò   rµ   rã   ÚassertIsNotrY   rÙ   )rZ   r¨   ÚmtimesÚmod2r.   s        r/   Útest_cache_reusezTestCache.test_cache_reuseÔ  sb  € Ø× Ñ Ó"ˆØ�‰˜˜1ÔØ�‰˜˜SÔ!Ø×Ñ  1Ô%Ø×Ñ˜1˜aÔ Ø�	‰	�!�QŒØ×Ñ˜#Ÿ.™.¨!Ô,Ø×Ñ˜#Ÿ/™/¨1Ô-Ø×&Ñ&Ó(ˆà�‰˜Ÿ™¨¨AÔ.à×!Ñ!Ó#ˆØ×Ñ˜˜dÔ#Ø×ÑˆÙ	ˆ!ˆQŒØ�‰˜˜1˜aÔ Ù	ˆ#ˆsŒØ�‰˜˜1˜aÔ Ø×$Ñ$ˆÙ	ˆ!ˆQŒØ�‰˜˜1˜aÔ ð 	×Ñ˜×.Ñ.Ó0°&Ô9à×$Ñ$Ô&Ø×Ñ˜×.Ñ.Ó0°&Õ9r6   c                 óš  — | j                  «       }|j                  }| j                   |dd«      d«       t        | j                  d«      5 }|j                  d«       d d d «       | j                  «       }|j                  }| j                   |dd«      d«       |j                  }| j                   |dd«      d«       y # 1 sw Y   ŒdxY w)NrD   rO   ré   rE   z
Z = 10
é   )r©   rî   rï   r&   r‘   r'   rð   rú   s      r/   Útest_cache_invalidatezTestCache.test_cache_invalidateò  s«   € Ø× Ñ Ó"ˆØ�O‰OˆØ×Ñ¡ ! Q£¨Ô+ô �$—,‘, Ô$¨Ø�G‰G�LÔ!÷ %ð × Ñ Ó"ˆØ�O‰OˆØ×Ñ¡ ! Q£¨Ô,Ø×#Ñ#ˆØ×Ñ¡ ! Q£¨Õ,÷ %Ð$ús   ÁCÃC
c                 ó¢  — | j                  «       }|j                  }| j                   |dd«      d«       | j                  «       }|j                  }d|_        | j                   |dd«      d«       |j	                  «        | j                   |dd«      d«       | j                  «       }|j                  }| j                   |dd«      d«       y )NrD   rO   ré   r%  r:  )r©   rî   rï   ÚZÚ	recompilerú   s      r/   Útest_recompilezTestCache.test_recompile  s±   € à× Ñ Ó"ˆØ�O‰OˆØ×Ñ¡ ! Q£¨Ô+à× Ñ Ó"ˆØ�O‰OˆØˆŒØ×Ñ¡ ! Q£¨Ô+Ø	�‰ŒØ×Ñ¡ ! Q£¨Ô,ð × Ñ Ó"ˆØ�O‰OˆØ×Ñ¡ ! Q£¨Õ,r6   c                 ó´   — | j                  «       }|j                  }| j                   |d«      d«       |j                  }| j                   |d«      d«       y )NrD   rý   r$  )r©   Úrenamed_function1rï   Úrenamed_function2rú   s      r/   Útest_same_nameszTestCache.test_same_names  sN   € à× Ñ Ó"ˆØ×!Ñ!ˆØ×Ñ¡ !£ aÔ(Ø×!Ñ!ˆØ×Ñ¡ !£ aÕ(r6   c                 óv  — ddl m} |j                  }t        ddd«      }	 ||_        t	        j
                  |«      }t        j                  ||«      }| j                  |«       dt        _
        t        j                  ||«      }| j                  |t        «       ||_        t        `
y # ||_        t        `
w xY w)NrC   ©ÚfunctionÚpassztests/dummy_module.pyÚexecT)Údummy_modulerF  Ú__code__ÚcompileÚinspectÚgetfiler   Úfrom_functionÚassertIsNonerŽ   ÚfrozenÚassertIsInstance)rZ   rF  Úold_codeÚcode_objÚsourceÚlocators         r/   Útest_frozenzTestCache.test_frozen  s¨   € Ý*Ø×$Ñ$ˆÜ˜6Ð#:¸FÓCˆð	Ø (ˆHÔä—_‘_ XÓ.ˆFô +×8Ñ8¸À6ÓJˆGØ×Ñ˜gÔ&àŒCŒJô +×8Ñ8¸À6ÓJˆGØ×!Ñ! 'Ô+?Ô@ð !)ˆHÔÜ‘
øð !)ˆHÔÜ‘
ús   ¡A:B) Â)B8c                 ó²  — | j                  «       }|j                  }| j                  t        j                  |j
                  j                  d¬«       | j                   |dd«      d«       | j                  |dd«       | j                  «       }|j                  }| j                   |dd«      d«       | j                  |dd«       | j                  d«       y)	zy
        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¹   )rZ   r¨   r.   r7  s       r/   Ú_test_pycache_fallbackz 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                 ó  — t        j                  | j                  «      j                  }t        j                  | j                  d«       | j                  t         j                  | j                  |«       | j                  «        y )Nr   )r"   r”   r,   Úst_moder(   rY  r[  )rZ   Ú	old_permss     r/   Útest_non_creatable_pycachez$TestCache.test_non_creatable_pycacheK  sR   € ô
 —G‘G˜DŸL™LÓ)×1Ñ1ˆ	Ü
�‰�—‘˜uÔ%Ø�‰œŸ™ $§,¡,°	Ô:à×#Ñ#Õ%r6   c                 óN  — t         j                  j                  | j                  d«      }t        j                  |«       t        j
                  |«      j                  }t        j                  |d«       | j                  t         j                  ||«       | j                  «        y )Nr�   r   )
r"   r#   r$   r,   r%   r”   r^  r(   rY  r[  )rZ   Úpycacher_  s      r/   Útest_non_writable_pycachez#TestCache.test_non_writable_pycacheV  sj   € ô
 —'‘'—,‘,˜tŸ|™|¨]Ó;ˆÜ
�‰�ÔÜ—G‘G˜GÓ$×,Ñ,ˆ	Ü
�‰�˜%Ô Ø�‰œŸ™ '¨9Ô5à×#Ñ#Õ%r6   c                 óL  ‡ ‡‡— t         j                  ddgŠ‰g d¢z  Š	 t        j                  ‰dgz   «      }j                  «       j                  «       }t        j                  j                  ‰ j                  d«      Št        ‰d«      5 }|j                  d«       d d d «       ˆˆˆ fd	„} |«         |«       }‰ j                  d
|j                  «       «       y # t        j                  $ r(}‰ j                  d|j                  z  «       Y d }~ŒÚd }~ww xY w# 1 sw Y   Œ}xY w)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                  ó>  •— t        ‰d«      5 } t        j                  ‰| t        j                  t        j                  d¬«      }|j	                  «       \  }}|j
                  dk7  r!‰j                  d|j
                  ||fz  «       |cd d d «       S # 1 sw Y   y xY w©NÚrbT)ÚstdinrÅ   rÆ   Úuniversal_newlinesé*   z6unexpected return code %d
-- stdout:
%s
-- stderr:
%s
©r&   rÌ   rÍ   rÏ   rÐ   rÑ   rt   ©rn  Úpr×   rØ   Úbase_cmdÚinputfnrZ   s       €€€r/   Úexecute_with_inputz2TestCache.test_ipython.<locals>.execute_with_input„  óˆ   ø€ ä�g˜tÔ$¨Ü×$Ñ$ X°UÜ,6¯O©OÜ,6¯O©OØ8<ô>�ð Ÿ=™=›?‘��SØ—<‘< 2Ò%Ø—I‘Ið 1ð "#§¡¨s°CÐ 8ñ9ô :ð ÷ %×$Ò$úó   ŽA;BÂBúcache hits = 1)rŽ   rÎ   rÌ   Úcheck_outputÚCalledProcessErrorÚskipTestrÑ   ÚstriprÓ   r"   r#   r$   r,   r&   r'   r  )rZ   ÚverÚer.   rv  rØ   rt  ru  s   `     @@r/   Útest_ipythonz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Ã/DÄDÄD#Nr   ré   zrequires ipykernel >= 6c                 ó$  ‡ ‡‡— t         j                  ddgŠ‰g d¢z  Š	 t        j                  ‰dgz   «      }j                  «       j                  «       }ddl	m
} |j                  «       Št        ‰d«      5 }|j                  d	«       d d d «       ˆˆˆ fd
„} |«         |«       }‰ j                  d|j                  «       «       y # t        j                  $ r(}‰ j                  d|j                  z  «       Y d }~ŒÆd }~ww xY w# 1 sw Y   Œ}xY w)Nre  rf  rg  rh  ri  r   )Úcompilerr  rj  c                  ó>  •— t        ‰d«      5 } t        j                  ‰| t        j                  t        j                  d¬«      }|j	                  «       \  }}|j
                  dk7  r!‰j                  d|j
                  ||fz  «       |cd d d «       S # 1 sw Y   y xY wrl  rq  rr  s       €€€r/   rv  z4TestCache.test_ipykernel.<locals>.execute_with_input½  rw  rx  ry  )rŽ   rÎ   rÌ   rz  r{  r|  rÑ   r}  rÓ   Ú	ipykernelr‚  Úget_tmp_directoryr&   r'   r  )	rZ   r~  r  r‚  r.   rv  rØ   rt  ru  s	   `      @@r/   Útest_ipykernelz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 Á8DÃDÃC>Ã>DÄD)rl   r|   r}   rö   rû   r  r  r  r  r  r!  r+  r3  r8  r;  r?  rC  rV  r[  Úskip_bad_accessÚunittestÚskipIfr"   Únamer`  rc  r€  r„  Úversion_infor†  rG   r6   r/   rç   rç   4  s  „ ò'ò<!òò(òòCòGòò$"ò 	ò:ò<-ò-ò$)òò.ð2 Ø€X‡_�_�R—W‘W ‘_ØJóLñ&óLó ð&ð Ø€X‡_�_�R—W‘W ‘_ØJóLñ&óLó ð&ò35ðj €X‡_�_�i 4Ð'ÒK¨Y×-CÑ-CÀAÑ-FÈÑ-JØ.ó0ñ55ó0ñ55r6   rç   c                   ó*   ‡ — e Zd Zˆ fd„Zd„ Zd„ Zˆ xZS )ÚTestCacheZipc                 óJ  •— t         ‰| �  «        d}d}d}t        j                  j	                  | j
                  |«      }t        j                  |d«      5 }|j                  ||«       d d d «       t        j                  j                  d|«       d| _        y # 1 sw Y   Œ1xY w)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�   )rZ   Úmod_contentÚmod_filenameÚzip_filenameÚzip_pathÚzfrk   s         €r/   r˜   zTestCacheZip.setUpÔ  s€   ø€ Ü‰‰Œðˆð (ˆØ)ˆô —7‘7—<‘< §¡¨lÓ;ˆÜ�_‰_˜X sÔ+¨rØ�K‰K˜ kÔ2÷ ,ô 	�‰�‰˜˜8Ô$Ø$ˆ�÷ ,Ð+ús   ÁBÂB"c                 ó‚   — t         j                  j                  d«       t         j                  j                  dd «       y )Nr   r�  )rŽ   r#   r›   rš   r`   s    r/   r�   zTestCacheZip.tearDownë  s#   € ä�‰�‰�QŒä�‰�‰˜ tÕ,r6   c                 ó˜  — dd l }|j                  dd«      }| j                  |d«       | j                  |j                  dd«       | j                  |j                  d«       t        j
                  d= t        j                  «        dd l }|j                  dd«      }| j                  |d«       | j                  |j                  d«       y )Nr   rD   rO   rì   rC   r�  )r�  ÚaddrY   rã   rŽ   rš   Ú	importlibÚinvalidate_caches)rZ   r�  Úresult1Úresult2s       r/   Útest_zip_cachingzTestCacheZip.test_zip_cachingñ  s¢   € ó 	à—/‘/ ! QÓ'ˆØ×Ñ˜ !Ô$Ø�‰˜Ÿ™¨¨AÔ.ð 	�‰˜Ÿ™¨Ô+ô �K‰K˜Ð&Ü×#Ñ#Ô%Ûð —/‘/ ! QÓ'ˆØ×Ñ˜ !Ô$ð 	�‰˜Ÿ™¨Õ+r6   )rl   r|   r}   r˜   r�   r   Ú__classcell__©rk   s   @r/   r�  r�  Ò  s   ø„ ô%ò.-ö,r6   r�  c                   ó   — e Zd ZdZd„ Zd„ Zy)ÚTestCacheZipLibzR
    ZipCache tests that don't require the setup/teardown from `TestCacheZip`
    c                 óð   — d„ }d}t        j                  ||«      }| j                  |«       | j                  |j                  t        t        d«      «      «       | j                  |j                  d«       y )Nc                   ó   — y r_   rG   rG   r6   r/   Ú	mock_funcz<TestCacheZipLib.test_zip_locator_creation.<locals>.mock_func  ó   € Ør6   z/path/to/archive.zip/module.pyz/path/to/archive.zipz	module.py)r   rN  ÚassertIsNotNonerY   Ú	_zip_pathr  r   Ú_internal_path)rZ   r§  r—  rU  s       r/   Útest_zip_locator_creationz)TestCacheZipLib.test_zip_locator_creation  se   € ò	ð 4ˆä!×/Ñ/°	¸8ÓDˆØ×Ñ˜WÔ%Ø×Ñ˜×*Ñ*¬C´Ð5KÓ0LÓ,MÔNØ×Ñ˜×/Ñ/°Õ=r6   c                 ó\   — d„ }d}t        j                  ||«      }| j                  |«       y )Nc                   ó   — y r_   rG   rG   r6   r/   r§  z@TestCacheZipLib.test_zip_locator_non_zip_path.<locals>.mock_func  r¨  r6   z/path/to/module.py)r   rN  rO  )rZ   r§  Únon_zip_pathrU  s       r/   Útest_zip_locator_non_zip_pathz-TestCacheZipLib.test_zip_locator_non_zip_path  s.   € ò	ð ,ˆä!×/Ñ/°	¸<ÓHˆØ×Ñ˜'Õ"r6   N)rl   r|   r}   Ú__doc__r¬  r°  rG   r6   r/   r¤  r¤    s   „ ñò
>ó#r6   r¤  c                   ó.   ‡ — e Zd Zˆ fd„Zˆ fd„Zd„ Zˆ xZS )ÚTestSequentialParForsCachec                 ó@   •— t         t        | �  «        dt        _        y )NT)r�  r³  r˜   r   Úsequential_parfor_lowering©rZ   rk   s    €r/   r˜   z TestSequentialParForsCache.setUp*  s   ø€ ÜÔ(¨$Ñ5Ô7à,0ŒÕ)r6   c                 ó@   •— t         t        | �  «        dt        _        y )NF)r�  r³  r�   r   rµ  r¶  s    €r/   r�   z#TestSequentialParForsCache.tearDown/  s   ø€ ÜÔ(¨$Ñ8Ô:à,1ŒÕ)r6   c                 óŒ  — | j                  «       }| j                  d«       |j                  }t        j                  d«      }| j                   ||«      ||z  |z   «       |j                  j                  «       D �cg c]  }|j                  j                  ‘Œ }}| j                  |dg«       | j                  d«       y c c}w )Nr   r%  FrD   )r©   r¹   Úparfor_usecaserø   Úonesrï   Ú	overloadsrÞ   ÚlibraryÚhas_dynamic_globalsrY   )rZ   r¨   r.   ÚaryÚcresÚdynamic_globalss         r/   rö   z'TestSequentialParForsCache.test_caching4  s®   € Ø× Ñ Ó"ˆØ×Ñ˜1ÔØ×ÑˆÜ�g‰g�b‹kˆØ×Ñ¡ #£¨¨c©	°C©Ô8à'(§{¡{×'9Ñ'9Ô';ó=Ù';˜tð  Ÿ<™<×;Ó;Ø';ð 	ð =à×Ñ˜¨5¨'Ô2Ø×Ñ˜1Õùò=s   Á=C)rl   r|   r}   r˜   r�   rö   r¡  r¢  s   @r/   r³  r³  (  s   ø„ ô1ô
2ö
	r6   r³  c                   ór   — e Zd ZdZd„ Z ej                   ej                  «       dk(  d«      d„ «       Z	d„ Z
y)ÚTestCacheWithCpuSettingFc                 óº   — d}| j                  «       j                  «       D ]$  \  }}||v sŒ| j                  |||   «       |dz  }Œ& | j                  |dd¬«       y )Nr   rC   znothing to compare©Úmsg)rµ   ÚitemsÚassertGreaterEqualÚassertGreater)rZ   Ú
mtimes_oldÚmatch_countÚkrP   s        r/   Úcheck_later_mtimesz*TestCacheWithCpuSetting.check_later_mtimesD  sh   € ØˆØ×)Ñ)Ó+×1Ñ1Ö3‰DˆAˆqØ�JŠØ×'Ñ'¨¨:°a©=Ô9Ø˜qÑ ‘ð 4ð 	×Ñ˜;¨Ø3ð 	õ 	5r6   ÚgenericzLLVM detected 'generic' CPUc                 óP  — | j                  d«       | j                  t        j                  «       ddœ¬«       | j	                  «       }t        | j                  «       «      }| j                  dddœ¬«       | j                  |«       | j                  t        | j                  «       «      |«       | j                  «       }|j                  j                  }|j                  }|j                  «       }| j                  t        |«      d«       |j                  «       \  }}|d   d   dk(  r||}
}	n||}	}
| j                  |
d   d   t        j                  «       «       | j                  |
d   d   d«       | j                  |	d   d   d«       | j                  |	d   d   d«       y )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_indexrY   Úkeys)rZ   r6  Ú
cache_sizer¨   r:   Ú
cache_fileÚcache_indexÚkey_aÚkey_bÚkey_genericÚkey_hosts              r/   Útest_user_set_cpu_namez.TestCacheWithCpuSetting.test_user_set_cpu_nameM  s”  € ð 	×Ñ˜1Ôð 	×$Ñ$Ü')×';Ñ';Ó'=Ø+-ñ/ð 	%ô 	
ð ×&Ñ&Ó(ˆÜ˜×,Ñ,Ó.Ó/ˆ
ð 	×$Ñ$Ø'Ø"$ñ.
Ð$ô 	ð
 	×Ñ Ô'Ø×Ñœ3˜t×2Ñ2Ó4Ó5°zÔBà× Ñ Ó"ˆØ—‘×&Ñ&ˆØ×&Ñ&ˆ
Ø ×,Ñ,Ó.ˆØ×Ñœ˜[Ó)¨1Ô-Ø$×)Ñ)Ó+‰ˆ�Ø�‰8�A‰;˜)Ò#Ø$)¨5˜‰Kà$)¨5�kˆHØ×Ñ˜ !™ Q™¬×)=Ñ)=Ó)?Ô@Ø×Ñ˜ !™ Q™¨Ô,Ø×Ñ˜ Q™¨Ñ*¨IÔ6Ø×Ñ˜ Q™¨Ñ*¨BÕ/r6   c                 óÈ  — | j                  d«       t        j                  j                  «       }t        j                  «       }| j                  d|i¬«       t        | j                  «       «      }| j                  «       }d}| j                  ||«       | j                  d|i¬«       | j                  |«       | j                  t        | j                  «       «      |«       | j                  «       }|j                  j                  }|j                  }|j!                  «       }	| j#                  t        |	«      d«       |	j%                  «       \  }
}|
d   d   |k(  r|
|}}n|
|}}| j#                  |d   d   |j'                  «       «       | j#                  |d   d   |«       | j#                  |d   d   |j'                  «       «       | j#                  |d   d   |«       y )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Ö  rY   r×  Ú_get_host_cpu_name)rZ   Úcpu_codegenÚsystem_featuresrØ  r6  Úmy_cpu_featuresr¨   r:   rÙ  rÚ  rÛ  rÜ  Úkey_modifiedrÞ  s                 r/   Útest_user_set_cpu_featuresz2TestCacheWithCpuSetting.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‰;˜/Ò)Ø%*¨E˜(‰Là%*¨E�lˆHà×Ñ˜ !™ Q™¨×)GÑ)GÓ)IÔJØ×Ñ˜ !™ Q™¨Ô9Ø×Ñ˜ a™¨Ñ+¨[×-KÑ-KÓ-MÔNØ×Ñ˜ a™¨Ñ+¨_Õ=r6   N)rl   r|   r}   Ú_numba_parallel_test_rÌ  rˆ  r‰  rÒ  rÓ  rß  ré  rG   r6   r/   rÂ  rÂ  @  sH   „ à!Ðò5ð €X‡_�_Ð)�R×)Ñ)Ó+¨yÑ8Ø2ó4ñ!0ó4ð!0óF'>r6   rÂ  c                   óˆ   — e Zd ZdZej
                  j                  e«      Zej
                  j                  ed«      Z
dZd„ Zy)ÚTestMultiprocessCacheFr¾   r¿   c                 ó‚  — | j                  «       }|j                  }d}	 t        j                  d«      }|j                  |«      }	 t        |j                  |t        |«      «      «      }|j                  «        | j                  |||dz
  z  dz  «       y # t        $ r	 t        }Y Œsw xY w# |j                  «        w xY w)NrO   ÚspawnrC   rD   )r©   Úsimple_usecase_callerrm   rn   ÚAttributeErrorÚPoolrÜ   ÚimapÚrangeÚcloserY   )rZ   r¨   r.   r¸   rv   Úpoolr\   s          r/   Útest_multiprocessingz*TestMultiprocessCache.test_multiprocessing¦  s¬   € à× Ñ Ó"ˆð ×%Ñ%ˆØˆð	"Ü!×-Ñ-¨gÓ6ˆCð �x‰x˜‹{ˆð	Ü�d—i‘i ¤5¨£8Ó,Ó-ˆCà�J‰JŒLØ×Ñ˜˜a 1 q¡5™k¨QÑ.Õ/øô ò 	"Ü!ŠCð	"ûð �J‰J�Lús    B Á$B, ÂB)Â(B)Â,B>N)rl   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                   óè   — e Zd ZdZej
                  j                  e«      Zej
                  j                  ed«      Z
dZdZdZd„ Zd„ Zd„ Zd	„ Zd
„ Z ej(                   eed«      d«      d„ «       Zy)ÚTestCacheFileCollisionFr¾   Ú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                 ó*  — t        d«      | _        t        j                  j	                  d| j                  «       d| _        | j                  | j
                  t        j                  «       | j
                  | _        dj                  | j
                  dg«      | _
        t        j                  j                  | j                  | j
                  «      }t        j                  |«       t        t        j                  j                  |d«      d«      5 }t        | j                  |¬«       d d d «       t        t        j                  j                  |d	«      d«      5 }t        | j                   |¬«       d d d «       y # 1 sw Y   ŒTxY w# 1 sw Y   y xY w)
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)rZ   ÚfoomodÚfouts      r/   r˜   z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   ÄE=ÅF	Å=FÆ	Fc                 óþ   — t         j                  j                  | j                  d «       t         j                  j                  | j                  d «       t         j
                  j                  | j                  «       y r_   )rŽ   rš   r›   r  r  r#   rœ   r,   r`   s    r/   r�   zTestCacheFileCollision.tearDownÛ  sF   € Ü�‰�‰˜×)Ñ)¨4Ô0Ü�‰�‰˜×)Ñ)¨4Ô0Ü�‰�‰˜Ÿ™Õ%r6   c                 ó@   — t        | j                  «      j                  S r_   )r   r  Úbarr`   s    r/   Úimport_bar1z"TestCacheFileCollision.import_bar1à  ó   € Ü˜d×/Ñ/Ó0×4Ñ4Ð4r6   c                 ó@   — t        | j                  «      j                  S r_   )r   r  r  r`   s    r/   Úimport_bar2z"TestCacheFileCollision.import_bar2ã  r  r6   c                 óh  — | j                  «       }| j                  «       }|j                  j                  j                  }|j                  j                  j                  }| j                  ||«       | j                  |j                  d«      «       | j                  |j                  d«      «       y )Nz__init__.bar-3.pyzfoo.bar-3.py)r  r  rÔ  rÕ  Ú_index_namerã  Ú
assertTrueÚ
startswith)rZ   Úbar1Úbar2Úidxname1Úidxname2s        r/   Útest_file_locationz)TestCacheFileCollision.test_file_locationæ  s‡   € Ø×ÑÓ!ˆØ×ÑÓ!ˆà—;‘;×*Ñ*×6Ñ6ˆØ—;‘;×*Ñ*×6Ñ6ˆØ×Ñ˜H hÔ/Ø�‰˜×+Ñ+Ð,?Ó@ÔAØ�‰˜×+Ñ+¨NÓ;Õ<r6   rn   z)Test requires multiprocessing.get_contextc                 ó`  — | j                  «       }| j                  «       }t        «       5 } |«       }d d d «       j                  «       }| j	                  |j                  d«      d«       | j	                  |j                  d«      d«       | j	                  |j                  d«      d«       | j	                  |j                  d«      d«       t        «       5 } |«       }d d d «       |j                  «       }| j	                  |j                  d«      d«       | j	                  |j                  d«      d«       | j	                  |j                  d«      d«       | j	                  |j                  d«      d«       | j                  «       	 t        j                  d«      }j                  «       }|j                  t        || j                  | j                  | j                   f¬	«      }	|	j#                  «        |j%                  «       }
|j%                  «       }|j%                  «       }|j%                  «       }|	j'                  «        | j	                  ||«       | j	                  ||«       | j	                  |
j                  d«      d«       | j	                  |
j                  d«      d«       | j	                  |
j                  d«      d«       | j	                  |
j                  d«      d«       | j	                  |j                  d«      d«       | j	                  |j                  d«      d«       | j	                  |j                  d«      d«       | j	                  |j                  d«      d«       y # 1 sw Y   �ŒJxY w# 1 sw Y   �Œ©xY w# t        $ r t        d«       Y �Œw xY w)
Nzindex savedrC   z
data savedzindex loadedr   zdata loadedrî  zmissing spawn contextrg   )r  r  r   ÚgetvaluerY   Úcountrã  rm   rn   Ú
ValueErrorr  ro   rp   Úcache_file_collision_testerr,   r  r  rr   rs   r$   )rZ   r  r  ÚbufÚres1ÚcachelogÚres2ÚmpÚqrx   Úlog1Úgot1Úlog2Úgot2s                 r/   Útest_no_collisionz(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Ô!<Ø ! 4§<¡<Ø $× 1Ñ 1Ø $× 1Ñ 1ð 3ð ó 4ˆð 	�
‰
Œà�u‰u‹wˆØ�u‰u‹wˆØ�u‰u‹wˆØ�u‰u‹wˆØ�	‰	Œð 	×Ñ˜˜tÔ$Ø×Ñ˜˜tÔ$ð 	×Ñ˜Ÿ™ 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)   «M;ÃNÆN Í;NÎNÎN-Î,N-N)rl   r|   r}   rê  r"   r#   rä   r£   rå   r$   r“   r�   r  r  r˜   r�   r  r  r  rˆ  Ú
skipUnlessÚhasattrrm   r(  rG   r6   r/   rø  rø  ¹  sŠ   „ à!Ðà�7‰7�?‰?˜8Ó$€DØ—G‘G—L‘L Ð':Ó;€MØ'€Gð€Mð€Mò1ò&ò
5ò5ò=ð €X×Ñ™ °-Ó@ØDóFñ97óFñ97r6   rø  c                 óð  — t         j                  j                  d|«       t        |«      j                  }t        |«      j                  }t        «       5 } |«       }d d d «       | j                  j                  «       «       | j                  «       t        «       5 } |«       }d d d «       | j                  |j                  «       «       | j                  «       y # 1 sw Y   Œ„xY w# 1 sw Y   ŒFxY w)Nr   )rŽ   r#   r�   r   r  r   rˆ   r  )	r#  r,   r  r  r  r  r  Úr1Úr2s	            r/   r  r  .  s¨   € Ü‡H�H‡O�O�A�wÔÜ˜,Ó'×+Ñ+€DÜ˜,Ó'×+Ñ+€DÜ	Ô	 Ù‹Vˆ÷ 
à‡E�Eˆ#�,‰,‹.ÔØ‡E�Eˆ"„IÜ	Ô	 Ù‹Vˆ÷ 
à‡E�Eˆ#�,‰,‹.ÔØ‡E�Eˆ"…I÷ 
Ð	ú÷ 
Ð	ús   ÁC ÂC,Ã C)Ã,C5c                   ó*   — e Zd ZdZdZdZd„ Zd„ Zd„ Zy)Ú#TestCacheMultipleFilesWithSignatureFz
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                 óè  — t        d«      | _        t        j                  j	                  | j                  d«      | _        t        | j
                  d«      5 }t        | j                  |¬«       d d d «       t        j                  j	                  | j                  d«      | _	        t        | j                  d«      5 }t        | j                  |¬«       d d d «       y # 1 sw Y   ŒoxY w# 1 sw Y   y xY w)Nrû  zfile1.pyr  rÿ  zfile2.py)r   r,   r"   r#   r$   Úfile1r&   r  Úsource_text_file1Úfile2Úsource_text_file2)rZ   r  s     r/   r˜   z)TestCacheMultipleFilesWithSignature.setUpP  s¤   € Ü%Ð&;Ó<ˆŒä—W‘W—\‘\ $§,¡,°
Ó;ˆŒ
Ü�$—*‘*˜cÔ" dÜ�$×(Ñ(¨tÕ4÷ #ô —W‘W—\‘\ $§,¡,°
Ó;ˆŒ
Ü�$—*‘*˜cÔ" dÜ�$×(Ñ(¨tÕ4÷ #Ð"÷	 #Ð"ú÷ #Ð"ús   ÁCÂ;C(ÃC%Ã(C1c                 óB   — t        j                  | j                  «       y r_   )r)   r*   r,   r`   s    r/   r�   z,TestCacheMultipleFilesWithSignature.tearDown[  s   € Ü�‰�d—l‘lÕ#r6   c                 óŽ  — t        j                  t        j                  | j                  gt         j
                  t         j
                  ¬«      }|j                  «       \  }}d|j                  «       › d|j                  «       › �}| j                  |j                  d|¬«       t        j                  t        j                  | j                  gt         j
                  t         j
                  ¬«      }|j                  «       \  }}d|j                  «       › d|j                  «       › �}| j                  |j                  d|«       y )N©rÅ   rÆ   zstdout:
z


stderr:
r   rÄ  )rÌ   rÍ   rŽ   rÎ   r1  rÏ   rÐ   rÓ   rY   rÑ   r3  )rZ   rÖ   r×   rØ   rÅ  s        r/   Ú*test_caching_mutliple_files_with_signaturezNTestCacheMultipleFilesWithSignature.test_caching_mutliple_files_with_signature^  sõ   € ä× Ñ ¤#§.¡.°$·*±*Ð!=Ü(2¯©Ü(2¯©ô9ˆð ×$Ñ$Ó&‰ˆˆSØ˜#Ÿ*™*›,˜ }°S·Z±Z³\°NÐCˆØ×Ñ˜×)Ñ)¨1°#ÐÔ6ô × Ñ ¤#§.¡.°$·*±*Ð!=Ü(2¯©Ü(2¯©ô9ˆð ×$Ñ$Ó&‰ˆˆSØ˜#Ÿ*™*›,˜ }°S·Z±Z³\°NÐCˆØ×Ñ˜×)Ñ)¨1¨cÕ2r6   N)	rl   r|   r}   rê  r2  r4  r˜   r�   r8  rG   r6   r/   r/  r/  <  s)   „ ð "ÐðÐð
Ðò	5ò$ó3r6   r/  c                   ó�   — e Zd Zej                  j                  e«      Zej                  j                  ed«      Z	dZ
d„ Zd„ Zd„ Zy)ÚTestCFuncCachezcfunc_cache_usecases.pyÚcfunc_caching_test_fodderc                 ón  — 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 )	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Ä   r7  r   rÈ   z:stderr follows
rÉ   )r³   r,   r�   rÌ   rÍ   rŽ   rÎ   rÏ   rÐ   rÑ   rÒ   rÓ   )rZ   rÔ   rÖ   r×   rØ   s        r/   rÙ   z&TestCFuncCache.run_in_separate_processv  s«   € ðô ˜tŸ|™|°T·\±\ÔBñCˆô × Ñ ¤#§.¡.°$¸Ð!=Ü(2¯©Ä
ÇÁôQˆà×$Ñ$Ó&‰ˆˆSØ×Ñ˜qÒ Ü Ð#<¸U×=MÑ=MÐ<Nð O4Ø47·J±J³L°>Àð"Eó Fð Fð !r6   c                 ó$   — |j                  «        y r_   )Ú	self_test©rZ   r¨   s     r/   Úcheck_modulezTestCFuncCache.check_moduleŽ  s   € Ø�‰�r6   c                 ón  — | j                  d«       | j                  «       }| j                  d«       | j                  |j                  j                  d«       | j                  |j
                  j                  d«       | j                  |j                  j                  d«       | j                  |j                  j                  d«       | j                  |«       | j                  «       }| j                  d«       | j                  |j                  j                  d«       | j                  |j
                  j                  d«       | j                  |j                  j                  d«       | j                  |j                  j                  d«       | j                  |«       | j                  «        y )Nr   ré   rC   )
r¹   r©   rY   rî   rÝ   r  r  Údiv_usecaser@  rÙ   r?  s     r/   rö   z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   N)rl   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                   ó   — e Zd Zy)ÚTestLocatorN)rl   r|   r}   rG   r6   r/   rD  rD  ©  s   „ Ør6   rD  c                   ó.   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zy)Ú&TestCacheLocatorEnvironmentIntegrationz9Integration tests for environment variable functionality.c                 ó¶   — d„ }t        dd«      5  | j                  t        «      5  t        |«       d d d «       d d d «       y # 1 sw Y   ŒxY w# 1 sw Y   y xY w)Nc                   ó   — y©Nrp  rG   rG   r6   r/   r§  z\TestCacheLocatorEnvironmentIntegration.test_locators_env_override_unknown.<locals>.mock_func±  ó   € Ør6   ÚNUMBA_CACHE_LOCATOR_CLASSESzfoo,bar)r   ÚassertRaisesÚRuntimeErrorr	   )rZ   r§  s     r/   Ú"test_locators_env_override_unknownzITestCacheLocatorEnvironmentIntegration.test_locators_env_override_unknown°  sR   € ò	ô !Ø)Øõ
ð ×"Ñ"¤<Õ0Ü˜iÔ(÷ 1÷	
ð 
÷ 1Ð0ú÷	
ð 
ús!   �A¦A²AÁA	ÁAÁAc                 óº   — d„ }t        dd«      5  t        |«      }t        }| j                  |j                  j
                  |«       d d d «       y # 1 sw Y   y xY w)Nc                   ó   — yrI  rG   rG   r6   r/   r§  z[TestCacheLocatorEnvironmentIntegration.test_locators_env_override_single.<locals>.mock_func¼  rJ  r6   rK  r   )r   r	   r   rQ  Ú_implrU  ©rZ   r§  r:   ÚexpectedLocators       r/   Ú!test_locators_env_override_singlezHTestCacheLocatorEnvironmentIntegration.test_locators_env_override_single»  sU   € ò	ô !Ø)Ø*õ
ô " )Ó,ˆEÜ:ˆOØ×!Ñ! %§+¡+×"5Ñ"5Ø"1ô3÷
÷ 
ñ 
ús   �8AÁAc                 óÈ   — d„ }t        dt        › d�«      5  t        |«      }t        }| j	                  |j
                  j                  |«       d d d «       y # 1 sw Y   y xY w)Nc                   ó   — yrI  rG   rG   r6   r/   r§  z[TestCacheLocatorEnvironmentIntegration.test_locators_env_override_custom.<locals>.mock_funcÉ  rJ  r6   rK  z.TestLocator)r   rl   r	   rD  rQ  rQ  rU  rR  s       r/   Ú!test_locators_env_override_customzHTestCacheLocatorEnvironmentIntegration.test_locators_env_override_customÈ  s\   € ò	ô !Ø)Üˆj˜Ð%õ
ô " )Ó,ˆEÜ)ˆOØ×!Ñ! %§+¡+×"5Ñ"5Ø"1ô3÷
÷ 
ñ 
ús   —8AÁA!c                 ó¾   — d„ }d}t         }t        d|«      5  t        |«      }| j                  |j                  j
                  |«       d d d «       y # 1 sw Y   y xY w)Nc                   ó   — yrI  rG   rG   r6   r/   r§  zYTestCacheLocatorEnvironmentIntegration.test_locators_env_override_list.<locals>.mock_funcÖ  rJ  r6   zXInTreeCacheLocatorFsAgnostic,InTreeCacheLocator,IPythonCacheLocator,UserWideCacheLocatorrK  )r   r   r	   rQ  rQ  rU  )rZ   r§  ÚlocatorClassesrS  r:   s        r/   Útest_locators_env_override_listzFTestCacheLocatorEnvironmentIntegration.test_locators_env_override_listÕ  sX   € ò	ðEˆä6ˆä Ø)Øõ
ô " )Ó,ˆEØ×!Ñ! %§+¡+×"5Ñ"5°ÔG÷
÷ 
ñ 
ús   ˜2AÁAc                 óx   — d„ }t        |«      }t        }| j                  |j                  j                  |«       y )Nc                   ó   — yrI  rG   rG   r6   r/   r§  zOTestCacheLocatorEnvironmentIntegration.test_default_locators.<locals>.mock_funcå  rJ  r6   )r	   r
   rQ  rQ  rU  rR  s       r/   Útest_default_locatorsz<TestCacheLocatorEnvironmentIntegration.test_default_locatorsä  s2   € ò	ô ˜iÓ(ˆÜ,ˆØ×Ñ˜eŸk™k×1Ñ1°?ÕCr6   N)	rl   r|   r}   r±  rN  rT  rW  r[  r^  rG   r6   r/   rF  rF  ­  s    „ ÙCò	)ò3ò3òHóDr6   rF  c                   ó   — e Zd ZdZd„ Zd„ Zy)Ú TestInTreeCacheLocatorFsAgnosticz7Test _InTreeCacheLocatorFsAgnostic class functionality.c                 ó$  — ddl m} t        j                  |«      }t	        j
                  ||«      }t        j
                  ||«      }| j                  |«       | j                  |«       |j                  «       }|j                  «       }| j                  t        |«      d«       | j                  t        |«      d«       | j                  |d   |d   «       | j                  |d   t        |d   «      «       | j                  |d   |d   «       y)z9Test that FsAgnostic locator floors timestamp to seconds.rC   rE  rD   r   N)rI  rF  rL  rM  r
   rN  r   r©  Úget_source_stamprY   r·   r   ÚassertLessEqual)rZ   rF  rT  Úregular_locatorÚfs_agnostic_locatorÚregular_stampÚfs_agnostic_stamps          r/   Útest_source_stamp_precisionz<TestInTreeCacheLocatorFsAgnostic.test_source_stamp_precisionð  s  € å*ä—‘ Ó*ˆô -×:Ñ:¸8ÀVÓLˆÜ:×HÑHØ�fó
Ðð
 	×Ñ˜_Ô-Ø×ÑÐ0Ô1ð (×8Ñ8Ó:ˆØ/×@Ñ@ÓBÐð 	×Ñœ˜]Ó+¨QÔ/Ø×ÑœÐ.Ó/°Ô3ð 	×Ñ˜ qÑ)Ð+<¸QÑ+?Ô@ð 	×ÑÐ*¨1Ñ-¬u°]À1Ñ5EÓ/FÔGð 	×ÑÐ.¨qÑ1°=ÀÑ3CÕDr6   c                 óF  — ddl m} t        j                  |«      }t	        j
                  ||«      }t        j                  |«      }|j                  }|j                  «       }t        |«      }| j                  |d   |«       | j                  |d   |j                  «       y)z:Test FsAgnostic timestamp handling using filesystem mtime.rC   rE  r   N)rI  rF  rL  rM  r   rN  r"   r”   Úst_mtimerb  r   rY   Úst_size)rZ   rF  rT  re  Ústat_resultÚoriginal_mtimeÚstampÚexpected_timestamps           r/   Útest_timestamp_precision_on_fsz?TestInTreeCacheLocatorFsAgnostic.test_timestamp_precision_on_fs  s•   € õ 	+ä—‘ Ó*ˆô ;×HÑHØ�fó
Ðô
 —g‘g˜f“oˆØ$×-Ñ-ˆð $×4Ñ4Ó6ˆô # >Ó2ÐØ×Ñ˜˜q™Ð#5Ô6ð 	×Ñ˜˜q™ ;×#6Ñ#6Õ7r6   N)rl   r|   r}   r±  rh  rp  rG   r6   r/   r`  r`  í  s   „ ÙAòEóB8r6   r`  Ú__main__)Prœ  rL  rm   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_msgr)  r‡  r5   rA   rH   rM   rQ   rT   rV   rq   r‹   r½   rç   r�  r¤  r³  rÂ  rì  rø  r  r/  r:  rD  rF  r`  rl   Ú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ÒØ€H‡M�M…Oð øð{' ò ØƒIðús   ÂF# Æ#F.Æ-F.