
    J/Ph:\                         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  G d d          Z	 G d de          Z
ed	k    r ej                     dS dS )
    N)TestCasecaptured_stdout)IS_WIN32)numpy_versionc                       e Zd ZdZddZdS )MatplotlibBlockerzBlocks 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                 4    |dk    rd}t          |          d S )N
matplotlibz/Blocked import of matplotlib for test suite run)ImportError)selffullnamepathtargetmsgs        f/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numba/tests/doc_examples/test_examples.py	find_speczMatplotlibBlocker.find_spec   s(    |##CCc""" $#    N)__name__
__module____qualname____doc__r    r   r   r   r      s4        N N# # # # # #r   r   c                   r     e Zd Z f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 xZS )DocsExamplesTestc                 `     t                      j        |i | t                      | _        d S r   )super__init__r   _mpl_blocker)r   argskwargs	__class__s      r   r   zDocsExamplesTest.__init__   s3    $)&)))-//r   c                 P    t           j                            d| j                   d S Nr   )sys	meta_pathinsertr   r   s    r   setUpzDocsExamplesTest.setUp   s#    Q 122222r   c                 N    t           j                            | j                   d S r   )r%   r&   remover   r(   s    r   tearDownzDocsExamplesTest.tearDown   s!    T./////r   c           	         t                      5  ddlm} 	 ddlm}m} d}n# t          $ r d}Y nw xY wdd l}ddlm	}  |d          d              |d          fd	            }|
                    d
|j                  } |            }	 |dddd|d            |            }
t          |
|	z
             |r ||            |             d d d            d S # 1 swxY w Y   d S )Nr   )default_timer)imshowshowTFjitnopythonc                     d}t          | |          }d}t          |          D ]1}||z  |z   }|j        |j        z  |j        |j        z  z   dk    r|c S 2dS )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   mandelz0DocsExamplesTest.test_mandelbrot.<locals>.mandel.   su     AaLLy)) ! !AA	A!&16/9a??  @ sr   c                     |j         d         }|j         d         }|| z
  |z  }||z
  |z  }	t          |          D ]8}
| |
|z  z   }t          |          D ]}|||	z  z   } |||          }||||
f<   9|S )Nr      )shaper9   )min_xmax_xmin_ymax_yimageitersheightwidthpixel_size_xpixel_size_yr<   r:   r=   r;   colorrB   s                  r   create_fractalz8DocsExamplesTest.test_mandelbrot.<locals>.create_fractal?   s    QA %6 %7u , ,A 1|#33D"6]] , ,$q<'77 &tT5 9 9&+ad,
 r   )  i  dtypeg             ?g         )r   timeitr.   matplotlib.pylabr/   r0   r   numpynumbar2   zerosuint8print)r   timerr/   r0   have_mplnpr2   rQ   rJ   serB   s              @r   test_mandelbrotz DocsExamplesTest.test_mandelbrot"   s    3	 3	555555!99999999 ! ! ! !!!!!!!S$     S$      HH/rxH@@EAN4dC;;;A!a%LLL ug3	 3	 3	 3	 3	 3	 3	 3	 3	 3	 3	 3	 3	 3	 3	 3	 3	 3	s-   C!
#C!2C!2B"C!!C%(C%c                 D   t                      5  dd l}ddlm}  |dgd          d             }|                    d|j                                      dd	          }t          |           t           ||d
                     d d d            d S # 1 swxY w Y   d S )Nr   guvectorizez%void(float64[:], intp[:], float64[:])(n),()->(n)c                     |d         }d}d}t          |          D ]}|| |         z  }|dz  }||z  ||<   t          |t          |                     D ]!}|| |         | ||z
           z
  z  }||z  ||<   "d S )Nr           rD   )r9   len)a
