§
    2@Äj�¶  ã                   óÀ  — d dl Z d dlZd dlZd dlZd dlZd dl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mZmZmZmZ d dlm Z 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/m0Z0 	 d dl1Z1n# e2$ r dZ1Y nw xY wd
„ Z3 e3¦   «         Z4dZ5 ej6        e4e5¦  «        Z7d„ Z8d„ Z9d„ Z:d„ Z;d„ Z<d„ Z= G d„ de%e&¦  «        Z>d„ Z? G d„ de&¦  «        Z@ G d„ de@¦  «        ZA G d„ deA¦  «        ZB G d„ deA¦  «        ZC G d„ deA¦  «        ZDe, G d„ d eA¦  «        ¦   «         ZE G d!„ d"eA¦  «        ZF G d#„ d$e@¦  «        ZGe+ G d%„ d&ej&        ¦  «        ¦   «         ZHd'„ ZI G d(„ d)ej&        ¦  «        ZJ G d*„ d+e@¦  «        ZK G d,„ d-e¦  «        ZL G d.„ d/e&¦  «        ZM G d0„ d1e&¦  «        ZNeOd2k    r ejP        ¦   «          dS dS )3é    N)ÚPath)Únjit)Úcodegen)ÚUserWideCacheLocatorÚZipCacheLocatorÚFunctionCacheÚInTreeCacheLocatorÚInTreeCacheLocatorFsAgnostic)ÚNumbaWarningÚNumbaDeprecationWarning)Ú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                  óH  — t          d¦  «        } t          j                             | d¦  «        }t          j        |¦  «         t          t          j                             |d¦  «        d¦  «        5 }|                     d¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        |d¦  «         	 t          t          j                             |d¦  «        d¦  «        5 }|                     d¦  «         d d d ¦  «         n# 1 swxY w Y   	 t          j        |d	¦  «         t          j	        |¦  «         d
S # t          $ r- Y t          j        |d	¦  «         t          j	        |¦  «         dS 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      úIC:\Projects\Historical\venv\Lib\site-packages\numba/tests/test_caching.pyÚcheck_access_is_preventabler0   4   sü  € õ ˜\Ñ*Ô*€GÝ”—’˜W oÑ6Ô6€HÝ„HˆXÑÔÐå	�bŒg�lŠl˜8 ZÑ0Ô0°$Ñ	7Ô	7ð ¸1Ø	�Š�ÑÔÐðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð õ „HˆX�uÑÔÐð Ý•"”'—,’,˜xÐ):Ñ;Ô;¸TÑBÔBð 	ÀaØ�GŠG�HÑÔÐð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð õ 	Œ�˜5Ñ!Ô!Ð!ÝŒ�hÑÔÐÐÐøõ ð ð ð ð å
Œ�˜5Ñ!Ô!Ð!ÝŒ�hÑÔÐÐÐðøøøøõ 	Œ�˜5Ñ!Ô!Ð!ÝŒ�hÑÔÐÐøøøsZ   Á2BÂBÂBÂ5.D< Ã#DÃ9D< ÄD	Ä	D< ÄD	ÄD< Ä<
E3ÅE6 Å2E3Å3E6 Å6+F!z9Cannot create a directory to which writes are preventablec                  ó(   — d} t          | ¦  «        | fS )NÚabcd)Úhash)Úcs    r/   Úconstant_unicode_cacher5   X   s   € Ø€AÝ�‰7Œ7�Aˆ:Ðó    c                  óš   — t           }  t          d¬¦  «        | ¦  «        } | ¦   «         \  }} |¦   «         \  }}||k    sJ ‚||k    sJ ‚d S ©NT©Úcache)r5   r   )ÚpyfuncÚcfuncÚexp_hvÚexp_strÚgot_hvÚgot_strs         r/   Úcheck_constant_unicode_cacherA   ]   sg   € Ý#€FØ�D�tÐÑÔ˜VÑ$Ô$€EØ�f‘h”h�O€FˆGØ�e‘g”g�O€FˆGØ�VÒÐÐÐØ�gÒÐÐÐÐÐr6   c                  ó   — dddœS )Né   é   )ÚaÚb© rG   r6   r/   Ú
dict_cacherH   f   s   € Ø˜ÐÐÐr6   c                  ó~   — t           }  t          d¬¦  «        | ¦  «        } | ¦   «         } |¦   «         }||k    sJ ‚d S r8   )rH   r   ©r;   r<   ÚexpÚgots       r/   Úcheck_dict_cacherM   j   sH   € Ý€FØ�D�tÐÑÔ˜VÑ$Ô$€EØ
ˆ&‰(Œ(€CØ
ˆ%‰'Œ'€CØ�#Š:ˆ:ˆ:ˆ:ˆ:ˆ:r6   c               #   ó   K  — dD ]} | V — Œd S )N)rC   rD   é   rG   )Úvs    r/   Úgenerator_cacherQ   r   s*   è è € Øð ð ˆØˆˆˆˆðð r6   c                  ó²   — t           }  t          d¬¦  «        | ¦  «        }t           | ¦   «         ¦  «        }t           |¦   «         ¦  «        }||k    sJ ‚d S r8   )rQ   r   ÚlistrJ   s       r/   Úcheck_generator_cacherT   w   sT   € Ý€FØ�D�tÐÑÔ˜VÑ$Ô$€EÝ
ˆvˆv‰xŒx‰.Œ.€CÝ
ˆuˆu‰wŒw‰-Œ-€CØ�#Š:ˆ:ˆ:ˆ:ˆ:ˆ:r6   c                   ó,   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚTestCachingc                 óp   —  |¦   «          t          |¦  «        }|                      |d         d¦  «         d S )NÚexitcoder   )r   ÚassertEqual)ÚselfÚfuncÚress      r/   Úrun_testzTestCaching.run_test€   s:   € Øˆ‰ŒˆÝ(¨Ñ.Ô.ˆØ×Ò˜˜Zœ¨!Ñ,Ô,Ð,Ð,Ð,r6   c                 ó:   — |                       t          ¦  «         d S ©N)r]   rA   ©rZ   s    r/   Útest_constant_unicode_cachez'TestCaching.test_constant_unicode_cache…   s   € Ø�ŠÕ2Ñ3Ô3Ð3Ð3Ð3r6   c                 ó:   — |                       t          ¦  «         d S r_   )r]   rM   r`   s    r/   Útest_dict_cachezTestCaching.test_dict_cacheˆ   s   € Ø�ŠÕ&Ñ'Ô'Ð'Ð'Ð'r6   c                 ó:   — |                       t          ¦  «         d S r_   )r]   rT   r`   s    r/   Útest_generator_cachez TestCaching.test_generator_cache‹   s   € Ø�ŠÕ+Ñ,Ô,Ð,Ð,Ð,r6   c                 ó¶  — t          | j        j        ¦  «        }t          j        ¦   «         }|                     ¦   «         }|                     t          ||df¬¦  «        }|                     ¦   «          | 	                    ¦   «          | 
                    ¦   «         \  }}|s|                      |¦  «         |                      |dd¦  «         |                     t          ||df¬¦  «        }|                     ¦   «          | 	                    ¦   «          | 
                    ¦   «         \  }}|s|                      |¦  «         |                      |dd¦  «         d S )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Ž   sc  € õ # 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ð 4ð 4ð(ð (ð (ð-ð -ð -ð(
ð (
ð (
ð (
ð (
r6   rV   c                 óD  — t          d|¦  «        5  t          d¬¦  «        dd„¦   «         }	  |¦   «         }|rM|j        |j        d                  dk    s
J d¦   «         ‚|j        |j        d                  dk    s
J d	¦   «         ‚nL|j        |j        d                  dk    s
J d
¦   «         ‚|j        |j        d                  dk    s
J d¦   «         ‚d}n#  t          j        ¦   «         }d}Y nxY w|                      ||f¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NÚ	CACHE_DIRTr9   rj   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Ô	0ð ,ð ,Ý	�DÐ	Ñ	Ô	ð	ð 	ð 	ñ 
Ô	ð	ð	Ø�T‘V”VˆFð ð 	2ØÔ'¨¬¸Ô(:Ô;¸qÒ@Ð@Ð@Ø3ñ AÔ@Ð@àÔ)¨$¬/¸!Ô*<Ô=ÀÒBÐBÐBØ2ñ CÔBÐBÐBð Ô)¨$¬/¸!Ô*<Ô=ÀÒBÐBÐBØ4ñ CÔBÐBàÔ'¨¬¸Ô(:Ô;¸qÒ@Ð@Ð@Ø1ñ AÔ@Ð@àˆGˆGøð	ÝÔ)Ñ+Ô+ˆFØˆGˆGˆGøøøØ×Ò˜' 6Ð*Ñ+Ô+Ð+ð1,ð ,ð ,ñ ,ô ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,øøøð ,ð ,ð ,ð ,ð ,ð ,s)   ‘D­B'CÃDÃC.Ã,DÄDÄDc                   óV   — e Zd ZdZdZd„ Zd„ Zed„ ¦   «         Zd„ Z	d„ Z
d„ Zd„ Zd	„ ZdS )
ÚBaseCacheTestNc                 óÞ  — t          d¦  «        | _        t          j                             d| j        ¦  «         t
          j                             | j        | j        dz   ¦  «        | _        t
          j                             | j        d¦  «        | _	        t          j        | j        | j        ¦  «         t          j        | j        t          j        t          j        z  ¦  «         d | _        d S )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Ô3ˆŒÝŒ�Š˜˜4œ<Ñ(Ô(Ð(Ý”w—|’| D¤L°$´,ÀÑ2FÑGÔGˆŒÝœŸš d¤l°MÑBÔBˆŒÝŒ�DÔ&¨¬Ñ5Ô5Ð5Ý
Œ�”�tœ|­d¬mÑ;Ñ<Ô<Ð<ØˆŒˆˆr6   c                 ó˜   — t           j                             | j        d ¦  «         t           j                             | j        ¦  «         d S r_   )rŽ   ÚmodulesÚpopr�   r#   Úremover,   r`   s    r/   ÚtearDownzBaseCacheTest.tearDownä   s6   € ÝŒ�Š˜œ dÑ+Ô+Ð+ÝŒ�Š˜œÑ%Ô%Ð%Ð%Ð%r6   c                 ód   — t          | dd ¦  «        }|�|S t          | dd ¦  «        }|�|j        S d S )NÚ
__cached__Ú__spec__)ÚgetattrÚcached)Úmoduler¢   Úspecs      r/   Ú_module_cached_pathz!BaseCacheTest._module_cached_pathè   sD   € õ
 ˜ ¨tÑ4Ô4ˆØÐØˆMÝ�v˜z¨4Ñ0Ô0ˆØÐØ”;ÐØˆtr6   c                 ó\  — t           j                             | j        d ¦  «        }|�=|                      |¦  «        }|r&	 t          j        |¦  «         n# t          $ r Y nw xY wt          | j        ¦  «        }|  	                    |j
                             d¦  «        | j        ¦  «         |S )NÚco)rŽ   rš   r›   r�   r¥   r"   ÚunlinkÚFileNotFoundErrorr   rY   Ú__file__Úrstripr‘   )rZ   ÚoldÚcached_pathÚmods       r/   Úimport_modulezBaseCacheTest.import_moduleõ   s¯   € õ Œk�oŠo˜dœl¨DÑ1Ô1ˆØˆ?à×2Ò2°3Ñ7Ô7ˆKØð ðÝ”I˜kÑ*Ô*Ð*Ð*øÝ(ð ð ð Ø�Dðøøøå˜Tœ\Ñ*Ô*ˆØ×Ò˜œ×,Ò,¨TÑ2Ô2°D´LÑAÔAÐAØˆ
