Ë
    èÿæiÔ;  ã                   ó�  — 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m	Z	 d dl
mZmZ d dlmZ d dlmZ d dlmZmZ d dlmZmZmZ  G d	„ d
e«      Z G d„ de«      Z G d„ de«      Zd„ Zd„ Zd„ Zd„ Zd„ Z d„ Z! G d„ de"«      Z#d„ Z$d„ Z%d„ Z&d„ Z'd„ Z(d„ Z) G d„ de«      Z* G d„ d ee«      Z+e,d!k(  r ejZ                  «        yy)"é    N)Ú	takewhile)ÚnjitÚjit)ÚCompilerBaseÚDefaultPassBuilder)Ú
PreserveIR)ÚIRLegalization)ÚtypesÚir)ÚTestCaseÚoverride_configÚSerialMixinc                   ó   — e Zd Zd„ Zd„ Zd„ Zy)Ú_Dummyc                 óB   — || _         || _        |j                  | «       y ©N)ÚrecorderÚnameÚ
_add_dummy)Úselfr   r   s      úr/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/numba/tests/test_obj_lifetime.pyÚ__init__z_Dummy.__init__   s   € Ø ˆŒØˆŒ	Ø×Ñ˜DÕ!ó    c                 ó„   — t        |t        «      sJ ‚t        | j                  | j                  ›d|j                  ›�«      S )Nz + )Ú
isinstancer   r   r   )r   Úothers     r   Ú__add__z_Dummy.__add__   s0   € Ü˜%¤Ô(Ð(Ð(Ü�d—m‘m°$·)³)¸U¿ZºZÐ%HÓIÐIr   c                 óH   — t        | j                  d| j                  z  «      S )Nziter(%s))Ú_DummyIteratorr   r   ©r   s    r   Ú__iter__z_Dummy.__iter__   s   € Ü˜dŸm™m¨Z¸$¿)¹)Ñ-CÓDÐDr   N)Ú__name__Ú
__module__Ú__qualname__r   r   r!   © r   r   r   r      s   „ ò"ò
JóEr   r   c                   ó   — e Zd ZdZd„ ZeZy)r   r   c                 ó´   — | j                   dk\  rt        ‚| xj                   dz  c_         t        | j                  | j                  ›d| j                   ›�«      S )Né   é   Ú#)ÚcountÚStopIterationr   r   r   r    s    r   Ú__next__z_DummyIterator.__next__#   s>   € Ø�:‰:˜Š?ÜÐØ�
Š
�a‰�
Ü�d—m‘m°·	³	¸4¿:º:Ð%FÓGÐGr   N)r"   r#   r$   r+   r-   Únextr%   r   r   r   r      s   „ à€EòHð �Dr   r   c                   óR   — e Zd ZdZd„ Zd„ Zd„ ZeZd„ Zd„ Z	e
d„ «       Ze
d„ «       Zy	)
ÚRefRecorderz˜
    An object which records events when instances created through it
    are deleted.  Custom events can also be recorded to aid in
    diagnosis.
    c                 ó\   — t        j                  t        «      | _        g | _        i | _        y r   )ÚcollectionsÚdefaultdictÚintÚ_countsÚ_eventsÚ_wrsr    s    r   r   zRefRecorder.__init__3   s"   € Ü"×.Ñ.¬sÓ3ˆŒØˆŒØˆ�	r   c                 ó   — t        | |«      S )zK
        Make an object whose deletion will be recorded as *name*.
        )r   )r   r   s     r   Ú