window_arroutwindow_widthasumcountr?   s          r   	move_meanz7DocsExamplesTest.test_moving_average.<locals>.move_mean`   s      *!}|,, * *AAaDLDQJE!E\CFF|SVV44 * *AAaD1Q%5#666D!E\CFF* *r   rV   rS      
      )r   rY   rZ   rf   arangefloat64reshaper]   )r   r`   rf   rq   arrs        r   test_moving_averagez$DocsExamplesTest.test_moving_averageY   s    	% 	%))))))[AB&( (
* 
*( (
* ))Bbj)1199!R@@C#JJJ))C##$$$-	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%s   A9BBBc                    t                      5  dd ldd lddlm dd lddlm} d}d}fd} |ddd	          fd
            }fd}fd}fd} ||          }	 |||          }
j        	                    |          }j        	                    |          } |d d|||          } ||d|	||            ||d|z  |
||           d d d            d S # 1 swxY w Y   d S )Nr   )repeatr1   r6   i@B c                 @                         d| z  d|z  z             S )z?
                Control function using Numpy.
                 @皙	@)exp)rk   br`   s     r   func_npz,DocsExamplesTest.test_nogil.<locals>.func_np   s$     vvcAga/000r   z%void(double[:], double[:], double[:])T)r4   nogilc                     t          t          |                     D ]/}                    d||         z  d||         z  z             | |<   0dS )z6
                Function under test.
                r}   r~   N)r9   rj   r   )resultrk   r   r?   maths       r   inner_func_nbz2DocsExamplesTest.test_nogil.<locals>.inner_func_nb   s\     s6{{++ B BA $qtcAaDj)@ A AF1IIB Br   c                 4   t          |                    d          d            i }| "                    ||           sJ || f            t          d                    t	           fddd	                    d
z                       |S )zM
                Benchmark *func* and print out its runtime.
                rV    )endNz{:>5.0f} msc                        i S r   r   )r    funcr!   s   r   <lambda>z?DocsExamplesTest.test_nogil.<locals>.timefunc.<locals>.<lambda>   s    DD$1&11 r      rr   )numberr{   rR   )r]   ljustallcloseformatmin)correctra   r   r    r!   resr`   r{   s     ``` r   timefuncz-DocsExamplesTest.test_nogil.<locals>.timefunc   s     aggbkks++++ dD+F++&;;sG44DDsGnDDDm**3vv111111!A0G 0G 0G ,H ,HJN,O P P Q Q Q
r   c                       fd}|S )zP
                Run the given function inside a single thread.
                c                  |    t          | d                   }                    |j                  } |g| R   |S )Nr   rS   )rj   emptyrv   )r    lengthr   
inner_funcr`   s      r   r   zDDocsExamplesTest.test_nogil.<locals>.make_singlethread.<locals>.func   sF     a\\FXXfBJX??FJv-----!Mr   r   )r   r   r`   s   ` r   make_singlethreadz6DocsExamplesTest.test_nogil.<locals>.make_singlethread   s)    " " " " " "
 r   c                       fd}|S )z
                Run the given function inside *numthreads* threads, splitting
                its arguments into equal-sized chunks.
                c                  J    t           d                   }                    |j                  }|f z    |	z   dz
  	z   fdt          	          D             }
