
    sh:\                         S SK r S SKrS SKJrJr  S SKJr  S SKJr   " S S5      r	 " S S\5      r
\S	:X  a  \R                  " 5         gg)
    N)TestCasecaptured_stdout)IS_WIN32)numpy_versionc                   "    \ rS rSrSrSS jrSrg)MatplotlibBlocker   zBlocks the import of matplotlib, so that doc examples that attempt to
plot the output don't result in plots popping up and blocking testing.Nc                 *    US:X  a  Sn[        U5      eg )N
matplotlibz/Blocked import of matplotlib for test suite run)ImportError)selffullnamepathtargetmsgs        z/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/tests/doc_examples/test_examples.py	find_specMatplotlibBlocker.find_spec   s    |#CCc"" $     N)__name__
__module____qualname____firstlineno____doc__r   __static_attributes__r   r   r   r   r      s    N#r   r   c                   |   ^  \ rS rSrU 4S jrS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rSrU =r$ )DocsExamplesTest   c                 D   > [         TU ]  " U0 UD6  [        5       U l        g r   )super__init__r   _mpl_blocker)r   argskwargs	__class__s      r   r#   DocsExamplesTest.__init__   s     $)&)-/r   c                 X    [         R                  R                  SU R                  5        g Nr   )sys	meta_pathinsertr$   r   s    r   setUpDocsExamplesTest.setUp   s    Q 1 12r   c                 V    [         R                  R                  U R                  5        g r   )r+   r,   remover$   r.   s    r   tearDownDocsExamplesTest.tearDown   s    T../r   c           	        ^ [        5          SSKJn   SSKJnJn  SnSS KnSSKJ	n  U" SS9S 5       mU" SS9U4S	 j5       nUR                  S
UR                  S9nU" 5       n	U" SSSSUS5        U" 5       n
[        X-
  5        U(       a  W" U5        W" 5         S S S 5        g ! [         a    Sn Nf = f! , (       d  f       g = f)Nr   )default_timer)imshowshowTFjitnopythonc                     Sn[        X5      nSn[        U5       HE  nXU-  U-   nUR                  UR                  -  UR                  UR                  -  -   S:  d  MC  Us  $    g)z
Given the real and imaginary parts of a complex number,
determine if it is a candidate for membership in the Mandelbrot
set given a fixed number of iterations.
r   y                      )complexrangerealimag)xy	max_itersiczs         r   mandel0DocsExamplesTest.test_mandelbrot.<locals>.mandel.   s`     ALy)A	A!&&166/9a?  *
 r   c                    > UR                   S   nUR                   S   nX-
  U-  nX2-
  U-  n	[        U5       H1  n
X
U-  -   n[        U5       H  nX,U	-  -   nT" XU5      nXX4'   M     M3     U$ )Nr      )shaperA   )min_xmax_xmin_ymax_yimageitersheightwidthpixel_size_xpixel_size_yrD   rB   rE   rC   colorrJ   s                  r   create_fractal8DocsExamplesTest.test_mandelbrot.<locals>.create_fractal?   s    QA %6 %7uA |#33D"6]$<'77 &t5 9&+ad + & r   )  i  dtypeg             ?g         )r   timeitr6   matplotlib.pylabr7   r8   r   numpynumbar:   zerosuint8print)r   timerr7   r8   have_mplnpr:   rZ   rS   serJ   s              @r   test_mandelbrot DocsExamplesTest.test_mandelbrot"   s    5!9 !$    $   HH/rxxH@EA4dC;A!%Lug   ! ! s.   B6
B$A=B6$B30B62B33B66
Cc                    [        5          SS KnSSKJn  U" S/S5      S 5       nUR	                  SUR
                  S9R                  SS	5      n[        U5        [        U" US
5      5        S S S 5        g ! , (       d  f       g = f)Nr   guvectorizez%void(float64[:], intp[:], float64[:])(n),()->(n)c                     US   nSnSn[        U5       H  nX@U   -  nUS-  nXE-  X&'   M     [        U[        U 5      5       H  nX@U   XU-
     -
  -  nXE-  X&'   M     g )Nr           rM   )rA   len)a
window_arroutwindow_widthasumcountrG   s          r   	move_mean7DocsExamplesTest.test_moving_average.<locals>.move_mean`   s|      *!}|,AaDLDQJE!\CF - |SV4AaD1%5#666D!\CF 5r   r`   r]      
      )r   rc   rd   rq   arangefloat64reshaperg   )r   rj   rq   r|   arrs        r   test_moving_average$DocsExamplesTest.test_moving_averageY   su    )AB&(
*(
* ))Bbjj)199!R@C#J)C#$- s   A"A66
Bc                   ^^^^ [        5          SS KmSS KmSSKJm  SS KmSSKJn  SnSnU4S jnU" SSSS	9U4S
 j5       nUU4S jnU4S jnUU4S jnU" U5      n	U" XR5      n
TR                  R                  U5      nTR                  R                  U5      nU" S SXKU5      nU" USXU5        U" USU-  XU5        S S S 5        g ! , (       d  f       g = f)Nr   )repeatr9   r>   i@B c                 8   > TR                  SU -  SU-  -   5      $ )z
Control function using Numpy.
 @皙	@)exp)rv   brj   s     r   func_np,DocsExamplesTest.test_nogil.<locals>.func_np   s!     vvcAga/00r   z%void(double[:], double[:], double[:])T)r<   nogilc                 |   > [        [        U 5      5       H#  nTR                  SX   -  SX#   -  -   5      X'   M%     g)z
Function under test.
r   r   N)rA   ru   r   )resultrv   r   rG   maths       r   inner_func_nb2DocsExamplesTest.test_nogil.<locals>.inner_func_nb   s9     s6{+A $qtcADj)@ AFI ,r   c                    >^^^ [        UR                  S5      SS9  T" T0 TD6nU b  TR                  XP5      (       d   XP45       e[        SR                  [	        T" UUU4S jSSS95      S	-  5      5        U$ )
z-
Benchmark *func* and print out its runtime.
r`    )endz{:>5.0f} msc                     > T" T 0 TD6$ r   r   )r%   funcr&   s   r   <lambda>?DocsExamplesTest.test_nogil.<locals>.timefunc.<locals>.<lambda>   s    D$1&1r      r~   )numberr   r\   )rg   ljustallcloseformatmin)correctrk   r   r%   r&   resrj   r   s     ``` r   timefunc-DocsExamplesTest.test_nogil.<locals>.timefunc   s     aggbks+ D+F+&;;s44DsnD4m**3v1!A0G ,HJN,O P Q
r   c                    >^  U U4S jnU$ )z0
Run the given function inside a single thread.
c                  j   > [        U S   5      nTR                  UTR                  S9nT" U/U Q76   U$ )Nr   r]   )ru   emptyr   )r%   lengthr   
inner_funcrj   s      r   r   DDocsExamplesTest.test_nogil.<locals>.make_singlethread.<locals>.func   s8     a\FXXfBJJX?Fv--!Mr   r   )r   r   rj   s   ` r   make_singlethread6DocsExamplesTest.test_nogil.<locals>.make_singlethread   s    "
 r   c                    >^ ^ U UUU4S jnU$ )zf
Run the given function inside *numthreads* threads, splitting
its arguments into equal-sized chunks.
c                    > [        U S   5      nTR                  UTR                  S9nU4U -   n UT-   S-
  T-  n[        T5       VVs/ s H  o@ Vs/ s H  oUXC-  US-   U-   PM     snPM!     nnnU Vs/ s H  nTR	                  T
US9PM     nnU H  n	U	R                  5         M     U H  n	U	R                  5         M     U$ s  snf s  snnf s  snf )Nr   r]   rM   )r   r%   )ru   r   r   rA   Threadstartjoin)r%   r   r   chunklenrG   argchunkschunkthreadsthreadr   rj   
numthreads	threadings             r   func_mtFDocsExamplesTest.test_nogil.<locals>.make_multithread.<locals>.func_mt   s    a\FXXfBJJX?F"9t+D & 3a 7JFH /4J.?A.?t%# IL1<Q(0BC#%.?  A -34,25  )//z/N,2  4") #*") #*!M% A4s   		CC(C6CCr   )r   r   r   rj   r   s   `` r   make_multithread5DocsExamplesTest.test_nogil.<locals>.make_multithread   s    
" "  r   znumpy (1 thread)znumba (1 thread)znumba (%d threads))
r   r   r   ra   r   rc   rd   r:   randomrand)r   r:   nthreadssizer   r   r   r   r   func_nb
func_nb_mtrv   r   r   r   rj   r   r   s                 @@@@r   
test_nogilDocsExamplesTest.test_nogils   s    %!HD1 84BB	. (6G)-BJ		t$A		t$At%7QGGW0'a@W2X=zaPi s   B2C


Cc                     [        5          SSKJnJn  U" U" X"5      /5      S 5       nS S S 5        g ! , (       d  f       g = f)Nr   )	vectorizer   c                 
    X-   $ r   r   rD   rE   s     r   f8DocsExamplesTest.test_vectorize_one_signature.<locals>.f   	    ur   )r   rd   r   r   )r   r   r   r   s       r   test_vectorize_one_signature-DocsExamplesTest.test_vectorize_one_signature   s6    0123 4 s	   2
A c           
      x   [        5          SSKJnJnJnJnJn  SS KnU" U" X"5      U" X35      U" XD5      U" XU5      /5      S 5       nUR                  S5      nU" X5      n	U R                  XR                  5        UR                  / SQ5      n
UR                  R                  X5        UR                  SSS5      nU" X5      n	U R                  XR                  5        UR                  / SQ5      n
UR                  R                  X5        UR                  S5      R!                  S	S
5      nUR#                  USS9nUR#                  USS9nUR%                  U5      nUR%                  USS9nU R                  XR                  5        UR                  / SQ5      n
UR                  R                  X5        U R                  XR                  5        UR                  / SQ5      n
UR                  R                  X5        U R                  XR                  5        UR                  / SQ/ SQ/ SQ/5      n
UR                  R                  X5        U R                  XR                  5        UR                  / SQ/ SQ/ SQ/5      n
UR                  R                  X5        S S S 5        g ! , (       d  f       g = f)Nr   )r   int32int64float32r   c                 
    X-   $ r   r   r   s     r   r   >DocsExamplesTest.test_vectorize_multiple_signatures.<locals>.f   s    
 ur      )r   r~   r>   r      r   rM   )rt   g?g?g333333?g?       @r	   r   r>   )axis)r	            )r   r    &   )r   rM   r~   r   )r>   r   r   r   )r   rM   r   r   )r>   	   r   r    )r         r   )r   rd   r   r   r   r   r   rc   r   assertIsInstancendarrayarraytestingassert_array_equallinspaceassert_allcloser   reduce
accumulate)r   r   r   r   r   r   rj   r   rv   r   r   result1result2result3result4s                  r   "test_vectorize_multiple_signatures3DocsExamplesTest.test_vectorize_multiple_signatures   sJ   GGe+e+113 4	4
 		!AqWF !!&**5hh23GJJ))&: Aq!$AqWF !!&**5hh<=GJJ&&v7 		"%%a+A
 hhqqh)G hhqqh)G ll1oG
 ll11l-G !!'::6hh/0GJJ))';!!'::6hh{+GJJ))';!!'::6hh   G
 JJ))';!!'::6hh  G
 JJ))';] s   JJ++
J9c                 F   [        5          SSKJnJn  SS KnU" US S  X"S S  4/S5      S 5       nUR                  S5      nU" US5      nU R                  XcR                  5        UR                  / SQ5      nUR                  R                  Xg5        UR                  S5      R                  SS	5      nU" US
5      nU" XSR                  S
S/5      5      n	U" XSR                  S
S/5      5        U R                  XR                  5        UR                  / SQ/ SQ/5      nUR                  R                  X5        U R                  XR                  5        UR                  / SQ/ SQ/5      nUR                  R                  X5        S S S 5        g ! , (       d  f       g = f)Nr   rq   r   rr   c                 T    [        U R                  S   5       H  nX   U-   X#'   M     g r*   rA   rN   rD   rE   r   rG   s       r   g,DocsExamplesTest.test_guvectorize.<locals>.g,  &    qwwqz*ATAXCF +r   r   r~   r~   r   r>   r   r   r   r   r   r`   )r      r	   )      r   )         )r   rd   rq   r   rc   r   r   r   r   r   r   r   )
r   rq   r   rj   r   rv   r   r   r   r   s
             r   test_guvectorize!DocsExamplesTest.test_guvectorize&  sZ   058U!H56F& G& 		!Aq!WF !!&**5hh/GJJ))&: 		!$$Q*A 2hG 88RH-.Ga2r(#$
 !!'::6hhl;<GJJ))';!!'::6hhl;<GJJ))';U s   E>F
F c                 "   [        5          SSKJnJn  SS KnU" US S  X"S S  4/S5      S 5       nUR                  S5      nU" US5      nU R                  XcR                  5        U R                  US5        S S S 5        g ! , (       d  f       g = f)Nr   r   z
(n),()->()c                 b    Sn[        U R                  S   5       H  nX0U   U-   -  nM     X2S'   g r*   r   )rD   rE   r   accrG   s        r   r   :DocsExamplesTest.test_guvectorize_scalar_return.<locals>.gY  s4    qwwqz*AQ4!8OC +Ar   r   r~   r`   )	r   rd   rq   r   rc   r   r   integerassertEqual)r   rq   r   rj   r   rv   r   s          r   test_guvectorize_scalar_return/DocsExamplesTest.test_guvectorize_scalar_returnS  s    058U!H56E F 		!Aq!WF !!&**5VR() s   A,B  
Bc                   ^ [        5          SS KnSSKJnJn  U" S5      S 5       mU" SS9U4S j5       nUR                  SS	S
9nUR                  U5      nU" XV5        U R                  XV5        S S S 5        g ! , (       d  f       g = f)Nr   r:   rq   (n)->(n)c                 N    [        U R                  S   5       H	  nX   X'   M     g r*   r   rD   r   rG   s      r   copy3DocsExamplesTest.test_guvectorize_jit.<locals>.copyq  "    qwwqz*ATCF +r   Tr;   c                    > T" X5        g r   r   rD   r   r  s     r   jit_fn5DocsExamplesTest.test_guvectorize_jit.<locals>.jit_fnv  
    Qr   r   i4r]   )r   rc   rd   r:   rq   r   
zeros_likeassertPreciseEqual)r   rj   r:   rq   r  rD   r   r  s          @r   test_guvectorize_jit%DocsExamplesTest.test_guvectorize_jitj  s    .$" %" $  
 		!4	(A--"C1N ##A+- s   A$A99
Bc                   ^ [        5          SS KnSSKJnJn  U" S5      S 5       mU" SS9U4S j5       nUR                  S5      nUR                  S	5      nU R                  [        5       nU" XV5        S S S 5        U R                  S
[        WR                  5      5        S S S 5        g ! , (       d  f       N<= f! , (       d  f       g = f)Nr   r  r  c                 N    [        U R                  S   5       H	  nX   X'   M     g r*   r   r  s      r   r  8DocsExamplesTest.test_guvectorize_jit_fail.<locals>.copy  r  r   Tr;   c                    > T" X5        g r   r   r  s     r   r  :DocsExamplesTest.test_guvectorize_jit_fail.<locals>.jit_fn  r  r   )rM   r   )r   z&Loop and array shapes are incompatible)r   rc   rd   r:   rq   onesr   assertRaises
ValueErrorassertInstr	exception)	r   rj   r:   rq   r  rD   r   raisesr  s	           @r   test_guvectorize_jit_fail*DocsExamplesTest.test_guvectorize_jit_fail  s    .$" %" $   A((4.C"":.&q / MMBf../1'   /.! s$   A!B=-	B,6-B=,
B:	6B==
Cc                    [        5          SSKJnJn  SS KnU" US S  US S  4/S5      S 5       nUR                  SUR                  S9nU" U5      nU R                  XSR                  5        UR                  / SQ/ SQ/ SQ/5      nUR                  R                  XW5        U R                  XcR                  5        UR                  / SQ/ SQ/ SQ/5      nUR                  R                  Xg5        UR                  SUR                  S9nU" U5      n[        U5        U R                  XSR                  5        UR                  / S	Q/ S	Q/ S	Q/UR                  S
9nUR                  R                  XW5        U R                  XcR                  5        UR                  / SQ/ SQ/ SQ/5      nUR                  R                  Xg5        U" US S  US S  4/SSS9S 5       nUR                  SUR                  S9nU" U5      n[        U5        U R                  XSR                  5        UR                  / SQ/ SQ/ SQ/5      nUR                  R                  XW5        U R                  XcR                  5        UR                  / SQ/ SQ/ SQ/5      nUR                  R                  Xg5        S S S 5        g ! , (       d  f       g = f)Nr   )rq   r   z()->()c                     SU S'   SUS'   g N      @r   @r   invalsoutvalss     r   init_values@DocsExamplesTest.test_guvectorize_overwrite.<locals>.init_values  s    q	 
r   )r   r   )rN   r^   )r-  r-  r-  )r.  r.  r.  )rt   rt   rt   r]   )r0  )writable_argsc                     SU S'   SUS'   g r,  r   r/  s     r   r2  r3    s      q	 
r   )r   rd   rq   r   rc   re   r   r   r   r   r   r   rg   )r   rq   r   rj   r2  r0  r1  r   s           r   test_guvectorize_overwrite+DocsExamplesTest.test_guvectorize_overwrite  s   271:wqz23X>! ?! XXF"**X=F
 "&)G !!&**5hh ! "G JJ))&:!!'::6hh ! "G JJ))'; XXF"**X=F "&)G &M !!&**5hh  &(ZZ  1G JJ))&:!!'::6hh ! "G JJ))'; !*gaj)*)
