§
    2@ÄjÐ  ã                   óÐ   — d dl Z d dlZd dlmZ d dlmZ d dlmZ d dlZ G d„ de	¦  «        Z
d„ Zd„ Z G d	„ d
e¦  «        Z G d„ de¦  «        Zedk    r ej        ¦   «          dS dS )é    N)Újit)Útypes)ÚTestCasec                   ó   — e Zd Zd„ ZdS )ÚDummyc                 ó   — |dz   S )Né   © )ÚselfÚothers     úOC:\Projects\Historical\venv\Lib\site-packages\numba/tests/test_func_lifetime.pyÚ__add__zDummy.__add__   s   € Ø�q‰yÐó    N)Ú__name__Ú
__module__Ú__qualname__r   r
   r   r   r   r   
   s#   € € € € € ðð ð ð ð r   r   c                 ó   — | dz   S ©Né   r
   ©Úxs    r   Úglobal_usecase1r      s   € Øˆq‰5€Lr   c                  ó   — t           dz   S r   )Ú
global_objr
   r   r   Úglobal_usecase2r      s   € Ý˜‰>Ðr   c                   óZ   — 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S )ÚTestFuncLifetimezP
    Test the lifetime of compiled function objects and their dependencies.
    c                 ó¸   — |                       t          |j        ¦  «        d¦  «         t          |j                             ¦   «         ¦  «        d         }|j        S )zV
        Get the single implementation (a C function object) of a dispatcher.
        r   r   )ÚassertEqualÚlenÚ	overloadsÚlistÚvaluesÚentry_point)r   Ú
dispatcherÚcress      r   Úget_implzTestFuncLifetime.get_impl   sO   € ð 	×Ò�˜ZÔ1Ñ2Ô2°AÑ6Ô6Ð6Ý�JÔ(×/Ò/Ñ1Ô1Ñ2Ô2°1Ô5ˆØÔÐr   c                 ó^  — d„ } t          di |¤Ž|¦  «        }|                       |d¦  «        d¦  «         |                      |¦  «        }d„ |||j        fD ¦   «         }d x}x}x}}t	          j        ¦   «          |                      d„ |D ¦   «         d gt          |¦  «        z  ¦  «         d S )Nc                 ó   — | dz   S r   r
   r   s    r   Úfz5TestFuncLifetime.check_local_func_lifetime.<locals>.f%   s   € Ø�q‘5ˆLr   úint32(int32)r   é   c                 ó6   — g | ]}t          j        |¦  «        ‘ŒS r
   ©ÚweakrefÚref©Ú.0Úobjs     r   ú
<listcomp>z>TestFuncLifetime.check_local_func_lifetime.<locals>.<listcomp>1   s"   € ÐEÐEÐE S•”˜CÑ Ô ÐEÐEÐEr   c                 ó"   — g | ]} |¦   «         ‘ŒS r
   r
   ©r2   Úwrs     r   r4   z>TestFuncLifetime.check_local_func_lifetime.<locals>.<listcomp>4   ó   € Ð.Ð.Ð. 2˜"˜"™$œ$Ð.Ð.Ð.r   )r+   )r   ÚassertPreciseEqualr'   Ú__self__ÚgcÚcollectr   r    )r   Újitargsr*   Úc_fÚcfuncÚrefsr3   s          r   Úcheck_local_func_lifetimez*TestFuncLifetime.check_local_func_lifetime$   sÕ   € ð	ð 	ð 	ð -�cÐ,Ð, GÐ,Ð,¨QÑ/Ô/ˆØ×Ò   A¡¤¨Ñ*Ô*Ð*à—’˜cÑ"Ô"ˆð FÐE¨Q°°U´^Ð,DÐEÑEÔEˆØ $Ð$ˆÐ$ˆaÐ$�#˜Ý
Œ
‰ŒˆØ×ÒÐ.Ð.¨Ð.Ñ.Ô.°°½¸T¹¼Ñ0BÑCÔCÐCÐCÐCr   c                 ó2   — |                       d¬¦  «         d S ©NT)Úforceobj©rA   ©r   s    r   Útest_local_func_lifetimez)TestFuncLifetime.test_local_func_lifetime6   ó   € Ø×&Ò&°Ð&Ñ5Ô5Ð5Ð5Ð5r   c                 ó2   — |                       d¬¦  «         d S ©NT)ÚnopythonrE   rF   s    r   Útest_local_func_lifetime_npmz-TestFuncLifetime.test_local_func_lifetime_npm9   rH   r   c                 ó„  —  t          di |¤Žt          ¦  «        }|                       |d¦  «        d¦  «         |                      |¦  «        }t	          j        |¦  «        }d„ ||j        fD ¦   «         }d x}x}}t          j        ¦   «          |  	                    d„ |D ¦   «         d gt          |¦  «        z  ¦  «         d S )Nr   r,   c                 ó6   — g | ]}t          j        |¦  «        ‘ŒS r
   r.   r1   s     r   r4   z?TestFuncLifetime.check_global_func_lifetime.<locals>.<listcomp>C   s"   € ÐBÐBÐB S•”˜CÑ Ô ÐBÐBÐBr   c                 ó"   — g | ]} |¦   «         ‘ŒS r
   r
   r6   s     r   r4   z?TestFuncLifetime.check_global_func_lifetime.<locals>.<listcomp>F   r8   r   r
   )r   r   r9   r'   r/   r0   r:   r;   r<   r   r    )r   r=   r>   r?   r7   r@   r3   s          r   Úcheck_global_func_lifetimez+TestFuncLifetime.check_global_func_lifetime<   sÅ   € Ø�cˆnˆn�Gˆnˆn�_Ñ-Ô-ˆØ×Ò   A¡¤¨Ñ*Ô*Ð*à—’˜cÑ"Ô"ˆåŒ[˜ÑÔˆØBÐB¨S°%´.Ð,AÐBÑBÔBˆØ Ð ˆÐ ˆc�EÝ