s   Á A Á
A"Á!A"c                 ón   — 	 d„ t          j        | j        ¦  «        D ¦   «         S # t          $ r g cY S w xY w)Nc                 ó<   — g | ]}|                      d ¦  «        °|‘ŒS ))z.pycz.pyo)Úendswith)Ú.0Úfns     r/   ú
<listcomp>z0BaseCacheTest.cache_contents.<locals>.<listcomp>  s9   € ð :ð :ð :˜2ØŸ;š;Ð'7Ñ8Ô8ð:�Bð :ð :ð :r6   )r"   Úlistdirru   r©   r`   s    r/   Úcache_contentszBaseCacheTest.cache_contents  sW   € ð	ð:ð :¥¤¨D¬NÑ!;Ô!;ð :ñ :ô :ð :øå ð 	ð 	ð 	ØˆIˆIˆIð	øøøs   ‚"% ¥4³4c                 óx   ‡ — t          ˆ fd„t          ‰                      ¦   «         ¦  «        D ¦   «         ¦  «        S )Nc              3   ó    •K  — | ]H}|t           j                             t           j                             ‰j        |¦  «        ¦  «        fV — ŒId S r_   )r"   r#   Úgetmtimer$   ru   ©r³   r´   rZ   s     €r/   ú	<genexpr>z1BaseCacheTest.get_cache_mtimes.<locals>.<genexpr>  s^   øè è € ð =ð =Øð �œ×)Ò)­"¬'¯,ª,°t´~ÀrÑ*JÔ*JÑKÔKÐLð =ð =ð =ð =ð =ð =r6   )ÚdictÚsortedr·   r`   s   `r/   Úget_cache_mtimeszBaseCacheTest.get_cache_mtimes  sO   ø€ Ýð =ð =ð =ð =Ý$ T×%8Ò%8Ñ%:Ô%:Ñ;Ô;ð=ñ =ô =ñ =ô =ð 	=r6   c                 óv   — |                       ¦   «         }|                      t          |¦  «        ||¦  «         d S r_   )r·   rY   Úlen)rZ   Únr4   s      r/   Úcheck_pycachezBaseCacheTest.check_pycache  s7   € Ø×ÒÑ!Ô!ˆØ×Ò�˜Q™œ  AÑ&Ô&Ð&Ð&Ð&r6   c                 ó   — d S r_   rG   r`   s    r/   Ú
dummy_testzBaseCacheTest.dummy_test  s   € Øˆr6   )rl   r|   r}   r“   r�   r˜   r�   Ústaticmethodr¥   r¯   r·   r¿   rÃ   rÅ   rG   r6   r/   r‹   r‹   Õ   s¢   € € € € € à€Mà€Gðð ð ð&ð &ð &ð ð
ð 
ñ „\ð
ðð ð ð"ð ð ð=ð =ð =ð'ð 'ð 'ðð ð ð ð r6   r‹   c                   ó�   — e Zd Zej                             e¦  «        Zej                             ed¦  «        Z	dZ
ddœd„Zdd„ZdS )ÚDispatcherCacheUsecasesTestúcache_usecases.pyÚdispatcher_caching_test_fodderN©Úenvvarsc          	      óê  — |€i }dt          | j        | j        ¬¦  «        z  }t          j                             ¦   «         }|                     |¦  «         t          j        t          j
        d|gt          j        t          j        |¬¦  «        }|                     ¦   «         \  }}|j        dk    rBt          d|j        ›d|                     ¦   «         ›d|                     ¦   «         ›d	�¦  «        ‚d S )
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ÑBÔBñCˆõ ”:—?’?Ñ$Ô$ˆØ�Š˜Ñ Ô Ð ÝÔ ¥#¤.°$¸Ð!=Ý(2¬Å
ÄØ%-ð/ñ /ô /ˆð ×$Ò$Ñ&Ô&‰ˆˆSØÔ˜qÒ Ð Ý �.ð Ô#Ð#Ð# S§Z¢Z¡\¤\ \ \°3·:²:±<´<°<°<ðAñô ð ð !Ð r6   c                 ó  — |j         }|                      t          |j                             ¦   «         ¦  «        ||j        ¦  «         |�B|                      t          |j                             ¦   «         ¦  «        ||j        ¦  «         d S d S r_   )ÚstatsrY   ÚsumÚ
cache_hitsÚvaluesÚcache_misses)rZ   r[   ÚhitsÚmissesÚsts        r/   Ú
check_hitsz&DispatcherCacheUsecasesTest.check_hits:  sˆ   € ØŒZˆØ×Ò�˜Rœ]×1Ò1Ñ3Ô3Ñ4Ô4°d¸B¼MÑJÔJÐJØÐØ×Ò�S ¤×!7Ò!7Ñ!9Ô!9Ñ:Ô:¸FØœ_ñ.ô .ð .ð .ð .ð Ðr6   r_   )rl   r|   r}   r"   r#   Údirnamerª   Úherer$   r“   r�   rä   rî   rG   r6   r/   rÈ   rÈ     sr   € € € € € ØŒ7�?Š?˜8Ñ$Ô$€DØ”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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 pej        d         dk     d¦  «        d„ ¦   «         ZdS )Ú	TestCachec                 ó   — |                       d¦  «         |                      ¦   «         }|                       d¦  «         |j        }|                       |dd¦  «        d¦  «         |                       d¦  «         |                       |dd¦  «        d¦  «         |                       d¦  «         |                      |dd¦  «         |j        }|                       |dd¦  «        d¦  «         |                       d¦  «         |                       |dd¦  «        d¦  «         |                       d¦  «         |                      |dd¦  «         |j        } ||j        d¦  «        }|                      t          |¦  «        d	¦  «          ||j	        d¦  «        }|                      t          |¦  «        d	¦  «         |                       d
¦  «         |                      |dd¦  «         |  
                    ¦   «          d S )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_cachingD  sð  € Ø×Ò˜1ÑÔÐØ× Ò Ñ"Ô"ˆØ×Ò˜1ÑÔÐàŒOˆØ×Ò   ! Q¡¤¨Ñ+Ô+Ð+Ø×Ò˜1ÑÔÐØ×Ò   # q¡	¤	¨3Ñ/Ô/Ð/Ø×Ò˜1ÑÔÐØ�Š˜˜1˜aÑ Ô Ð àÔ#ˆØ×Ò   ! Q¡¤¨Ñ+Ô+Ð+Ø×Ò˜1ÑÔÐØ×Ò   # q¡	¤	¨3Ñ/Ô/Ð/Ø×Ò˜1ÑÔÐØ�Š˜˜1˜aÑ Ô Ð àÔˆØˆa�” Ñ#Ô#ˆØ×Ò¥ c¡
¤
¨IÑ6Ô6Ð6Øˆa�” Ñ"Ô"ˆØ×Ò¥ c¡
¤
¨IÑ6Ô6Ð6Ø×Ò˜1ÑÔÐØ�Š˜˜1˜aÑ Ô Ð ð 	×$Ò$Ñ&Ô&Ð&Ð&Ð&r6   c                 óæ  — |                       d¦  «         |                      ¦   «         }|                       d¦  «         |j        }|                       |dd¦  «        d¦  «         |                       d¦  «         |                       |dt	          j        d¦  «        ¦  «        dt	          j        d¦  «        z   dz   ¦  «         |                       d¦  «         |                      |dd¦  «         d S )Nr   rD   rO   rô   rC   )rÃ   r¯   rù   rú   ÚnpÚarangerî   ©rZ   r®   r.   s      r/   Útest_caching_nrt_prunedz!TestCache.test_caching_nrt_prunedb  sâ   € Ø×Ò˜1ÑÔÐØ× Ò Ñ"Ô"ˆØ×Ò˜1ÑÔÐàŒOˆØ×Ò   ! Q¡¤¨Ñ+Ô+Ð+Ø×Ò˜1ÑÔÐà×Ò   !¥R¤Y¨q¡\¤\Ñ 2Ô 2°A½¼	À!¹¼Ñ4DÀqÑ4HÑIÔIÐIØ×Ò˜1ÑÔÐØ�Š˜˜1˜aÑ Ô Ð Ð Ð r6   c                 ó¦  — |                       ¦   «         }|                      |                     dd¦  «        d¦  «         |                      d¦  «         |j        }|                       |dd¦  «        d¦  «         |                      d¦  «         |                       ¦   «         }|j        }|                       |dd¦  «        d¦  «         |                      d¦  «         |j        }|                       |dd¦  «        d¦  «         |                      d¦  «         |                       |dd¦  «        d¦  «         |                      d¦  «         d S )NrO   rD   rô   é   ç      @rõ   )r¯   rú   ÚinnerrÃ   Úouter_uncachedÚouterr  s      r/   Útest_inner_then_outerzTestCache.test_inner_then_outero  sG  € à× Ò Ñ"Ô"ˆØ×Ò §	¢	¨!¨Q¡¤°Ñ3Ô3Ð3Ø×Ò˜1ÑÔÐàÔˆØ×Ò   ! Q¡¤¨Ñ+Ô+Ð+Ø×Ò˜1ÑÔÐØ× Ò Ñ"Ô"ˆØÔˆØ×Ò   ! Q¡¤¨Ñ+Ô+Ð+Ø×Ò˜1ÑÔÐàŒIˆØ×Ò   ! Q¡¤¨Ñ+Ô+Ð+Ø×Ò˜1ÑÔÐØ×Ò   # q¡	¤	¨3Ñ/Ô/Ð/Ø×Ò˜1ÑÔÐÐÐr6   c                 ó4  — |                       ¦   «         }|                      |                     dd¦  «        d¦  «         |                      d¦  «         |                      |                     dd¦  «        d¦  «         |                      d¦  «         |                       ¦   «         }|j        }|                       |dd¦  «        d¦  «         |                      d¦  «         |                       |dd¦  «        d¦  «         |                      d¦  «         d S )NrO   rD   r  rô   r	  rö   r÷   )r¯   rú   r  rÃ   r  r
  r  s      r/   Útest_outer_then_innerzTestCache.test_outer_then_innerƒ  s	  € à× Ò Ñ"Ô"ˆØ×Ò §	¢	¨!¨Q¡¤°Ñ3Ô3Ð3Ø×Ò˜1ÑÔÐØ×Ò × 2Ò 2°1°aÑ 8Ô 8¸!Ñ<Ô<Ð<Ø×Ò˜1ÑÔÐØ× Ò Ñ"Ô"ˆØŒIˆØ×Ò   ! Q¡¤¨Ñ+Ô+Ð+Ø×Ò˜1ÑÔÐØ×Ò   # q¡	¤	¨3Ñ/Ô/Ð/Ø×Ò˜1ÑÔÐÐÐr6   c                 ó¦   — |                       ¦   «         }|j        }|                       |dd¦  «        d¦  «         |                      d¦  «         d S )NrD   rO   rô   r   )r¯   Úadd_nocache_usecaserú   rÃ   r  s      r/   Útest_no_cachingzTestCache.test_no_caching‘  sU   € Ø× Ò Ñ"Ô"ˆàÔ#ˆØ×Ò   ! Q¡¤¨Ñ+Ô+Ð+Ø×Ò˜1ÑÔÐÐÐr6   c                 óÔ  — |                       ¦   «         }t          j        d¬¦  «        5 }t          j        dt          ¦  «         |j        }|                       |d¦  «        d¦  «         |                      d¦  «         d d d ¦  «         n# 1 swxY w Y   |                      t          |¦  «        d¦  «         |  
                    dt          |d         j        ¦  «        ¦  «         d S )	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Ñ1Ô1ð 	"°QÝÔ! (­LÑ9Ô9Ð9à”ˆAØ×#Ò# A A a¡D¤D¨!Ñ,Ô,Ð,Ø×Ò˜qÑ!Ô!Ð!ð	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"øøøð 	"ð 	"ð 	"ð 	"ð 	×Ò�˜Q™œ Ñ#Ô#Ð#Ø�Šð /Ý03°A°a´D´LÑ0AÔ0Añ	Cô 	Cð 	Cð 	Cð 	Cs   ªABÂBÂBc                 óð  — |                       ¦   «         }t          j        d¬¦  «        5 }t          j        dt          ¦  «         |j        }t          j                              |¦   «         |j	        ¦  «         |  
                    d¦  «         d d d ¦  «         n# 1 swxY w Y   |                      t          |¦  «        d¦  «         |                      dt          |d         j        ¦  «        ¦  «         d S )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Ñ1Ô1ð 	"°QÝÔ! (­LÑ9Ô9Ð9àÔ!ˆAÝŒJ×#Ò# A A¡C¤C¨¬Ñ4Ô4Ð4Ø×Ò˜qÑ!Ô!Ð!ð	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"øøøð 	"ð 	"ð 	"ð 	"ð 	×Ò�˜Q™œ Ñ#Ô#Ð#Ø�Šð 3Ý47¸¸!¼¼Ñ4EÔ4Eñ	Gô 	Gð 	Gð 	Gð 	Gs   ªA$BÂBÂ!Bc                 ó$  — |                       ¦   «         }|j        |j        |j        fD ]æ}t	          j        d¬¦  «        5 }t	          j        dt          ¦  «         |                       |d¦  «        d¦  «         |  	                    d¦  «         d d d ¦  «         n# 1 swxY w Y   |  
                    t          |¦  «        d¦  «         |                      d                     |j        ¦  «        t          |d         j        ¦  «        ¦  «         Œçd S )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µ  sE  € ð × Ò Ñ"Ô"ˆà”- Ô!4°cÔ6IÐJð 	ð 	ˆAÝÔ(°Ð5Ñ5Ô5ð &¸ÝÔ% hµÑ=Ô=Ð=à×'Ò'¨¨¨#©¬°Ñ4Ô4Ð4Ø×"Ò" 1Ñ%Ô%Ð%ð	&ð &ð &ñ &ô &ð &ð &ð &ð &ð &ð &øøøð &ð &ð &ð &ð ×Ò�S ™VœV QÑ'Ô'Ð'Ø�MŠMØ5×<Ò<¸Q¼ZÑHÔHÝ�A�a”D”LÑ!Ô!ñô ð ð ð	ð 	s   Á ABÂB	Â"B	c                 ó  — |                       ¦   «         }t          j        ¦   «         5  t          j        dt          ¦  «         |j        }|                       |d¦  «        d¦  «         |j        }|                       |d¦  «        d¦  «         |j        }|                       |d¦  «        d¦  «         |j	        }|                       |d¦  «        d¦  «         |  
                    d¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NÚerrorrO   rô   é   é
   é   r÷   )r¯   r  r  r  r   Úclosure1rú   Úclosure2Úclosure3Úclosure4rÃ   r  s      r/   Útest_closurezTestCache.test_closureÇ  sA  € Ø× Ò Ñ"Ô"ˆåÔ$Ñ&Ô&ð 	"ð 	"ÝÔ! '­<Ñ8Ô8Ð8à”ˆAØ×#Ò# A A a¡D¤D¨!Ñ,Ô,Ð,Ø”ˆAØ×#Ò# A A a¡D¤D¨!Ñ,Ô,Ð,Ø”ˆAØ×#Ò# A A a¡D¤D¨"Ñ-Ô-Ð-Ø”ˆAØ×#Ò# A A a¡D¤D¨"Ñ-Ô-Ð-Ø×Ò˜qÑ!Ô!Ð!ð	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"øøøð 	"ð 	"ð 	"ð 	"ð 	"ð 	"s   ¨CC=Ã=DÄDc                 óŽ  — |                       ¦   «         }|j        }|                       ||j        d¦  «        d¦  «         |                       ||j        d¦  «        d¦  «         |                       ||j        d¦  «        d¦  «         |                       ||j        d¦  «        d¦  «         |                      d¦  «         d S )NrC   r0  é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¸Ñ;Ô;¸QÑ?Ô?Ð?Ø×Ò˜˜˜3Ô7¸Ñ<Ô<¸cÑBÔBÐBØ×Ò˜˜˜3Ô7¸Ñ;Ô;¸QÑ?Ô?Ð?Ø×Ò˜˜˜3Ô7¸Ñ<Ô<¸bÑAÔAÐAð 	×Ò˜1ÑÔÐÐÐr6   c                 óà  — |                       ¦   «         }|                     dd¦  «         |                     dd¦  «         |                     dd¦  «         |                     dd¦  «         |                     dd¦  «         |                     |j        d¦  «         |                     |j        d¦  «         |                      ¦   «         }|  	                    |j        dd¦  «         |                       ¦   «         }|  
                    ||¦  «         |j        } |dd¦  «         |  	                    |dd¦  «          |dd¦  «         |  	                    |dd¦  «         |j        } |dd¦  «         |  	                    |dd¦  «         |                      |                      ¦   «         |¦  «         |                      ¦   «          |                      |                      ¦   «         |¦  «         d S )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â  sÕ  € Ø× Ò Ñ"Ô"ˆØ�Š˜˜1ÑÔÐØ�Š˜˜SÑ!Ô!Ð!Ø×Ò  1Ñ%Ô%Ð%Ø×Ò˜1˜aÑ Ô Ð Ø�	Š	�!�Q‰ŒˆØ×Ò˜#œ.¨!Ñ,Ô,Ð,Ø×Ò˜#œ/¨1Ñ-Ô-Ð-Ø×&Ò&Ñ(Ô(ˆà�Š˜œ¨¨AÑ.Ô.Ð.à×!Ò!Ñ#Ô#ˆØ×Ò˜˜dÑ#Ô#Ð#ØÔˆØ	ˆˆ!ˆQ‰ŒˆØ�Š˜˜1˜aÑ Ô Ð Ø	ˆˆ#ˆs‰ŒˆØ�Š˜˜1˜aÑ Ô Ð ØÔ$ˆØ	ˆˆ!ˆQ‰ŒˆØ�Š˜˜1˜aÑ Ô Ð ð 	×Ò˜×.Ò.Ñ0Ô0°&Ñ9Ô9Ð9à×$Ò$Ñ&Ô&Ð&Ø×Ò˜×.Ò.Ñ0Ô0°&Ñ9Ô9Ð9Ð9Ð9r6   c                 óÄ  — |                       ¦   «         }|j        }|                       |dd¦  «        d¦  «         t          | j        d¦  «        5 }|                     d¦  «         d d d ¦  «         n# 1 swxY w Y   |                       ¦   «         }|j        }|                       |dd¦  «        d¦  «         |j        }|                       |dd¦  «        d¦  «         d S )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ˆØ×Ò   ! Q¡¤¨Ñ+Ô+Ð+õ �$”, Ñ$Ô$ð 	"¨Ø�GŠG�LÑ!Ô!Ð!ð	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"øøøð 	"ð 	"ð 	"ð 	"ð × Ò Ñ"Ô"ˆØŒOˆØ×Ò   ! Q¡¤¨Ñ,Ô,Ð,ØÔ#ˆØ×Ò   ! Q¡¤¨Ñ,Ô,Ð,Ð,Ð,s   ÁA3Á3A7Á:A7c                 óÞ  — |                       ¦   «         }|j        }|                       |dd¦  «        d¦  «         |                       ¦   «         }|j        }d|_        |                       |dd¦  «        d¦  «         |                     ¦   «          |                       |dd¦  «        d¦  «         |                       ¦   «         }|j        }|                       |dd¦  «        d¦  «         d S )NrD   rO   rô   r0  rE  )r¯   rù   rú   ÚZÚ	recompiler  s      r/   Útest_recompilezTestCache.test_recompile  sæ   € à× Ò Ñ"Ô"ˆØŒOˆØ×Ò   ! Q¡¤¨Ñ+Ô+Ð+à× Ò Ñ"Ô"ˆØŒOˆØˆŒØ×Ò   ! Q¡¤¨Ñ+Ô+Ð+Ø	�Š‰ŒˆØ×Ò   ! Q¡¤¨Ñ,Ô,Ð,ð × Ò Ñ"Ô"ˆØŒOˆØ×Ò   ! Q¡¤¨Ñ,Ô,Ð,Ð,Ð,r6   c                 óÆ   — |                       ¦   «         }|j        }|                       |d¦  «        d¦  «         |j        }|                       |d¦  «        d¦  «         d S )NrD   r  r/  )r¯   Úrenamed_function1rú   Úrenamed_function2r  s      r/   Útest_same_nameszTestCache.test_same_names!  se   € à× Ò Ñ"Ô"ˆØÔ!ˆØ×Ò   !¡¤ aÑ(Ô(Ð(ØÔ!ˆØ×Ò   !¡¤ aÑ(Ô(Ð(Ð(Ð(r6   c                 óˆ  — ddl m} |j        }t          ddd¦  «        }	 ||_        t	          j        |¦  «        }t          j        ||¦  «        }|                      |¦  «         dt          _
        t          j        ||¦  «        }|                      |t          ¦  «         ||_        t          `