!
! XXF"**X=F "&)G &M !!&**5hh ! "G JJ))&:!!'::6hh ! "G JJ))';M s   J!J55
Kc                    [        5          SSKJn  US 5       nU" SS5      n[        UR                  5        U R                  US5        [        (       a  [        S:  a  S/nOS	/nOS
/nU R                  UR                  U5        U" SS5      n[        UR                  5        U R                  US5        [        (       a  [        S:  a  SS/nO	S	S/nOS
S/nU R                  UR                  U5        U" SS5      n[        UR                  5        U R                  US5        [        (       a  [        S:  a  SS/nO	S	S/nOS
S/nU R                  UR                  U5        US 5       n[        U" SS5      5        [        U" SS5      5        [        UR                  5        S/nU R                  UR                  U5        S S S 5        g ! , (       d  f       g = f)Nr   )r   c                 
    X-  $ r   r   r   s     r   r   2DocsExamplesTest.test_vectorize_dynamic.<locals>.f  r   r   r   r>   r	   )r~   r   zll->qqq->qll->lr_   r   dd->drM   c                 
    X-  $ r   r   )rv   r   s     r   r   2DocsExamplesTest.test_vectorize_dynamic.<locals>.gD  r   r   g      @r~   )r   rd   r   rg   typesr  r   r   )r   r   r   r   r   r   s         r   test_vectorize_dynamic'DocsExamplesTest.test_vectorize_dynamic  s   ' 
 qVF !''N VR(x 6)&iG&iG")QWWg. r"XF !''N VS)x 6)&0G&0G"G,QWWg. qWF !''N VS)x 6)&0G&0G"G,QWWg.   !Br(O !Aa&M !''N iGQWWg._ s   F9G
Gc                    [        5          SSKJn  SS KnU" S5      S 5       nUR	                  SUR
                  S9nSnUR                  U5      nU" XEU5        [        UR                  5        UR                  / SQ5      nUR                  R                  Xg5        [        (       a  S	/nOS
/nU R                  UR                  U5        UR	                  SUR                  S9nSnUR                  U5      nU" XEU5        [        UR                  5        [        (       a  S	S/nOS
S/nU R                  UR                  U5        UR	                  SUR
                  S9nSnUR                  U5      nU" XEU5        [        U5        UR                  / SQ5      nUR                  R                  Xg5        S S S 5        g ! , (       d  f       g = f)Nr   rp   rr   c                 T    [        U R                  S   5       H  nX   U-   X#'   M     g r*   r   r   s       r   r   4DocsExamplesTest.test_guvectorize_dynamic.<locals>.g[  r   r   r   r]   r   )r   r   r	   r   r   r;  r<  g@r=  r~   r   )r   rd   rq   rc   r   r   r  rg   r@  r   r   r   r   r  double)r   rq   rj   r   rD   rE   r   r   s           r   test_guvectorize_dynamic)DocsExamplesTest.test_guvectorize_dynamicU  s   )'& (& 		!288	,AA--"CaCL!''N hh34GJJ))#7x")")QWWg. 		!299	-AA--"CaCL
 !''N x"G,"G,QWWg. 		!288	,AA--"CaCL#J hh/GJJ))#7u s   F*F>>
G)r$   )r   r   r   r   r#   r/   r3   rm   r   r   r   r   r   r  r  r(  r6  rA  rG  r   __classcell__)r'   s   @r   r   r      s^    0304n%4UQpO<b+<Z).,21.g<RP/d;8 ;8r   r   __main__)r+   unittestnumba.tests.supportr   r   numba.core.configr   numba.np.numpy_supportr   r   r   r   mainr   r   r   <module>rP     sG      9 & 0# #z	8x z	8z zMMO r   