Ë
    èÿæiP+  ã                   ó"  — 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	Z	d dl
mZ d dlmZ d dlmZ d dlmZmZ  G d„ de«      Z G d	„ d
e«      Z G d„ de«      Z G d„ de«      Zd„ Zd„ Zd„ Zd„ Zedk(  r ej:                  «        yy)é    N)Úget_context)ÚTypingError)ÚTestCase)Úresolve_dispatcher_from_str©ÚdumpsÚloadsc                   ó¢   — e Zd Zd„ Zej
                  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d„ Zy)ÚTestDispatcherPicklingc                 ó^   — t        t        j                  dz   «      D ]  } ||g|¢­i |¤Ž Œ y )Né   )ÚrangeÚpickleÚHIGHEST_PROTOCOL)ÚselfÚmethÚargsÚkwargsÚprotos        úo/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/numba/tests/test_serialize.pyÚrun_with_protocolsz)TestDispatcherPickling.run_with_protocols   s.   € Üœ6×2Ñ2°QÑ6Ö7ˆEÙ�Ð(˜Ò( Ó(ñ 8ó    c              #   ó®   K  — d}t        |«      }|j                  } t        |j                  «      |«      |_        	 d –— ||_        y # ||_        w xY w­w)NÚcpu)r   ÚtargetdescrÚtype)r   ÚhwstrÚdispatcher_clsÚ	old_descrs       r   Úsimulate_fresh_targetz,TestDispatcherPickling.simulate_fresh_target   sT   è ø€ àˆÜ4°UÓ;ˆØ"×.Ñ.ˆ	à%E¤T¨.×*DÑ*DÓ%EÀeÓ%LˆÔ"ð	3Ûð *3ˆNÕ&ø¨ˆNÕ&üs   ‚:A½A	 ÁAÁ		AÁAc                 óØ   ‡ ‡‡— ˆˆˆ fd„} ||«       t        j                  ||«      }‰ j                  «       5  t        j                  |«      } ||«       d d d «       y # 1 sw Y   y xY w)Nc                 óš   •— t        ‰t        «      r%t        ‰t        «      r ‰j                  ‰| g‰¢­Ž  y ‰j                   | ‰Ž ‰«       y )N)Ú
isinstancer   Ú
issubclassÚ	ExceptionÚassertRaisesÚassertPreciseEqual)Úfuncr   Úexpected_resultr   s    €€€r   Úcheck_resultz7TestDispatcherPickling.check_call.<locals>.check_result&   sB   ø€ Ü˜?¬DÔ1Ü˜´	Ô:Ø!�×!Ñ! /°4Ð?¸$Ô?à×'Ñ'©¨d¨°_ÕEr   )r   r   r    r	   )r   r   r(   r)   r   r*   ÚpickledÚnew_funcs   `  ``   r   Ú
check_callz!TestDispatcherPickling.check_call%   sQ   ú€ ö	Fñ 	�TÔÜ—,‘,˜t UÓ+ˆØ×'Ñ'Õ)Ü—|‘| GÓ,ˆHÙ˜Ô"÷ *×)Ñ)ús   ¹A Á A)c                 óˆ   — ddl m} | j                  | j                  |dd«       | j                  | j                  |dd«       y )Nr   )Úadd_with_sigé   ©r   é   )ç333333ó?gÍÌÌÌÌÌ@)Úserialize_usecasesr/   r   r-   )r   r/   s     r   Útest_call_with_sigz)TestDispatcherPickling.test_call_with_sig4   s5   € Ý4Ø×Ñ §¡°¸qÀ&ÔIà×Ñ §¡°¸qÀ*ÕMr   c                 óÄ   — ddl m} | j                  | j                  |dd«       | j                  | j                  |dd«       | j                  | j                  |dd«       y )	Nr   )Úadd_without_sigr0   r1   ç      @©r3   g333333@Úabc)ÚaÚbc)r4   r7   r   r-   )r   r7   s     r   Útest_call_without_sigz,TestDispatcherPickling.test_call_without_sig:   sM   € Ý7Ø×Ñ §¡°À!ÀVÔLØ×Ñ §¡°À#ÀzÔRà×Ñ §¡°À%ÈÕUr   c                 ó´   — ddl m} | j                  | j                  |dd«       | j                  | j                  |t        t        «       t        «       f«       y )Nr   )Úadd_nopythonr8   r9   )r4   r?   r   r-   r   Úobject)r   r?   s     r   Útest_call_nopythonz)TestDispatcherPickling.test_call_nopythonA   s@   € Ý4Ø×Ñ §¡°¸sÀJÔOà×Ñ §¡°¼{ÌVËXÔW]ÓW_ÐL`Õar   c                 óT   — ddl m} | j                  | j                  |t        d«       y )Nr   )Úadd_nopython_fail)r   é   )r4   rC   r   r-   r   )r   rC   s     r   Útest_call_nopython_failz.TestDispatcherPickling.test_call_nopython_failG   s   € Ý9à×Ñ §¡Ð1BÄKÐQWÕXr   c                 óL   — ddl m} | j                  | j                  |dd«       y )Nr   )Úget_global_objmodeg      @)g      @)r4   rG   r   r-   )r   rG   s     r   Útest_call_objmode_with_globalz4TestDispatcherPickling.test_call_objmode_with_globalL   s   € Ý:Ø×Ñ §¡Ð1CÀSÈ&ÕQr   c                 ó\   — ddl m}  |d«      }| j                  | j                  |dd«       y )Nr   ©Úclosureé   )rD   é   )r4   rK   r   r-   )r   rK   Úinners      r   Útest_call_closurez(TestDispatcherPickling.test_call_closureP   s&   € Ý/Ù˜“
ˆØ×Ñ §¡°¸¸6ÕBr   c                 ó\   — ddl m}  |di |¤Ž}| j                  | j                  |dd«       y )Nr   )Úclosure_with_globalsg      @©ç      @)ç      @)r4   rQ   r   r-   )r   Újit_argsrQ   rN   s       r   Úcheck_call_closure_with_globalsz6TestDispatcherPickling.check_call_closure_with_globalsU   s*   € Ý<Ù$Ñ5¨HÑ5ˆØ×Ñ §¡°¸¸VÕDr   c                 ó(   — | j                  d¬«       y )NT)Únopython©rV   ©r   s    r   Ú'test_call_closure_with_globals_nopythonz>TestDispatcherPickling.test_call_closure_with_globals_nopythonZ   ó   € Ø×,Ñ,°dÐ,Õ;r   c                 ó(   — | j                  d¬«       y )NT)ÚforceobjrY   rZ   s    r   Ú&test_call_closure_with_globals_objmodez=TestDispatcherPickling.test_call_closure_with_globals_objmode]   r\   r   c                 ó\   — ddl m}  |d«      }| j                  | j                  |dd«       y )Nr   )Úclosure_calling_other_functionrT   g      &@)rS   g      @)r4   ra   r   r-   )r   ra   rN   s      r   Ú(test_call_closure_calling_other_functionz?TestDispatcherPickling.test_call_closure_calling_other_function`   s'   € ÝFÙ.¨sÓ3ˆØ×Ñ §¡°¸¸jÕIr   c                 ó\   — ddl m}  |d«      }| j                  | j                  |dd«       y )Nr   ©Úclosure_calling_other_closurerT   g       @rR   )r4   re   r   r-   )r   re   rN   s      r   Ú'test_call_closure_calling_other_closurez>TestDispatcherPickling.test_call_closure_calling_other_closuree   s'   € ÝEÙ-¨cÓ2ˆØ×Ñ §¡°¸¸VÕDr   c                 óL   — ddl m} | j                  | j                  |dd«       y )Nr   )Údyn_funcé$   ©rL   )r4   rh   r   r-   )r   rh   s     r   Útest_call_dyn_funcz)TestDispatcherPickling.test_call_dyn_funcj   s   € Ý0à×Ñ §¡°¸2¸tÕDr   c                 óL   — ddl m} | j                  | j                  |dd«       y )Nr   )Údyn_func_objmoderi   rj   )r4   rm   r   r-   )r   rm   s     r   Útest_call_dyn_func_objmodez1TestDispatcherPickling.test_call_dyn_func_objmodeo   s   € Ý8à×Ñ §¡Ð1AÀ2ÀtÕLr   c                 ó\   — ddl m}  |d«      }| j                  | j                  ||d«       y )Nr   )Úget_renamed_moduleç        )rq   )r4   rp   r   r-   )r   rp   Úexpecteds      r   Útest_renamed_modulez*TestDispatcherPickling.test_renamed_modulet   s-   € Ý:ñ & cÓ*ˆØ×Ñ §¡Ð1CØ (¨&õ	2r   c                 óÊ   — ddl m}  |d«      }t        j                  |«      } dj                  di t        «       ¤Ž}t        j                  t        j                  d|g«       y)z}
        Check that reconstructing doesn't depend on resources already
        instantiated in the original process.
        r   rd   rT   z±if 1:
            import pickle

            data = {pickled!r}
            func = pickle.loads(data)
            res = func(4.0)
            assert res == 8.0, res
            ú-cN© )
