+
    :i;                        ^ RI t ^ RIt^ RIt^ RIt^ RIHt ^ RIt^ RIHtH	t	 ^ RI
HtHt ^ RIHt ^ RIHt ^ RIHtHt ^ RIHtHtHt  ! R	 R
]4      t ! R R]4      t ! R R]4      tR tR tR tR tR t R t! ! R R]"4      t#R t$R t%R t&R t'R t(R t) ! R R]4      t* ! R R ]]4      t+],R!8X  d   ]PZ                  ! 4        R# R# )"    N)	takewhile)njitjit)CompilerBaseDefaultPassBuilder)
PreserveIR)IRLegalization)typesir)TestCaseoverride_configSerialMixinc                   2   a  ] tR t^t o R tR tR tRtV tR# )_Dummyc                @    Wn         W n        VP                  V 4       R # N)recordername
_add_dummy)selfr   r   s   &&&[/var/www/html/photoedit/myenv/lib/python3.14/site-packages/numba/tests/test_obj_lifetime.py__init___Dummy.__init__   s     	D!    c                    \        V\        4      '       g   Q h\        V P                  V P                  : R VP                  : 24      # )z + )
isinstancer   r   r   )r   others   &&r   __add___Dummy.__add__   s3    %((((dmm$))UZZ%HIIr   c                P    \        V P                  R V P                  ,          4      # )ziter(%s))_DummyIteratorr   r   r   s   &r   __iter___Dummy.__iter__   s    dmmZ$))-CDDr   )r   r   N)	__name__
__module____qualname____firstlineno__r   r   r#   __static_attributes____classdictcell____classdict__s   @r   r   r      s     "
JE Er   r   c                   .   a  ] tR t^t o ^ tR t]tRtV tR# )r!   c                    V P                   ^8  d   \        hV ;P                   ^,          un         \        V P                  V P                  : RV P                   : 24      # )   #)countStopIterationr   r   r   r"   s   &r   __next___DummyIterator.__next__#   s>    ::?

