
    J/PhUB                        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j*                     dS dS )-    N)jitnjit)types)TestCaseMemoryLeakMixin)test_factoryFT)nopythonforceobjr	   c                       fd}|S )Nc                 2    d} |           D ]}||z  }|S )Ng         )xresygen_funcs      [/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numba/tests/test_generators.pyconsumerzmake_consumer.<locals>.consumer   s/    ! 	 	A1HCC
    r   )r   r   s   ` r   make_consumerr      s#         Or   c              #   6   K   t          |           D ]}|V  d S Nrange)r   is     r   gen1r      s0      1XX   r   c              #   j   K   t          |           D ] }|V  t          dd          D ]	}||z   V  
!d S )N      r   )r   r   js      r   gen2r       sY      1XX  q! 	 	Aa%KKKK	 r   c              #   .   K   | V  | dz   V  | dz   V  d S )Ng      ?              ?r   r   s    r   gen3r$   #   s-      
GGG
c'MMM
b&LLLLLr   c              #   D   K   t          d          D ]}|V  ||z   V  d S )Nr   r   )r   r   zr   s       r   gen4r'   *   s8      1XX  !e
Fr   c               #   
   K   d S r   r   r   r   r   gen5r)   2   s       r   c              #   ,   K   | dz   }	 |dz   }||z   V  )Nr   T   r   )abr   r   s       r   gen6r.   :   s/      	AAE!er   c              #   L   K   t          | j                  D ]}| |         V  d S r   r   sizearrr   s     r   gen7r4   B   s6      38__  !f r   r   r+   c              #   :   K   | }| V  |r|V  |r	| |z   V  d S d S r   r   )r   r   r-   bbs       r   gen8r7   I   sJ      B
GGG	  !e r   c              #   .   K   t                       | V  d S r   )objectr#   s    r   genobjr:   R   s      
HHH
GGGGGr   c                     d | D             S )Nc              3       K   | ]	}|d z  V  
dS )r+   Nr   ).0r   s     r   	<genexpr>z(return_generator_expr.<locals>.<genexpr>X   s&      aAEr   r   r#   s    r   return_generator_exprr?   W   s    1r   c              #   @   K   t          j        |           D ]}|V  d S r   )npndindex)shapeinds     r   gen_ndindexrE   [   s4      z%    				 r   c              #   &   K   | j         D ]}|V  d S r   )flat)r3   vals     r   gen_flatrI   `   s,      x  				 r   c              #   @   K   t          j        |           D ]}|V  d S r   )rA   ndenumerate)r3   tups     r   gen_ndenumeraterM   e   s4      ~c""  				 r   c               #      K   dV  d S )NTr   r   r   r   gen_boolrO   j   s      
JJJJJr   c               #      K   d V  dV  d S )Nr"   r   r   r   r   gen_unification_errorrQ   n   s      
JJJ
HHHHHr   c               #      K   d} dV  	 | V } )Nr   r"   r   )r   s    r   'gen_optional_and_type_unification_errorrS   s   s'      	A
HHHGGr   c               #      K   dV  dV  d S )N)r   r+   )r      r   r   r   r   gen_changing_tuple_typerV   {   s      
JJJ
JJJJJr   c               #   "   K   dV  dV  dV  d S )Nr   g      @y        33333P@r   r   r   r   gen_changing_number_typerX      s%      
GGG
III
KKKKKr   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-d,S )-TestGeneratorsc                 F   |                      t          |          t          |                     d |D             }d |D             }|                      ||           |                     t                    5  t          |           d d d            d S # 1 swxY w Y   d S )Nc                     g | ]}|S r   r   r=   r   s     r   
<listcomp>z2TestGenerators.check_generator.<locals>.<listcomp>   s    %%%!A%%%r   c                     g | ]}|S r   r   r]   s     r   r^   z2TestGenerators.check_generator.<locals>.<listcomp>   s    Qqr   )assertEqualnextassertRaisesStopIteration)selfpygencgenexpectedgots        r   check_generatorzTestGenerators.check_generator   s    dT%[[111 &%u%%%$3'''}-- 	 	JJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   9BBBc                     t           } t          t          j        ffi ||          } |d          } |d          }|                     ||           d S N   )r   r   r   int32ri   rd   kwargspyfunccrre   rf   s         r   
check_gen1zTestGenerators.check_gen1   `    *S%+**6**622q		r!uuUD)))))r   c                 *     | j         di t           d S Nr   )rr   nopython_flagsrd   s    r   	test_gen1zTestGenerators.test_gen1        )).)))))r   c                 *     | j         di t           d S ru   )rr   forceobj_flagsrw   s    r   test_gen1_objmodez TestGenerators.test_gen1_objmode   ry   r   c                     t           } t          t          j        ffi ||          } |d          } |d          }|                     ||           d S rk   )r    r   r   rm   ri   rn   s         r   
check_gen2zTestGenerators.check_gen2   rs   r   c                 *     | j         di t           d S ru   )r~   rv   rw   s    r   	test_gen2zTestGenerators.test_gen2   ry   r   c                 *     | j         di t           d S ru   )r~   r{   rw   s    r   test_gen2_objmodez TestGenerators.test_gen2_objmode   ry   r   c                     t           } t          t          j        ffi ||          } |d          } |d          }|                     ||           d S rk   )r$   r   r   rm   ri   rn   s         r   
check_gen3zTestGenerators.check_gen3   rs   r   c                 *     | j         di t           d S ru   )r   rv   rw   s    r   	test_gen3zTestGenerators.test_gen3   ry   r   c                 *     | j         di t           d S ru   )r   r{   rw   s    r   test_gen3_objmodez TestGenerators.test_gen3_objmode   ry   r   c                     t           } t          t          j        fdz  fi ||          } |ddd          } |ddd          }|                     ||           d S )Nr            )r'   r   r   rm   ri   rn   s         r   
check_gen4zTestGenerators.check_gen4   sm    .S%+!#..v..v66q!Qr!Q{{UD)))))r   c                 *     | j         di t           d S ru   )r   rv   rw   s    r   	test_gen4zTestGenerators.test_gen4   ry   r   c                 *     | j         di t           d S ru   )r   r{   rw   s    r   test_gen4_objmodez TestGenerators.test_gen4_objmode   ry   r   c                     |                                  5 } t          di t          t                     d d d            n# 1 swxY w Y   |                     dt          |j                             d S )Nr   z2Cannot type generator: it does not yield any valuer   )assertTypingErrorr   rv   r)   assertInstr	exception)rd   raisess     r   	test_gen5zTestGenerators.test_gen5   s    ##%% 	,%C%%n%%d+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,J&*++	- 	- 	- 	- 	-s    AAAc                      t          di t          t                                }|                     t	          |          g            |                     t                    5  t          |           d d d            d S # 1 swxY w Y   d S Nr   r   )r   r{   r)   r`   listrb   rc   ra   )rd   rf   s     r   test_gen5_objmodez TestGenerators.test_gen5_objmode   s    .(s((((..00dR(((}-- 	 	JJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   %BB	Bc                     t          t          j        fdz  fi |t                    } |dd          }g }t	          d          D ]$}|                    t          |                     %|                     |dgdz             d S )Nr+   r   r   r      )r   r   rm   r.   r   appendra   r`   )rd   ro   rq   rf   lr   s         r   
check_gen6zTestGenerators.check_gen6   s    .S%+!#..v..t44r!Qxxq 	! 	!AHHT$ZZ    RD1H%%%%%r   c                 *     | j         di t           d S ru   )r   rv   rw   s    r   	test_gen6zTestGenerators.test_gen6   ry   r   c                 *     | j         di t           d S ru   )r   r{   rw   s    r   test_gen6_objmodez TestGenerators.test_gen6_objmode   ry   r   c                 &   t           } t          t          j        t          j        dd          ffi ||          }t          j        ddd          } ||                                          } ||          }|                     ||           d S )Nr   C
   r   )	r4   r   r   Arrayfloat64rA   linspacecopyri   )rd   ro   rp   rq   r3   re   rf   s          r   
check_gen7zTestGenerators.check_gen7   s    AS%+emQ446AA&AA&IIk!R##sxxzz""r#wwUD)))))r   c                 *     | j         di t           d S ru   )r   rv   rw   s    r   	test_gen7zTestGenerators.test_gen7   ry   r   c                 *     | j         di t           d S ru   )r   r{   rw   s    r   test_gen7_objmodez TestGenerators.test_gen7_objmode   ry   r   c                      t            t          d
i |           fd} |dd            |d            |d            |dd	           d S )Nc                  L                          | i | | i |           d S r   )ri   )argsro   cfuncrp   rd   s     r   checkz(TestGenerators.check_gen8.<locals>.check   sH      !8!8!8!&!7!7!79 9 9 9 9r   r+   r   rU   r   )r   r   T)r   r-   r   )r7   r   )rd   jit_argsr   r   rp   s   `  @@r   
check_gen8zTestGenerators.check_gen8   s    h''	9 	9 	9 	9 	9 	9 	9 	aa



Tr   c                 2    |                      d           d S )NTr	   r   rw   s    r   	test_gen8zTestGenerators.test_gen8       &&&&&r   c                 2    |                      d           d S )NT)r
   r   rw   s    r   test_gen8_objmodez TestGenerators.test_gen8_objmode   r   r   c                     t           } t          di ||          } |            } |            }|                     ||           d S r   )rO   r   ri   rn   s         r   
check_gen9zTestGenerators.check_gen9  sV    Svv&&rttUD)))))r   c                 *     | j         di t           d S ru   )r   rv   rw   s    r   	test_gen9zTestGenerators.test_gen9	  ry   r   c                 *     | j         di t           d S ru   )r   r{   rw   s    r   test_gen9_objmodez TestGenerators.test_gen9_objmode  ry   r   c                      t          d          |          } t          d          t          |                    }t          |          } |d          } |d          }|                     ||           d S )NTr   r   )r   r   assertPreciseEqual)rd   r   rf   r   rp   rg   rh   s          r   check_consume_generatorz&TestGenerators.check_consume_generator  s    !sD!!!(++"T"""=#6#677x((6!99eAhhX.....r   c                 :    |                      t                     d S r   )r   r   rw   s    r   test_consume_gen1z TestGenerators.test_consume_gen1      $$T*****r   c                 :    |                      t                     d S r   )r   r    rw   s    r   test_consume_gen2z TestGenerators.test_consume_gen2  r   r   c                 :    |                      t                     d S r   )r   r$   rw   s    r   test_consume_gen3z TestGenerators.test_consume_gen3  r   r   c                     t           } t          t          j        t          j        d          ffi ||          }d} ||          } ||          }|                     ||           d S )Nr+   r+   r   )rE   r   r   UniTupleintpri   )rd   ro   rp   rq   rC   re   rf   s          r   check_ndindexzTestGenerators.check_ndindex"  sr    <S%.Q//1<<V<<VDDur%yyUD)))))r   c                 *     | j         di t           d S ru   )r   rv   rw   s    r   test_ndindexzTestGenerators.test_ndindex*  !    ,,^,,,,,r   c                 *     | j         di t           d S ru   )r   r{   rw   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                                      d          }|                      ||           ||                      t          t          j        t          j        dd          ffi ||          }|j        }|                      ||           ||                     d S )Nr+   r   r   dtyper   A)	r   r   r   rm   rA   arangereshaperi   T)rd   rp   ro   rq   r3   crAs         r   check_np_flatzTestGenerators.check_np_flat0  s    ?S%+ek1c224????GGi***226::VVC[[""S''222@c5;u{As335@@@@HHeVVC[[##c((33333r   c                 6     | j         t          fi t           d S r   )r   rI   rv   rw   s    r   test_np_flatzTestGenerators.test_np_flat8  #    866~66666r   c                 6     | j         t          fi t           d S r   )r   rI   r{   rw   s    r   test_np_flat_objmodez#TestGenerators.test_np_flat_objmode;  r   r   c                 6     | j         t          fi t           d S r   )r   rM   rv   rw   s    r   test_ndenumeratezTestGenerators.test_ndenumerate>  #    ?==n=====r   c                 6     | j         t          fi t           d S r   )r   rM   r{   rw   s    r   test_ndenumerate_objmodez'TestGenerators.test_ndenumerate_objmodeA  r   r   c                     t           }|                                 5 } t          di t          |           d d d            n# 1 swxY w Y   d}|                     |t          |j                             d S )Nr   zACan't unify yield type from the following types: complex128, noner   )rQ   r   r   rv   r   r   r   rd   rp   r   msgs       r   test_type_unification_errorz*TestGenerators.test_type_unification_errorD  s    &##%% 	.%C%%n%%f---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.c3v/0011111   AA
Ac                    t           }|                                 5 } t          di t          |           d d d            n# 1 swxY w Y   d}|                     |t
          j        j        z  t          |j	                             d S )Nr   zHCan't unify yield type from the following types: complex128, int%s, noner   )
rS   r   r   rv   r   r   r   bitwidthr   r   r   s       r   .test_optional_expansion_type_unification_errorz=TestGenerators.test_optional_expansion_type_unification_errorM  s    8##%% 	.%C%%n%%f---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.cEJ//V5E1F1FGGGGGr   c                     t           }t           |                      }t           t          |                                }|                     ||           d S r   )rV   r   r   r`   rd   rp   rg   rh   s       r   test_changing_tuple_typez'TestGenerators.test_changing_tuple_typeV  sM    (>><4<<>>""3'''''r   c                     t           }t           |                      }t           t          |                                }|                     ||           d S r   )rX   r   r   r`   r   s       r   test_changing_number_typez(TestGenerators.test_changing_number_type]  sM    )>><4<<>>""3'''''r   N).__name__
__module____qualname__ri   rr   rx   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   rZ   rZ      s         * * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * *- - -  & & &* * ** * ** * ** * ** * *  ' ' '' ' '* * ** * ** * */ / /+ + ++ + ++ + +
* * *- - -- - -4 4 47 7 77 7 7> > >> > >2 2 2H H H( ( (( ( ( ( (r   rZ   c              #      K   | D ]}|V  d S r   r   )aryelems     r   nrt_gen0r  e  s*        



 r   c              #   F   K   t          | |          D ]\  }}|V  |V  d S r   )zip)ary1ary2e1e2s       r   nrt_gen1r  j  s?      dD//  B r   c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )TestNrtArrayGenc                    t           } t          d          |          }t          j        d          }|                                }t           ||                    }t           ||                    }t          j                            ||           |                     ||           | 	                    ||           d S )NTr   r   )
r  r   rA   r   r   r   testingassert_equalr`   assertRefCountEqual)rd   re   rf   py_aryc_arypy_resc_ress          r   test_nrt_gen0zTestNrtArrayGen.test_nrt_gen0q  s    !sD!!!%((2eeFmm$$TT%[[!!

...'''  /////r   c                 0   t           } t          d          |          }t          j        d          }|dz   }|                                }|                                }t           |||                    }t           |||                    }t          j                            ||           t          j                            ||           |                     ||           | 	                    ||           | 	                    ||           d S )NTr   r   d   )
r  r   rA   r   r   r   r  r  r`   r  )	rd   re   rf   py_ary1py_ary2c_ary1c_ary2r  r  s	            r   test_nrt_gen1zTestNrtArrayGen.test_nrt_gen1  s    !sD!!!%(()B--C-eeGW--..TT&&))**

000

000'''  &111  &11111r   c                 V    |                                   |                                  dS )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  rw   s    r   test_combine_gen0_gen1z&TestNrtArrayGen.test_combine_gen0_gen1  s.     	r   c                    t           } t          d          |          }t          j        d          }|                                } ||          } ||          }t          |          }t          |          }|                     t                    5  t          |          }ddd           n# 1 swxY w Y   |                     t                    5  t          |          }ddd           n# 1 swxY w Y   ~~t          j        	                    ||           | 
                    ||           |                     ||           dS )z/
        Test cleanup on StopIteration
        Tr   r   N)r  r   rA   r   r   ra   rb   rc   r  r  r`   r  )	rd   re   rf   r  r  py_iterc_iterr  r  s	            r   test_nrt_gen0_stop_iterationz,TestNrtArrayGen.test_nrt_gen0_stop_iteration  s    !sD!!!%((1%--egV}-- 	# 	#']]F	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# }-- 	! 	!LLE	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 

...'''  /////s$   B33B7:B7C44C8;C8c                 2   t           } t          d          |          }t          j        d          }|                                } ||          } ||          }~~t          j                            ||           |                     ||           dS )zj
        Test cleanup for a initialized but never iterated (never call next())
        generator.
        Tr   r   N)r  r   rA   r   r   r  r  r  )rd   re   rf   r  r  r  r  s          r   test_nrt_gen0_no_iterz%TestNrtArrayGen.test_nrt_gen0_no_iter  s    
 !sD!!!%((1%--e

... 	  /////r   N)r   r   r   r  r  r  r   r"  r   r   r   r
  r
  p  s_        0 0 02 2 2(  0 0 0<0 0 0 0 0r   r
  c                   :    e Zd Zd Zej        d             Zd ZdS )TestNrtNestedGenc                    d }d }t          j        d          }|                                }  ||          |          \  }} t          d           | t          d          |                              } ||          \  }}	|                     ||           |                     ||           |                     |	|           t           j                            ||           |                     ||           d S )Nc              3   @   K   t          | j                  D ]}| V  d S r   r0   r2   s     r   gen0z2TestNrtNestedGen.test_nrt_nested_gen.<locals>.gen0  s2      38__  				 r   c                       fd}|S )Nc                 Z    t          j        |           } |           D ]}||z   }|| fS r   )rA   
zeros_like)r3   outr   r'  s      r   r   zCTestNrtNestedGen.test_nrt_nested_gen.<locals>.factory.<locals>.gen1  s=    mC((c " "A'CCCxr   r   r'  r   s   ` r   factoryz5TestNrtNestedGen.test_nrt_nested_gen.<locals>.factory  s#              Kr   r   Tr   )	rA   r   r   r   assertIsNotassertIsr  r  r  )
rd   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"""77+=3+=+=+=d+C+C#D#DEEuU||u'''ff%%%eU###

...  /////r   c                    d }d }t          j        d          }|                                }  ||          |          } t          d           | t          d          |                              } ||          }|                     ||           |                     ||           |                     ||           |                     ||           d S )Nc              3      K   | V  d S r   r   )r3   s    r   r'  z8TestNrtNestedGen.test_nrt_nested_gen_refct.<locals>.gen0  s      IIIIIr   c                       fd}|S )Nc                 *     |           D ]}|c S d S r   r   )r3   r+  r'  s     r   r   zITestNrtNestedGen.test_nrt_nested_gen_refct.<locals>.factory.<locals>.gen1  s-    499  CJJJ r   r   r,  s   ` r   r-  z;TestNrtNestedGen.test_nrt_nested_gen_refct.<locals>.factory  s#         Kr   r   Tr   )rA   r   r   r   r.  r/  r  )rd   r'  r-  r0  r1  r2  r3  r4  s           r   test_nrt_nested_gen_refctz*TestNrtNestedGen.test_nrt_nested_gen_refct  s    	 	 		 	 	 2v&&"T"""77+=3+=+=+=d+C+C#D#DEEe'''ff%%%eU###  /////r   c                     d fd} |            } |t          d                    }t           |d                    }t           |d                    }|                     ||           dS )z/
        Test nesting three generators
        c                     | S r   r   r#   s    r   <lambda>z?TestNrtNestedGen.test_nrt_nested_nopython_gen.<locals>.<lambda>  s    A r   c                 T    | d             | fd            | fd            }|S )Nc              3   b   K   t          |          D ]}| |         V  | |xx         |z  cc<   d S r   r   )r,   nr   s      r   foozKTestNrtNestedGen.test_nrt_nested_nopython_gen.<locals>.factory.<locals>.foo  sI      q  AA$JJJaDDDAIDDDD r   c              3      K   t          j        |           } ||           D ]	}|dz  V  