r4   re   r   r   ÚformatÚlocalsÚ
subprocessr-   ÚsysÚ
executable)r   re   r(   r+   Úcodes        r   Útest_other_processz)TestDispatcherPickling.test_other_process|   s_   € õ
 	FÙ,¨SÓ1ˆÜ—,‘,˜tÓ$ˆðð ÷ ‘ñ#ô  ›ñ#ˆô 	×ÑœsŸ~™~¨t°TÐ:Õ;r   c                 ór  — ddl m}  |d«      }t        j                  |«      } |d«      }t        j                  |«      }t        j                  |«      }t        j                  |«      }t        j                  |«      }| j                  ||«       | j                   |dd«      d«       |j                  «        | j                   |dd«      d	«       | j                  ||«       | j                   |dd«      d	«        |d
«      } |dd«       t        j                  |«      }~t        j                  «        t        j                  |«      }t        j                  |«      }| j                  ||«       | j                   |dd«      d«       |j                  «        | j                   |dd«      d«       y)z¼
        Check that deserializing the same function multiple times re-uses
        the same dispatcher object.

        Note that "same function" is intentionally under-specified.
        r   rJ   r0   rL   rD   rM   é
   r2   é   é   é*   é+   é   é   N)r4   rK   r   r   r	   ÚassertIsÚassertEqualÚdisable_compileÚassertIsNotÚgcÚcollect)	r   rK   r(   r+   Úfunc2Úpickled2ÚfÚgÚhs	            r   Ú
test_reusez!TestDispatcherPickling.test_reuseŽ   s[  € õ 	0Ù�q‹zˆÜ—,‘,˜tÓ$ˆÙ˜“
ˆÜ—<‘< Ó&ˆä�L‰L˜Ó!ˆÜ�L‰L˜Ó!ˆÜ�L‰L˜Ó"ˆØ�‰�a˜ÔØ×Ñ™˜1˜a› "Ô%Ø	×ÑÔØ×Ñ™˜1˜a› "Ô%à×Ñ˜˜AÔØ×Ñ™˜1˜a› "Ô%ñ �q‹zˆÙˆR�ŒÜ—,‘,˜tÓ$ˆØÜ
�
‰
Œä�L‰L˜Ó!ˆÜ�L‰L˜Ó!ˆØ�‰�a˜ÔØ×Ñ™˜1˜a› "Ô%Ø	×ÑÔØ×Ñ™˜1˜a› "Õ%r   c                 óT   — d}t        j                  t        j                  d|g«       y)zN
        The imp module was deprecated in v3.4 in favour of importlib
        a  if 1:
            import pickle
            import warnings
            with warnings.catch_warnings(record=True) as w:
                warnings.simplefilter('always', DeprecationWarning)
                from numba import njit
                @njit
                def foo(x):
                    return x + 1
                foo(1)
                serialized_foo = pickle.dumps(foo)
            for x in w:
                if 'serialize.py' in x.filename:
                    assert "the imp module is deprecated" not in x.msg
        ru   N)ry   r-   rz   r{   )r   r|   s     r   Útest_imp_deprecationz+TestDispatcherPickling.test_imp_deprecation´   s$   € ðˆô 	×ÑœsŸ~™~¨t°TÐ:Õ;r   N)Ú__name__Ú
