Ë
    èÿæiUB  ã                   óŠ  — d dl Zd dlZd dlmZmZ d dlmZ d dlm	Z	m
Z
 d dlmZ dddœZd	diZd
„ Zd„ Zd„ Zd„ Zd„ 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! G d„ de
e	«      Z"d„ Z#d „ Z$ G d!„ d"e
e	«      Z% G d#„ d$e	«      Z& G d%„ d&e
e	«      Z' G d'„ d( e«       «      Z(e)d)k(  r ejT                  «        yy)+é    N)ÚjitÚnjit)Útypes)ÚTestCaseÚMemoryLeakMixin)Útest_factoryFT)ÚnopythonÚforceobjr	   c                 ó   ‡ — ˆ fd„}|S )Nc                 ó0   •— d} ‰| «      D ]  }||z  }Œ	 |S )Ng        © )ÚxÚresÚyÚgen_funcs      €úp/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/numba/tests/test_generators.pyÚconsumerzmake_consumer.<locals>.consumer   s$   ø€ ØˆÙ˜!–ˆAØ�1‰H‰Cð àˆ
ó    r   )r   r   s   ` r   Úmake_consumerr      s   ø€ ôð €Or   c              #   ó4   K  — t        | «      D ]  }|–— Œ y ­w©N©Úrange)r   Úis     r   Úgen1r      s   è ø€ Ü�1ŽXˆØ‹ñ ùs   ‚c              #   ód   K  — t        | «      D ]  }|–— t        dd«      D ]	  }||z   –— Œ Œ  y ­w)Né   é   r   )r   r   Újs      r   Úgen2r       s2   è ø€ Ü�1ŽXˆØŠÜ�q˜!–ˆAØ�a‘%‹Kñ ñ ùs   ‚.0c              #   ó0   K  — | –— | dz   –— | dz   –— y ­w)Ng      ø?ù              ð?r   ©r   s    r   Úgen3r$   #   s   è ø€ à
‚GØ
ˆc‰'‚MØ
ˆb‰&ƒLùó   ‚c              #   óB   K  — t        d«      D ]  }|–— ||z   –— Œ y ­w)Nr   r   )r   r   Úzr   s       r   Úgen4r(   *   s'   è ø€ Ü�1ŽXˆØŠØ�!‰e‹ð ð ùs   ‚c               #   ó   K  — y ­wr   r   r   r   r   Úgen5r*   2   s   è ø€ ð 	ùs   ‚c              #   ó0   K  — | dz   }	 |dz   }||z   –— Œ­w)Nr   é   r   )ÚaÚbr   r   s       r   Úgen6r/   :   s)   è ø€ à	ˆA‰€AØ
Ø�‰EˆØ�!‰eŠð ùr%   c              #   óN   K  — t        | j                  «      D ]	  }| |   –— Œ y ­wr   ©r   Úsize©Úarrr   s     r   Úgen7r5   B   s!   è ø€ ä�3—8‘8Ž_ˆØ�!‰f‹ñ ùs   ‚#%c              #   ó:   K  — | }| –— |r|–— |r| |z   –— y y ­wr   r   )r   r   r.   Úbbs       r   Úgen8r8   I   s+   è ø€ Øˆ€BØ
‚GÙ	ØŠÙØ�!‰e‹ð 	ùs   ‚c              #   ó(   K  — t        «        | –— y ­wr   )Úobjectr#   s    r   Úgenobjr;   R   s   è ø€ Ü
„HØ
ƒGùs   ‚c                 ó   — d„ | D «       S )Nc              3   ó&   K  — | ]	  }|d z  –— Œ y­w)r,   Nr   )Ú.0r   s     r   Ú	<genexpr>z(return_generator_expr.<locals>.<genexpr>X   s   è ø€ Ð™1�aˆA��E™1ùs   ‚r   r#   s    r   Úreturn_generator_exprr@   W   s   € Ù™1ÓÐr   c              #   óH   K  — t        j                  | «      D ]  }|–— Œ y ­wr   )ÚnpÚndindex)ÚshapeÚinds     r   Úgen_ndindexrF   [   s   è ø€ Ü�z‰z˜%Ö ˆØ‹	ñ !ùó   ‚ "c              #   ó6   K  — | j                   D ]  }|–— Œ y ­wr   )Úflat)r4   Úvals     r   Úgen_flatrK   `   s   è ø€ Ø�xŒxˆØ‹	ñ ùs   ‚c              #   óH   K  — t        j                  | «      D ]  }|–— Œ y ­wr   )rB   Úndenumerate)r4   Útups     r   Úgen_ndenumeraterO   e   s   è ø€ Ü�~‰~˜cÖ"ˆØ‹	ñ #ùrG   c               #   ó   K  — d–— y ­w)NTr   r   r   r   Úgen_boolrQ   j   s   è ø€ Ø
ƒJùó   ‚c               #   ó   K  — d –— d–— y ­w)Nr"   r   r   r   r   Úgen_unification_errorrT   n   s   è ø€ Ø
‚JØ
ƒHùó   ‚
c               #   ó"   K  — d} d–— 	 | –—} Œ­w)Nr   r"   r   )r   s    r   Ú'gen_optional_and_type_unification_errorrW   s   s   è ø€ à	€AØ
‚HØ
Ø‰Gˆð ùó   ‚c               #   ó   K  — d–— d–— y ­w)N)r   r,   )r   é   r   r   r   r   Úgen_changing_tuple_typer[   {   s   è ø€ à
‚JØ
ƒJùrU   c               #   ó$   K  — d–— d–— d–— y ­w)Nr   g      @y        33333óP@r   r   r   r   Úgen_changing_number_typer]   �   s   è ø€ à
‚GØ
‚IØ
ƒKùs   ‚c                   ó  — 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„ 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"d!„ Z#d"„ Z$d#„ Z%d$„ Z&d%„ Z'd&„ Z(d'„ Z)d(„ Z*d)„ Z+d*„ Z,d+„ Z-y,)-ÚTestGeneratorsc                 ó*  — | j                  t        |«      t        |«      «       |D �cg c]  }|‘Œ }}|D �cg c]  }|‘Œ }}| j                  ||«       | j                  t        «      5  t        |«       d d d «       y c c}w c c}w # 1 sw Y   y xY wr   )ÚassertEqualÚnextÚassertRaisesÚStopIteration)ÚselfÚpygenÚcgenr   ÚexpectedÚgots         r   Úcheck_generatorzTestGenerators.check_generator‰   s€   € Ø×Ñœ˜d›¤T¨%£[Ô1ñ  %Ó%™u˜!’A˜uˆÐ%ÙÓ™$�QŠq˜$ˆÐØ×Ñ˜ 3Ô'Ø×Ñœ}Õ-Ü�ŒJ÷ .Ð-ùò &ùÚç-Ð-ús   ©	A?¸	BÁ*B	Â	Bc                 ó–   — t         } t        t        j                  ffi |¤Ž|«      } |d«      } |d«      }| j	                  ||«       y ©Né   )r   r   r   Úint32rj   ©re   ÚkwargsÚpyfuncÚcrrf   rg   s         r   Ú
check_gen1zTestGenerators.check_gen1“   óE   € ÜˆØ*ŒS”%—+‘+�Ñ* 6Ñ*¨6Ó2ˆÙ�q“	ˆÙ�!‹uˆØ×Ñ˜U DÕ)r   c                 ó0   —  | j                   di t        ¤Ž y ©Nr   )rs   Únopython_flags©re   s    r   Ú	test_gen1zTestGenerators.test_gen1š   ó   € Øˆ�‰Ñ)œ.Ó)r   c                 ó0   —  | j                   di t        ¤Ž y rv   )rs   Úforceobj_flagsrx   s    r   Útest_gen1_objmodez TestGenerators.test_gen1_objmode�   rz   r   c                 ó–   — t         } t        t        j                  ffi |¤Ž|«      } |d«      } |d«      }| j	                  ||«       y rl   )r    r   r   rn   rj   ro   s         r   Ú
check_gen2zTestGenerators.check_gen2    rt   r   c                 ó0   —  | j                   di t        ¤Ž y rv   )r   rw   rx   s    r   Ú	test_gen2zTestGenerators.test_gen2§   rz   r   c                 ó0   —  | j                   di t        ¤Ž y rv   )r   r|   rx   s    r   Útest_gen2_objmodez TestGenerators.test_gen2_objmodeª   rz   r   c                 ó–   — t         } t        t        j                  ffi |¤Ž|«      } |d«      } |d«      }| j	                  ||«       y rl   )r$   r   r   rn   rj   ro   s         r   Ú
check_gen3zTestGenerators.check_gen3­   rt   r   c                 ó0   —  | j                   di t        ¤Ž y rv   )r…   rw   rx   s    r   Ú	test_gen3zTestGenerators.test_gen3´   rz   r   c                 ó0   —  | j                   di t        ¤Ž y rv   )r…   r|   rx   s    r   Útest_gen3_objmodez TestGenerators.test_gen3_objmode·   rz   r   c                 ó¤   — t         } t        t        j                  fdz  fi |¤Ž|«      } |ddd«      } |ddd«      }| j	                  ||«       y )Nr   é   é   é   )r(   r   r   rn   rj   ro   s         r   Ú
check_gen4zTestGenerators.check_gen4º   sR   € ÜˆØ.ŒS”%—+‘+� !Ñ#Ñ. vÑ.¨vÓ6ˆÙ�q˜!˜Q“ˆÙ�!�Q˜‹{ˆØ×Ñ˜U DÕ)r   c                 ó0   —  | j                   di t        ¤Ž y rv   )rŽ   rw   rx   s    r   Ú	test_gen4zTestGenerators.test_gen4Á   rz   r   c                 ó0   —  | j                   di t        ¤Ž y rv   )rŽ   r|   rx   s    r   Útest_gen4_objmodez TestGenerators.test_gen4_objmodeÄ   rz   r   c                 óÊ   — | j                  «       5 } t        di t        ¤Žt        «       d d d «       | j	                  dt        j                  «      «       y # 1 sw Y   Œ/xY w)Nz2Cannot type generator: it does not yield any value©r   )ÚassertTypingErrorr   rw   r*   ÚassertInÚstrÚ	exception)re   Úraisess     r   Ú	test_gen5zTestGenerators.test_gen5Ç   sM   € Ø×#Ñ#Ô%¨Ø%ŒCÑ%”nÑ%¤dÔ+÷ &à�‰ÐJÜ˜&×*Ñ*Ó+õ	-÷ &Ð%ús   ‘AÁA"c                 óà   —   t        di t        ¤Žt        «      «       }| j                  t	        |«      g «       | j                  t        «      5  t        |«       d d d «       y # 1 sw Y   y xY w©Nr”   )r   r|   r*   ra   Úlistrc   rd   rb   )re   rg   s     r   Útest_gen5_objmodez TestGenerators.test_gen5_objmodeÍ   sQ   € Ø.Ð(ŒsÑ(œÑ(¬Ó.Ó0ˆØ×Ñœ˜d› RÔ(Ø×Ñœ}Õ-Ü�ŒJ÷ .×-Ñ-ús   ÁA$Á$A-c                 óê   —  t        t        j                  fdz  fi |¤Žt        «      } |dd«      }g }t	        d«      D ]  }|j                  t        |«      «       Œ | j                  |dgdz  «       y )Nr,   r‹   rŒ   r   é   )r   r   rn   r/   r   Úappendrb   ra   )re   rp   rr   rg   Úlr   s         r   Ú
check_gen6zTestGenerators.check_gen6Ó   sg   € Ø.ŒS”%—+‘+� !Ñ#Ñ. vÑ.¬tÓ4ˆÙ�!�Q‹xˆØˆÜ�q–ˆAØ�H‰H”T˜$“ZÕ ð à×Ñ˜˜R˜D 1™HÕ%r   c                 ó0   —  | j                   di t        ¤Ž y rv   )r£   rw   rx   s    r   Ú	test_gen6zTestGenerators.test_gen6Û   rz   r   c                 ó0   —  | j                   di t        ¤Ž y rv   )r£   r|   rx   s    r   Útest_gen6_objmodez TestGenerators.test_gen6_objmodeÞ   rz   r   c                 ó
  — t         } t        t        j                  t        j                  dd«      ffi |¤Ž|«      }t        j                  ddd«      } ||j                  «       «      } ||«      }| j                  ||«       y )Nr   ÚCé
   r�   )	r5   r   r   ÚArrayÚfloat64rB   ÚlinspaceÚcopyrj   )re   rp   rq   rr   r4   rf   rg   s          r   Ú