d S # ||_        t          `
w xY w)NrC   ©ÚfunctionÚpassztests/dummy_module.pyÚexecT)Údummy_modulerQ  Ú__code__ÚcompileÚinspectÚgetfiler   Úfrom_functionÚassertIsNonerŽ   ÚfrozenÚassertIsInstance)rZ   rQ  Úold_codeÚcode_objÚsourceÚlocators         r/   Útest_frozenzTestCache.test_frozen)  sÏ   € Ø*Ð*Ð*Ð*Ð*Ð*ØÔ$ˆÝ˜6Ð#:¸FÑCÔCˆð	Ø (ˆHÔå”_ XÑ.Ô.ˆFõ +Ô8¸À6ÑJÔJˆGØ×Ò˜gÑ&Ô&Ð&à�CŒJõ +Ô8¸À6ÑJÔJˆGØ×!Ò! 'Õ+?Ñ@Ô@Ð@ð !)ˆHÔÝ�
�
�
øð !)ˆHÔÝ�
ˆNˆNˆNˆNs    BB1 Â1Cc                 óÐ  — |                       ¦   «         }|j        }|                      t          j        |j        j        d¬¦  «         |                       |dd¦  «        d¦  «         |                      |dd¦  «         |                       ¦   «         }|j        }|                       |dd¦  «        d¦  «         |                      |dd¦  «         |  	                    d¦  «         dS )	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.   rB  s       r/   Ú_test_pycache_fallbackz TestCache._test_pycache_fallback@  sà   € ð
 × Ò Ñ"Ô"ˆØŒOˆð 	�Š�œ q¤wÔ'9ÈˆÑNÔNÐNà×Ò   ! Q¡¤¨Ñ+Ô+Ð+à�Š˜˜1˜aÑ Ô Ð ð ×!Ò!Ñ#Ô#ˆØÔˆØ×Ò   ! Q¡¤¨Ñ+Ô+Ð+Ø�Š˜˜1˜aÑ Ô Ð ð 	×Ò˜1ÑÔÐÐÐr6   c                 óÊ  ‡ — ˆ fd„}‰                       ¦   «         }|                     dd¦  «          |¦   «         }‰                      |d¦  «         t          j        d¦  «         t          j        ‰ j        d ¦  «         t          j	        ‰ j
        ¦  «         ‰                       ¦   «         }|                     dd¦  «          |¦   «         }‰                      ||d¦  «         d S )Nc                  óD   •— ˆ fd„‰                       ¦   «         D ¦   «         S )Nc                 ó  •— i | ]�}|                      d ¦  «        ¯|t          j        t          t          j                             ‰j        |¦  «        d¦  «                             ¦   «         ¦  «         	                    ¦   «         “Œ‚S )z.nbiÚrb)