make_dummyzRefRecorder.make_dummy8   s   € ô �d˜DÓ!Ð!r   c                 óv   — t        j                  || j                  «      }|j                  | j                  |<   y r   )ÚweakrefÚrefÚ_on_disposalr   r7   )r   ÚdummyÚwrs      r   r   zRefRecorder._add_dummy>   s)   € Ü�[‰[˜ × 1Ñ 1Ó2ˆØŸ
™
ˆ�	‰	�"Šr   c                 óœ   — | j                   |   dz   }|| j                   |<   | j                  j                  |j                  |¬«      «       y)zr
        Manually append *event* to the recorded events.
        *event* can be formatted using format().
        r)   )r+   N)r5   r6   ÚappendÚformat)r   Úeventr+   s      r   ÚmarkzRefRecorder.markD   sB   € ð
 —‘˜UÑ# aÑ'ˆØ#ˆ�‰�UÑØ�‰×Ñ˜EŸL™L¨u˜LÓ5Õ6r   c                 óp   — | j                   j                  |«      }| j                  j                  |«       y r   )r7   Úpopr6   rA   )r   r?   r   s      r   r=   zRefRecorder._on_disposalM   s&   € Ø�y‰y�}‰}˜RÓ ˆØ�‰×Ñ˜DÕ!r   c                 óJ   — | j                   D �cg c]	  } |«       ‘Œ c}S c c}w )zC
        A list of objects which haven't been deleted yet.
        )r7   )r   r?   s     r   ÚalivezRefRecorder.aliveQ   s"   € ð
  $ŸyšyÓ)™y˜‘•˜yÑ)Ð)ùÒ)s   � c                 ó   — | j                   S )z,
        A list of recorded events.
        )r6   r    s    r   ÚrecordedzRefRecorder.recordedX   s   € ð
 �|‰|Ðr   N)r"   r#   r$   Ú__doc__r   r9   r   Ú__call__rD   r=   ÚpropertyrH   rJ   r%   r   r   r0   r0   ,   sO   „ ñòò