fd|D             }|D ]}|                                 |D ]}|                                 |S )Nr   rS   rD   c                 0    g | ]fd D             S )c                 6    g | ]}|z  d z   z           S )rD   r   ).0argchunklenr?   s     r   
<listcomp>zeDocsExamplesTest.test_nogil.<locals>.make_multithread.<locals>.func_mt.<locals>.<listcomp>.<listcomp>   s<     % % %s1x<Q(0B#BC % % %r   r   )r   r?   r    r   s    @r   r   zZDocsExamplesTest.test_nogil.<locals>.make_multithread.<locals>.func_mt.<locals>.<listcomp>   sV     A A A)*% % % % %#% % % A A Ar   c                 >    g | ]}                     |           S ))r   r    )Thread)r   chunkr   	threadings     r   r   zZDocsExamplesTest.test_nogil.<locals>.make_multithread.<locals>.func_mt.<locals>.<listcomp>   s<     4 4 4#(  )//z/NN 4 4 4r   )rj   r   rv   r9   startjoin)r    r   r   chunksthreadsthreadr   r   r`   
numthreadsr   s   `     @r   func_mtzFDocsExamplesTest.test_nogil.<locals>.make_multithread.<locals>.func_mt   s     a\\FXXfBJX??F"9t+D & 3a 7JFHA A A A A.3J.?.?A A AF4 4 4 4 4,24 4 4G") ' '") & &!Mr   r   )r   r   r   r`   r   s   `` r   make_multithreadz5DocsExamplesTest.test_nogil.<locals>.make_multithread   s4    
" " " " " " " "  r   znumpy (1 thread)znumba (1 thread)znumba (%d threads))
r   r   r   rW   r{   rY   rZ   r2   randomrand)r   r2   nthreadssizer   r   r   r   r   func_nb
func_nb_mtrk   r   r   r   r`   r{   r   s                 @@@@r   
test_nogilzDocsExamplesTest.test_nogils   s;    T	Q T	QKKK%%%%%%!!!!!!HD1 1 1 1 1 S84  B B B B B     	 	 	 	 	     . ('66G))-BBJ	t$$A	t$$Aht%7!QGGGHW0'1a@@@HW2X=z1aPPPiT	Q T	Q T	Q T	Q T	Q T	Q T	Q T	Q T	Q T	Q T	Q T	Q T	Q T	Q T	Q T	Q T	Q T	Qs   CC''C+.C+c                     t                      5  ddlm}m}  | |||          g          d             }d d d            d S # 1 swxY w Y   d S )Nr   )	vectorizerv   c                     | |z   S r   r   r<   r=   s     r   fz8DocsExamplesTest.test_vectorize_one_signature.<locals>.f       1ur   )r   rZ   r   rv   )r   r   rv   r   s       r   test_vectorize_one_signaturez-DocsExamplesTest.test_vectorize_one_signature   s     	 	00000000Y11233  43	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   (AAAc           
      >   t                      5  ddlm}m}m}m}m} dd l} | |||           |||           |||           |||          g          d             }|                    d          } |||          }	| 	                    |	|j
                   |                    g d          }
|j                            |	|
           |                    ddd          } |||          }	| 	                    |	|j
                   |                    g d          }
|j                            |	|
           |                    d                              d	d
          }|                    |d          }|                    |d          }|                    |          }|                    |d          }| 	                    ||j
                   |                    g d          }
|j                            ||
           | 	                    ||j
                   |                    g d          }
|j                            ||
           | 	                    ||j
                   |                    g dg dg dg          }
|j                            ||
           | 	                    ||j
                   |                    g dg dg dg          }
|j                            ||
           d d d            d S # 1 swxY w Y   d S )Nr   )r   int32int64float32rv   c                     | |z   S r   r   r   s     r   r   z>DocsExamplesTest.test_vectorize_multiple_signatures.<locals>.f   s    
 1ur      )r   rr   r6   r      rs   rD   )ri   g?g?g333333?g?       @   rt   r6   )axis)r            )r      &   )r   rD   rr   rt   )r6   r   r   rs   )r   rD   rt   r   )r6   	   r   r   )r         r   )r   rZ   r   r   r   r   rv   rY   ru   assertIsInstancendarrayarraytestingassert_array_equallinspaceassert_allcloserw   reduce
accumulate)r   r   r   r   r   rv   r`   r   rk   r   r   result1result2result3result4s                  r   "test_vectorize_multiple_signaturesz3DocsExamplesTest.test_vectorize_multiple_signatures   s    N	< N	<GGGGGGGGGGGGGGYeU++eU++11113 4 4 	4 4
 		!AQq!WWF !!&"*555hh22233GJ))&'::: Aq!$$AQq!WWF !!&"*555hh<<<==GJ&&vw777 		"%%a++A
 hhqqh))G hhqqh))G ll1ooG
 ll11l--G !!'2:666hh///00GJ))'7;;;!!'2:666hh{{{++GJ))'7;;;!!'2:666hh      G
 J))'7;;;!!'2:666hh   G
 J))'7;;;]N	< N	< N	< N	< N	< N	< N	< N	< N	< N	< N	< N	< N	< N	< N	< N	< N	< N	<s   K6LLLc                    t                      5  ddlm}m} dd l} ||d d          ||d d          fgd          d             }|                    d          } ||d          }|                     ||j                   |                    g d          }|j	        
                    ||           |                    d                              dd	          } ||d
          } |||                    d
