
    ,iT                         d dl Z d dlZd dlmZ d dlmZ  G d d          Z G d dej                  Ze	dk    r ej
                     dS dS )	    N)captured_stdout)IS_WIN32c                       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        d/var/www/html/speakWrite/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                   f     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 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      )shaper6   )min_xmax_xmin_ymax_yimageitersheightwidthpixel_size_xpixel_size_yr9   r7   r:   r8   colorr?   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-   r.   r	   numpynumbar0   zerosuint8print)r
   timerr-   r.   have_mplnpr0   rN   rG   ser?   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           rA   )r6   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   rS   rP      
      )r   rV   rW   rc   arangefloat64reshaperZ   )r
   r]   rc   rn   arrs        r   test_moving_averagez$DocsExamplesTest.test_moving_averageW   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   )repeatr/   r3   i@B c                 @                         d| z  d|z  z             S )z?
                Control function using Numpy.
                 @皙	@)exp)rh   br]   s     r   func_npz,DocsExamplesTest.test_nogil.<locals>.func_np~   s$     vvcAga/000r   z%void(double[:], double[:], double[:])T)r1   nogilc                     t          t          |                     D ]/}                    d||         z  d||         z  z             | |<   0dS )z6
                Function under test.
                rz   r{   N)r6   rg   r|   )resultrh   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.
                rS    )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      ro   )numberrx   rO   )rZ   ljustallcloseformatmin)correctr^   r   r   r   resr]   rx   s     ``` r   timefuncz-DocsExamplesTest.test_nogil.<locals>.timefunc   s     aggbkks++++ dD+F++&;;sG44DDsGnDD4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   rP   )rg   emptyrs   )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   rP   rA   c                 0    g | ]fd D             S )c                 6    g | ]}|z  d z   z           S )rA   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   )rg   r   rs   r6   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   rT   rx   rV   rW   r0   randomrand)r
   r0   nthreadssizer~   r   r   r   r   func_nb
func_nb_mtrh   r}   r   r   r]   rx   r   s                 @@@@r   
test_nogilzDocsExamplesTest.test_nogilq   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   )	vectorizers   c                     | |z   S r   r   r9   r:   s     r   fz8DocsExamplesTest.test_vectorize_one_signature.<locals>.f       1ur   )r   rW   r   rs   )r
   r   rs   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float32rs   c                     | |z   S r   r   r   s     r   r   z>DocsExamplesTest.test_vectorize_multiple_signatures.<locals>.f   s    
 1ur      )r   ro   r3   r      rp   rA   )rf   g?g?g333333?g?       @   rq   r3   )axis)r            )r      &   )r   rA   ro   rq   )r3   r   r   rp   )r   rA   rq   r   )r3   	   r   r   )r         r   )r   rW   r   r   r   r   rs   rV   rr   assertIsInstancendarrayarraytestingassert_array_equallinspaceassert_allclosert   reduce
accumulate)r
   r   r   r   r   rs   r]   r   rh   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   rc   r   rd   c                 \    t          | j        d                   D ]}| |         |z   ||<   d S r"   r6   rB   r9   r:   r   r<   s       r   gz,DocsExamplesTest.test_guvectorize.<locals>.g*  <    qwqz** & &AqTAXCFF& &r   r   ro   ro   rq   r3   r   r   r   rq   rp   rS   )rp      r   )      r   )         )r   rW   rc   r   rV   rr   r   r   r   r   r   rt   )
r
   rc   r   r]   r   rh   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   )r9   r:   r   accr<   s        r   r   z:DocsExamplesTest.test_guvectorize_scalar_return.<locals>.gW  sD    qwqz** $ $A1Q4!8OCCAr   r   ro   rS   )	r   rW   rc   r   rV   rr   r   integerassertEqual)r
   rc   r   r]   r   rh   r   s          r   test_guvectorize_scalar_returnz/DocsExamplesTest.test_guvectorize_scalar_returnQ  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                 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   )rc   rs   z()->()c                     d| d<   d|d<   d S N      @r   @r   invalsoutvalss     r   init_valuesz@DocsExamplesTest.test_guvectorize_overwrite.<locals>.init_valuesn  s    q	 


r   )rq   rq   )rB   rQ   )r   r   r   )r   r   r   )rf   rf   rf   rP   )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   rW   rc   rs   rV   rX   r   r   r   r   r   r   rZ   )r
   rc   rs   r]   r   r   r   r   s           r   test_guvectorize_overwritez+DocsExamplesTest.test_guvectorize_overwriteh  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dg}ndg}|                     |j        |            |d	d
          }t          |j                   |                     |d
           t          rddg}nddg}|                     |j        |            |dd
          }t          |j                   |                     |d
           t          r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   rq   r3   r   zll->qll->lrR   r   dd->drA   c                     | |z  S r   r   )rh   r}   s     r   r   z2DocsExamplesTest.test_vectorize_dynamic.<locals>.g	  r   r   g      @ro   )r   rW   r   rZ   typesr   r   )r
   r   r   r   r   r   s         r   test_vectorize_dynamicz'DocsExamplesTest.test_vectorize_dynamic  so    F	/ F	/''''''  Y
 QqVVF !'NNN VR((( $")")QWg... Qr"XXF !'NNN VS))) -"G,"G,QWg... QqWWF !'NNN VS))) -"G,"G,QWg...   Y !!Br((OOO !!Aa&&MMM !'NNN iGQWg...MF	/ F	/ F	/ F	/ F	/ F	/ F	/ F	/ F	/ F	/ F	/ F	/ F	/ F	/ F	/ F	/ F	/ F	/s   F"F>>GG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   rb   rd   c                 \    t          | j        d                   D ]}| |         |z   ||<   d S r"   r   r   s       r   r   z4DocsExamplesTest.test_guvectorize_dynamic.<locals>.g   r   r   r   rP   rp   )rp   r   r   r   r   zqq->qr   g@r   r   )r   rW   rc   rV   rr   r   
zeros_likerZ   r  r   r   r   r   r   double)r
   rc   r]   r   r9   r:   r   r   s           r   test_guvectorize_dynamicz)DocsExamplesTest.test_guvectorize_dynamic  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*   r`   rv   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) ) ).g< g< g<RG/ G/ G/R;8 ;8 ;8 ;8 ;8 ;8 ;8r   r   __main__)r#   unittestnumba.tests.supportr   numba.core.configr   r   TestCaser   r   mainr   r   r   <module>r     s    


  / / / / / / & & & & & &# # # # # # # #A	8 A	8 A	8 A	8 A	8x( A	8 A	8 A	8H zHMOOOOO r   