"ò#ð €Hò7ò"ð ñ*ó ð*ð ñó ñr   r0   c                 óŽ   —  | d«      } | d«      } | d«      }||z   }| j                  d«       ||z   }| j                  d«       |S )NÚaÚbÚcú--1--ú--2--©rD   )ÚrecrO   rP   rQ   Úds        r   Úsimple_usecase1rW   `   sL   € ÙˆC‹€AÙˆC‹€AÙˆC‹€AØ	ˆA‰€AØ‡H�HˆWÔØ	ˆA‰€AØ‡H�HˆWÔØ€Hr   c                 óT   —  | d«      } | d«      }| j                  d«       |}|}d }|S )NrO   rP   rR   rT   )rU   rO   rP   ÚxÚys        r   Úsimple_usecase2r[   j   s4   € ÙˆC‹€AÙˆC‹€AØ‡H�HˆWÔØ	€AØ	€AØ€AØ€Hr   c                 ó    —  | d«      } | d«      } | d«      }|}|D ]  }||z   }| j                  d«       Œ | j                  d«       ||z   }|S )NrO   rP   rQ   ú--loop bottom--ú--loop exit--rT   )rU   rO   rP   rQ   rY   rZ   s         r   Úlooping_usecase1r_   s   s^   € ÙˆC‹€AÙˆC‹€AÙˆC‹€AØ	€AÛˆØ�‰EˆØ�‰Ð"Õ#ð ð ‡H�Hˆ_ÔØ	ˆA‰€AØ€Hr   c                 ó”  —  | d«      } | d«      } | d«      }|D ]ˆ  }| j                  d«       ||z   }||z   }| j                  d«       |D ])  }| j                  d«       ||z   }| j                  d«       Œ+ | j                  d«       |r|z   }n n$| j                  d	«       ŒŠ | j                  d
«       | j                  d«       |S )NrO   rP   Úcumú--outer loop top--z--inner loop entry #{count}--z--inner loop top #{count}--z--inner loop bottom #{count}--z--inner loop exit #{count}--z--outer loop bottom #{count}--ú--outer loop else--ú--outer loop exit--rT   )rU   rO   rP   ra   rY   ÚzrZ   s          r   Úlooping_usecase2rf      sÎ   € ÙˆC‹€AÙˆC‹€AÙ
ˆe‹*€CÛˆØ�‰Ð%Ô&Ø�A‰gˆØ�‰EˆØ�‰Ð0Ô1ÛˆAØ�H‰HÐ2Ô3Ø˜‘'ˆCØ�H‰HÐ5Õ6ð ð 	�‰Ð/Ô0ÙØ�a‘%‰Cñ Ø�‰Ð1Õ2ð ð" 	�‰Ð&Ô'Ø‡H�HÐ"Ô#Ø€Jr   c              #   ó<   K  —  | d«      } | d«      }|–— |–— y ­w©NrO   rP   r%   ©rU   rO   rP   s      r   Úgenerator_usecase1rj   ˜   s"   è ø€ ÙˆC‹€AÙˆC‹€AØ
‚GØ
ƒGùs   ‚c              #   óJ   K  —  | d«      } | d«      }|D ]  }|–— Œ |–— y ­wrh   r%   )rU   rO   rP   rY   s       r   Úgenerator_usecase2rl   ž   s,   è ø€ ÙˆC‹€AÙˆC‹€AÛˆØ‹ð à
ƒGùs   ‚!#c                   ó   — e Zd Zy)ÚMyErrorN)r"   r#   r$   r%   r   r   rn   rn   ¦   s   „ Ør   rn   c                 ó   — t        | «      ‚r   ©rn   )rY   s    r   Údo_raiserq   ©   s   € Ü
�!‹*Ðr   c                 ór   —  | d«      } | d«      } | d«      }|rt        d«        | d«      }||z    |z    y )NrO   rP   rV   ÚfoorQ   ©rq   )rU   rO   rP   rV   rQ   s        r   Úraising_usecase1ru   ¬   s>   € ÙˆC‹€AÙˆC‹€AÙˆC‹€AÙÜ�ŒÙ�‹HˆØ	ˆAŠØˆƒEr   c                 óX   —  | d«      } | d«      }|r | d«      }t        |«       |z    y )NrO   rP   rQ   rt   )rU   rO   rP   rQ   s       r   Úraising_usecase2rw   ¶   s.   € ÙˆC‹€AÙˆC‹€AÙÙ�‹HˆÜ�ŒØˆƒEr   c                 ó>   —  | d«      } | d«      }|rt        |«      ‚y rh   rp   ri   s      r   Úraising_usecase3ry   ¾   s&   € ÙˆC‹€AÙˆC‹€AÙÜ�a‹jÐð 	r   c                 óL  — d}t        |«      D ]ƒ  }| j                  t        |«      «       d}t        |«      D ]  }  y |dk  rŒ7|dk(  r&t        |«      D ]  }|c c S  | j                  d«       | j                  d«       | j                  d«       Œ… | j                  d«       y)zN
    This test reveal a bug that there is a del on uninitialized variable
    é   r   é   ÚFAILEDÚOKéÿÿÿÿ)ÚrangerD   Ústr)rU   ÚnÚiÚjs       r   Údel_before_definitionr…   Å   s—   € ð 	
€AÜ�1ŽXˆØ�‰”�Q“ÔØˆÜ�q–ˆAÚð ð �1ŠuØØ�a’Ü˜qž�AØ”Hð "à—‘˜Ô"Ø�H‰H�XÔØ�‰�Õð ð ‡H�HˆT„NØr   c              #   óp   K  — 	 | j                  d«       d–—  | d«      }|r| j                  d«       	 Œ2­w)z^
    test to reveal bug of invalid liveness when infinite loop has multiple
    backedge.
    ÚyieldNÚpÚbrarT   )rU   rˆ   s     r   Úinf_loop_multiple_back_edgerŠ   Ü   s9   è ø€ ð
 Ø�‰�ÔÛÙ�‹HˆÙØ�H‰H�UŒOØð ùs   ‚46c                   ól   — e Zd ZdZd„ Zd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)ÚTestObjLifetimezH
    Test lifetime of Python objects inside jit-compiled functions.
    c                 óL   —  t        t        j                  fdd¬«      |«      }|S )NTF)ÚforceobjÚlooplift)r   r
   Úpyobject)r   ÚpyfuncÚcfuncs      r   ÚcompilezTestObjLifetime.compileï   s&   € ð F””U—^‘^Ð%°¸uÔEÀfÓMˆØˆr   Nc                 ó²   — t        «       }| j                  |«      }|�$| j                  |«      5   ||«       d d d «       |S  ||«       |S # 1 sw Y   |S xY wr   )r0   r“   ÚassertRaises)r   r‘   ÚraisesrU   r’   s        r   Úcompile_and_recordz"TestObjLifetime.compile_and_recordõ   sY   € Ü‹mˆØ—‘˜VÓ$ˆØÐØ×"Ñ" 6Õ*Ù�c”
÷ +ð ˆ
ñ �#ŒJØˆ
÷	 +ð ˆ
ús   ¯	AÁAc                 ó¾   — g }|j                   }t        |«      }|D ])  }||v sŒ|j                  |«       |j                  |«       Œ+ | j	                  ||d|›�«       y)zk
        Check that the *expected* markers occur in that order in *rec*'s
        recorded events.
        z%the full list of recorded events is: N)rJ   ÚlistrA   ÚremoveÚassertEqual)r   rU   ÚexpectedÚactualrJ   Ú	remainingrV   s          r   ÚassertRecordOrderz!TestObjLifetime.assertRecordOrderÿ   sa   € ð
 ˆØ—<‘<ˆÜ˜“Nˆ	ãˆAØ�IŠ~Ø—‘˜aÔ à× Ñ  Õ#ð	 ð
 	×Ñ˜¡ÙFNÐPõ	Rr   c                 óÜ   — | j                  t        «      }| j                  |j                  «       | j	                  |g d¢«       | j	                  |g d¢«       | j	                  |g d¢«       y )N)rO   rP   rR   )rO   rQ   rR   )rR   zb + crS   )r—   rW   ÚassertFalserH   rŸ   ©r   rU   s     r   Útest_simple1zTestObjLifetime.test_simple1  sW   € Ø×%Ñ%¤oÓ6ˆØ×Ñ˜Ÿ™Ô#Ø×Ñ˜sÒ$7Ô8Ø×Ñ˜sÒ$7Ô8Ø×Ñ˜sÒ$?Õ@r   c                 óŒ   — | j                  t        «      }| j                  |j                  «       | j	                  |g d¢«       y )N)rP   rR   rO   )r—   r[   r¡   rH   rŸ   r¢   s     r   Útest_simple2zTestObjLifetime.test_simple2  s5   € Ø×%Ñ%¤oÓ6ˆØ×Ñ˜Ÿ™Ô#Ø×Ñ˜sÒ$7Õ8r   c                 ó´   — | j                  t        «      }| j                  |j                  «       | j	                  |g d¢«       | j	                  |g d¢«       y )N)rO   rP   r^   rQ   )ú	iter(a)#1r]   ú	iter(a)#2r]   ú	iter(a)#3r]   úiter(a)r^   )r—   r_   r¡   rH   rŸ   r¢   s     r   Útest_looping1zTestObjLifetime.test_looping1  sK   € Ø×%Ñ%Ô&6Ó7ˆØ×Ñ˜Ÿ™Ô#à×Ñ˜sÒ$DÔEà×Ñ˜sò %'õ 	(r   c                 ó,  — | j                  t        «      }| j                  |j                  «       | j	                  |ddg«       | j	                  |g d¢«       | j	                  |g d¢«       | j	                  |g d¢«       | j	                  |ddg«       y )NrO   rb   )rª   rc   rd   )úiter(b)z--inner loop exit #1--r­   z--inner loop exit #2--r­   z--inner loop exit #3--)r§   z--inner loop entry #1--r¨   z--inner loop entry #2--r©   z--inner loop entry #3--ziter(a)#1 + iter(a)#1z--outer loop bottom #1--)r—   rf   r¡   rH   rŸ   r¢   s     r   Útest_looping2zTestObjLifetime.test_looping2(  s™   € Ø×%Ñ%Ô&6Ó7ˆØ×Ñ˜Ÿ™Ô#à×Ñ˜s SÐ*>Ð$?Ô@à×Ñ˜sò %<ô 	=à×Ñ˜sò %'ô 	(ð
 	×Ñ˜sò %'ô 	(ð
 	×Ñ˜sÐ%<Ø%?ð%'õ 	(r   c                 ó  — | j                  |«      }t        «       }| j                  |«      5   ||«      }t        |«       | j	                  |j
                  «       t        |«       | j                  |j
                  «       d d d «       t        «       }| j                  |«      5   ||«      }~t        j                  «        | j                  |j
                  «       d d d «       t        «       }| j                  |«      5   ||«      }t        |«       | j	                  |j
                  «       ~t        j                  «        | j                  |j
                  «       d d d «       y # 1 sw Y   ŒèxY w# 1 sw Y   Œ˜xY w# 1 sw Y   y xY wr   )
r“   r0   ÚassertRefCountr.   Ú
assertTruerH   r™   r¡   ÚgcÚcollect)r   Úgenfuncr’   rU   Úgens        r   Úexercise_generatorz"TestObjLifetime.exercise_generator>  s  € Ø—‘˜WÓ%ˆä‹mˆØ× Ñ  Õ%Ù˜“*ˆCÜ�ŒIØ�O‰O˜CŸI™IÔ&Ü�ŒIØ×Ñ˜SŸY™YÔ'÷ &ô ‹mˆØ× Ñ  Õ%Ù˜“*ˆCØÜ�J‰JŒLØ×Ñ˜SŸY™YÔ'÷	 &ô ‹mˆØ× Ñ  Õ%Ù˜“*ˆCÜ�ŒIØ�O‰O˜CŸI™IÔ&ØÜ�J‰JŒLØ×Ñ˜SŸY™YÔ'÷ &Ð%÷ &Ð%ú÷ &Ð%ú÷ &Ð%ús%   ­AE)Â%9E5ÄAFÅ)E2Å5E>ÆF
c                 ó.   — | j                  t        «       y r   )r¶   rj   r    s    r   Útest_generator1zTestObjLifetime.test_generator1Y  ó   € Ø×ÑÔ 2Õ3r   c                 ó.   — | j                  t        «       y r   )r¶   rl   r    s    r   Útest_generator2zTestObjLifetime.test_generator2\  r¹   r   c                 ój   — | j                  t        «      }| j                  |j                  g d¢«       y )N)Ú0Ú1Ú2)r—   r…   r›   rJ   r¢   s     r   Útest_del_before_definitionz*TestObjLifetime.test_del_before_definition_  s'   € Ø×%Ñ%Ô&;Ó<ˆØ×Ñ˜Ÿ™¢Õ7r   c                 óÄ   — | j                  t        «      5  | j                  t        t        ¬«      }| j                  |j                  «       d d d «       y # 1 sw Y   y xY w©N)r–   )r°   rq   r—   ru   rn   r¡   rH   r¢   s     r   Útest_raising1zTestObjLifetime.test_raising1c  óD   € Ø× Ñ ¤Õ*Ø×)Ñ)Ô*:Ä7Ð)ÓKˆCØ×Ñ˜SŸY™YÔ'÷ +×*Ñ*úó   –7AÁAc                 óÄ   — | j                  t        «      5  | j                  t        t        ¬«      }| j                  |j                  «       d d d «       y # 1 sw Y   y xY wrÂ   )r°   rq   r—   rw   rn   r¡   rH   r¢   s     r   Útest_raising2zTestObjLifetime.test_raising2h  rÄ   rÅ   c                 óÄ   — | j                  t        «      5  | j                  t        t        ¬«      }| j	                  |j
                  «       d d d «       y # 1 sw Y   y xY wrÂ   )r°   rn   r—   ry   r¡   rH   r¢   s     r   Útest_raising3zTestObjLifetime.test_raising3m  sD   € Ø× Ñ ¤Õ)Ø×)Ñ)Ô*:Ä7Ð)ÓKˆCØ×Ñ˜SŸY™YÔ'÷ *×)Ñ)úrÅ   c                 óŠ  — | j                  t        «      }t        «       }t         ||«      «      }t	        |«       | j                  |j                  g «       t	        |«       | j                  |j                  g «       t	        |«       | j                  |j                  g «       | j                  |j                  g d¢«       y )N)r‡   rˆ   r‰   r‡   rˆ   r‰   r‡   )r“   rŠ   r0   Úiterr.   r›   rH   rJ   )r   r’   rU   Úiterators       r   Ú test_inf_loop_multiple_back_edgez0TestObjLifetime.test_inf_loop_multiple_back_edger  s�   € Ø—‘Ô8Ó9ˆÜ‹mˆÜ™˜c›
Ó#ˆÜˆXŒØ×Ñ˜Ÿ™ BÔ'ÜˆXŒØ×Ñ˜Ÿ™ BÔ'ÜˆXŒØ×Ñ˜Ÿ™ BÔ'Ø×Ñ˜Ÿ™ÚLõ	Nr   r   )r"   r#   r$   rK   r“   r—   rŸ   r£   r¥   r«   r®   r¶   r¸   r»   rÀ   rÃ   rÇ   rÉ   rÍ   r%   r   r   rŒ   rŒ   ê   sU   „ ñòóòRò"Aò9ò

(ò(ò,(ò64ò4ò8ò(ò
(ò
(ó
Nr   rŒ   c                   ó   — e Zd Zd„ Zd„ Zy)ÚTestExtendingVariableLifetimesc                 óú  ‡ — d„ }ˆ fd„} |d«      }g t         j                  fdz  ¢t         j                  ‘t         j                  ‘t         j                  ‘t         j                  ‘t         j                  ‘t         j                  ‘t         j                  ‘} |||«        |d«      }g t         j                  fdz  ¢t         j                  ‘t         j                  fdz  ¢t         j                  ‘} |||«       y )Nc                 óð   —  G d„ dt         «      }t        |¬«      d„ «       }t        d| «      5   |«        |j                  |j                  d      }|j
                  d   }d d d «       |S # 1 sw Y   S xY w)Nc                   ó   — e Zd Zd„ Zy)ú`TestExtendingVariableLifetimes.test_lifetime_basic.<locals>.get_ir.<locals>.IRPreservingCompilerc                 óš   — t        j                  | j                  «      }|j                  t        t
        «       |j                  «        |gS r   ©r   Údefine_nopython_pipelineÚstateÚadd_pass_afterr   r	   Úfinalize©r   Úpms     r   Údefine_pipelineszqTestExtendingVariableLifetimes.test_lifetime_basic.<locals>.get_ir.<locals>.IRPreservingCompiler.define_pipelinesŠ  ó6   € Ü+×DÑDÀTÇZÁZÓP�BØ×%Ñ%¤j´.ÔAØ—K‘K”MØ˜4�Kr   N©r"   r#   r$   rÜ   r%   r   r   ÚIRPreservingCompilerrÓ   ˆ  ó   „ ó r   rß   )Úpipeline_classc                  ó"   — d} d}| |z   }||z  }|S ©Né
   é   r%   ©rO   rP   rQ   rV   s       r   rs   zOTestExtendingVariableLifetimes.test_lifetime_basic.<locals>.get_ir.<locals>.foo�  ó#   € à�Ø�Ø˜‘E�à˜‘E�Ø�r   ÚEXTEND_VARIABLE_LIFETIMESr   Úpreserved_ir)r   r   r   Ú	overloadsÚ