r²   ÚhashlibÚmd5r&   r"   r#   r$   ru   ÚreadÚ	hexdigestr»   s     €r/   ú
<dictcomp>zSTestCache.test_nbi_reproducible_after_touch.<locals>.nbi_hashes.<locals>.<dictcomp>[  s   ø€ ð ð ð ð Ø—;’;˜vÑ&Ô&ðØ•G”KÝ�œŸš d¤n°bÑ9Ô9¸4Ñ@Ô@×EÒEÑGÔGñô ç’)‘+”+ðð ð r6   )r·   r`   s   €r/   Ú
nbi_hashesz?TestCache.test_nbi_reproducible_after_touch.<locals>.nbi_hashesZ  s<   ø€ ðð ð ð ð ×-Ò-Ñ/Ô/ð	ñ ô ð r6   rD   rO   z%No .nbi files found after compilationrC   uj   .nbi file differs after touch with unchanged content â€” source stamp embeds mtime instead of content hash)r¯   rù   Ú
assertTrueÚtimeÚsleepr"   Úutimer‘   r)   r*   ru   rY   )rZ   rp  r®   Úh1Úh2s   `    r/   Ú!test_nbi_reproducible_after_touchz+TestCache.test_nbi_reproducible_after_touchY  s÷   ø€ ð	ð 	ð 	ð 	ð 	ð × Ò Ñ"Ô"ˆØ�Š˜˜1ÑÔÐØˆZ‰\Œ\ˆØ�Š˜ÐCÑDÔDÐDõ 	Œ
�1‰ŒˆÝ
Œ�”˜tÑ$Ô$Ð$ÝŒ�d”nÑ%Ô%Ð%ð × Ò Ñ"Ô"ˆØ�Š˜˜1ÑÔÐØˆZ‰\Œ\ˆà×ÒØ�ð@ñ	
ô 	
ð 	
ð 	
ð 	
r6   Úntz3cannot easily make a directory read-only on Windowsc                 óê   — t          j        | j        ¦  «        j        }t          j        | j        d¦  «         |                      t           j        | j        |¦  «         |                      ¦   «          d S )Nr   )r"   r”   r,   Úst_moder(   rd  rf  )rZ   Ú	old_permss     r/   Útest_non_creatable_pycachez$TestCache.test_non_creatable_pycachey  s^   € õ
 ”G˜DœLÑ)Ô)Ô1ˆ	Ý
Œ�”˜uÑ%Ô%Ð%Ø�Š�œ $¤,°	Ñ:Ô:Ð:à×#Ò#Ñ%Ô%Ð%Ð%Ð%r6   c                 ó>  — t           j                             | j        d¦  «        }t          j        |¦  «         t          j        |¦  «        j        }t          j        |d¦  «         |                      t           j        ||¦  «         |  	                    ¦   «          d S )Nr�   r   )
r"   r#   r$   r,   r%   r”   rz  r(   rd  rf  )rZ   Úpycacher{  s      r/   Útest_non_writable_pycachez#TestCache.test_non_writable_pycache„  s   € õ
 ”'—,’,˜tœ|¨]Ñ;Ô;ˆÝ
Œ�ÑÔÐÝ”G˜GÑ$Ô$Ô,ˆ	Ý
Œ�˜%Ñ Ô Ð Ø�Š�œ '¨9Ñ5Ô5Ð5à×#Ò#Ñ%Ô%Ð%Ð%Ð%r6   c                 ót  ‡ ‡‡— t           j        ddgŠ‰g d¢z  Š	 t          j        ‰dgz   ¦  «        }n9# t          j        $ r'}‰                      d|j        z  ¦  «         Y d }~nd }~ww xY w|                     ¦   «                              ¦   «         }t          j
                             ‰ j        d¦  «        Št          ‰d¦  «        5 }|                     d¦  «         d d d ¦  «         n# 1 swxY w Y   ˆˆˆ fd	„} |¦   «           |¦   «         }‰                      d
|                     ¦   «         ¦  «         d S )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        dk    r ‰                     d|j        ||fz  ¦  «         |cd d d ¦  «         S # 1 swxY w Y   d S ©Nrj  T)ÚstdinrÐ   rÑ   Úuniversal_newlinesé*   z6unexpected return code %d
-- stdout:
%s
-- stderr:
%s
©r&   r×   rØ   rÚ   rÛ   rÜ   rt   ©r‰  Úprâ   rã   Úbase_cmdÚinputfnrZ   s       €€€r/   Úexecute_with_inputz2TestCache.test_ipython.<locals>.execute_with_input²  óï   ø€ å�g˜tÑ$Ô$ð ¨ÝÔ$ X°UÝ,6¬OÝ,6¬OØ8<ð>ñ >ô >�ð Ÿ=š=™?œ?‘��SØ”< 2Ò%Ð%Ø—I’Ið 1ð "#¤¨s°CÐ 8ñ9ñ :ô :ð :ð ðð ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð ð ó   ’A1BÂBÂBúcache hits = 1)rŽ   rÙ   r×   Úcheck_outputÚCalledProcessErrorÚskipTestrÜ   ÚstriprÞ   r"   r#   r$   r,   r&   r'   r  )rZ   ÚverÚer.   r‘  rã   r�  r�  s   `     @@r/   Útest_ipythonzTestCache.test_ipython‘  sµ  øøø€ å”N D¨)Ð4ˆØÐMÐMÐMÑMˆð	*ÝÔ)¨(°k°]Ñ*BÑCÔCˆCˆCøÝÔ,ð 	*ð 	*ð 	*Ø�MŠMÐAØœLñ)ñ *ô *ð *ð *ð *ð *ð *ð *øøøøð	*øøøð �iŠi‰kŒk× Ò Ñ"Ô"ˆå”'—,’,˜tœ|Ð-HÑIÔIˆÝ�'˜3ÑÔð 	 1Ø�GŠGð ñ ô ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð*	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ÐÑÔÐà Ð Ñ"Ô"ˆØ�ŠÐ&¨¯	ª	©¬Ñ4Ô4Ð4Ð4Ð4s'   ›4 ´A*ÁA%Á%A*ÃC*Ã*C.Ã1C.Nr   rô   zrequires ipykernel >= 6c                 ó^  ‡ ‡‡— t           j        ddgŠ‰g d¢z  Š	 t          j        ‰dgz   ¦  «        }n9# t          j        $ r'}‰                      d|j        z  ¦  «         Y d }~nd }~ww xY w|                     ¦   «                              ¦   «         }ddl	m
} |                     ¦   «         Št          ‰d¦  «        5 }|                     d	¦  «         d d d ¦  «         n# 1 swxY w Y   ˆˆˆ fd
„} |¦   «           |¦   «         }‰                      d|                     ¦   «         ¦  «         d S )Nr�  r‚  rƒ  r„  r…  r   )Úcompilerr  r†  c                  ó:  •— t          ‰d¦  «        5 } t          j        ‰| t          j        t          j        d¬¦  «        }|                     ¦   «         \  }}|j        dk    r ‰                     d|j        ||fz  ¦  «         |cd d d ¦  «         S # 1 swxY w Y   d S rˆ  rŒ  r�  s       €€€r/   r‘  z4TestCache.test_ipykernel.<locals>.execute_with_inputë  r’  r“  r”  )rŽ   rÙ   r×   r•  r–  r—  rÜ   r˜  rÞ   Ú	ipykernelr�  Úget_tmp_directoryr&   r'   r  )	rZ   r™  rš  r�  r.   r‘  rã   r�  r�  s	   `      @@r/   Útest_ipykernelzTestCache.test_ipykernelÆ  sÂ  øøø€ õ
 ”N D¨)Ð4ˆØÐMÐMÐMÑMˆð	*ÝÔ)¨(°k°]Ñ*BÑCÔCˆCˆCøÝÔ,ð 	*ð 	*ð 	*Ø�MŠMÐAØœLñ)ñ *ô *ð *ð *ð *ð *ð *ð *øøøøð	*øøøð �iŠi‰kŒk× Ò Ñ"Ô"ˆà&Ð&Ð&Ð&Ð&Ð&Ø×,Ò,Ñ.Ô.ˆÝ�'˜3ÑÔð 	 1Ø�GŠGð ñ ô ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð*	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ÐÑÔÐà Ð Ñ"Ô"ˆØ�ŠÐ&¨¯	ª	©¬Ñ4Ô4Ð4Ð4Ð4s'   ›4 ´A*ÁA%Á%A*Â=CÃC#Ã&C#)rl   r|   r}   r  r  r  r  r  r   r&  r,  r6  r>  rC  rF  rJ  rN  ra  rf  rw  Úskip_bad_accessÚunittestÚskipIfr"   Únamer|  r  r›  rŸ  Úversion_infor¡  rG   r6   r/   rò   rò   B  sü  € € € € € ð'ð 'ð 'ð<!ð !ð !ðð ð ð(ð ð ðð ð ðCð Cð CðGð Gð Gðð ð ð$"ð "ð "ð 	ð 	ð 	ð:ð :ð :ð<-ð -ð -ð-ð -ð -ð$)ð )ð )ðð ð ð.ð ð ð2