t          |j                  D ]}||         V  d S )Nr+   )rA   r   r   r1   )r@  r,   r   rA  s      r   barzKTestNrtNestedGen.test_nrt_nested_nopython_gen.<locals>.factory.<locals>.bar  sl      IaLLQ    Aa%KKKKqv  AA$JJJJ r   c              3   6   K    |           D ]	}||z   V  
d S r   r   )r@  r   rC  s     r   catzKTestNrtNestedGen.test_nrt_nested_nopython_gen.<locals>.factory.<locals>.cat$  s7      Q    Aa%KKKK   r   r   )decorrE  rC  rA  s     @@r   r-  z>TestNrtNestedGen.test_nrt_nested_nopython_gen.<locals>.factory  sn      U
     U         U  Jr   Tr   r   N)r   r   r`   )rd   r-  py_genr3  r  r  s         r   test_nrt_nested_nopython_genz-TestNrtNestedGen.test_nrt_nested_nopython_gen  s    
 &+ 	 	 	 	, T***++ffRjj!!UU2YY'''''r   N)r   r   r   r5  unittestexpectedFailurer:  rH  r   r   r   r$  r$    sR        0 0 0F 0 0 0.!( !( !( !( !(r   r$  c                        e Zd Zd Zd Zd ZdS )TestGeneratorWithNRTc                 .   t          d          d             }t           |d                    }|                     t          |          d           t	          j        d          }d|dd<   |D ]"}t          j                            ||           #dS )z9
        Missing environment for returning array
        Tr   c              3   l   K   t          |           D ]!}t          j        d          }d|d d <   |V  "d S )Nr      )r   rA   empty)r@  r   vecs      r   random_directionsz?TestGeneratorWithNRT.test_issue_1254.<locals>.random_directions:  sJ      1XX  hqkkAAA				 r   r   r   rO  N)r   r   r`   lenrA   rP  r  r  )rd   rR  outputsexpectrh   s        r   test_issue_1254z$TestGeneratorWithNRT.test_issue_12545  s    
 