signaturesÚmetadata)Úextend_lifetimesrß   rs   ÚcresÚfunc_irs        r   Úget_irzBTestExtendingVariableLifetimes.test_lifetime_basic.<locals>.get_ir‡  s{   € ô ¤|ô  ô Ð!5Ô6ñó 7ðô !Ð!<Ð>NÕOÙ”Ø—}‘} S§^¡^°AÑ%6Ñ7�ØŸ-™-¨Ñ7�÷ Pð
 ˆN÷ Pð
 ˆNús   ®3A+Á+A5c                 ó  •— ‰j                  t        | j                  «      d«       t        t	        | j                  j                  «       «      «      }t        ||j                  «      D ]  \  }}‰j                  ||«       Œ y ©Nr)   )	r›   ÚlenÚblocksr.   rË   ÚvaluesÚzipÚbodyÚassertIsInstance)rï   ÚexpectÚblkÚexpect_classÚgot_stmtr   s        €r   ÚcheckzATestExtendingVariableLifetimes.test_lifetime_basic.<locals>.check¡  se   ø€ à×ÑœS §¡Ó0°!Ô4Ü”t˜GŸN™N×1Ñ1Ó3Ó4Ó5ˆCô +.¨f°c·h±hÖ*?Ñ&�˜hØ×%Ñ% h°Õ=ñ +@r   Fr(   Té   )r   ÚAssignÚDelÚReturn)r   rð   rý   Údel_after_use_irrù   Údel_at_block_end_irs   `     r   Útest_lifetime_basicz2TestExtendingVariableLifetimes.test_lifetime_basic…  sÛ   ø€ ò	ô4	>ñ " %›=Ðð0”R—Y‘Y�L 1Ñ$ð 0¤r§v¡vð 0¬r¯v©vð 0´r·y±yð 0Ä"Ç&Á&ð 0Ü—)‘)ð0ÜŸV™Vð0Ü%'§Y¡Yð0ˆáÐ Ô'á$ T›lÐð O”R—Y‘Y�L 1Ñ$ÐN¤r§y¡yÐN´R·V±V°IÀ±MÐNÄBÇIÁIÐNˆÙÐ! 6Õ*r   c                 óÔ   — d„ } |d¬«      } |dd¬«      } |dd¬«      }d„ }| j                   ||«      «       | j                   ||«      «       | j                   ||«      «       y )Nc                  ó®   —  G d„ dt         «      }t        dd|i| ¤Žd„ «       } |«        |j                  |j                  d      }|j                  d   }|S )Nc                   ó   — e Zd Zd„ Zy)úfTestExtendingVariableLifetimes.test_dbg_extend_lifetimes.<locals>.get_ir.<locals>.IRPreservingCompilerc                 óš   — t        j                  | j                  «      }|j                  t        t
        «       |j                  «        |gS r   rÕ   rÚ   s     r   rÜ   zwTestExtendingVariableLifetimes.test_dbg_extend_lifetimes.<locals>.get_ir.<locals>.IRPreservingCompiler.define_pipelines¼  rÝ   r   NrÞ   r%   r   r   rß   r  º  rà   r   rß   rá   c                  ó"   — d} d}| |z   }||z  }|S rã   r%   ræ   s       r   rs   zUTestExtendingVariableLifetimes.test_dbg_extend_lifetimes.<locals>.get_ir.<locals>.fooÂ  rç   r   r   ré   r%   )r   r   rê   rë   rì   )Úoptionsrß   rs   rî   rï   s        r   rð   zHTestExtendingVariableLifetimes.test_dbg_extend_lifetimes.<locals>.get_ir¹  sb   € ô ¤|ô  ô ÑAÐ!5ÐA¸ÑAñó Bðñ ŒEØ—=‘= §¡°Ñ!2Ñ3ˆDØ—m‘m NÑ3ˆGàˆNr   T)Údebug)r  Ú_dbg_extend_lifetimesFc                 óŒ  — | j                   j                  «       \  }|j                  D �cg c]  }t        |t        j
                  «      ‘Œ }}t        t        t        j                  |«      «      }t        |«      }t        t        t        j                  ||d  «      «      }|t        |«      z   }|t        |«      dz
  k(  S c c}w rò   )rô   rõ   r÷   r   r   r   r™   r   ÚoperatorÚnot_ró   Útruth)Úfirrú   ÚstmtÚinst_is_delÚnot_delsÚbeginÚall_delsÚends           r   Úis_del_grouped_at_the_endz[TestExtendingVariableLifetimes.test_dbg_extend_lifetimes.<locals>.is_del_grouped_at_the_endØ  sž   € Ø—J‘J×%Ñ%Ó'‰EˆSà@CÇÂÓIÁ¸œ: d¬B¯F©FÕ3ÀˆKÐIäœI¤h§m¡m°[ÓAÓBˆHä˜“MˆEäœI¤h§n¡n°kÀ%À&Ð6IÓJÓKˆHàœ#˜h›-Ñ'ˆCð œ#˜kÓ*¨QÑ.Ñ.Ð.ùò Js   «!C)r±   r¡   )r   rð   Úir_debugÚir_debug_extÚir_debug_no_extr  s         r   Útest_dbg_extend_lifetimesz8TestExtendingVariableLifetimes.test_dbg_extend_lifetimes·  sj   € ò	ñ2  Ô%ˆá DÀÔEˆá  tÀ5ÔIˆò	/ð  	�‰Ñ1°(Ó;Ô<Ø�‰Ñ1°,Ó?Ô@Ø×ÑÑ2°?ÓCÕDr   N)r"   r#   r$   r  r  r%   r   r   rÏ   rÏ   €  s   „ ò
0+ód3Er   rÏ   Ú__main__).r2   r;   r²   r  Ú	itertoolsr   ÚunittestÚnumbar   r   Únumba.core.compilerr   r   Únumba.core.untyped_passesr   Únumba.core.typed_passesr	   Ú
numba.corer
   r   Únumba.tests.supportr   r   r   Úobjectr   r   r0   rW   r[   r_   rf   rj   rl   ÚRuntimeErrorrn   rq   ru   rw   ry   r…   rŠ   rŒ   rÏ   r"   Úmainr%   r   r   Ú<module>r*     sÙ   ðÛ Û Û 	Û Ý ã ß ß @Ý 0Ý 2ß  ß FÑ FôEˆVô Eô
�Vô 
ô1�&ô 1òhòò
òò2òô	ˆlô 	òò
ò
òòò.ôSN�hô SNôljE [°(ô jEðZ ˆzÒØ€H‡M�M…Oð r   