check_gen7zTestGenerators.check_gen7á   sl   € ÜˆØAŒS”%—+‘+œeŸm™m¨Q°Ó4Ð6ÑA¸&ÑAÀ&ÓIˆÜ�k‰k˜!˜R Ó#ˆÙ�s—x‘x“zÓ"ˆÙ�#‹wˆØ×Ñ˜U DÕ)r   c                 ó0   —  | j                   di t        ¤Ž y rv   )r¯   rw   rx   s    r   Ú	test_gen7zTestGenerators.test_gen7é   rz   r   c                 ó0   —  | j                   di t        ¤Ž y rv   )r¯   r|   rx   s    r   Útest_gen7_objmodez TestGenerators.test_gen7_objmodeì   rz   r   c                 óŽ   ‡ ‡‡— t         Š t        d
i |¤Ž‰«      Šˆˆˆ fd„} |dd«        |d«        |d¬«        |dd¬	«       y )Nc                  óB   •— ‰j                   ‰| i |¤Ž ‰| i |¤Ž«       y r   )rj   )Úargsrp   Úcfuncrq   re   s     €€€r   Úcheckz(TestGenerators.check_gen8.<locals>.checkó   s*   ø€ Ø× Ñ ¡¨Ð!8°Ñ!8Ù!&¨Ð!7°Ñ!7õ9r   r,   r   rZ   r‹   )r   rŒ   T)r   r.   r   )r8   r   )re   Újit_argsr¸   r·   rq   s   `  @@r   Ú
check_gen8zTestGenerators.check_gen8ï   sB   ú€ ÜˆØ”‘�h‘ Ó'ˆö	9ñ 	ˆa�ŒÙˆaŒÙ��
Ù��TÖr   c                 ó(   — | j                  d¬«       y )NT©r	   ©rº   rx   s    r   Ú	test_gen8zTestGenerators.test_gen8ü   ó   € Ø�‰ ˆÕ&r   c                 ó(   — | j                  d¬«       y )NT)r
   r½   rx   s    r   Útest_gen8_objmodez TestGenerators.test_gen8_objmodeÿ   r¿   r   c                 ór   — t         } t        di |¤Ž|«      } |«       } |«       }| j                  ||«       y rœ   )rQ   r   rj   ro   s         r   Ú
check_gen9zTestGenerators.check_gen9  s9   € ÜˆØŒSÑ�vÑ˜vÓ&ˆÙ“ˆÙ‹tˆØ×Ñ˜U DÕ)r   c                 ó0   —  | j                   di t        ¤Ž y rv   )rÃ   rw   rx   s    r   Ú	test_gen9zTestGenerators.test_gen9	  rz   r   c                 ó0   —  | j                   di t        ¤Ž y rv   )rÃ   r|   rx   s    r   Útest_gen9_objmodez TestGenerators.test_gen9_objmode  rz   r   c                 ó¸   —  t        d¬«      |«      } t        d¬«      t        |«      «      }t        |«      } |d«      } |d«      }| j                  ||«       y )NTr¼   r‹   )r   r   ÚassertPreciseEqual)re   r   rg   r·   rq   rh   ri   s          r   Úcheck_consume_generatorz&TestGenerators.check_consume_generator  sU   € Ø!Œs˜DÔ! (Ó+ˆØ"”˜TÔ"¤=°Ó#6Ó7ˆÜ˜xÓ(ˆÙ˜!“9ˆÙ�A‹hˆØ×Ñ  XÕ.r   c                 ó.   — | j                  t        «       y r   )rÊ   r   rx   s    r   Útest_consume_gen1z TestGenerators.test_consume_gen1  ó   € Ø×$Ñ$¤TÕ*r   c                 ó.   — | j                  t        «       y r   )rÊ   r    rx   s    r   Útest_consume_gen2z TestGenerators.test_consume_gen2  rÍ   r   c                 ó.   — | j                  t        «       y r   )rÊ   r$   rx   s    r   Útest_consume_gen3z TestGenerators.test_consume_gen3  rÍ   r   c                 óÂ   — t         } t        t        j                  t        j                  d«      ffi |¤Ž|«      }d} ||«      } ||«      }| j                  ||«       y )Nr,   ©r,   r   )rF   r   r   ÚUniTupleÚintprj   )re   rp   rq   rr   rD   rf   rg   s          r   Úcheck_ndindexzTestGenerators.check_ndindex"  sV   € ÜˆØ<ŒS”%—.‘.¤§¡¨QÓ/Ð1Ñ<°VÑ<¸VÓDˆØˆÙ�u“ˆÙ�%‹yˆØ×Ñ˜U DÕ)r   c                 ó0   —  | j                   di t        ¤Ž y rv   )rÖ   rw   rx   s    r   Útest_ndindexzTestGenerators.test_ndindex*  ó   € Øˆ×ÑÑ,œ^Ó,r   c                 ó0   —  | j                   di t        ¤Ž y rv   )rÖ   r|   rx   s    r   Útest_ndindex_objmodez#TestGenerators.test_ndindex_objmode-  rÙ   r   c                 óÔ  —  t        t        j                  t        j                  dd«      ffi |¤Ž|«      }t	        j
                  dt        j                  ¬«      j                  d«      }| j                   ||«       ||«      «        t        t        j                  t        j                  dd«      ffi |¤Ž|«      }|j                  }| j                   ||«       ||«      «       y )Nr,   r©   rŒ   ©ÚdtyperÓ   ÚA)	r   r   r«   rn   rB   ÚarangeÚreshaperj   ÚT)re   rq   rp   rr   r4   ÚcrAs         r   Úcheck_np_flatzTestGenerators.check_np_flat0  s®   € Ø?ŒS”%—+‘+œeŸk™k¨1¨cÓ2Ð4Ñ?¸Ñ?ÀÓGˆÜ�i‰i˜¤§¡Ô*×2Ñ2°6Ó:ˆØ×Ñ™V C›[©"¨S«'Ô2Ø@Œc”5—;‘;œuŸ{™{¨A¨sÓ3Ð5Ñ@¸Ñ@ÀÓHˆØ�e‰eˆØ×Ñ™V C›[©#¨c«(Õ3r   c                 ó:   —  | j                   t        fi t        ¤Ž y r   )rä   rK   rw   rx   s    r   Útest_np_flatzTestGenerators.test_np_flat8  ó   € Øˆ×Ñœ8Ñ6¤~Ó6r   c                 ó:   —  | j                   t        fi t        ¤Ž y r   )rä   rK   r|   rx   s    r   Útest_np_flat_objmodez#TestGenerators.test_np_flat_objmode;  rç   r   c                 ó:   —  | j                   t        fi t        ¤Ž y r   )rä   rO   rw   rx   s    r   Útest_ndenumeratezTestGenerators.test_ndenumerate>  ó   € Øˆ×Ñœ?Ñ=¬nÓ=r   c                 ó:   —  | j                   t        fi t        ¤Ž y r   )rä   rO   r|   rx   s    r   Útest_ndenumerate_objmodez'TestGenerators.test_ndenumerate_objmodeA  rì   r   c                 óÒ   — t         }| j                  «       5 } t        di t        ¤Ž|«       d d d «       d}| j	                  |t        j                  «      «       y # 1 sw Y   Œ1xY w)NzACan't unify yield type from the following types: complex128, noner”   )rT   r•   r   rw   r–   r—   r˜   ©re   rq   r™   Úmsgs       r   Útest_type_unification_errorz*TestGenerators.test_type_unification_errorD  sU   € Ü&ˆØ×#Ñ#Ô%¨Ø%ŒCÑ%”nÑ% fÔ-÷ &ðˆà�‰�cœ3˜v×/Ñ/Ó0Õ1÷ &Ð%ús   —AÁA&c                 ó  — t         }| j                  «       5 } t        di t        ¤Ž|«       d d d «       d}| j	                  |t
        j                  j                  z  t        j                  «      «       y # 1 sw Y   ŒLxY w)NzHCan't unify yield type from the following types: complex128, int%s, noner”   )
rW   r•   r   rw   r–   r   rÕ   Úbitwidthr—   r˜   rð   s       r   Ú.test_optional_expansion_type_unification_errorz=TestGenerators.test_optional_expansion_type_unification_errorM  sd   € Ü8ˆØ×#Ñ#Ô%¨Ø%ŒCÑ%”nÑ% fÔ-÷ &ðˆà�‰�cœEŸJ™J×/Ñ/Ñ/´°V×5EÑ5EÓ1FÕG÷ &Ð%ús   —A8Á8Bc                 ó†   — t         }t         |«       «      }t         t        |«      «       «      }| j                  ||«       y r   )r[   r�   r   ra   ©re   rq   rh   ri   s       r   Útest_changing_tuple_typez'TestGenerators.test_changing_tuple_typeV  s4   € ä(ˆÜ™›“>ˆÜ�<”4˜“<“>Ó"ˆØ×Ñ˜ 3Õ'r   c                 ó†   — t         }t         |«       «      }t         t        |«      «       «      }| j                  ||«       y r   )r]   r�   r   ra   r÷   s       r   Útest_changing_number_typez(TestGenerators.test_changing_number_type]  s4   € ä)ˆÜ™›“>ˆÜ�<”4˜“<“>Ó"ˆØ×Ñ˜ 3Õ'r   N).Ú__name__Ú
__module__Ú__qualname__rj   rs   ry   r}   r   r�   rƒ   r…   r‡   r‰   rŽ   r�   r’   rš   rž   r£   r¥   r§   r¯   r±   r³   rº   r¾   rÁ   rÃ   rÅ   rÇ   rÊ   rÌ   rÏ   rÑ   rÖ   rØ   rÛ   rä   ræ   ré   rë   rî   rò   rõ   rø   rú   r   r   r   r_   r_   ˆ   sÚ   „ òò*ò*ò*ò*ò*ò*ò*ò*ò*ò*ò*ò*ò-òò&ò*ò*ò*ò*ò*òò'ò'ò*ò*ò*ò/ò+ò+ò+ò
*ò-ò-ò4ò7ò7ò>ò>ò2òHò(ó(r   r_   c              #   ó"   K  — | D ]  }|–— Œ y ­wr   r   )ÚaryÚelems     r   Únrt_gen0r  e  s   è ø€ ÛˆØ‹
ñ ùrX   c              #   óD   K  — t        | |«      D ]  \  }}|–— |–— Œ y ­wr   )Úzip)Úary1Úary2Úe1Úe2s       r   Únrt_gen1r  j  s$   è ø€ Ü�d˜D–/‰ˆˆBØŠØ‹ñ "ùs   ‚ c                   ó*   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚTestNrtArrayGenc                 óJ  — t         } t        d¬«      |«      }t        j                  d«      }|j	                  «       }t         ||«      «      }t         ||«      «      }t        j                  j                  ||«       | j                  ||«       | j                  ||«       y )NTr¼   rª   )
r  r   rB   rà   r®   r�   ÚtestingÚassert_equalra   ÚassertRefCountEqual)re   rf   rg   Úpy_aryÚc_aryÚpy_resÚc_ress          r   Útest_nrt_gen0zTestNrtArrayGen.test_nrt_gen0q  s€   € ÜˆØ!Œs˜DÔ! %Ó(ˆä—‘˜2“ˆØ—‘“ˆä‘e˜F“mÓ$ˆÜ‘T˜%“[Ó!ˆä
�
‰
×Ñ ¨Ô.Ø×Ñ˜ Ô'à× Ñ  ¨Õ/r   c                 óÜ  — t         } t        d¬«      |«      }t        j                  d«      }|dz   }|j	                  «       }|j	                  «       }t         |||«      «      }t         |||«      «      }t        j                  j                  ||«       t        j                  j                  ||«       | j                  ||«       | j                  ||«       | j                  ||«       y )NTr¼   rª   éd   )
r  r   rB   rà   r®   r�   r  r  ra   r  )	re   rf   rg   Úpy_ary1Úpy_ary2Úc_ary1Úc_ary2r  r  s	            r   Útest_nrt_gen1zTestNrtArrayGen.test_nrt_gen1€  s¾   € ÜˆØ!Œs˜DÔ! %Ó(ˆä—)‘)˜B“-ˆØ˜C‘-ˆà—‘“ˆØ—‘“ˆä‘e˜G WÓ-Ó.ˆÜ‘T˜& &Ó)Ó*ˆä
�
‰
×Ñ ¨Ô0Ü
�
‰
×Ñ ¨Ô0Ø×Ñ˜ Ô'à× Ñ  ¨&Ô1Ø× Ñ  ¨&Õ1r   c                 óD   — | j                  «        | j                  «        y)a2  
        Issue #1163 is observed when two generator with NRT object arguments
        is ran in sequence.  The first one does a invalid free and corrupts
        the NRT memory subsystem.  The second generator is likely to segfault
        due to corrupted NRT data structure (an invalid MemInfo).
        N)r  r  rx   s    r   Útest_combine_gen0_gen1z&TestNrtArrayGen.test_combine_gen0_gen1”  s   € ð 	×ÑÔØ×ÑÕr   c                 ó*  — t         } t        d¬«      |«      }t        j                  d«      }|j	                  «       } ||«      } ||«      }t        |«      }t        |«      }| j                  t        «      5  t        |«      }ddd«       | j                  t        «      5  t        |«      }ddd«       ~~t        j                  j                  ||«       | j                  ||«       | j                  ||«       y# 1 sw Y   ŒyxY w# 1 sw Y   Œ\xY w)z/
        Test cleanup on StopIteration
        Tr¼   r   N)r  r   rB   rà   r®   rb   rc   rd   r  r  ra   r  )	re   rf   rg   r  r  Úpy_iterÚc_iterr  r  s	            r   Útest_nrt_gen0_stop_iterationz,TestNrtArrayGen.test_nrt_gen0_stop_iterationž  sÞ   € ô ˆØ!Œs˜DÔ! %Ó(ˆä—‘˜1“ˆØ—‘“ˆá˜“-ˆÙ�e“ˆä�g“ˆÜ�V“ˆà×Ñœ}Õ-Ü˜'“]ˆF÷ .ð ×Ñœ}Õ-Ü˜“LˆE÷ .ð Øä
�
‰
×Ñ ¨Ô.Ø×Ñ˜ Ô'à× Ñ  ¨Õ/÷ .Ð-ú÷ .Ð-ús   Á9C=Â"D	Ã=DÄ	Dc                 ó  — t         } t        d¬«      |«      }t        j                  d«      }|j	                  «       } ||«      } ||«      }~~t        j
                  j                  ||«       | j                  ||«       y)zj
        Test cleanup for a initialized but never iterated (never call next())
        generator.
        Tr¼   r   N)r  r   rB   rà   r®   r  r  r  )re   rf   rg   r  r  r  r  s          r   Útest_nrt_gen0_no_iterz%TestNrtArrayGen.test_nrt_gen0_no_iter¼  sp   € ô
 ˆØ!Œs˜DÔ! %Ó(ˆä—‘˜1“ˆØ—‘“ˆá˜“-ˆÙ�e“ˆàØä
�
‰
×Ñ ¨Ô.ð 	× Ñ  ¨Õ/r   N)rû   rü   rý   r  r  r  r   r"  r   r   r   r
  r
  p  s   „ ò0ò2ò(ò0ó<0r   r
  c                   ó<   — e Zd Zd„ Zej
                  d„ «       Zd„ Zy)ÚTestNrtNestedGenc                 ó²  — d„ }d„ }t        j                  d«      }|j                  «       }  ||«      |«      \  }} t        d¬«       | t        d¬«      |«      «      «      } ||«      \  }}	| j	                  ||«       | j                  ||«       | j                  |	|«       t         j                  j                  ||«       | j                  ||«       y )Nc              3   óH   K  — t        | j                  «      D ]  }| –— Œ y ­wr   r1   r3   s     r   Úgen0z2TestNrtNestedGen.test_nrt_nested_gen.<locals>.gen0×  s   è ø€ Ü˜3Ÿ8™8–_�Ø“	ñ %ùrG   c                 ó   ‡ — ˆ fd„}|S )Nc                 óZ   •— t        j                  | «      } ‰| «      D ]  }||z   }Œ	 || fS r   )rB   Ú
zeros_like)r4   Úoutr   r'  s      €r   r   zCTestNrtNestedGen.test_nrt_nested_gen.<locals>.factory.<locals>.gen1Ü  s1   ø€ Ü—m‘m CÓ(�Ù˜cž�AØ ™'‘Cð #à˜C�x�r   r   ©r'  r   s   ` r   Úfactoryz5TestNrtNestedGen.test_nrt_nested_gen.<locals>.factoryÛ  s   ø€ ô ð ˆKr   rª   Tr¼   )	rB   rà   r®   r   ÚassertIsNotÚassertIsr  r  r  )
re   r'  r-  Úpy_arrÚc_arrr  Úpy_oldÚc_genr  Úc_olds
             r   Útest_nrt_nested_genz$TestNrtNestedGen.test_nrt_nested_genÕ  sº   € ò	ò	ô —‘˜2“ˆØ—‘“ˆØ&™ › vÓ.‰ˆ�Ø"”˜TÔ"¡7Ð+=¬3¸Ô+=¸dÓ+CÓ#DÓEˆÙ˜U“|‰ˆˆuà×Ñ˜ Ô'Ø�‰�f˜fÔ%Ø�‰�e˜UÔ#ä