dg                    }	 |||                    d
dg                     |                     ||j                   |                    g dg dg          }|j	        
                    ||           |                     |	|j                   |                    g dg dg          }|j	        
                    |	|           d d d            d S # 1 swxY w Y   d S )Nr   rf   r   rg   c                 \    t          | j        d                   D ]}| |         |z   ||<   d S r$   r9   rE   r<   r=   r   r?   s       r   gz,DocsExamplesTest.test_guvectorize.<locals>.g,  <    qwqz** & &AqTAXCFF& &r   r   rr   rr   rt   r6   r   r   r   rt   rs   rV   )rs      r   )      r   )         )r   rZ   rf   r   rY   ru   r   r   r   r   r   rw   )
r   rf   r   r`   r   rk   r   r   r   r   s
             r   test_guvectorizez!DocsExamplesTest.test_guvectorize&  sT    *	< *	<00000000[58UE!!!H56FF& & GF& 		!AQq!WWF !!&"*555hh//GJ))&'::: 		!$$Q**A a2hhG a288RH--..GAa2r(##$$$
 !!'2:666hhlll;<<GJ))'7;;;!!'2:666hhlll;<<GJ))'7;;;U*	< *	< *	< *	< *	< *	< *	< *	< *	< *	< *	< *	< *	< *	< *	< *	< *	< *	<s   F=GG Gc                 b   t                      5  ddlm}m} dd l} ||d d          ||d d          fgd          d             }|                    d          } ||d          }|                     ||j                   |                     |d           d d d            d S # 1 swxY w Y   d S )Nr   r   z
(n),()->()c                 j    d}t          | j        d                   D ]}|| |         |z   z  }||d<   d S r$   r   )r<   r=   r   accr?   s        r   r   z:DocsExamplesTest.test_guvectorize_scalar_return.<locals>.gY  sD    qwqz** $ $A1Q4!8OCCAr   r   rr   rV   )	r   rZ   rf   r   rY   ru   r   integerassertEqual)r   rf   r   r`   r   rk   r   s          r   test_guvectorize_scalar_returnz/DocsExamplesTest.test_guvectorize_scalar_returnS  s'    	) 	)00000000[58UE!!!H56EE  FE 		!AQq!WWF !!&"*555VR((()	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)s   BB$$B(+B(c                 `   t                      5  dd l}ddlm}m}  |d          d              |d          fd            }|                    dd	
          }|                    |          } |||           |                     ||           d d d            d S # 1 swxY w Y   d S )Nr   r2   rf   (n)->(n)c                 V    t          | j        d                   D ]}| |         ||<   d S r$   r   r<   r   r?   s      r   copyz3DocsExamplesTest.test_guvectorize_jit.<locals>.copyq  8    qwqz** " "AqTCFF" "r   Tr3   c                       | |           d S r   r   r<   r   r   s     r   jit_fnz5DocsExamplesTest.test_guvectorize_jit.<locals>.jit_fnv      Qr   r   i4rS   )r   rY   rZ   r2   rf   ru   