a
dmm		4::%FGGr    N)	r%   r&   r'   r(   r1   r3   nextr)   r*   r+   s   @r   r!   r!      s     EH Dr   r!   c                   f   a  ] tR t^,t o RtR tR tR t]tR t	R t
]R 4       t]R 4       tR	tV tR
# )RefRecorderz
An object which records events when instances created through it
are deleted.  Custom events can also be recorded to aid in
diagnosis.
c                `    \         P                  ! \        4      V n        . V n        / V n        R # r   )collectionsdefaultdictint_counts_events_wrsr"   s   &r   r   RefRecorder.__init__3   s"    "..s3	r   c                    \        W4      # )z;
Make an object whose deletion will be recorded as *name*.
)r   )r   r   s   &&r   
make_dummyRefRecorder.make_dummy8   s     d!!r   c                x    \         P                  ! WP                  4      pVP                  V P                  V&   R # r   )weakrefref_on_disposalr   r?   )r   dummywrs   && r   r   RefRecorder._add_dummy>   s'    [[ 1 12

		"r   c                    V P                   V,          ^,           pW P                   V&   V P                  P                  VP                  VR7      4       R# )zZ
Manually append *event* to the recorded events.
*event* can be formatted using format().
)r1   N)r=   r>   appendformat)r   eventr1   s   && r   markRefRecorder.markD   s@    
 U#a'#UELLuL56r   c                r    V P                   P                  V4      pV P                  P                  V4       R # r   )r?   popr>   rL   )r   rI   r   s   && r   rG   RefRecorder._on_disposalM   s&    yy}}R D!r   c                L    V P                    Uu. uF	  q! 4       NK  	  up# u upi )z3
A list of objects which haven't been deleted yet.
)r?   )r   rI   s   & r   aliveRefRecorder.aliveQ   s"    
  $yy)yy)))s   !c                    V P                   # )z
A list of recorded events.
)r>   r"   s   &r   recordedRefRecorder.recordedX   s    
 ||r   )r=   r>   r?   N)r%   r&   r'   r(   __doc__r   rB   r   __call__rO   rG   propertyrU   rX   r)   r*   r+   s   @r   r8   r8   ,   sR     
"# H7" * *  r   r8   c                     V ! R 4      pV ! R4      pV ! R4      pW#,           pV P                  R4       W,           pV P                  R4       V# )abc--1----2--rO   )recr^   r_   r`   ds   &    r   simple_usecase1rf   `   sH    CACACA	AHHW	AHHWHr   c                 T    V ! R 4      pV ! R4      pV P                  R4       TpTpRpV# )r^   r_   ra   Nrc   )rd   r^   r_   xys   &    r   simple_usecase2rj   j   s4    CACAHHW	A	AAHr   c                     V ! R 4      pV ! R4      pV ! R4      pTpV F  pWE,           pV P                  R4       K  	  V P                  R4       WC,           pV# )r^   r_   r`   --loop bottom----loop exit--rc   )rd   r^   r_   r`   rh   ri   s   &     r   looping_usecase1rn   s   sZ    CACACA	AE"#  HH_	AHr   c                    V ! R 4      pV ! R4      pV ! R4      pV F  pV P                  R4       W4,           pWD,           pV P                  R4       V F-  pV P                  R4       W6,           pV P                  R4       K/  	  V P                  R4       V'       d   XV,           pM M&V P                  R4       K  	  V P                  R	4       V P                  R
4       V# )r^   r_   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--rc   )rd   r^   r_   rp   rh   zri   s   &      r   looping_usecase2ru      s    CACA
e*C%&gE01AHH23'CHH56  	/0a%C 12 " 	&'HH"#Jr   c              #   >   "   V ! R 4      pV ! R4      pVx  Vx  R# 5ir^   r_   Nr5   rd   r^   r_   s   &  r   generator_usecase1ry      s!     CACA
G
Gs   c              #   P   "   V ! R 4      pV ! R4      pV F  pVx  K	  	  Vx  R# 5irw   r5   )rd   r^   r_   rh   s   &   r   generator_usecase2r{      s+     CACA 
Gs   $&c                       ] tR t^tRtR# )MyErrorr5   N)r%   r&   r'   r(   r)   r5   r   r   r}   r}      s    r   r}   c                     \        V 4      hr   r}   )rh   s   &r   do_raiser      s    
!*r   c                     V ! R 4      pV ! R4      pV ! R4      pV'       d   \        R4       V ! R4      pWA,            XV,            R# )r^   r_   re   foor`   Nr   )rd   r^   r_   re   r`   s   &    r   raising_usecase1r      s>    CACACAH	EEr   c                 n    V ! R 4      pV ! R4      pV'       d   V ! R4      p\        V4       VX,            R# )r^   r_   r`   Nr   )rd   r^   r_   r`   s   &   r   raising_usecase2r      s0    CACAHEEr   c                 L    V ! R 4      pV ! R4      pV'       d   \        V4      hR# rw   r   rx   s   &  r   raising_usecase3r      s&    CACAaj 	r   c                b   ^p\        V4       F  pV P                  \        V4      4       ^ p\        V4       F  p  ^ # 	  V^8  d   K<  V^8X  d(   \        V4       F  pVu u # 	  V P                  R4       V P                  R4       V P                  R4       K  	  V P                  R4       R# )zF
This test reveal a bug that there is a del on uninitialized variable
FAILEDOK)rangerO   str)rd   nijs   &   r   del_before_definitionr      s     	
A1XQqA  1uaqAH ""HHX  HHTNIr   c              #     "    V P                  R4       Rx  V ! R4      pV'       g   K(  V P                  R4       K;  5i)zR
test to reveal bug of invalid liveness when infinite loop has multiple
backedge.
yieldNpbrarc   )rd   r   s   & r   inf_loop_multiple_back_edger      s5     
 H1HHUOs   $>>c                      a  ] tR t^t o RtR tRR ltR tR tR t	R t
R	 tR
 tR tR tR tR tR tR tR tRtV tR# )TestObjLifetimez@
Test lifetime of Python objects inside jit-compiled functions.
c                L    \        \        P                  3R RR7      ! V4      pV# )TF)forceobjlooplift)r   r
   pyobject)r   pyfunccfuncs   && r   compileTestObjLifetime.compile   s#     U^^%uEfMr   Nc                    \        4       pV P                  V4      pVe-   V P                  V4      ;_uu_ 4        V! V4       R R R 4       V# V! V4       V#   + '       g   i     T# ; ir   )r8   r   assertRaises)r   r   raisesrd   r   s   &&&  r   compile_and_record"TestObjLifetime.compile_and_record   s_    mV$""6**c
 + 
 #J
	 +* 
s   	AA'	c                    . pVP                   p\        V4      pV F-  pWe9   g   K  VP                  V4       VP                  V4       K/  	  V P	                  W2RV: 24       R# )zS
Check that the *expected* markers occur in that order in *rec*'s
recorded events.
z%the full list of recorded events is: N)rX   listrL   removeassertEqual)r   rd   expectedactualrX   	remainingre   s   &&&    r   assertRecordOrder!TestObjLifetime.assertRecordOrder   s_    
 <<N	A~a   #	 
 	FNP	Rr   c                    V P                  \        4      pV P                  VP                  4       V P	                  V. RO4       V P	                  V. RO4       V P	                  V. RO4       R# )r^   N)r^   r_   ra   )r^   r`   ra   )ra   zb + crb   )r   rf   assertFalserU   r   r   rd   s   & r   test_simple1TestObjLifetime.test_simple1  sW    %%o6#s$78s$78s$?@r   c                    V P                  \        4      pV P                  VP                  4       V P	                  V. RO4       R# )r_   N)r_   ra   r^   )r   rj   r   rU   r   r   s   & r   test_simple2TestObjLifetime.test_simple2  s5    %%o6#s$78r   c                    V P                  \        4      pV P                  VP                  4       V P	                  V. RO4       V P	                  V. RO4       R# )r^   N)r^   r_   rm   r`   )	iter(a)#1rl   	iter(a)#2rl   	iter(a)#3rl   iter(a)rm   )r   rn   r   rU   r   r   s   & r   test_looping1TestObjLifetime.test_looping1  sK    %%&67#s$DEs %' 	(r   c                .   V P                  \        4      pV P                  VP                  4       V P	                  VR R.4       V P	                  V. RO4       V P	                  V. RO4       V P	                  V. RO4       V P	                  VRR.4       R# )r^   rq   ziter(a)#1 + iter(a)#1z--outer loop bottom #1--N)r   rr   rs   )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--)r   ru   r   rU   r   r   s   & r   test_looping2TestObjLifetime.test_looping2(  s    %%&67#sS*>$?@s %< 	=s %' 	(
 	s %' 	(
 	s%<%?%' 	(r   c                ~   V P                  V4      p\        4       pV P                  V4      ;_uu_ 4        V! V4      p\        V4       V P	                  VP
                  4       \        V4       V P                  VP
                  4       R R R 4       \        4       pV P                  V4      ;_uu_ 4        V! V4      p?\        P                  ! 4        V P                  VP
                  4       R R R 4       \        4       pV P                  V4      ;_uu_ 4        V! V4      p\        V4       V P	                  VP
                  4       ?\        P                  ! 4        V P                  VP
                  4       R R R 4       R #   + '       g   i     EL; i  + '       g   i     L; i  + '       g   i     R # ; ir   )
