Ë
    èÿæi8  ã                   ó¤   — 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  G d„ de j                  «      Zedk(  r e j                   «        yy)	é    N)Úcontextmanager)Úir)ÚtypesÚtypingÚcallconvÚcpuÚcgutils)Ú
cpu_targetc                   ó2   — e Zd ZdZed„ «       Zd„ Zd„ Zd„ Zy)ÚTestCompileCachezœ
    Tests that the caching in BaseContext.compile_internal() works correctly by
    checking the state of the cache when it is used by the CPUContext.
    c              #   ó   K  — t         j                  }t         j                  }|j                  «       j	                  d«      }|j                  |«      5  t        j                  d«      }t        j                  t        j                  t        j                  «      }|j                  j                  |j                  |j                  «      }t!        j"                  ||d«      }|j                  j%                  |«      }|j&                  sJ ‚|j)                  d«      }	t        j*                  |	«      }
||
||f–— d d d «       y # 1 sw Y   y xY w­w)NÚtestingÚtest_moduleÚtest_fnÚentry)r
   Útyping_contextÚtarget_contextÚcodegenÚcreate_libraryÚpush_code_libraryr   ÚModuler   Ú	signaturer   Úint32Ú	call_convÚget_function_typeÚreturn_typeÚargsr	   Úget_or_insert_functionÚget_argumentsÚis_declarationÚappend_basic_blockÚ	IRBuilder)Úselfr   ÚcontextÚlibÚmoduleÚsigÚ	llvm_fntyÚfunctionr   Úentry_blockÚbuilders              ús/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/numba/tests/test_compile_cache.pyÚ_context_builder_sig_argsz*TestCompileCache._context_builder_sig_args   s  è ø€ ä#×2Ñ2ˆÜ×+Ñ+ˆØ�o‰oÓ×.Ñ.¨yÓ9ˆØ×&Ñ& sÕ+Ü—Y‘Y˜}Ó-ˆFä×"Ñ"¤5§;¡;´·±Ó<ˆCØ×)Ñ)×;Ñ;¸C¿O¹OØ<?¿H¹HóFˆIä×5Ñ5°f¸iØ6?óAˆHà×$Ñ$×2Ñ2°8Ó<ˆDØ×*Ò*Ð*Ð*Ø"×5Ñ5°gÓ>ˆKÜ—l‘l ;Ó/ˆGà˜7 C¨Ð-Ò-÷ ,×+Ñ+üs   ‚AEÁC&EÄ9	EÅEÅEc                 ób  — d„ }d„ }| j                  «       5 \  }}}}t        |j                  «      }| j                  |dz   t        |j                  «      «       |j	                  ||||«       | j                  |dz   t        |j                  «      «       |j	                  ||||«       | j                  |dz   t        |j                  «      «       |j	                  ||||«       | j                  |dz   t        |j                  «      «       t        j                  t        j                  t        j                  «      }|j                  j                  |j                  |j                  «      }	t        j                  |j                  |	d«      }
|j                  j!                  |
«      }|
j"                  sJ ‚|
j%                  d«      }t'        j(                  |«      }|j	                  ||||«       | j                  |dz   t        |j                  «      «       d d d «       y # 1 sw Y   y xY w)	Nc                 ó   — d| z  S )Né   © ©Úis    r,   Útimes2z+TestCompileCache.test_cache.<locals>.times2%   ó   € Ø�Q‘3ˆJó    c                 ó   — | dz  S )Né   r1   r2   s    r,   Útimes3z+TestCompileCache.test_cache.<locals>.times3(   r5   r6   r   é   r0   Ú	test_fn_2r   r8   )r-   ÚlenÚcached_internal_funcÚassertEqualÚcompile_internalr   r   r   Úfloat64r   r   r   r   r	   r   r&   r   r    r!   r   r"   )r#   r4   r9   r$   r+   r'   r   Úinitial_cache_sizeÚsig2Ú
llvm_fnty2Ú	function2Úargs2Úentry_block2Úbuilder2s                 r,   Ú
test_cachezTestCompileCache.test_cache$   sø  € ò	ò	ð ×+Ñ+Ô-ñ 2
Ø�W˜c 4ä!$ W×%AÑ%AÓ!BÐà×ÑÐ/°!Ñ3Ü  ×!=Ñ!=Ó>ô@ð ×$Ñ$ W¨f°c¸4Ô@Ø×ÑÐ/°!Ñ3Ü  ×!=Ñ!=Ó>ô@ð
 ×$Ñ$ W¨f°c¸4Ô@Ø×ÑÐ/°!Ñ3Ü  ×!=Ñ!=Ó>ô@ð
 ×$Ñ$ W¨f°c¸4Ô@Ø×ÑÐ/°!Ñ3Ü  ×!=Ñ!=Ó>ô@ô ×#Ñ#¤E§M¡M´5·=±=ÓAˆDØ ×*Ñ*×<Ñ<¸T×=MÑ=MØ<@¿I¹IóGˆJä×6Ñ6°w·~±~Ø7AÀ;óPˆIà×%Ñ%×3Ñ3°IÓ>ˆEØ×+Ò+Ð+Ð+Ø$×7Ñ7¸Ó@ˆLÜ—|‘| LÓ1ˆHð ×$Ñ$ X¨v°t¸UÔCØ×ÑÐ/°!Ñ3Ü  ×!=Ñ!=Ó>ô@÷M .×-Ñ-ús   —HH%È%H.c                 ó&  — d„ }| j                  «       5 \  }}}} |dd«      } |dd«      } |dd«      }t        |j                  «      }	|j                  ||||«      }