__module__Ú__qualname__r   Ú
contextlibÚcontextmanagerr    r-   r5   r=   rA   rE   rH   rO   rV   r[   r_   rb   rf   rk   rn   rs   r}   r‘   r“   rv   r   r   r   r      s‡   „ ò)ð ×Ññ3ó ð3ò#òNòVòbòYò
RòCò
Eò
<ò<òJò
Eò
Eò
Mò
2ò<ò$$&óL<r   r   c                   ó   — e Zd Zd„ Zy)ÚTestSerializationMiscc                 óø   — ddl m} t        «       }t        j                  |«      }t        |«      } |t        |«      ||«      }| j                  ||«        |t        |«      ||«      }| j                  ||«       y )Nr   )Ú_numba_unpickle)	Únumba.core.serializerœ   r@   r   r   ÚhashÚidr‰   r†   )r   rœ   Ú
random_objÚbytebufÚhashedÚgot1Úgot2s          r   Útest_numba_unpicklez)TestSerializationMisc.test_numba_unpickleË   sf   € å8ä“Xˆ
Ü—,‘,˜zÓ*ˆÜ�jÓ!ˆáœr *›~¨w¸Ó?ˆà×Ñ˜˜zÔ*Ùœr *›~¨w¸Ó?ˆà�‰�d˜DÕ!r   N)r”   r•   r–   r¥   rv   r   r   rš   rš   Ê   s   „ ó"r   rš   c                   ó^   — e Zd ZdZdZd„ Z ej                  e dk(  d«      d„ «       Zd„ Z	d„ Z
y	)
ÚTestCloudPickleIssueszOThis test case includes issues specific to the cloudpickle implementation.
    Fc                 ó¬   ‡ ‡—  G d„ d«      Šˆfd„}ˆˆ fd„}t        ‰«      } |«         |«        t        |«        |«        t        |«        |«        y )Nc                   ó   — e Zd ZdZy)úITestCloudPickleIssues.test_dynamic_class_reset_on_unpickle.<locals>.KlassN©r”   r•   r–   Úclassvarrv   r   r   ÚKlassrª   â   ó   „ Ø‰Hr   r­   c                  ó   •— d‰ _         y ©Néd   )r¬   ©r­   s   €r   ÚmutatorzKTestCloudPickleIssues.test_dynamic_class_reset_on_unpickle.<locals>.mutatorå   s
   ø€ Ø ˆE�Nr   c                  ó>   •— ‰j                  ‰ j                  d«       y r°   )r‡   r¬   )r­   r   s   €€r   ÚcheckzITestCloudPickleIssues.test_dynamic_class_reset_on_unpickle.<locals>.checkè   s   ø€ Ø×Ñ˜UŸ^™^¨SÕ1r   r   )r   r³   rµ   Úsavedr­   s   `   @r   Ú$test_dynamic_class_reset_on_unpicklez:TestCloudPickleIssues.test_dynamic_class_reset_on_unpickleà   sD   ù€ ÷	ñ 	ô	!õ	2ô �e“ˆÙŒ	ÙŒÜˆeŒáŒÜˆeŒÙ�r   Ú__main__z*Test cannot run as when module is __main__c                 óÂ   — t        d«      }|j                  t        ¬«      }|j                  «        |j	                  d¬«       | j                  |j                  d«       y )NÚspawn)Útargeté<   ©Útimeoutr   )r   ÚProcessÚ"check_main_class_reset_on_unpickleÚstartÚjoinr‡   Úexitcode)r   ÚmpÚprocs      r   Ú!test_main_class_reset_on_unpicklez7TestCloudPickleIssues.test_main_class_reset_on_unpickleô   sJ   € ô ˜Ó!ˆØ�z‰zÔ!CˆzÓDˆØ�
‰
ŒØ�	‰	˜"ˆ	ÔØ×Ñ˜Ÿ™¨Õ*r   c                 óð   —  G d„ d«      }t        |«      }t        d«      }|j                  t        |f¬«      }|j	                  «        |j                  d¬«       | j                  |j                  d«       y )Nc                   ó   — e Zd ZdZy)úRTestCloudPickleIssues.test_dynamic_class_reset_on_unpickle_new_proc.<locals>.KlassNr«   rv   r   r   r­   rÉ   ÿ   r®   r   r­   rº   )r»   r   r¼   r½   r   )r   r   r¿   Ú!check_unpickle_dyn_class_new_procrÁ   rÂ   r‡   rÃ   )r   r­   r¶   rÄ   rÅ   s        r   Ú-test_dynamic_class_reset_on_unpickle_new_proczCTestCloudPickleIssues.test_dynamic_class_reset_on_unpickle_new_procý   sc   € ÷	ñ 	ô �e“ˆô ˜Ó!ˆØ�z‰zÔ!BÈ%ÈˆzÓRˆØ�
‰
ŒØ�	‰	˜"ˆ	ÔØ×Ñ˜Ÿ™¨Õ*r   c                 ód   — t        j                  t        «      }| j                   |«       d«       y )N)r±   r±   )ÚnumbaÚnjitÚ
issue_7356r‡   )r   Úcfuncs     r   Útest_dynamic_class_issue_7356z3TestCloudPickleIssues.test_dynamic_class_issue_7356  s"   € Ü—
‘
œ:Ó&ˆØ×Ñ™› *Õ-r   N)r”   r•   r–   Ú__doc__Ú_numba_parallel_test_r·   ÚunittestÚskipIfrÆ   rË   rÑ   rv   r   r   r§   r§   Û   sG   „ ñà!Ðòð( €X‡_�_�X Ñ+ØAóCñ+óCð+ò+ó.r   r§   c                   ó   — e Zd ZdZy)ÚDynClassN)r”   r•   r–   r;   rv   r   r   r×   r×     s   „ à�Ar   r×   c                  ó  — t        j                  d¬«      5  dt        _        t        j                  } d d d «       t        j                  d¬«      5  t        j                  }d d d «        |fS # 1 sw Y   Œ<xY w# 1 sw Y    fS xY w)NÚintp)Úbeforer±   )Úafter)rÍ   Úobjmoder×   r;   )rÚ   rÛ   s     r   rÏ   rÏ     sb   € Ü	�‰˜fÖ	%ØŒŒ
Ü—‘ˆ÷ 
&ô 
�‰˜VÖ	$Ü—
‘
ˆ÷ 
%à�5ˆ=Ð÷ 
&Ð	%ú÷ 
%à�5ˆ=Ðús   —A.ÁA:Á.A7Á:Bc                  ó¼   — t        j                  dd¬«      } | d   }|j                  dk(  sJ ‚|j                  dk7  sJ ‚t	        |«      }d|_        t        ||«       y )Nz"numba.tests.cloudpickle_main_classr¸   )Úrun_namer­   r±   )ÚrunpyÚ
run_moduler•   r¬   r   Ú_check_dyn_class)Úglbsr­   r¶   s      r   rÀ   rÀ     sc   € ä×ÑØ,Øô€Dð
 �‰M€EØ×Ñ˜zÒ)Ð)Ð)Ø�>‰>˜SÒ Ð Ð Ü�%‹L€Eà€E„Nä�U˜EÕ"r   c                 ób   — t        | «      }|j                  dk7  sJ ‚d|_        t        || «       y r°   )r	   r¬   rá   )r¶   r­   s     r   rÊ   rÊ   0  s.   € Ü�%‹L€EØ�>‰>˜SÒ Ð Ð à€E„Nä�U˜EÕ"r   c                 ó¢   ‡ — ˆ fd„} |«        t        |«      }|‰ urt        d«      ‚ |«        t        |«      }|‰ urt        d«      ‚ |«        y )Nc                  ó:   •— ‰ j                   dk7  rt        d«      ‚y )Nr±   zCheck failed. Klass reset.)r¬   ÚAssertionErrorr²   s   €r   rµ   z_check_dyn_class.<locals>.check:  s    ø€ Ø�>‰>˜SÒ Ü Ð!=Ó>Ð>ð !r   zExpected reuse)r	   ræ   )r­   r¶   rµ   Úloadeds   `   r   rá   rá   9  sS   ø€ ô?ñ 
„GÜ�5‹\€FØ�UÑÜÐ-Ó.Ð.á	„GÜ�5‹\€FØ�UÑÜÐ-Ó.Ð.Ù	…Gr   r¸   )r—   rŠ   r   rß   ry   rz   rÔ   Úmultiprocessingr   rÍ   Únumba.core.errorsr   Únumba.tests.supportr   Únumba.core.target_extensionr   Únumba.cloudpickler   r	   r   rš   r§   r@   r×   rÏ   rÀ   rÊ   rá   r”   Úmainrv   r   r   Ú<module>rî      sŽ   ðÛ Û 	Û Û Û Û 
Û Ý 'ã Ý )Ý (Ý Cß *ôv<˜Xô v<ôr"˜Hô "ô"3.˜Hô 3.ôlˆvô ò
ò#ò"#òð" ˆzÒØ€H‡M�M…Oð r   