Œ
‰ŒˆØ×ÒÐ.Ð.¨Ð.Ñ.Ô.°°½¸T¹¼Ñ0BÑCÔCÐCÐCÐCr   c                 ó2   — |                       d¬¦  «         d S rC   ©rP   rF   s    r   Útest_global_func_lifetimez*TestFuncLifetime.test_global_func_lifetimeH   ó   € Ø×'Ò'°Ð'Ñ6Ô6Ð6Ð6Ð6r   c                 ó2   — |                       d¬¦  «         d S rJ   rR   rF   s    r   Útest_global_func_lifetime_npmz.TestFuncLifetime.test_global_func_lifetime_npmK   rT   r   c                 óL  — t          ¦   «         a t          di |¤Žt          ¦  «        }|                       |¦   «         d¦  «         d„ |t          fD ¦   «         }d x}x}at          j        ¦   «          |                      d„ |D ¦   «         d gt          |¦  «        z  ¦  «         d S )Né   c                 ó6   — g | ]}t          j        |¦  «        ‘ŒS r
   r.   r1   s     r   r4   z>TestFuncLifetime.check_global_obj_lifetime.<locals>.<listcomp>X   s"   € Ð>Ð>Ð> S•”˜CÑ Ô Ð>Ð>Ð>r   c                 ó"   — g | ]} |¦   «         ‘ŒS r
   r
   r6   s     r   r4   z>TestFuncLifetime.check_global_obj_lifetime.<locals>.<listcomp>[   r8   r   r
   )	r   r   r   r   r9   r;   r<   r   r    )r   r=   r>   r@   r3   s        r   Úcheck_global_obj_lifetimez*TestFuncLifetime.check_global_obj_lifetimeN   s¬   € õ
 ‘W”Wˆ
à�cˆnˆn�Gˆnˆn�_Ñ-Ô-ˆØ×Ò  ¡¤ qÑ)Ô)Ð)à>Ð>¨Sµ*Ð,=Ð>Ñ>Ô>ˆØ!%Ð%ˆÐ%ˆc�JÝ
Œ
‰ŒˆØ×ÒÐ.Ð.¨Ð.Ñ.Ô.°°½¸T¹¼Ñ0BÑCÔCÐCÐCÐCr   c                 ó2   — |                       d¬¦  «         d S rC   )r[   rF   s    r   Útest_global_obj_lifetimez)TestFuncLifetime.test_global_obj_lifetime]   rH   r   c           	      ó  ‡— d„ } t          d	i |¤Ž|¦  «        Š‰                     ¦   «          ˆfd„} t          d	i |¤Ž|¦  «        }|                     ¦   «          |                       |d¦  «        d¦  «         d„ |‰|||                      ‰¦  «        j        |                      |¦  «        j        fD ¦   «         }dx}x}xŠx}}t          j        ¦   «          |                      d„ |D ¦   «         dgt          |¦  «        z  ¦  «         dS )
zƒ
        When a jitted function calls into another jitted function, check
        that everything is collected as desired.
        c                 ó   — | dz  S )Né
   r
   )Úas    r   Úmult_10z?TestFuncLifetime.check_inner_function_lifetime.<locals>.mult_10e   s   € Ø�r‘6ˆMr   ú