| j	                  |	dz   t        |j                  «      «       |j                  ||||«      }| j	                  |	dz   t        |j                  «      «       |j                  ||||«      }| j	                  |	dz   t        |j                  «      «       ddd«       y# 1 sw Y   yxY w)zP
        Caching must not mix up closures reusing the same code object.
        c                 ó   ‡— ˆfd„}|S )Nc                 ó   •— ‰| z   S ©Nr1   )ÚzÚys    €r,   Úfz?TestCompileCache.test_closures.<locals>.make_closure.<locals>.fY   s   ø€ Ø˜1‘u�r6   r1   )ÚxrN   rO   s    ` r,   Úmake_closurez4TestCompileCache.test_closures.<locals>.make_closureX   s   ø€ ôàˆHr6   r:   r0   N)r-   r<   r=   r?   r>   )r#   rQ   r$   r+   r'   r   Úclo11Úclo12Úclo22rA   Úres1Úres2Úres3s                r,   Útest_closureszTestCompileCache.test_closuresT   s  € ò	ð
 ×+Ñ+Ô-ñ 2
Ø�W˜c 4ñ !  AÓ&ˆEÙ   AÓ&ˆEÙ   AÓ&ˆEÜ!$ W×%AÑ%AÓ!BÐØ×+Ñ+¨G°U¸CÀÓFˆDØ×ÑÐ/°!Ñ3Ü  ×!=Ñ!=Ó>ô@à×+Ñ+¨G°U¸CÀÓFˆDØ×ÑÐ/°!Ñ3Ü  ×!=Ñ!=Ó>ô@ð ×+Ñ+¨G°U¸CÀÓFˆDØ×ÑÐ/°!Ñ3Ü  ×!=Ñ!=Ó>ô@÷! .×-Ñ-ús   ”C*DÄDc                 ó4  ‡‡‡— d„ Št        j                  t        j                  t        j                  «      Šˆˆˆfd„}| j	                  «       5 \  }Š}}t        j                  d|«      }t        j                  d|«      }|j                  |¬«      }|j                  |¬«      }|j                  |¬«      }	t        |j                  «      }
| j                  |
dz   t        |j                  «      «        ||«       | j                  |
dz   t        |j                  «      «        ||«       | j                  |
dz   t        |j                  «      «        ||	«       | j                  |
dz   t        |j                  «      «       d	d	d	«       y	# 1 sw Y   y	xY w)
zA
        Caching must not mix up different error models.
        c                 ó   — d| z  S )Ng      ð?r1   )rP   s    r,   Úinvz.TestCompileCache.test_error_model.<locals>.invt   s   € Ø˜‘7ˆNr6   c                 ó*   •— | j                  ‰‰‰«      S rL   )Úcompile_subroutine)r$   r+   r[   Úinv_sigs    €€€r,   Úcompile_invz6TestCompileCache.test_error_model.<locals>.compile_invy   s   ø€ Ø×-Ñ-¨g°s¸GÓDÐDr6   ÚpythonÚnumpy)Úerror_modelr   r:   r0   N)r   r   r   r@   r-   r   Úcreate_error_modelÚ	subtargetr<   r=   r>   )r#   r_   r$   r'   r   Úpy_error_modelÚnp_error_modelÚpy_context1Úpy_context2Ú
np_contextrA   r+   r[   r^   s              @@@r,   Útest_error_modelz!TestCompileCache.test_error_modelp   sr  ú€ ò	ô ×"Ñ"¤5§=¡=´%·-±-Ó@ˆö	Eð ×+Ñ+Ô-ñ 2
Ø�W˜c 4ä%×8Ñ8¸À7ÓKˆNÜ%×8Ñ8¸À'ÓJˆNà!×+Ñ+¸Ð+ÓGˆKØ!×+Ñ+¸Ð+ÓGˆKØ ×*Ñ*°~Ð*ÓFˆJä!$ W×%AÑ%AÓ!BÐð ×ÑÐ/°!Ñ3Ü  ×!=Ñ!=Ó>ô@ñ ˜Ô$Ø×ÑÐ/°!Ñ3Ü  ×!=Ñ!=Ó>ô@á˜Ô$Ø×ÑÐ/°!Ñ3Ü  ×!=Ñ!=Ó>ô@ñ ˜
Ô#Ø×ÑÐ/°!Ñ3Ü  ×!=Ñ!=Ó>ô@÷1 .×-Ñ-ús   ÁD5FÆFN)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r-   rH   rX   rj   r1   r6   r,   r   r   
   s.   „ ñð
 ñ.ó ð.ò&.@ò`@ó8%@r6   r   Ú__main__)ÚunittestÚ
contextlibr   Úllvmliter   Ú
numba.corer   r   r   r   r	   Únumba.core.registryr
   ÚTestCaser   rk   Úmainr1   r6   r,   Ú<module>rw      sH   ðÛ Ý %å ç <Õ <Ý *ôK@�x×(Ñ(ô K@ð\ ˆzÒØ€H‡M�M…Oð r6   