r   r8   assertRefCountr6   
assertTruerU   r   r   gccollect)r   genfuncr   rd   gens   &&   r   exercise_generator"TestObjLifetime.exercise_generator>  s-   W%m  %%*CIOOCII&ISYY' & m  %%*CJJLSYY'	 & m  %%*CIOOCII&JJLSYY' &% &%% &% &%%s%   AF5:FA F+F	F(	+F<	c                0    V P                  \        4       R # r   )r   ry   r"   s   &r   test_generator1TestObjLifetime.test_generator1Y       23r   c                0    V P                  \        4       R # r   )r   r{   r"   s   &r   test_generator2TestObjLifetime.test_generator2\  r   r   c                l    V P                  \        4      pV P                  VP                  . RO4       R# )0N)r   12)r   r   r   rX   r   s   & r   test_del_before_definition*TestObjLifetime.test_del_before_definition_  s'    %%&;<7r   c                    V P                  \        4      ;_uu_ 4        V P                  \        \        R 7      pV P                  VP                  4       RRR4       R#   + '       g   i     R# ; i)r   N)r   r   r   r   r}   r   rU   r   s   & r   test_raising1TestObjLifetime.test_raising1c  J      **))*:7)KCSYY' +***   7AA0	c                    V P                  \        4      ;_uu_ 4        V P                  \        \        R 7      pV P                  VP                  4       RRR4       R#   + '       g   i     R# ; ir   )r   r   r   r   r}   r   rU   r   s   & r   test_raising2TestObjLifetime.test_raising2h  r   r   c                    V P                  \        4      ;_uu_ 4        V P                  \        \        R 7      pV P	                  VP
                  4       RRR4       R#   + '       g   i     R# ; ir   )r   r}   r   r   r   rU   r   s   & r   test_raising3TestObjLifetime.test_raising3m  sJ      ))))*:7)KCSYY' *)))r   c                   V P                  \        4      p\        4       p\        V! V4      4      p\	        V4       V P                  VP                  . 4       \	        V4       V P                  VP                  . 4       \	        V4       V P                  VP                  . 4       V P                  VP                  . RO4       R# )r   N)r   r   r   r   r   r   r   )r   r   r8   iterr6   r   rU   rX   )r   r   rd   iterators   &   r    test_inf_loop_multiple_back_edge0TestObjLifetime.test_inf_loop_multiple_back_edger  s    89mc