intp(intp)c                 ó    •—  ‰| dz   ¦  «        S )Né   r
   )r   Ú	c_mult_10s    €r   Údo_mathz?TestFuncLifetime.check_inner_function_lifetime.<locals>.do_mathk   s   ø€ Ø�9˜Q ™UÑ#Ô#Ð#r   r   é2   c                 ó6   — g | ]}t          j        |¦  «        ‘ŒS r
   r.   r1   s     r   r4   zBTestFuncLifetime.check_inner_function_lifetime.<locals>.<listcomp>s   s.   € ð ð ð  C�wŒ{˜3ÑÔð ð ð r   Nc                 ó"   — g | ]} |¦   «         ‘ŒS r
   r
   )r2   Úws     r   r4   zBTestFuncLifetime.check_inner_function_lifetime.<locals>.<listcomp>z   s   € Ð+Ð+Ð+ !˜!˜!™#œ#Ð+Ð+Ð+r   )rc   )r   Údisable_compiler   r'   r:   r;   r<   r    )r   r=   rb   rg   Ú	c_do_mathÚwrsr3   rf   s          @r   Úcheck_inner_function_lifetimez.TestFuncLifetime.check_inner_function_lifetime`   sV  ø€ ð
	ð 	ð 	ð 1•CÐ0Ð0¨Ð0Ð0°Ñ9Ô9ˆ	Ø×!Ò!Ñ#Ô#Ð#ð	$ð 	$ð 	$ð 	$ð 	$ð 1•CÐ0Ð0¨Ð0Ð0°Ñ9Ô9ˆ	Ø×!Ò!Ñ#Ô#Ð#à×Ò˜˜ 1™œ rÑ*Ô*Ð*ðð Ø˜ G¨YØ—’˜iÑ(Ô(Ô1Ø—’˜iÑ(Ô(Ô1ððñ ô ˆð
 ;?Ð>ˆÐ>ˆgÐ>˜	Ð> G¨iÝ
Œ
‰ŒˆØ×ÒÐ+Ð+ sÐ+Ñ+Ô+¨d¨Vµc¸#±h´hÑ->Ñ?Ô?Ð?Ð?Ð?r   c                 ó2   — |                       d¬¦  «         d S rC   ©ro   rF   s    r   Útest_inner_function_lifetimez-TestFuncLifetime.test_inner_function_lifetime|   ó   € Ø×*Ò*°DÐ*Ñ9Ô9Ð9Ð9Ð9r   c                 ó2   — |                       d¬¦  «         d S rJ   rq   rF   s    r   Ú test_inner_function_lifetime_npmz1TestFuncLifetime.test_inner_function_lifetime_npm   rs   r   N)r   r   r   Ú__doc__r'   rA   rG   rL   rP   rS   rV   r[   r]   ro   rr   ru   r
   r   r   r   r      sÞ   € € € € € ðð ð ð  ð  ðDð Dð Dð$6ð 6ð 6ð6ð 6ð 6ð
Dð 
Dð 
Dð7ð 7ð 7ð7ð 7ð 7ðDð Dð Dð6ð 6ð 6ð@ð @ð @ð8:ð :ð :ð:ð :ð :ð :ð :r   r   c                   ó   — e Zd Zd„ ZdS )ÚTestLifeTimeIssuec                 ó2  ‡	— ddl m} dd lŠ	|d„ ¦   «         }|ˆ	fd„¦   «         }‰	                     ddggg¦  «        }‰	                     ddgg¦  «        } |¦   «         } ||d         |¦  «          |¦   «         } ||d         |¦  «          |¦   «         }d S )Nr   )Únjitc                 ó<   — |j         d         }|dk    r|d         }dS )Nr   )Úshape)ÚpointÚpolygonsÚnum_polygonsÚintentionally_unused_variables       r   Úis_point_in_polygonsz@TestLifeTimeIssue.test_double_free.<locals>.is_point_in_polygonsŠ   s(   € à#œ>¨!Ô,ˆLØ˜qÒ Ð à08¸´Ð-Ø�1r   c                  ó<   •— ‰                       d‰ j        ¬¦  «        S )Nr`   )Údtype)ÚemptyÚint64)Únps   €r   Údummyz1TestLifeTimeIssue.test_double_free.<locals>.dummy•   s   ø€ à—8’8˜B b¤h�8Ñ/Ô/Ð/r   r   g      ø¿g      à?)Únumbarz   ÚnumpyÚarray)
r   rz   r�   r‡   r~   Úpointsra   ÚbÚcr†   s
            @r   Útest_double_freez"TestLifeTimeIssue.test_double_free„   sæ   ø€ ØÐÐÐÐÐØÐÐÐð 
ð	ð 	ñ 
Œð	ð 
ð	0ð 	0ð 	0ð 	0ñ 
Œð	0ð —8’8˜q !˜f˜X˜JÑ'Ô'ˆØ—’˜D #˜;˜-Ñ(Ô(ˆØˆE‰GŒGˆØÐ˜V AœY¨Ñ1Ô1Ð1ØˆE‰GŒGˆàÐ˜V AœY¨Ñ1Ô1Ð1ØˆE‰GŒGˆˆˆr   N)r   r   r   rŽ   r
   r   r   rx   rx   ƒ   s#   € € € € € ðð ð ð ð r   rx   Ú__main__)r;   r/   rˆ   r   Ú
numba.corer   Únumba.tests.supportr   ÚunittestÚobjectr   r   r   r   rx   r   Úmainr
   r   r   ú<module>r•      s"  ðØ 	€	€	€	Ø €€€à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø (Ð (Ð (Ð (Ð (Ð (Ø €€€ðð ð ð ð ˆFñ ô ð ðð ð ðð ð ði:ð i:ð i:ð i:ð i:�xñ i:ô i:ð i:ðXð ð ð ð ˜ñ ô ð ð@ ˆzÒÐØ€H„M�O„O€O€O€Oð Ðr   