d				 	 
		 ((++,,Wq)))!qqq	 	1 	1CJ##FC0000	1 	1r   c                    d  t          d                    t           ddd                    }t           ddd                    }|                     ||           fd}t          d          fd            }d}dd	|f} ||          } ||          }t          j                            ||           d
S )zM
        Double-free for locally allocated, non escaping NRT objects
        c              3   ^   K   t          j        | ||          }|d         V  |d         V  d S )Nr   r   )rA   r   )rminrmaxnrr,   s       r   rG  z4TestGeneratorWithNRT.test_issue_1265.<locals>.py_genN  s7      D$++AA$JJJA$JJJJJr   Tr   r+   r  c                     | \  }}}t          j        |t           j                  }t           |||                    D ]
\  }}|||<   |S Nr   rA   rP  
complex128	enumerate)r   rY  rZ  r[  pointsr   crG  s          r   	py_driverz7TestGeneratorWithNRT.test_issue_1265.<locals>.py_driverZ  s]    !ND$Xb666F!&&tR"8"89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  s]    !ND$Xb666F!%%dB"7"788  1q		Mr   N)r   r   r`   rA   r  r  )	rd   r  r  rd  rf  r@  patchesr3  rG  s	          @@r   test_issue_1265z$TestGeneratorWithNRT.test_issue_1265I  s   
	 	 	
 #T"""6**ffRC(())UU2q#&&'''''	 	 	 	 	 
d				 	 	 	 
		 r1+7##!!

.....r   c                     dt           fd            t           fd            t           fd            }|                      |                       dS )z-
        Incorrect return data model
        l   >[= c               3      K    V  d S r   r   )magics   r   	generatorz7TestGeneratorWithNRT.test_issue_1808.<locals>.generatorz  s      KKKKKr   c                                    S r   r   )rm  s   r   get_generatorz;TestGeneratorWithNRT.test_issue_1808.<locals>.get_generator~  s    9;;r   c                  0    d}              D ]}| |z  } | S )Nr   r   )r+  r   ro  s     r   mainz2TestGeneratorWithNRT.test_issue_1808.<locals>.main  s-    C"]__  qJr   N)r   r`   )rd   rq  rm  ro  rl  s     @@@r   test_issue_1808z$TestGeneratorWithNRT.test_issue_1808t  s     		 	 	 	 
	 
	 	 	 	 
	 
	 	 	 	 
	 	'''''r   N)r   r   r   rV  ri  rr  r   r   r   rL  rL  4  sB        1 1 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	dS )TestGeneratorModelNr   F)r   
yield_type	arg_typesstate_typeshas_finalizer)
r   r   r   r   	Generatorrm   int64float32r   fe_typer   r   r   rt  rt    sQ        eot).em(D+0:uz##A#*G,13 3 3GGGr   rt  __main__)r   r+   F)+numpyrA   rI  numbar   r   
numba.corer   numba.tests.supportr   r   numba.core.datamodel.testingr   r{   rv   r   r   r    r$   r'   r)   r.   r4   r7   r:   r?   rE   rI   rM   rO   rQ   rS   rV   rX   rZ   r  r  r
  r$  rL  rt  r   rq  r   r   r   <module>r     s                      9 9 9 9 9 9 9 9 5 5 5 5 5 5#66d#    
                 
    
  
  
    
      Z( Z( Z( Z( Z(_h Z( Z( Z(z  
  `0 `0 `0 `0 `0ox `0 `0 `0H]( ]( ]( ]( ](x ]( ]( ](@V( V( V( V( V(?H V( V( V(r3 3 3 3 3 3 3 3 zHMOOOOO r   