ð 
ð 
ð@ Ø€X„_�R”W ’_ØJñLô Lð&ð &ñLô Lñ „_ð&ð Ø€X„_�R”W ’_ØJñLô Lð&ð &ñLô Lñ „_ð&ð35ð 35ð 35ðj €X„_�i 4Ð'ÐK¨YÔ-CÀAÔ-FÈÒ-JØ.ñ0ô 0ð55ð 55ñ0ô 0ð55ð 55ð 55r6   rò   c                   ó*   ‡ — e Zd Zˆ fd„Zd„ Zd„ Zˆ xZS )ÚTestCacheZipc                 ór  •— t          ¦   «                              ¦   «          d}d}d}t          j                             | j        |¦  «        }t          j        |d¦  «        5 }|                     ||¦  «         d d d ¦  «         n# 1 swxY w Y   t          j         
                    d|¦  «         d| _        d S )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—<’< ¤¨lÑ;Ô;ˆÝŒ_˜X sÑ+Ô+ð 	3¨rØ�KŠK˜ kÑ2Ô2Ð2ð	3ð 	3ð 	3ñ 	3ô 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3øøøð 	3ð 	3ð 	3ð 	3õ 	Œ�Š˜˜8Ñ$Ô$Ð$Ø$ˆŒˆˆs   Á"BÂB	ÂB	c                 ó„   — t           j                             d¦  «         t           j                             dd ¦  «         d S )Nr   rª  )rŽ   r#   r›   rš   r`   s    r/   r�   zTestCacheZip.tearDown  s/   € åŒ�Š�Q‰ŒˆåŒ�Š˜ tÑ,Ô,Ð,Ð,Ð,r6   c                 óª  — dd l }|                     dd¦  «        }|                      |d¦  «         |                      |j        dd¦  «         |                      |j        d¦  «         t          j        d= t          j        ¦   «          dd l }|                     dd¦  «        }|                      |d¦  «         |                      |j        d¦  «         d S )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˜Ð&ÝÔ#Ñ%Ô%Ð%ØÐÐÐð —/’/ ! QÑ'Ô'ˆØ×Ò˜ !Ñ$Ô$Ð$ð 	�Š˜œ¨Ñ+Ô+Ð+Ð+Ð+r6   )rl   r|   r}   r˜   r�   r»  Ú__classcell__©rk   s   @r/   r¨  r¨     sV   ø€ € € € € ð%ð %ð %ð %ð %ð.-ð -ð -ð,ð ,ð ,ð ,ð ,ð ,ð ,r6   r¨  c                   ó   — e Zd ZdZd„ Zd„ ZdS )ÚTestCacheZipLibzR
    ZipCache tests that don't require the setup/teardown from `TestCacheZip`
    c                 ó  — d„ }d}t          j        ||¦  «        }|                      |¦  «         |                      |j        t          t          d¦  «        ¦  «        ¦  «         |                      |j        d¦  «         d S )Nc                  ó   — d S r_   rG   rG   r6   r/   Ú	mock_funcz<TestCacheZipLib.test_zip_locator_creation.<locals>.mock_funcA  ó   € ØˆDr6   z/path/to/archive.zip/module.pyz/path/to/archive.zipz	module.py)r   rY  ÚassertIsNotNonerY   Ú	_zip_pathr  r   Ú_internal_path)rZ   rÂ  r²  r`  s       r/   Útest_zip_locator_creationz)TestCacheZipLib.test_zip_locator_creation?  s‡   € ð	ð 	ð 	ð 4ˆå!Ô/°	¸8ÑDÔDˆØ×Ò˜WÑ%Ô%Ð%Ø×Ò˜Ô*­CµÐ5KÑ0LÔ0LÑ,MÔ,MÑNÔNÐNØ×Ò˜Ô/°Ñ=Ô=Ð=Ð=Ð=r6   c                 ód   — d„ }d}t          j        ||¦  «        }|                      |¦  «         d S )Nc                  ó   — d S r_   rG   rG   r6   r/   rÂ  z@TestCacheZipLib.test_zip_locator_non_zip_path.<locals>.mock_funcM  rÃ  r6   z/path/to/module.py)r   rY  rZ  )rZ   rÂ  Únon_zip_pathr`  s       r/   Útest_zip_locator_non_zip_pathz-TestCacheZipLib.test_zip_locator_non_zip_pathK  sD   € ð	ð 	ð 	ð ,ˆå!Ô/°	¸<ÑHÔ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                 ón   •— t          t          | ¦  «                             ¦   «          dt          _        d S )NT)r«  rÎ  r˜   r   Úsequential_parfor_lowering©rZ   rk   s    €r/   r˜   z TestSequentialParForsCache.setUpX  s.   ø€ ÝÕ(¨$Ñ/Ô/×5Ò5Ñ7Ô7Ð7à,0�Ô)Ð)Ð)r6   c                 ón   •— t          t          | ¦  «                             ¦   «          dt          _        d S )NF)r«  rÎ  r�   r   rÐ  rÑ  s    €r/   r�   z#TestSequentialParForsCache.tearDown]  s.   ø€ ÝÕ(¨$Ñ/Ô/×8Ò8Ñ:Ô:Ð:à,1�Ô)Ð)Ð)r6   c                 óv  — |                       ¦   «         }|                      d¦  «         |j        }t          j        d¦  «        }|                       ||¦  «        ||z  |z   ¦  «         d„ |j                             ¦   «         D ¦   «         }|                      |dg¦  «         |                      d¦  «         d S )Nr   r0  c                 ó&   — g | ]}|j         j        ‘ŒS rG   )ÚlibraryÚhas_dynamic_globals)r³   Úcress     r/   rµ   z;TestSequentialParForsCache.test_caching.<locals>.<listcomp>h  s-   € ð =ð =ð =Ø#ð  œ<Ô;ð =ð =ð =r6   FrD   )	r¯   rÃ   Úparfor_usecaser  Úonesrú   Ú	overloadsré   rY   )rZ   r®   r.   ÚaryÚdynamic_globalss        r/   r  z'TestSequentialParForsCache.test_cachingb  sÀ   € Ø× Ò Ñ"Ô"ˆØ×Ò˜1ÑÔÐØÔˆÝŒg�b‰kŒkˆØ×Ò   #¡¤¨¨c©	°C©Ñ8Ô8Ð8ð=ð =Ø'(¤{×'9Ò'9Ñ';Ô';ð=ñ =ô =ˆà×Ò˜¨5¨'Ñ2Ô2Ð2Ø×Ò˜1ÑÔÐÐÐr6   )rl   r|   r}   r˜   r�   r  r¼  r½  s   @r/   rÎ  rÎ  V  s`   ø€ € € € € ð1ð 1ð 1ð 1ð 1ð
2ð 2ð 2ð 2ð 2ð
	ð 	ð 	ð 	ð 	ð 	ð 	r6   rÎ  c                   ót   — e Zd ZdZd„ Z ej         ej        ¦   «         dk    d¦  «        d„ ¦   «         Z	d„ Z