�
‰
×Ñ ¨Ô.à× Ñ  ¨Õ/r   c                 óf  — d„ }d„ }t        j                  d«      }|j                  «       }  ||«      |«      } t        d¬«       | t        d¬«      |«      «      «      } ||«      }| j	                  ||«       | j                  ||«       | j                  ||«       | j                  ||«       y )Nc              3   ó   K  — | –— y ­wr   r   )r4   s    r   r'  z8TestNrtNestedGen.test_nrt_nested_gen_refct.<locals>.gen0ú  s   è ø€ Ø‹IùrR   c                 ó   ‡ — ˆ fd„}|S )Nc                 ó&   •—  ‰| «      D ]  }|c S  y r   r   )r4   r+  r'  s     €r   r   zITestNrtNestedGen.test_nrt_nested_gen_refct.<locals>.factory.<locals>.gen1þ  s   ø€ Ù ž9�CØ’Jñ %r   r   r,  s   ` r   r-  z;TestNrtNestedGen.test_nrt_nested_gen_refct.<locals>.factoryý  s   ø€ ôð ˆKr   rª   Tr¼   )rB   rà   r®   r   r.  r/  r  )re   r'  r-  r0  r1  r2  r3  r4  s           r   Útest_nrt_nested_gen_refctz*TestNrtNestedGen.test_nrt_nested_gen_refctø  sž   € ò	ò	ô —‘˜2“ˆØ—‘“ˆØ‘˜“˜vÓ&ˆØ"”˜TÔ"¡7Ð+=¬3¸Ô+=¸dÓ+CÓ#DÓEˆÙ�e“ˆà×Ñ˜ Ô'Ø�‰�f˜fÔ%Ø�‰�e˜UÔ#à× Ñ  ¨Õ/r   c                 óª   — d„ fd„} |«       } |t        d¬«      «      }t         |d«      «      }t         |d«      «      }| j                  ||«       y)z/
        Test nesting three generators
        c                 ó   — | S r   r   r#   s    r   Ú<lambda>z?TestNrtNestedGen.test_nrt_nested_nopython_gen.<locals>.<lambda>  s   € ¡Ar   c                 óB   ‡‡— | d„ «       Š| ˆfd„«       Š| ˆfd„«       }|S )Nc              3   óT   K  — t        |«      D ]  }| |   –— | |xx   |z  cc<   Œ y ­wr   r   )r-   Únr   s      r   ÚfoozKTestNrtNestedGen.test_nrt_nested_nopython_gen.<locals>.factory.<locals>.foo  s*   è ø€ ä˜qž�AØ˜A™$’JØ�a“D˜A‘I”Dñ "ùs   ‚&(c              3   ó¤   •K  — t        j                  | «      } ‰|| «      D ]	  }|dz  –— Œ t        |j                  «      D ]	  }||   –— Œ y ­w)Nr,   )rB   rà   r   r2   )r@  r-   r   rA  s      €r   ÚbarzKTestNrtNestedGen.test_nrt_nested_nopython_gen.<locals>.factory.<locals>.bar  sH   øè ø€ ä—I‘I˜a“L�Ù˜Q ž�AØ˜a™%“Kð #ä˜qŸv™vž�AØ˜A™$“Jñ 'ùs   ƒAAc              3   ó6   •K  —  ‰| «      D ]	  }||z   –— Œ y ­wr   r   )r@  r   rC  s     €r   ÚcatzKTestNrtNestedGen.test_nrt_nested_nopython_gen.<locals>.factory.<locals>.cat$  s   øè ø€ á˜Qž�AØ˜a™%“Kñ  ùs   ƒr   )ÚdecorrE  rC  rA  s     @@r   r-  z>TestNrtNestedGen.test_nrt_nested_nopython_gen.<locals>.factory  sD   ù€ Øñó ðð
 óó ðð ó ó ð ð ˆJr   Tr¼   rª   N)r   r�   ra   )re   r-  Úpy_genr3  r  r  s         r   Útest_nrt_nested_nopython_genz-TestNrtNestedGen.test_nrt_nested_nopython_gen  sO   € ñ
 &ó 	ñ, “ˆÙœ TÔ*Ó+ˆä‘f˜R“jÓ!ˆÜ‘U˜2“Y“ˆà×Ñ˜ Õ'r   N)rû   rü   rý   r5  ÚunittestÚexpectedFailurer:  rH  r   r   r   r$  r$  Ô  s'   „ ò0ðF ×Ññ0ó ð0ó.!(r   r$  c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚTestGeneratorWithNRTc                 ó  — t        d¬«      d„ «       }t         |d«      «      }| j                  t        |«      d«       t	        j
                  d«      }d|dd |D ]"  }t        j                  j                  ||«       Œ$ y)z9
        Missing environment for returning array
        Tr¼   c              3   óh   K  — t        | «      D ]   }t        j                  d«      }d|d d  |–— Œ" y ­w)Nr   é   )r   rB   Úempty)r@  r   Úvecs      r   Úrandom_directionsz?TestGeneratorWithNRT.test_issue_1254.<locals>.random_directions:  s/   è ø€ ä˜1–X�Ü—h‘h˜q“k�Ø�‘A�Ø“	ñ ùs   ‚02r‹   r   rO  N)r   r�   ra   ÚlenrB   rP  r  r  )re   rR  ÚoutputsÚexpectri   s        r   Útest_issue_1254z$TestGeneratorWithNRT.test_issue_12545  su   € ô
 
�dÔ	ñ	ó 
ð	ô Ñ(¨Ó+Ó,ˆØ×Ñœ˜W› qÔ)ä—‘˜!“ˆØˆ‰qˆ	ÛˆCÜ�J‰J×#Ñ# F¨CÕ0ñ r   c                 óB  ‡‡— d„ Š t        d¬«      ‰«      Št         ‰ddd«      «      }t         ‰ddd«      «      }| j                  ||«       ˆfd„}t        d¬«      ˆfd„«       }d}dd	|f} ||«      } ||«      }t        j                  j                  ||«       y
)zM
        Double-free for locally allocated, non escaping NRT objects
        c              3   óV   K  — t        j                  | ||«      }|d   –— |d   –— y ­w)Nr   r   )rB   r­   )ÚrminÚrmaxÚnrr-   s       r   rG  z4TestGeneratorWithNRT.test_issue_1265.<locals>.py_genN  s*   è ø€ Ü—‘˜D $¨Ó+ˆAØ�A‘$ŠJØ�A‘$‹Jùs   ‚')Tr¼   éþÿÿÿr,   r  c                 óž   •— | \  }}}t        j                  |t         j                  ¬«      }t         ‰|||«      «      D ]
  \  }}|||<   Œ |S ©NrÝ   ©rB   rP  Ú
complex128Ú	enumerate)r¶   rY  rZ  r[  Úpointsr   ÚcrG  s          €r   Ú	py_driverz7TestGeneratorWithNRT.test_issue_1265.<locals>.py_driverZ  sN   ø€ Ø!‰NˆD�$˜Ü—X‘X˜b¬¯©Ô6ˆFÜ!¡&¨¨t°RÓ"8Ö9‘��1Ø��q’	ð :ð ˆMr   c                 óž   •— | \  }}}t        j                  |t         j                  ¬«      }t         ‰|||«      «      D ]
  \  }}|||<   Œ |S r^  r_  )r¶   rY  rZ  r[  rb  r   rc  r3  s          €r   Úc_driverz6TestGeneratorWithNRT.test_issue_1265.<locals>.c_driverb  sN   ø€ à!‰NˆD�$˜Ü—X‘X˜b¬¯©Ô6ˆFÜ!¡%¨¨d°BÓ"7Ö8‘��1Ø��q’	ð 9ð ˆMr   éÿÿÿÿN)r   r�   ra   rB   r  r  )	re   r  r  rd  rf  r@  Úpatchesr3  rG  s	          @@r   Útest_issue_1265z$TestGeneratorWithNRT.test_issue_1265I  s©   ù€ ò
	ð
 #”˜TÔ" 6Ó*ˆä‘f˜R  CÓ(Ó)ˆÜ‘U˜2˜q #Ó&Ó'ˆà×Ñ˜ Ô'ô	ô 
�dÔ	ó	ó 
ð	ð ˆØ�r˜1�+ˆá˜7Ó#ˆá˜Ó!ˆä
�
‰
×Ñ ¨Õ.r   c                 ó�   ‡‡‡— dŠt         ˆfd„«       Št         ˆfd„«       Št         ˆfd„«       }| j                   |«       ‰«       y)z-
        Incorrect return data model
        l   ï>[= c               3   ó   •K  — ‰ –— y ­wr   r   )Úmagics   €r   Ú	generatorz7TestGeneratorWithNRT.test_issue_1808.<locals>.generatorz  s   øè ø€ à‹Kùs   ƒ	c                  ó   •—  ‰ «       S r   r   )rm  s   €r   Úget_generatorz;TestGeneratorWithNRT.test_issue_1808.<locals>.get_generator~  s   ø€ á“;Ðr   c                  ó.   •— d}  ‰«       D ]  }| |z  } Œ	 | S )Nr   r   )r+  r   ro  s     €r   Úmainz2TestGeneratorWithNRT.test_issue_1808.<locals>.main‚  s$   ø€ àˆCÙ"–_�Ø�q‘‘ð %ð ˆJr   N)r   ra   )re   rq  rm  ro  rl  s     @@@r   Útest_issue_1808z$TestGeneratorWithNRT.test_issue_1808t  sX   ú€ ð ˆä	ó	ó 
ð	ô 
ó	ó 
ð	ô 
ó	ó 
ð	ð 	×Ñ™› Õ'r   N)rû   rü   rý   rV  ri  rr  r   r   r   rL  rL  4  s   „ ò1ò()/óV(r   rL  c            
       ó²   — e Zd Z ej                  dej
                  ej                  ej                  gej                  ej                  ddd…   gd¬«      Z	y)ÚTestGeneratorModelNr   F)r   Ú
yield_typeÚ	arg_typesÚstate_typesÚhas_finalizer)
rû   rü   rý   r   Ú	Generatorrn   Úint64Úfloat32rÕ   Úfe_typer   r   r   rt  rt  �  sE   „ Øˆe�o‰o t¸¿¹Ø).¯©°e·m±mÐ(DØ+0¯:©:°u·z±zÁ#ÀAÀ#±Ð*GØ,1ô3�Gr   rt  Ú__main__)r   r,   F)+ÚnumpyrB   rI  Únumbar   r   Ú
numba.corer   Únumba.tests.supportr   r   Únumba.core.datamodel.testingr   r|   rw   r   r   r    r$   r(   r*   r/   r5   r8   r;   r@   rF   rK   rO   rQ   rT   rW   r[   r]   r_   r  r  r
  r$  rL  rt  rû   rq  r   r   r   Ú<module>rƒ     sþ   ðÛ ã ß Ý ß 9Ý 5à#°Ñ6€Ø˜dÐ#€òòò
òòòòòóòò
òò
ò
ò
òò
òòôZ(�_ hô Z(òzò
ô`0�o xô `0ôH](�xô ](ô@V(˜?¨Hô V(ôr3™›ô 3ð ˆzÒØ€H‡M�M…Oð r   