
    sh3                     ,   S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKJr  S SK	7  S SK
rS SKJr  S SKJr  S SKJrJrJrJrJrJrJr  S SKrSr\R4                  " \R6                  R9                  S5      (       + \5      r\R<                  R?                  \R<                  RA                  \!5      5      r"S r#\ " S	 S
\5      5       r$ " S S\5      r%\\ " S S\%5      5       5       r&\\ " S S\5      5       5       r'\(S:X  a  \RR                  " 5         gg)    N)skip)*)utils)TestCasetagimport_dynamictemp_directoryhas_blasneeds_setuptoolsskip_if_py313_on_windowszwindows onlywinc                  P    S[         R                  ;   a  [         R                  S	 gg)zNUnset MACOSX_DEPLOYMENT_TARGET because we are not building portable
libraries
MACOSX_DEPLOYMENT_TARGETN)osenviron     i/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/tests/test_pycc.pyunset_macosx_deployment_targetr      s"     "RZZ/JJ12 0r   c                   $    \ rS rSr\S 5       rSrg)TestCompilerChecks&   c                     SSK Jn  [        R                  R	                  SS 5      S LnU(       a9  [        R                  R	                  SS 5      b  U R                  U" 5       5        g g g )Nr   )external_compiler_worksCONDA_BUILDVSINSTALLDIR)numba.pycc.platformr   r   r   get
assertTrue)selfr   is_running_conda_builds      r   test_windows_compiler_validity1TestCompilerChecks.test_windows_compiler_validity*   sU     	@!#t!DD!P!zz~~nd3? 7 9: @ "r   r   N)__name__
__module____qualname____firstlineno___windows_onlyr"   __static_attributes__r   r   r   r   r   &   s     ; ;r   r   c                   D    \ rS rSrS rS r\R                  S 5       rSr	g)BasePYCCTest9   c                 b    [        5         [        S5      U l        U R                  [        l        g )N	test_pycc)r   r	   tmpdirtempfiletempdirr    s    r   setUpBasePYCCTest.setUp;   s"    &($[1  ;;r   c                 4    S [         l        SSKJn  U" 5         g )Nr   )clear_export_registry)r0   r1   numba.pycc.decoratorsr6   )r    r6   s     r   tearDownBasePYCCTest.tearDownC   s     	@r   c              #   p  #    [         R                  R                  U5         [        U5      nUv   [         R                  R	                  U5        [         R
                  R                  US 5        g ! [         R                  R	                  U5        [         R
                  R                  US 5        f = f7fN)syspathappendr   removemodulespop)r    extdirnamelibs       r   check_c_extBasePYCCTest.check_c_extN   sp     	( &CIHHOOF#KKOOD$' HHOOF#KKOOD$'s    B6A2 A B62AB33B6)r/   N)
r$   r%   r&   r'   r3   r8   
contextlibcontextmanagerrE   r)   r   r   r   r+   r+   9   s&    '	  ( (r   r+   c                      ^  \ rS rSrU 4S jr\R                  S 5       rS rS r	S r
S rS rS	 rS
 rS rS rS rSrU =r$ )TestCCY   c                    > [         [        U ]  5         U R                  5         SSKJn  Xl        [        R                  " U R                  5        g )Nr   )compile_with_pycc)	superrJ   r3   skip_if_no_external_compilernumba.testsrM   _test_module	importlibreload)r    rM   	__class__s     r   r3   TestCC.setUp]   s9    fd!#))+1-**+r   c              #      #    U R                   Ul        UR                  5         U R                  U R                   UR                  5       nUv   S S S 5        g ! , (       d  f       g = f7fr;   )r/   
output_dircompilerE   rC   )r    ccrD   s      r   check_cc_compiledTestCC.check_cc_compiledd   sE      


dkk2773sI 433s   AA)
A	A)
A&"A)c                     SUR                   [        R                  R                  UR                  5      S.-  nUR                  S5      U-   n[        R                  " [        R                  SU/5        g )Na  if 1:
            import sys
            import types
            # to disable numba package
            sys.modules['numba'] = types.ModuleType('numba')
            try:
                from numba import njit
            except ImportError:
                pass
            else:
                raise RuntimeError('cannot disable numba package')

            sys.path.insert(0, %(path)r)
            import %(name)s as lib
            )rC   r=    -c)
r$   r   r=   dirname__file__strip
subprocess
check_callr<   
executable)r    rD   codeprologs       r   check_cc_compiled_in_subprocess&TestCC.check_cc_compiled_in_subprocessm   s^     <<77??3<<8::  ||C 4's~~tT:;r   c                    U R                   R                  nU R                  UR                  S5        U R                   R                  R                  nU R                  [        R                  R                  U5      U5        U R                   R                  R                  nU R                  [        R                  R                  U5      U5        U R                  [        R                  R                  U5      R                  S5      U5        [        R                  R                  S5      (       a?  U R                  UR!                  S5      U5        SSKJn  U R'                  U" 5       U5        g g )Npycc_test_simplezpycc_test_simple.linuxz.sor   )find_pyext_ending)rQ   rY   assertEqualrC   rW   r   r   r=   isdiroutput_fileassertFalseexistsbasename
startswithr<   platformendswithr   rl   assertIn)r    rY   dfrl   s        r   test_cc_propertiesTestCC.test_cc_properties   s   !!"45   ++a(!,   ,,*A.((+667JKQO<<""7++OOAJJu-q1 >MM+-q1 ,r   c                    U R                  U R                  R                  5       nUR                  SS5      nU R	                  US5        UR                  SS5      nU R	                  US5        UR                  S5      nU R	                  US5        U R                  UR                  5       S 5        U R                  [        5         UR                  SS	5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)
N{   A  ;  i  g    lVA         r   )rZ   rQ   rY   multiassertPreciseEqualmultfsquareassertIsget_noneassertRaisesZeroDivisionErrordiv)r    rD   ress      r   test_compileTestCC.test_compile   s    ##D$5$5$8$89S))C%C##C3))C%C##C7**Q-C##C,MM#,,.$/""#451 6 :9 65 :9s$   B!C<C+C<+
C9	5C<<
D
c                 &   U R                   R                  nXl        U R                  U5       nUR	                  SS5      nU R                  US5        U R                  UR                  R                  S5        S S S 5        g ! , (       d  f       g = f)Nr|   r}   r~   rj   )rQ   rY   
target_cpurZ   r   r   rm   r%   )r    cpu_namerY   rD   r   s        r   check_compile_for_cpuTestCC.check_compile_for_cpu   so    !! ##B'3))C%C##C3SYY113EF (''s   AB
Bc                 L    U R                  [        R                  " 5       5        g r;   )r   llget_host_cpu_namer2   s    r   test_compile_for_cpuTestCC.test_compile_for_cpu   s    ""2#7#7#9:r   c                 &    U R                  S5        g )Nhost)r   r2   s    r   test_compile_for_cpu_host TestCC.test_compile_for_cpu_host   s    ""6*r   c                    U R                  U R                  R                  5       nUR                  SS5      nU R	                  US5        SS[
        R                  " S5      4 H&  nUR                  U5      nU R	                  US5        M(     SS[
        R                  " S5      4 H&  nUR                  U5      nU R	                  US	5        M(     UR                  S
5      nU R	                  US5        U R                  UR                  S5      UR                  S5      5        UR                  S5      n[
        R                  R                  S5      R                  5       nU R	                  X$5        UR                  [
        R                  " S/S-  5      5      nU R	                  US5        SSU0-  nU R!                  X5        S S S 5        g ! , (       d  f       g = f)N         y              y              ?         @       @      ?g      <*   r      aR  if 1:
                from numpy.testing import assert_equal, assert_allclose
                res = lib.power(2, 7)
                assert res == 128
                res = lib.random(42)
                assert_allclose(res, %(expected)s)
                res = lib.spacing(1.0)
                assert_allclose(res, 2**-52)
                expected)rZ   rQ   cc_helperlibpowerr   np
complex128sqrtfloat64np_sqrtspacingassertNotEqualrandomRandomStaterandom_samplesizerg   r    rD   r   valr   re   s         r   test_compile_helperlibTestCC.test_compile_helperlib   s   ##D$5$5$B$BCs))Aq/C##C-GR]]2%67hhsm''R0 8 3

1.kk#&''S1 / ++c"C##C0 

2

2?**R.Cyy,,R0>>@H##C2((2::qcAg./C##C+ "8,-D 00;; DCCs   F G
Gc                 ^   U R                  U R                  R                  5       nU R                  UR	                  S5      S5        UR                  S5      nU R                  [        U5      / SQ5        [        (       a#  UR                  S5      nU R                  US5        [        R                  " / SQ5      nUR                  U5      n[        R                  " U5      nU R                  X$5        S[        [        S	9-  nU R                  X5        S S S 5        g ! , (       d  f       g = f)
Nr   g        r   )r   r   r   r   g      >@)r   g      @r   g      @r   aB  if 1:
                from numpy.testing import assert_equal
                from numpy import float64, argsort
                res = lib.zero_scalar(1)
                assert res == 0.0
                res = lib.zeros(3)
                assert list(res) == [0, 0, 0]
                if %(has_blas)s:
                    res = lib.vector_dot(4)
                    assert res == 30.0
                val = float64([2., 5., 1., 3., 4.])
                res = lib.np_argsort(val)
                expected = argsort(val)
                assert_equal(res, expected)
                )r
   )rZ   rQ   cc_nrtr   zero_scalarzerosrm   listr
   
vector_dotr   r   
np_argsortargsortdictrg   r   s         r   test_compile_nrtTestCC.test_compile_nrt   s    ##D$5$5$<$<=##COOA$6<))A,CT#Y	2xnnQ'''T2**12C..%Czz#H##C2 H-.D 00;; >==s   C/D
D,c                 V   U R                  U R                  R                  5       nUR                  5       nU R	                  U[        S5      5        UR                  S5      nU R	                  U[        S5      5        SnU R                  X5        S S S 5        g ! , (       d  f       g = f)NAzif 1:
                from numpy.testing import assert_equal
                res = lib.hash_literal_str_A()
                assert_equal(res, hash("A"))
                res = lib.hash_str("A")
                assert_equal(res, hash("A"))
                )rZ   rQ   r   hash_literal_str_Ar   hashhash_strrg   )r    rD   r   re   s       r   test_hashingTestCC.test_hashing   s    ##D$5$5$<$<=((*C##Cc3,,s#C##Cc3D 00; >==s   A+B
B(c                    U R                  U R                  R                  5       n[        R                  " S[        R
                  S9nUR                  U5      nX"-  nU R                  X45        S S S 5        g ! , (       d  f       g = f)Nr   )dtype)rZ   rQ   r   r   arangeintpdict_usecaser   )r    rD   arrgotexpects        r   test_c_extension_usecaseTestCC.test_c_extension_usecase  sc    ##D$5$5$<$<=))Crww/C""3'CYF##C0	 >==s   A
A99
B)rQ   )r$   r%   r&   r'   r3   rG   rH   rZ   rg   ry   r   r   r   r   r   r   r   r   r)   __classcell__rT   s   @r   rJ   rJ   Y   s\    ,  <(2&
G;+<@<@< 1 1r   rJ   c                   L   ^  \ rS rSrU 4S jrS rS rS rS rS r	S r
S	rU =r$ )
TestDistutilsSupporti
  c                 \  > [         TU ]  5         U R                  5         [        5         [	        S5      U l        [        R                  R                  [        S5      n[        R                  R                  U R
                  S5      U l
        [        R                  " XR                  5        g )Ntest_pycc_distutilspycc_distutils_usecasework)rN   r3   rO   r   r	   r/   r   r=   join	base_pathusecase_dirshutilcopytree)r    
source_dirrT   s     r   r3   TestDistutilsSupport.setUp  so    ))+&( %%:;WW\\)-EF
77<<V<
$4$45r   c                   ^ ^ SS K n[        R                  R                  [        R                  R	                  [        R                  R	                  UR
                  5      5      5      n[        [        R                  5      mTR                  SS5      (       a  U[        R                  -   TS   -   TS'   OUTS'   UU 4S jnU" USS/5        SnU" SU/5        g )	Nr   
PYTHONPATH c                 @  > [         R                  " [        R                  /U -   TR                  [         R
                  [         R                  TS9nUR                  5       u  p#UR                  5       nUS:w  a%  TR                  SUR                  SS5      -  5        g g N)cwdstdoutstderrenvr   z+python failed with the following output:
%szutf-8ignorerb   Popenr<   rd   r   PIPESTDOUTcommunicatewaitfaildecodeargspout_rcr   r    s        r   
run_python7TestDistutilsSupport.check_setup_py.<locals>.run_python&        #..!1D!8%)%5%5(2(2(9(9%(	*A
 ]]_FCBQw		HJJw9: ; r   	build_ext	--inplacezif 1:
            import pycc_compiled_module as lib
            assert lib.get_const() == 42
            res = lib.ones(3)
            assert list(res) == [1.0, 1.0, 1.0]
            r^   
numbar   r=   abspathr_   r`   r   r   r   pathsepr    setup_py_filer  
numba_pathr   re   r   s   `     @r   check_setup_py#TestDistutilsSupport.check_setup_py      WW__RWW__%'WW__U^^%D&F G
2::77<$$ *RZZ 7#l:K KC *C
	; 	M;<= 	D$< r   c                   ^ ^ SS K n[        R                  R                  [        R                  R	                  [        R                  R	                  UR
                  5      5      5      n[        [        R                  5      mTR                  SS5      (       a  U[        R                  -   TS   -   TS'   OUTS'   UU 4S jnU" USS/5        SnU" SU/5        g )	Nr   r   r   c                 @  > [         R                  " [        R                  /U -   TR                  [         R
                  [         R                  TS9nUR                  5       u  p#UR                  5       nUS:w  a%  TR                  SUR                  SS5      -  5        g g r   r   r   s        r   r   >TestDistutilsSupport.check_setup_nested_py.<locals>.run_pythonF  r   r   r   r   zif 1:
            import nested.pycc_compiled_module as lib
            assert lib.get_const() == 42
            res = lib.ones(3)
            assert list(res) == [1.0, 1.0, 1.0]
            r^   r  r  s   `     @r   check_setup_nested_py*TestDistutilsSupport.check_setup_nested_py;  r
  r   c                 &    U R                  S5        g )Nzsetup_distutils.pyr  r2   s    r   test_setup_py_distutils,TestDistutilsSupport.test_setup_py_distutils[  s    01r   c                 &    U R                  S5        g )Nzsetup_distutils_nested.pyr  r2   s    r   test_setup_py_distutils_nested3TestDistutilsSupport.test_setup_py_distutils_nested^  s    ""#>?r   c                 &    U R                  S5        g )Nzsetup_setuptools.pyr  r2   s    r   test_setup_py_setuptools-TestDistutilsSupport.test_setup_py_setuptoolsa  s    12r   c                 &    U R                  S5        g )Nzsetup_setuptools_nested.pyr  r2   s    r   test_setup_py_setuptools_nested4TestDistutilsSupport.test_setup_py_setuptools_nestedd  s    ""#?@r   )r/   r   )r$   r%   r&   r'   r3   r  r  r  r  r  r  r)   r   r   s   @r   r   r   
  s0    6!@!@2@3A Ar   r   __main__)*rG   rR   r   r   rb   r<   r0   unittestr   ctypesnumpyr   llvmlite.bindingbindingr   
numba.corer   numba.tests.supportr   r   r   r	   r
   r   r   _skip_reasonskipIfrt   rs   r(   r=   r_   r  r`   r   r   r   r+   rJ   r   r$   mainr   r   r   <module>r)     s#     	   
      W W W  CLL$;$;E$B B ,. GGOOBGGOOH56	3 ; ; ;$(8 (@ l1\ l1  l1^ YA8 YA  YAx zMMO r   