dS )ÚTestCacheWithCpuSettingFc                 óÜ   — d}|                       ¦   «                              ¦   «         D ]*\  }}||v r!|                      |||         ¦  «         |dz  }Œ+|                      |dd¬¦  «         d S )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_mtimesr  sŽ   € ØˆØ×)Ò)Ñ+Ô+×1Ò1Ñ3Ô3ð 	!ð 	!‰DˆAˆqØ�JˆˆØ×'Ò'¨¨:°a¬=Ñ9Ô9Ð9Ø˜qÑ �øØ×Ò˜;¨Ø3ð 	ñ 	5ô 	5ð 	5ð 	5ð 	5r6   ÚgenericzLLVM detected 'generic' CPUc                 ó  — |                       d¦  «         |                      t          j        ¦   «         ddœ¬¦  «         |                      ¦   «         }t          |                      ¦   «         ¦  «        }|                      dddœ¬¦  «         |                      |¦  «         |                      t          |                      ¦   «         ¦  «        |¦  «         |  	                    ¦   «         }|j
        j        }|j        }|                     ¦   «         }|                      t          |¦  «        d¦  «         |                     ¦   «         \  }}|d         d         dk    r||}
}	n||}	}
|                      |
d         d         t          j        ¦   «         ¦  «         |                      |
d         d         d¦  «         |                      |	d         d         d¦  «         |                      |	d         d         d¦  «         d S )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   rA  Ú
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_name{  s   € ð 	×Ò˜1ÑÔÐð 	×$Ò$Ý')Ô';Ñ'=Ô'=Ø+-ð/ð /ð 	%ñ 	
ô 	
ð 	
ð ×&Ò&Ñ(Ô(ˆÝ˜×,Ò,Ñ.Ô.Ñ/Ô/ˆ
ð 	×$Ò$Ø'Ø"$ð.
ð .
Ð$ñ 	ô 	ð 	ð
 	×Ò Ñ'Ô'Ð'Ø×Ò�3˜t×2Ò2Ñ4Ô4Ñ5Ô5°zÑBÔBÐBà× Ò Ñ"Ô"ˆØ”Ô&ˆØÔ&ˆ
Ø ×,Ò,Ñ.Ô.ˆØ×Ò�˜[Ñ)Ô)¨1Ñ-Ô-Ð-Ø$×)Ò)Ñ+Ô+‰ˆ�Ø�Œ8�AŒ;˜)Ò#Ð#Ø$)¨5˜ˆKˆKà$)¨5�kˆHØ×Ò˜ !œ Qœ­Ô)=Ñ)?Ô)?Ñ@Ô@Ð@Ø×Ò˜ !œ Qœ¨Ñ,Ô,Ð,Ø×Ò˜ Qœ¨Ô*¨IÑ6Ô6Ð6Ø×Ò˜ Qœ¨Ô*¨BÑ/Ô/Ð/Ð/Ð/r6   c                 ó˜  — |                       d¦  «         t          j                             ¦   «         }t          j        ¦   «         }|                      d|i¬¦  «         t          |                      ¦   «         ¦  «        }|                      ¦   «         }d}|  	                    ||¦  «         |                      d|i¬¦  «         |  
                    |¦  «         |                      t          |                      ¦   «         ¦  «        |¦  «         |                      ¦   «         }|j        j        }|j        }|                     ¦   «         }	|                      t          |	¦  «        d¦  «         |	                     ¦   «         \  }
}|
d         d         |k    r|
|}}n|
|}}|                      |d         d         |                     ¦   «         ¦  «         |                      |d         d         |¦  «         |                      |d         d         |                     ¦   «         ¦  «         |                      |d         d         |¦  «         d S )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ô  rA  Úmy_cpu_featuresr®   r:   rõ  rö  r÷  rø  Úkey_modifiedrú  s                 r/   Útest_user_set_cpu_featuresz2TestCacheWithCpuSetting.test_user_set_cpu_features   s1  € Ø×Ò˜1ÑÔÐå Ô/×7Ò7Ñ9Ô9ˆå!Ô7Ñ9Ô9ˆð 	×$Ò$Ø)¨?Ð;ð 	%ñ 	
ô 	
ð 	
õ ˜×,Ò,Ñ.Ô.Ñ/Ô/ˆ
à×&Ò&Ñ(Ô(ˆà%ˆà×Ò˜O¨_Ñ=Ô=Ð=Ø×$Ò$Ø)¨?Ð;ð 	%ñ 	
ô 	
ð 	
ð 	×Ò Ñ'Ô'Ð'Ø×Ò�3˜t×2Ò2Ñ4Ô4Ñ5Ô5°zÑBÔBÐBà× Ò Ñ"Ô"ˆØ”Ô&ˆØÔ&ˆ
Ø ×,Ò,Ñ.Ô.ˆØ×Ò�˜[Ñ)Ô)¨1Ñ-Ô-Ð-Ø$×)Ò)Ñ+Ô+‰ˆ�à�Œ8�AŒ;˜/Ò)Ð)Ø%*¨E˜(ˆLˆLà%*¨E�lˆHà×Ò˜ !œ Qœ¨×)GÒ)GÑ)IÔ)IÑJÔJÐJØ×Ò˜ !œ Qœ¨Ñ9Ô9Ð9Ø×Ò˜ aœ¨Ô+¨[×-KÒ-KÑ-MÔ-MÑNÔNÐNØ×Ò˜ aœ¨Ô+¨_Ñ=Ô=Ð=Ð=Ð=r6   N)rl   r|   r}   Ú_numba_parallel_test_rè  r£  r¤  rî  rï  rû  r  rG   r6   r/   rÞ  rÞ  n  s{   € € € € € à!Ðð5ð 5ð 5ð €X„_Ð)�RÔ)Ñ+Ô+¨yÒ8Ø2ñ4ô 4ð!0ð !0ñ4ô 4ð!0ðF'>ð '>ð '>ð '>ð '>r6   rÞ  c                   ó†   — e Zd ZdZej                             e¦  «        Zej         	                    ed¦  «        Z
dZd„ ZdS )ÚTestMultiprocessCacheFrÉ   rÊ   c                 óÀ  — |                       ¦   «         }|j        }d}	 t          j        d¦  «        }n# t          $ r
 t          }Y nw xY w|                     |¦  «        }	 t          |                     |t          |¦  «        ¦  «        ¦  «        }| 	                    ¦   «          n# | 	                    ¦   «          w xY w|  
                    |||dz
  z  dz  ¦  «         d S )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Ô6ˆCˆCøÝð 	"ð 	"ð 	"Ý!ˆCˆCˆCð	"øøøà�xŠx˜‰{Œ{ˆð	Ý�d—i’i ¥5¨¡8¤8Ñ,Ô,Ñ-Ô-ˆCà�JŠJ‰LŒLˆLˆLøˆD�JŠJ‰LŒLˆLˆLøøøØ×Ò˜˜a 1 q¡5™k¨QÑ.Ñ/Ô/Ð/Ð/Ð/s   Ÿ4 ´AÁAÁ!0B& Â&B<N)rl   r|   r}   r  r"   r#   rï   rª   rð   r$   r“   r�   r  rG   r6   r/   r  r  Ê  sY   € € € € € ð "ÐàŒ7�?Š?˜8Ñ$Ô$€DØ”G—L’L Ð':Ñ;Ô;€MØ.€Gð0ð 0ð 0ð 0ð 0r6   r  c                   óî   — e Zd ZdZej                             e¦  «        Ze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dS )Ú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                             d| j        ¦  «         d| _        |                      | j        t          j        ¦  «         | j        | _        d 	                    | j        dg¦  «        | _
        t          j         	                    | j        | j        ¦  «        }t          j        |¦  «         t          t          j         	                    |d¦  «        d¦  «        5 }t          | j        |¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          j         	                    |d	¦  «        d¦  «        5 }t          | j        |¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )
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Ô3Ð3Ø œLˆÔØŸHšH d¤l°EÐ%:Ñ;Ô;ˆÔÝ”—’˜dœl¨D¬LÑ9Ô9ˆÝ
Œ�ÑÔÐÝ•"”'—,’,˜v }Ñ5Ô5°sÑ;Ô;ð 	1¸tÝ�$Ô$¨4Ð0Ñ0Ô0Ð0ð	1ð 	1ð 	1ñ 	1ô 	1ð 	1ð 	1ð 	1ð 	1ð 	1ð 	1øøøð 	1ð 	1ð 	1ð 	1å•"”'—,’,˜v xÑ0Ô0°#Ñ6Ô6ð 	1¸$Ý�$Ô$¨4Ð0Ñ0Ô0Ð0ð	1ð 	1ð 	1ñ 	1ô 	1ð 	1ð 	1ð 	1ð 	1ð 	1ð 	1ð 	1øøøð 	1ð 	1ð 	1ð 	1ð 	1ð 	1s$   Ã?D"Ä"D&Ä)D&ÅE?Å?FÆFc                 óâ   — t           j                             | j        d ¦  «         t           j                             | j        d ¦  «         t           j                             | j        ¦  «         d S r_   )rŽ   rš   r›   r  r  r#   rœ   r,   r`   s    r/   r�   zTestCacheFileCollision.tearDown	  sP   € ÝŒ�Š˜Ô)¨4Ñ0Ô0Ð0ÝŒ�Š˜Ô)¨4Ñ0Ô0Ð0ÝŒ�Š˜œÑ%Ô%Ð%Ð%Ð%r6   c                 ó4   — t          | j        ¦  «        j        S r_   )r   r  Úbarr`   s    r/   Úimport_bar1z"TestCacheFileCollision.import_bar1  ó   € Ý˜dÔ/Ñ0Ô0Ô4Ð4r6   c                 ó4   — t          | j        ¦  «        j        S r_   )r   r  r'  r`   s    r/   Úimport_bar2z"TestCacheFileCollision.import_bar2  r)  r6   c                 óf  — |                       ¦   «         }|                      ¦   «         }|j        j        j        }|j        j        j        }|                      ||¦  «         |                      |                     d¦  «        ¦  «         |                      |                     d¦  «        ¦  «         d S )Nz__init__.bar-3.pyzfoo.bar-3.py)r(  r+  rð  rñ  Ú_index_namerÿ  rq  Ú
startswith)rZ   Úbar1Úbar2Úidxname1Úidxname2s        r/   Útest_file_locationz)TestCacheFileCollision.test_file_location  s›   € Ø×ÒÑ!Ô!ˆØ×ÒÑ!Ô!ˆà”;Ô*Ô6ˆØ”;Ô*Ô6ˆØ×Ò˜H hÑ/Ô/Ð/Ø�Š˜×+Ò+Ð,?Ñ@Ô@ÑAÔAÐAØ�Š˜×+Ò+¨NÑ;Ô;Ñ<Ô<Ð<Ð<Ð<r6   rn   z)Test requires multiprocessing.get_contextc                 óê  — |                       ¦   «         }|                      ¦   «         }t          ¦   «         5 } |¦   «         }d d d ¦  «         n# 1 swxY w Y   |                     ¦   «         }|                      |                     d¦  «        d¦  «         |                      |                     d¦  «        d¦  «         |                      |                     d¦  «        d¦  «         |                      |                     d¦  «        d¦  «         t          ¦   «         5 } |¦   «         }d d d ¦  «         n# 1 swxY w Y   |                     ¦   «         }|                      |                     d¦  «        d¦  «         |                      |                     d¦  «        d¦  «         |                      |                     d¦  «        d¦  «         |                      |                     d¦  «        d¦  «         |                      ||¦  «         	 t          j        d¦  «        }n# t          $ r t          d¦  «         Y nw xY w|                     ¦   «         }|                     t          || j        | j        | j        f¬	¦  «        }	|	                     ¦   «          |                     ¦   «         }
|                     ¦   «         }|                     ¦   «         }|                     ¦   «         }|	                     ¦   «          |                      ||¦  «         |                      ||¦  «         |                      |
                     d¦  «        d¦  «         |                      |
                     d¦  «        d¦  «         |                      |
                     d¦  «        d¦  «         |                      |
                     d¦  «        d¦  «         |                      |                     d¦  «        d¦  «         |                      |                     d¦  «        d¦  «         |                      |                     d¦  «        d¦  «         |                      |                     d¦  «        d¦  «         d S )
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/  r0  ÚbufÚres1ÚcachelogÚres2ÚmpÚqrx   Úlog1Úgot1Úlog2Úgot2s                 r/   Útest_no_collisionz(TestCacheFileCollision.test_no_collision  s[  € ð ×ÒÑ!Ô!ˆØ×ÒÑ!Ô!ˆÝÑ Ô ð 	 CØ�4‘6”6ˆDð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	à—<’<‘>”>ˆà×Ò˜Ÿš¨Ñ6Ô6¸Ñ:Ô:Ð:Ø×Ò˜Ÿš¨Ñ5Ô5°qÑ9Ô9Ð9Ø×Ò˜Ÿš¨Ñ7Ô7¸Ñ;Ô;Ð;Ø×Ò˜Ÿš¨Ñ6Ô6¸Ñ:Ô:Ð:ÝÑ Ô ð 	 CØ�4‘6”6ˆDð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	à—<’<‘>”>ˆà×Ò˜Ÿš¨Ñ6Ô6¸Ñ:Ô:Ð:Ø×Ò˜Ÿš¨Ñ5Ô5°qÑ9Ô9Ð9Ø×Ò˜Ÿš¨Ñ7Ô7¸Ñ;Ô;Ð;Ø×Ò˜Ÿš¨Ñ6Ô6¸Ñ:Ô:Ð:Ø×Ò˜D $Ñ'Ô'Ð'ð	+õ !Ô,¨WÑ5Ô5ˆBˆBøÝð 	+ð 	+ð 	+ÝÐ)Ñ*Ô*Ð*Ð*Ð*ð	+øøøð �HŠH‰JŒJˆà�zŠzÕ!<Ø ! 4¤<Ø $Ô 1Ø $Ô 1ð 3ð ñ 4ô 4ˆð 	�
Š
‰Œˆà�uŠu‰wŒwˆØ�uŠu‰wŒwˆØ�uŠu‰wŒwˆØ�uŠu‰wŒwˆØ�	Š	‰Œˆð 	×Ò˜˜tÑ$Ô$Ð$Ø×Ò˜˜tÑ$Ô$Ð$ð 	×Ò˜Ÿš MÑ2Ô2°AÑ6Ô6Ð6Ø×Ò˜Ÿš LÑ1Ô1°1Ñ5Ô5Ð5Ø×Ò˜Ÿš NÑ3Ô3°QÑ7Ô7Ð7Ø×Ò˜Ÿš MÑ2Ô2°AÑ6Ô6Ð6ð 	×Ò˜Ÿš MÑ2Ô2°AÑ6Ô6Ð6Ø×Ò˜Ÿš LÑ1Ô1°1Ñ5Ô5Ð5Ø×Ò˜Ÿš NÑ3Ô3°QÑ7Ô7Ð7Ø×Ò˜Ÿš MÑ2Ô2°AÑ6Ô6Ð6Ð6Ð6s5   ·AÁAÁAÄD6Ä6D:Ä=D:ÈH% È%IÉ IN)rl   r|   r}   r  r"   r#   rï   rª   rð   r$   r“   r�   r!  r"  r˜   r�   r(  r+  r3  r£  Ú
skipUnlessÚhasattrrm   rC  rG   r6   r/   r  r  ç  sã   € € € € € à!ÐàŒ7�?Š?˜8Ñ$Ô$€DØ”G—L’L Ð':Ñ;Ô;€MØ'€Gð€Mð€Mð1ð 1ð 1ð&ð &ð &ð
5ð 5ð 5ð5ð 5ð 5ð=ð =ð =ð €XÔ˜˜ °-Ñ@Ô@ØDñFô Fð97ð 97ñFô Fð97ð 97ð 97r6   r  c                 óF  — t           j                             d|¦  «         t          |¦  «        j        }t          |¦  «        j        }t          ¦   «         5 } |¦   «         }d d d ¦  «         n# 1 swxY w Y   |                      |                     ¦   «         ¦  «         |                      |¦  «         t          ¦   «         5 } |¦   «         }d d d ¦  «         n# 1 swxY w Y   |                      |                     ¦   «         ¦  «         |                      |¦  «         d S )Nr   )rŽ   r#   r�   r   r'  r   rˆ   r5  )	r>  r,   r  r  r/  r0  r9  Úr1Úr2s	            r/   r8  r8  \  s`  € Ý„H‡O‚O�A�wÑÔÐÝ˜,Ñ'Ô'Ô+€DÝ˜,Ñ'Ô'Ô+€DÝ	Ñ	Ô	ð  ØˆT‰VŒVˆðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð à‡E‚Eˆ#�,Š,‰.Œ.ÑÔÐØ‡E‚Eˆ"�I„I€IÝ	Ñ	Ô	ð  ØˆT‰VŒVˆðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð à‡E‚Eˆ#�,Š,‰.Œ.ÑÔÐØ‡E‚Eˆ"�I„I€I€I€Is$   ÁA.Á.A2Á5A2ÃCÃCÃ!Cc                   ó,   — e Zd ZdZdZdZd„ Zd„ Zd„ ZdS )Ú#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        d¦  «        | _        t          | j        d¦  «        5 }t          | j        |¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          j                             | j        d¦  «        | _	        t          | j	        d¦  «        5 }t          | j
        |¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )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.setUp~  sI  € Ý%Ð&;Ñ<Ô<ˆŒå”W—\’\ $¤,°