zeros_likeassertPreciseEqual)r   r`   r2   rf   r   r<   r   r   s          @r   test_guvectorize_jitz%DocsExamplesTest.test_guvectorize_jitj  s=    	, 	,........[$$" " %$" S$     
 		!4	((A--""CF1cNNN ##As+++-	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,s   BB##B'*B'c                    t                      5  dd l}ddlm}m}  |d          d              |d          fd            }|                    d          }|                    d	          }|                     t                    5 } |||           d d d            n# 1 swxY w Y   | 	                    d
t          |j                             d d d            d S # 1 swxY w Y   d S )Nr   r   r   c                 V    t          | j        d                   D ]}| |         ||<   d S r$   r   r   s      r   r   z8DocsExamplesTest.test_guvectorize_jit_fail.<locals>.copy  r   r   Tr3   c                       | |           d S r   r   r   s     r   r   z:DocsExamplesTest.test_guvectorize_jit_fail.<locals>.jit_fn  r   r   )rD   r   )r   z&Loop and array shapes are incompatible)r   rY   rZ   r2   rf   onesr   assertRaises
ValueErrorassertInstr	exception)	r   r`   r2   rf   r   r<   r   raisesr   s	           @r   test_guvectorize_jit_failz*DocsExamplesTest.test_guvectorize_jit_fail  s    	1 	1........[$$" " %$" S$      A((4..C"":.. &q#               MMBf.//1 1 1'	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1s6   A<C%B%C%%B)	)C%,B)	-+C%%C),C)c                 4   t                      5  ddlm}m} dd l} ||d d          |d d          fgd          d             }|                    d|j                  } ||          }|                     ||j                   |                    g dg dg dg          }|j	        
                    ||           |                     ||j                   |                    g dg dg dg          }|j	        
                    ||           |                    d|j                  } ||          }t          |           |                     ||j                   |                    g d	g d	g d	g|j        
          }|j	        
                    ||           |                     ||j                   |                    g dg dg dg          }|j	        
                    ||            ||d d          |d d          fgdd          d             }|                    d|j                  } ||          }t          |           |                     ||j                   |                    g dg dg dg          }|j	        
                    ||           |                     ||j                   |                    g dg dg dg          }|j	        
                    ||           d d d            d S # 1 swxY w Y   d S )Nr   )rf   rv   z()->()c                     d| d<   d|d<   d S N      @r   @r   invalsoutvalss     r   init_valuesz@DocsExamplesTest.test_guvectorize_overwrite.<locals>.init_values  s    q	 


r   )rt   rt   )rE   rT   )r  r  r  )r  r  r  )ri   ri   ri   rS   )r  )writable_argsc                     d| d<   d|d<   d S r  r   r  s     r   r  z@DocsExamplesTest.test_guvectorize_overwrite.<locals>.init_values  s      q	 