#XB'XB'XB'L	Nr   r5   r   )r%   r&   r'   r(   rZ   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r)   r*   r+   s   @r   r   r      s^     R"A9

((,(6448(
(
(
N Nr   r   c                   ,   a  ] tR tRt o R tR tRtV tR# )TestExtendingVariableLifetimesi  c                  a  R  pV 3R lpV! R4      p. \         P                  3^,          O\         P                  N\         P                  N\         P                  N\         P                  N\         P                  N\         P                  N\         P                  NpV! W44       V! R4      p. \         P                  3^,          O\         P                  N\         P                  3^,          O\         P                  NpV! WT4       R# )c                 &    ! R  R\         4      p\        VR7      R 4       p\        RV 4      ;_uu_ 4        V! 4        VP                  VP                  ^ ,          ,          pVP
                  R,          pRRR4       V#   + '       g   i     X# ; i)c                   &   a  ] tR tRt o R tRtV tR# )`TestExtendingVariableLifetimes.test_lifetime_basic.<locals>.get_ir.<locals>.IRPreservingCompileri  c                    \         P                  ! V P                  4      pVP                  \        \
        4       VP                  4        V.# r   r   define_nopython_pipelinestateadd_pass_afterr   r	   finalizer   pms   & r   define_pipelinesqTestExtendingVariableLifetimes.test_lifetime_basic.<locals>.get_ir.<locals>.IRPreservingCompiler.define_pipelines  6    +DDTZZPB%%j.AKKM4Kr   r5   Nr%   r&   r'   r(   r   r)   r*   r+   s   @r   IRPreservingCompilerr             r   r   )pipeline_classc                  .    ^
p ^pW,           pW",          pV# 
   r5   r^   r_   r`   re   s       r   r   OTestExtendingVariableLifetimes.test_lifetime_basic.<locals>.get_ir.<locals>.foo      EEr   EXTEND_VARIABLE_LIFETIMESpreserved_irN)r   r   r   	overloads
signaturesmetadata)extend_lifetimesr   r   cresfunc_irs   &    r   get_irBTestExtendingVariableLifetimes.test_lifetime_basic.<locals>.get_ir  s     |   !56 7 !!<>NOO}}S^^A%67--7 P
 N PO
 Ns   ?A??B	c                   < SP                  \        V P                  4      ^4       \        \	        V P                  P                  4       4      4      p\        WP                  4       F  w  r4SP                  WC4       K  	  R# )   N)	r   lenblocksr6   r   valueszipbodyassertIsInstance)r  expectblkexpect_classgot_stmtr   s   &&   r   checkATestExtendingVariableLifetimes.test_lifetime_basic.<locals>.check  s_    S0!4tGNN11345C +.fhh*?&%%h= +@r   FTN)r   AssignDelReturn)r   r  r  del_after_use_irr  del_at_block_end_irs   f     r   test_lifetime_basic2TestExtendingVariableLifetimes.test_lifetime_basic  s    	4	> "%=0RYYL1$ 0rvv 0rvv 0ryy 0"&& 0))0VV0%'YY0'$Tl ORYYL1$NryyNRVVIMNBIIN!*r   c                    R  pV! RR7      pV! RRR7      pV! RRR7      pR pV P                  V! V4      4       V P                  V! V4      4       V P                  V! V4      4       R# )c                       ! R  R\         4      p\        RRV/V B R 4       pV! 4        VP                  VP                  ^ ,          ,          pVP                  R,          pV# )c                   &   a  ] tR tRt o R tRtV tR# )fTestExtendingVariableLifetimes.test_dbg_extend_lifetimes.<locals>.get_ir.<locals>.IRPreservingCompileri  c                    \         P                  ! V P                  4      pVP                  \        \
        4       VP                  4        V.# r   r   r   s   & r   r   wTestExtendingVariableLifetimes.test_dbg_extend_lifetimes.<locals>.get_ir.<locals>.IRPreservingCompiler.define_pipelines  r   r   r5   Nr   r+   s   @r   r   r'    r   r   r   r   c                  .    ^
p ^pW,           pW",          pV# r   r5   r  s       r   r   UTestExtendingVariableLifetimes.test_dbg_extend_lifetimes.<locals>.get_ir.<locals>.foo  r  r   r  r5   )r   r   r  r  r	  )optionsr   r   r  r  s   ,    r   r  HTestExtendingVariableLifetimes.test_dbg_extend_lifetimes.<locals>.get_ir  sb     |   A!5AA B E==!23DmmN3GNr   T)debug)r.  _dbg_extend_lifetimesFc                    V P                   P                  4       w  pVP                   Uu. uF  p\        V\        P
                  4      NK  	  pp\        \        \        P                  V4      4      p\        V4      p\        \        \        P                  W5R  4      4      pV\        V4      ,           pV\        V4      ^,
          8H  # u upi 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_end[TestExtendingVariableLifetimes.test_dbg_extend_lifetimes.<locals>.is_del_grouped_at_the_end  s    JJ%%'ES@CI:dBFF3KIIhmm[ABHMEIhnnk&6IJKH#h-'C #k*Q... Js   #C
N)r   r   )r   r  ir_debugir_debug_extir_debug_no_extr;  s   &     r   test_dbg_extend_lifetimes8TestExtendingVariableLifetimes.test_dbg_extend_lifetimes  sj    	2 %DE t5I	/  	1(;<1,?@2?CDr   r5   N)r%   r&   r'   r(   r"  r@  r)   r*   r+   s   @r   r   r     s     
0+d3E 3Er   r   __main__).r:   rE   r   r1  	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!   r8   rf   rj   rn   ru   ry   r{   RuntimeErrorr}   r   r   r   r   r   r   r   r   r%   mainr5   r   r   <module>rN     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MMO r   