Ñ;Ô;ˆŒ
Ý�$”*˜cÑ"Ô"ð 	5 dÝ�$Ô(¨tÐ4Ñ4Ô4Ð4ð	5ð 	5ð 	5ñ 	5ô 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5øøøð 	5ð 	5ð 	5ð 	5õ ”W—\’\ $¤,°
Ñ;Ô;ˆŒ
Ý�$”*˜cÑ"Ô"ð 	5 dÝ�$Ô(¨tÐ4Ñ4Ô4Ð4ð	5ð 	5ð 	5ñ 	5ô 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5øøøð 	5ð 	5ð 	5ð 	5ð 	5ð 	5s$   ÁA7Á7A;Á>A;ÃC%Ã%C)Ã,C)c                 ó8   — t          j        | j        ¦  «         d S r_   )r)   r*   r,   r`   s    r/   r�   z,TestCacheMultipleFilesWithSignature.tearDown‰  s   € ÝŒ�d”lÑ#Ô#Ð#Ð#Ð#r6   c                 ót  — t          j        t          j        | j        gt           j        t           j        ¬¦  «        }|                     ¦   «         \  }}d|                     ¦   «         › d|                     ¦   «         › �}|                      |j	        d|¬¦  «         t          j        t          j        | j
        gt           j        t           j        ¬¦  «        }|                     ¦   «         \  }}d|                     ¦   «         › d|                     ¦   «         › �}|                      |j	        d|¦  «         d S )N©rÐ   rÑ   zstdout:
z


stderr:
r   rà  )r×   rØ   rŽ   rÙ   rL  rÚ   rÛ   rÞ   rY   rÜ   rN  )rZ   rá   râ   rã   rá  s        r/   Ú*test_caching_mutliple_files_with_signaturezNTestCacheMultipleFilesWithSignature.test_caching_mutliple_files_with_signatureŒ  s  € åÔ ¥#¤.°$´*Ð!=Ý(2¬Ý(2¬ð9ñ 9ô 9ˆð ×$Ò$Ñ&Ô&‰ˆˆSØC˜#Ÿ*š*™,œ,ÐCÐC°S·Z²Z±\´\ÐCÐCˆØ×Ò˜Ô)¨1°#ÐÑ6Ô6Ð6õ Ô ¥#¤.°$´*Ð!=Ý(2¬Ý(2¬ð9ñ 9ô 9ˆð ×$Ò$Ñ&Ô&‰ˆˆSØC˜#Ÿ*š*™,œ,ÐCÐC°S·Z²Z±\´\ÐCÐCˆØ×Ò˜Ô)¨1¨cÑ2Ô2Ð2Ð2Ð2r6   N)	rl   r|   r}   r  rM  rO  r˜   r�   rS  rG   r6   r/   rJ  rJ  j  sY   € € € € € ð "ÐðÐð
Ðð	5ð 	5ð 	5ð$ð $ð $ð3ð 3ð 3ð 3ð 3r6   rJ  c                   óŽ   — e Zd Zej                             e¦  «        Zej                             ed¦  «        Z	dZ
d„ Zd„ Zd„ ZdS )ÚTestCFuncCachezcfunc_cache_usecases.pyÚcfunc_caching_test_fodderc                 óP  — dt          | j        | j        ¬¦  «        z  }t          j        t
          j        d|gt          j        t          j        ¬¦  «        }|                     ¦   «         \  }}|j	        dk    r-t          d|j	        › d|                     ¦   «         › d�¦  «        ‚d S )	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Ï   rR  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_process¤  sÉ   € ðõ ˜tœ|°T´\ÐBÑBÔBñCˆõ Ô ¥#¤.°$¸Ð!=Ý(2¬Å
ÄðQñ Qô Qˆà×$Ò$Ñ&Ô&‰ˆˆSØÔ˜qÒ Ð Ý ð "E¸UÔ=Mð "Eð "EØ47·J²J±L´Lð"Eð "Eð "Eñ Fô Fð Fð !Ð r6   c                 ó.   — |                      ¦   «          d S r_   )Ú	self_test©rZ   r®   s     r/   Úcheck_modulezTestCFuncCache.check_module¼  s   € Ø�Š‰Œˆˆˆr6   c                 óP  — |                       d¦  «         |                      ¦   «         }|                       d¦  «         |                      |j        j        d¦  «         |                      |j        j        d¦  «         |                      |j        j        d¦  «         |                      |j        j        d¦  «         |                      |¦  «         |                      ¦   «         }|                       d¦  «         |                      |j        j        d¦  «         |                      |j        j        d¦  «         |                      |j        j        d¦  «         |                      |j        j        d¦  «         |                      |¦  «         |  	                    ¦   «          d S )Nr   rô   rC   )
rÃ   r¯   rY   rù   rè   r  r  Údiv_usecaser[  rä   rZ  s     r/   r  zTestCFuncCache.test_caching¿  s|  € Ø×Ò˜1ÑÔÐØ× Ò Ñ"Ô"ˆØ×Ò˜1ÑÔÐà×Ò˜œÔ3°QÑ7Ô7Ð7Ø×Ò˜œÔ-¨qÑ1Ô1Ð1Ø×Ò˜Ô0Ô;¸QÑ?Ô?Ð?Ø×Ò˜œÔ3°QÑ7Ô7Ð7Ø×Ò˜#ÑÔÐð × Ò Ñ"Ô"ˆØ×Ò˜1ÑÔÐà×Ò˜œÔ3°QÑ7Ô7Ð7Ø×Ò˜œÔ-¨qÑ1Ô1Ð1Ø×Ò˜Ô0Ô;¸QÑ?Ô?Ð?Ø×Ò˜œÔ3°QÑ7Ô7Ð7Ø×Ò˜#ÑÔÐà×$Ò$Ñ&Ô&Ð&Ð&Ð&r6   N)rl   r|   r}   r"   r#   rï   rª   rð   r$   r“   r�   rä   r[  r  rG   r6   r/   rU  rU  ž  sr   € € € € € àŒ7�?Š?˜8Ñ$Ô$€DØ”G—L’L Ð'@ÑAÔA€MØ)€GðFð Fð Fð0ð ð ð'ð 'ð 'ð 'ð 'r6   rU  c                   ó   — e Zd ZdS )ÚTestLocatorN)rl   r|   r}   rG   r6   r/   r_  r_  ×  s   € € € € € Ø€Dr6   r_  c                   ó0   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ ZdS )Ú&TestCacheLocatorEnvironmentIntegrationz9Integration tests for environment variable functionality.c                 óà   — d„ }t          dd¦  «        5  |                      t          ¦  «        5  t          |¦  «         d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         d S # 1 swxY w Y   d S )Nc                  ó   — dS ©Nr‹  rG   rG   r6   r/   rÂ  z\TestCacheLocatorEnvironmentIntegration.test_locators_env_override_unknown.<locals>.mock_funcß  ó   € Ø�2r6   ÚNUMBA_CACHE_LOCATOR_CLASSESzfoo,bar)r   ÚassertRaisesÚRuntimeErrorr   )rZ   rÂ  s     r/   Ú"test_locators_env_override_unknownzITestCacheLocatorEnvironmentIntegration.test_locators_env_override_unknownÞ  s  € ð	ð 	ð 	õ !Ø)Øñ
ô 
ð 	)ð 	)ð ×"Ò"¥<Ñ0Ô0ð )ð )Ý˜iÑ(Ô(Ð(ð)ð )ð )ñ )ô )ð )ð )ð )ð )ð )ð )øøøð )ð )ð )ð )ð		)ð 	)ð 	)ñ 	)ô 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)øøøð 	)ð 	)ð 	)ð 	)ð 	)ð 	)s3   ”A#¯A¿A#ÁA	ÁA#ÁA	ÁA#Á#A'Á*A'c                 óÊ   — d„ }t          dd¦  «        5  t          |¦  «        }t          }|                      |j        j        |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nc                  ó   — dS rd  rG   rG   r6   r/   rÂ  z[TestCacheLocatorEnvironmentIntegration.test_locators_env_override_single.<locals>.mock_funcê  re  r6   rf  r
   )r   r   r
   r\  Ú_implr`  ©rZ   rÂ  r:   ÚexpectedLocators       r/   Ú!test_locators_env_override_singlezHTestCacheLocatorEnvironmentIntegration.test_locators_env_override_singleé  sÃ   € ð	ð 	ð 	õ !Ø)Ø*ñ