r   )r   rZ   rf   rv   rY   r[   r   r   r   r   r   r   r]   )r   rf   rv   r`   r  r  r  r   s           r   test_guvectorize_overwritez+DocsExamplesTest.test_guvectorize_overwrite  s    f	< f	<22222222[7111:wqqqz23X>>! ! ?>! XXF"*X==F
 "k&))G !!&"*555hh ! " "G J))&':::!!'2:666hh ! " "G J))'7;;; XXF"*X==F "k&))G &MMM !!&"*555hh  &(Z  1 1G J))&':::!!'2:666hh ! " "G J))'7;;; [!!!*gaaaj)*)  
! ! 
! XXF"*X==F "k&))G &MMM !!&"*555hh ! " "G J))&':::!!'2:666hh ! " "G J))'7;;;Mf	< f	< f	< f	< f	< f	< f	< f	< f	< f	< f	< f	< f	< f	< f	< f	< f	< f	<s   K1LLLc                    t                      5  ddlm} |d             } |dd          }t          |j                   |                     |d           t          rt          dk     rdg}nd	g}nd
g}|                     |j        |            |dd          }t          |j                   |                     |d           t          rt          dk     rddg}n	d	dg}nd
dg}|                     |j        |            |dd          }t          |j                   |                     |d           t          rt          dk     rddg}n	d	dg}nd
dg}|                     |j        |           |d             }t           |dd                     t           |dd                     t          |j                   dg}|                     |j        |           d d d            d S # 1 swxY w Y   d S )Nr   )r   c                     | |z  S r   r   r   s     r   r   z2DocsExamplesTest.test_vectorize_dynamic.<locals>.f  r   r   rt   r6   r   )rr   r   zll->qqq->qll->lrU   r   dd->drD   c                     | |z  S r   r   )rk   r   s     r   r   z2DocsExamplesTest.test_vectorize_dynamic.<locals>.gD  r   r   g      @rr   )r   rZ   r   r]   typesr   r   r   )r   r   r   r   r   r   s         r   test_vectorize_dynamicz'DocsExamplesTest.test_vectorize_dynamic  s    O	/ O	/''''''  Y
 QqVVF !'NNN VR((( $ 6))&iGG&iGG")QWg... Qr"XXF !'NNN VS))) - 6))&0GG&0GG"G,QWg... QqWWF !'NNN VS))) - 6))&0GG&0GG"G,QWg...   Y !!Br((OOO !!Aa&&MMM !'NNN iGQWg..._O	/ O	/ O	/ O	/ O	/ O	/ O	/ O	/ O	/ O	/ O	/ O	/ O	/ O	/ O	/ O	/ O	/ O	/s   GG--G14G1c                    t                      5  ddlm} dd l} |d          d             }|                    d|j                  }d}|                    |          } ||||           t          |j                   |	                    g d          }|j
                            ||           t          rd	g}nd
g}|                     |j        |           |                    d|j                  }d}|                    |          } ||||           t          |j                   t          rd	dg}nd
dg}|                     |j        |           |                    d|j                  }d}|                    |          } ||||           t          |           |	                    g d          }|j
                            ||           d d d            d S # 1 swxY w Y   d S )Nr   re   rg   c                 \    t          | j        d                   D ]}| |         |z   ||<   d S r$   r   r   s       r   r   z4DocsExamplesTest.test_guvectorize_dynamic.<locals>.g[  r   r   r   rS   rs   )rs   r   r   r   r   r  r  g@r  rr   r   )r   rZ   rf   rY   ru   r   r   r]   r  r   r   r   r   r   double)r   rf   r`   r   r<   r=   r   r   s           r   test_guvectorize_dynamicz)DocsExamplesTest.test_guvectorize_dynamicU  se    :	8 :	8))))))[''& & ('& 		!28	,,AA--""CAaCLLL!'NNN hh33344GJ))#w777 $")")QWg... 		!29	--AA--""CAaCLLL
 !'NNN  -"G,"G,QWg... 		!28	,,AA--""CAaCLLL#JJJ hh//GJ))#w777u:	8 :	8 :	8 :	8 :	8 :	8 :	8 :	8 :	8 :	8 :	8 :	8 :	8 :	8 :	8 :	8 :	8 :	8s   GG**G.1G.)r   r   r   r   r)   r,   rc   ry   r   r   r   r   r   r  r  r  r   r$  __classcell__)r"   s   @r   r   r      s       0 0 0 0 03 3 30 0 04 4 4n% % %4UQ UQ UQp  O< O< O<b+< +< +<Z) ) )., , ,21 1 1.g< g< g<RP/ P/ P/d;8 ;8 ;8 ;8 ;8 ;8 ;8r   r   __main__)r%   unittestnumba.tests.supportr   r   numba.core.configr   numba.np.numpy_supportr   r   r   r   mainr   r   r   <module>r,     s    


  9 9 9 9 9 9 9 9 & & & & & & 0 0 0 0 0 0# # # # # # # #z	8 z	8 z	8 z	8 z	8x z	8 z	8 z	8z zHMOOOOO r   