ô 
ð 	3ð 	3õ " )Ñ,Ô,ˆEÝ:ˆOØ×!Ò! %¤+Ô"5Ø"1ñ3ô 3ð 3ð	3ð 	3ð 	3ñ 	3ô 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3øøøð 	3ð 	3ð 	3ð 	3ð 	3ð 	3s   ”7AÁAÁAc                 óÚ   — d„ }t          dt          › d�¦  «        5  t          |¦  «        }t          }|                      |j        j        |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nc                  ó   — dS rd  rG   rG   r6   r/   rÂ  z[TestCacheLocatorEnvironmentIntegration.test_locators_env_override_custom.<locals>.mock_func÷  re  r6   rf  z.TestLocator)r   rl   r   r_  r\  rl  r`  rm  s       r/   Ú!test_locators_env_override_customzHTestCacheLocatorEnvironmentIntegration.test_locators_env_override_customö  sÌ   € ð	ð 	ð 	õ !Ø)ÝÐ%Ð%Ð%ñ
ô 
ð 	3ð 	3õ " )Ñ,Ô,ˆEÝ)ˆOØ×!Ò! %¤+Ô"5Ø"1ñ3ô 3ð 3ð	3ð 	3ð 	3ñ 	3ô 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3øøøð 	3ð 	3ð 	3ð 	3ð 	3ð 	3s   œ7A Á A$Á'A$c                 óÎ   — d„ }d}t           }t          d|¦  «        5  t          |¦  «        }|                      |j        j        |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nc                  ó   — dS rd  rG   rG   r6   r/   rÂ  zYTestCacheLocatorEnvironmentIntegration.test_locators_env_override_list.<locals>.mock_func  re  r6   zXInTreeCacheLocatorFsAgnostic,InTreeCacheLocator,IPythonCacheLocator,UserWideCacheLocatorrf  )r
   r   r   r\  rl  r`  )rZ   rÂ  ÚlocatorClassesrn  r:   s        r/   Útest_locators_env_override_listzFTestCacheLocatorEnvironmentIntegration.test_locators_env_override_list  sÖ   € ð	ð 	ð 	ðEˆå6ˆå Ø)Øñ
ô 
ð 	Hð 	Hõ " )Ñ,Ô,ˆEØ×!Ò! %¤+Ô"5°ÑGÔGÐGð	Hð 	Hð 	Hñ 	Hô 	Hð 	Hð 	Hð 	Hð 	Hð 	Hð 	Hð 	Høøøð 	Hð 	Hð 	Hð 	Hð 	Hð 	Hs   �0AÁAÁ!Ac                 óx   — d„ }t          |¦  «        }t          }|                      |j        j        |¦  «         d S )Nc                  ó   — dS rd  rG   rG   r6   r/   rÂ  zOTestCacheLocatorEnvironmentIntegration.test_default_locators.<locals>.mock_func  re  r6   )r   r	   r\  rl  r`  rm  s       r/   Útest_default_locatorsz<TestCacheLocatorEnvironmentIntegration.test_default_locators  sF   € ð	ð 	ð 	õ ˜iÑ(Ô(ˆÝ,ˆØ×Ò˜eœkÔ1°?ÑCÔCÐCÐCÐCr6   N)	rl   r|   r}   rÌ  ri  ro  rr  rv  ry  rG   r6   r/   ra  ra  Û  sm   € € € € € ØCÐCð	)ð 	)ð 	)ð3ð 3ð 3ð3ð 3ð 3ðHð Hð HðDð Dð Dð Dð Dr6   ra  c                   ó   — e Zd ZdZd„ ZdS )Ú TestInTreeCacheLocatorFsAgnosticz.Test InTreeCacheLocatorFsAgnostic deprecation.c                 óà  — ddl m} t          j        |¦  «        }|                      t
          ¦  «        5 }t          j        ||¦  «        }ddd¦  «         n# 1 swxY w Y   |                      |¦  «         |  	                    dt          |j        ¦  «        ¦  «         t          j        ||¦  «        }|                      |                     ¦   «         |                     ¦   «         ¦  «         dS )z:Instantiating the locator emits a NumbaDeprecationWarning.rC   rP  Nz*InTreeCacheLocatorFsAgnostic is deprecated)rT  rQ  rW  rX  ÚassertWarnsr   r
   rY  rÄ  r  r  Úwarningr	   rY   Úget_source_stamp)rZ   rQ  r_  Úcmr`  Úregular_locators         r/   Útest_deprecation_warningz9TestInTreeCacheLocatorFsAgnostic.test_deprecation_warning  s.  € à*Ð*Ð*Ð*Ð*Ð*å” Ñ*Ô*ˆà×ÒÕ5Ñ6Ô6ð 	¸"Ý2Ô@Ø˜&ñô ˆGð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð
 	×Ò˜WÑ%Ô%Ð%Ø�ŠÐBÝ˜"œ*‘o”oñ	'ô 	'ð 	'õ -Ô:¸8ÀVÑLÔLˆØ×Ò˜×1Ò1Ñ3Ô3Ø(×9Ò9Ñ;Ô;ñ	=ô 	=ð 	=ð 	=ð 	=s   µAÁAÁAN)rl   r|   r}   rÌ  r‚  rG   r6   r/   r{  r{    s)   € € € € € Ø8Ð8ð=ð =ð =ð =ð =r6   r{  Ú__main__)Qr·  rW  rk  rm   r"   r)   r”   r×   rŽ   rr  r†   r£  r  r¬  Úpathlibr   Úllvmlite.bindingÚbindingrî  Únumpyr  Únumbar   Ú
numba.corer   Únumba.core.cachingr   r   r   r	   r
   Únumba.core.errorsr   r   Únumba.parforsr   Únumba.tests.supportr   r   r   r   r   r   r   r   r   r   Únumba.core.registryr   rŸ  ÚImportErrorr0   Ú_access_preventableÚ_access_msgrD  r¢  r5   rA   rH   rM   rQ   rT   rV   rq   r‹   rÈ   rò   r¨  r¿  rÎ  rÞ  r  r  r8  rJ  rU  r_  ra  r{  rl   ÚmainrG   r6   r/   ú<module>r“     sÂ  ðØ Ð Ð Ð Ø €€€Ø €€€Ø Ð Ð Ð Ø 	€	€	€	Ø €€€Ø €€€Ø Ð Ð Ð Ø 
€
€
€
Ø €€€Ø Ð Ð Ð Ø €€€Ø €€€Ø €€€Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø Ð Ð Ð à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð DÐ CÐ CÐ CÐ CÐ CÐ CÐ CØ  Ð  Ð  Ð  Ð  Ð  ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð +Ð *Ð *Ð *Ð *Ð *ðØÐÐÐÐøØð ð ð Ø€I€I€Iðøøøð ð  ð  ð> 2Ð1Ñ3Ô3Ð ØI€Ø%�(Ô%Ð&9¸;ÑGÔG€ðð ð ð
ð ð ðð ð ðð ð ðð ð ð
ð ð ð7
ð 7
ð 7
ð 7
ð 7
�+˜xñ 7
ô 7
ð 7
ðt,ð ,ð ,ð8Að Að Að Að A�Hñ Aô Að AðH&.ð &.ð &.ð &.ð &. -ñ &.ô &.ð &.ðR{5ð {5ð {5ð {5ð {5Ð+ñ {5ô {5ð {5ð|8,ð 8,ð 8,ð 8,ð 8,Ð.ñ 8,ô 8,ð 8,ðv#ð #ð #ð #ð #Ð1ñ #ô #ð #ð6 ðð ð ð ð Ð!<ñ ô ñ Ôðð.Y>ð Y>ð Y>ð Y>ð Y>Ð9ñ Y>ô Y>ð Y>ðx0ð 0ð 0ð 0ð 0˜Mñ 0ô 0ð 0ð: ðq7ð q7ð q7ð q7ð q7˜XÔ.ñ q7ô q7ñ Ôðq7ðhð ð ð13ð 13ð 13ð 13ð 13¨(Ô*;ñ 13ô 13ð 13ðh6'ð 6'ð 6'ð 6'ð 6'�]ñ 6'ô 6'ð 6'ðr	ð 	ð 	ð 	ð 	Ð$ñ 	ô 	ð 	ð=Dð =Dð =Dð =Dð =D¨Xñ =Dô =Dð =Dð@=ð =ð =ð =ð = xñ =ô =ð =ð0 ˆzÒÐØ€H„M�O„O€O€O€Oð Ðs   ÂB ÂBÂB