
    ge6                     v   d dl mZ d dlmZ d dlZd dlZd dlZd dlmZ d dl	Z
d dlmZmZ d dlZd dlmZmZ d dlZd dlmZmZmZmZmZmZmZmZmZmZ d Zd Zd	 Z d
 Z!d Z"d Z#ej$        %                    dd          d             Z&d Z'd Z( G d d          Z) G d d          Z* G d d          Z+d Z,dS )    )PoolN)Fraction)assert_equalassert_)raisesdeprecated_call)
_aligned_zeroscheck_random_state
MapWrappergetfullargspec_no_selfFullArgSpecrng_integers_validate_int_rename_parameter_contains_nan_rng_html_rewritec                      d} d }dD ]R}dD ]M}dD ]H}t           j        t           j        fD ]-}|ddd|ffD ]"}t          |           D ]} |||||           #.INSd S )	N
   c                 l   t          | |||f          }t          | |||          }|t          j        |          j        }t          |j        d         d         |z  d           t          | d          rt          |j        | |           nt          |j        | f|           t          |j        |           |dk    rt          |j
        j        |           d S |dk    r)|j        dk    rt          |j
        j        |           d S d S |t          |j
        j        |           d S t                      )N)aligndatar   __len__CF)reprr	   npdtype	alignmentr   __array_interface__hasattrshaper   flagsc_contiguoussizef_contiguous
ValueError)r!   r   orderr   err_msgxs         ;lib/python3.11/site-packages/scipy/_lib/tests/test__util.pycheckz"test__aligned_zeros.<locals>.check   s<   ueU3445%e<<<=HUOO-EQ*6215=qAAA5)$$ 	5%11115(G444QWe$$$C<<AG('22222c\\vzz,g66666 z ]AG('22222,,    )	                      @   N)r   r-   r/      )r   r   Nr-   r.   r/   )r   uint8float64range)niterr+   r   nr'   r   r!   js           r*   test__aligned_zerosr<      s    E  . 3 > > 	> 	>A) > > h
3 > >E"#aAq\!2 > >!&u > >A!E%u====>>>>	>> >r,   c                     t          d          } t          t          |           t          j        j                   t          |           } t          t          |           t          j        j                   t          d           } t          t          |           t          j        j                   t          t          t           d           t          t          j        d          rxt          j        	                    t          j        
                                          }t          |          } t          t          |           t          j        j	                   d S d S )Nr-   a	Generator)r
   r   typer   randomRandomStateassert_raisesr&   r    r?   PCG64)rsirgs     r*   test_check_random_staterG   7   s    
 Q

CcBI1222
S
!
!CcBI1222
T
"
"CcBI1222*0#666ry+&& 5Y  !2!233 $$T#YY	 344444	5 5r,   c                     t          d          } t          | j                  }t          |t	          dgd d dg d i                      t          | j                  }t          |t	          ddgd d d g d i                       G d d          } |            }t          |j                  }t          |t	          g dd	d
ddgdd ii                      d S )Nr-   pool)r-   funciterablec                       e Zd ZddddZdS )0test_getfullargspec_no_self.<locals>._rv_genericr.   r/   N)r$   c                    d S N )selfr>   bcr$   argskwargss          r*   _rvsz5test_getfullargspec_no_self.<locals>._rv_generic._rvsT   s    4r,   r.   r/   )__name__
__module____qualname__rV   rP   r,   r*   _rv_genericrM   S   s4        	 	 	 	 	 	 	 	r,   r[   )r>   rR   rS   rT   rU   rW   r$   )r   r   __init__r   r   __call__rV   )pargspecr[   rv_objs       r*   test_getfullargspec_no_selfra   J   s   1A$QZ00G+vhdD"&*B0 0 1 1 1$QZ00G+vz&:D$&($4 4 5 5 5        []]F$V[11G+ooovx&,vhL L M M M M Mr,   c                     t          j        d          } t          j        |           }t          d          }t	          |j        t          u            t	          |j        d u            t	          |j        du            t           |t           j        |                     }t          ||           t          t                    5  t          d          }d d d            d S # 1 swxY w Y   d S )N      $@r-   Fr   )r   arangesinr   r   _mapfuncmaprI   	_own_poollistr   rC   RuntimeError)in_argout_argr^   outs       r*   test_mapwrapper_serialrn   ]   s   Ys^^FfVnnG1AAJ#AFdNAK5 !!!
qq  
!
!Cg	|	$	$  qMM                 s   C##C'*C'c                      t          d          5 } |                     t          j        g d           d d d            d S # 1 swxY w Y   d S )Nr.   )r-   r.   r/   r0   )r   rg   mathre   )r^   s    r*   	test_poolrq   l   s    	a &A	dh%%%& & & & & & & & & & & & & & & & & &s   #A  AAc                     t          j        d          } t          j        |           }t          d          5 } |t           j        |           }t	          t          |          |           t          |j        du            t          t          |j	        t                               t          |j        d u           d d d            n# 1 swxY w Y   t          t                    5 } |t           j        |            d d d            n# 1 swxY w Y   t          |j        t          u            t!          d          5 }t          |j                  }t          |j        du            |                                 |                    t           j        |           }t	          t          |          |           d d d            d S # 1 swxY w Y   d S )Nrc   r.   TF)r   rd   re   r   r   ri   r   rh   
isinstancerI   PWLrf   rC   	Exceptionr@   r&   r   rg   close)rk   rl   r^   rm   excinfoqs         r*   test_mapwrapper_parallelry   q   sA   Ys^^FfVnnG	A (!aT#YY(((t#$$$
163''(((
$&'''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 
y	!	! W	"&&               GLJ&''' 
a 	)Aquu$%%%				 eeBFF##T#YY(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)s7   BCCC*DDDA<GGGkey)ifftdiagarccosrandnrandarrayc                    | dv rddg}n| dk    rt           }nd}t          t          |           }d| z  }t          |          5 } ||           ddd           n# 1 swxY w Y   d	 |j        D             }d
 |D             }d|v sJ | dv rt
          j        }n| dk    rt
          j        }nt
          }t          ||           } ||           ||usJ t          |t                    rt          |t                    sJ dS dS )z9Test that 'from numpy import *' functions are deprecated.)r{   r|   r}   g      ?g        finfor.   z scipy\.%s is deprecated.*2\.0\.0matchNc                 b    g | ],}t           j                            |j                  d          -S )r   )ospathsplitextfilename).0ds     r*   
<listcomp>z*test_numpy_deprecation.<locals>.<listcomp>   s/    @@@!bgqz**1-@@@r,   c                 L    g | ]!}t           j                            |          "S rP   )r   r   basename)r   fnames     r*   r   z*test_numpy_deprecation.<locals>.<listcomp>   s(    ===U!!%((===r,   
test__util)r   r~   r{   )
floatgetattrscipyr   ri   r   rA   fftrs   r@   )	rz   argrJ   r   depfnames	basenamesrootfunc_nps	            r*   test_numpy_deprecationr      s    (((Bi	5#D/#5E	u	%	%	% S			               A@sx@@@F==f===I9$$$$
y	vdC  GGCLLL$'4   &$%%%%%& &%%s   AA #A c                     t                      5  t          j        g dt          j                  } | j        t          j        k    sJ | j        t
          j        k    sJ t          j        t          j                  } | j        t          j        t
          j                  j        k    sJ t          j        t
          j        k    sJ t          t
          j        t          j                  sJ 	 d d d            d S # 1 swxY w Y   d S )Nr-   r.   r/   r   )
r   r   r   r7   r   r   r   float32eps
issubclass)r)   s    r*   $test_numpy_deprecation_functionalityr      s    
		 	5 	5K			777w%-''''w"*$$$$K&&u,,00000}
****"*em444444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5s   CC<<D D c                     t           j                                        } t          | dddd          }t          j        |          dk    sJ t          j        |          dk    sJ |j        dk    sJ t          | ddd          }t          j        |          dk    sJ t          j        |          dk    sJ |j        dk    sJ t          | dddd	          }t          j        |          d
k    sJ t          j        |          dk    sJ |j        dk    sJ t          | ddd	          }t          j        |          d
k    sJ t          j        |          dk    sJ |j        dk    sJ 	 t           j                                        } n# t          $ r Y d S w xY wt          | dddd          }t          j        |          dk    sJ t          j        |          dk    sJ |j        dk    sJ t          | ddd          }t          j        |          dk    sJ t          j        |          dk    sJ |j        dk    sJ t          | dddd	          }t          j        |          d
k    sJ t          j        |          dk    sJ |j        dk    sJ t          | ddd	          }t          j        |          d
k    sJ t          j        |          dk    sJ |j        dk    sJ d S )Nr.      d   T)lowhighr$   endpoint)r   )r   r$   r   r   Fr0   )	r   rA   rB   r   maxminr!   default_rngAttributeError)rngarrs     r*   test_rng_integersr      sG   
)


!
!C sd
C
C
CC6#;;!6#;;!9 sd
;
;
;C6#;;!6#;;!9 se
D
D
DC6#;;!6#;;!9 se
<
<
<C6#;;!6#;;!9i##%%    sd
C
C
CC6#;;!6#;;!9 sd
;
;
;C6#;;!6#;;!9 se
D
D
DC6#;;!6#;;!9 se
<
<
<C6#;;!6#;;!9s   2F 
FFc            	       8   e Zd Zej                            dd ej        d           ej        d           ej	        d          g          d             Z
ej                            dd ej	        dg           edd          g          d             Zd ZdS )	TestValidateIntr:   r0   c                 6    t          |d          }|dk    sJ d S )Nr:   r0   )r   rQ   r:   s     r*   test_validate_intz!TestValidateInt.test_validate_int   s"    !S!!Avvvvvvr,   g      @r-   c                     t          j        t          d          5  t          |d           d d d            d S # 1 swxY w Y   d S )Nzn must be an integerr   r:   )pytestr   	TypeErrorr   r   s     r*   test_validate_int_badz%TestValidateInt.test_validate_int_bad  s    ]9,BCCC 	" 	"!S!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s   :>>c                     t          j        t          d          5  t          ddd           d d d            d S # 1 swxY w Y   d S )Nz$n must be an integer not less than 0r   r:   r   )r   r   r&   r   )rQ   s    r*   test_validate_int_below_minz+TestValidateInt.test_validate_int_below_min  s    ]: .; < < < 	& 	&"c1%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&s   ;??N)rX   rY   rZ   r   markparametrizer   r6   int16r   r   r   r   r   rP   r,   r*   r   r      s        [S1hbhqkk828A;;"LMM  NM [S3!xx1~~"FGG" " HG"& & & & &r,   r   c                   r    e Zd Z edd          d             Z eddd          d             Zd Zd Zd	S )
TestRenameParameteroldnewc                     |S rO   rP   rQ   r   s     r*   old_keyword_still_acceptedz.TestRenameParameter.old_keyword_still_accepted      
r,   z1.9.0)dep_versionc                     |S rO   rP   r   s     r*   old_keyword_deprecatedz*TestRenameParameter.old_keyword_deprecated  r   r,   c                 X   |                      d          }|                      d          }|                      d          }||cxk    r|cxk    rdk    sn J t          j        d          }t          j        t
          |          5  |                      d           d d d            n# 1 swxY w Y   t          j        d          }t          j        t
          |          5  |                      dd           d d d            n# 1 swxY w Y   t          j        t
          |          5  |                      dd           d d d            n# 1 swxY w Y   t          j        t
          |          5  |                      dd           d d d            d S # 1 swxY w Y   d S )	Nr   r   r   z.old_keyword_still_accepted() got an unexpectedr   
unexpectedz)old_keyword_still_accepted() got multipler   r   )r   reescaper   r   r   )rQ   res1res2res3messages        r*   test_old_keyword_still_acceptedz3TestRenameParameter.test_old_keyword_still_accepted  s   ..r22..2.66..2.66t))))t))))r)))))) )LMM]9G444 	; 	;++r+:::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; )GHH]9G444 	8 	8++BB+777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8]9G444 	8 	8++BB+777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8]9G444 	< 	<+++;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<sH   	B,,B03B0&D

DD0EEE:FF#&F#c                    d}|                      d          }|                      d          }t          j        t          |          5  |                      d          }d d d            n# 1 swxY w Y   ||cxk    r|cxk    rdk    sn J t	          j        d          }t          j        t          |          5  |                      d           d d d            n# 1 swxY w Y   t	          j        d          }t          j        t          |          5  |                      dd           d d d            n# 1 swxY w Y   t          j        t          |          5  t          j        t          |          5  |                      dd           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          j        t          |          5  t          j        t          |          5  |                      dd	           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )
Nz+Use of keyword argument `old` is deprecatedr   r   r   r   z*old_keyword_deprecated() got an unexpectedr   z%old_keyword_deprecated() got multipler   )r   r   warnsDeprecationWarningr   r   r   r   )rQ   dep_msgr   r   r   r   s         r*   test_old_keyword_deprecatedz/TestRenameParameter.test_old_keyword_deprecated0  s    @**2..**r*22\,G<<< 	7 	7..2.66D	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7t))))t))))r)))))) )HII]9G444 	7 	7''2'666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7
 )CDD]9G444 	4 	4'''333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4]9G444 	4 	4/w???	4 	4'''333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 ]9G444 	8 	8/w???	8 	8''BB'777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8s   	A,,A03A0>C!!C%(C%D??EE%F<F%F<%F)	)F<,F)	-F<<G G "H:>H"H:"H&	&H:)H&	*H::H>H>N)rX   rY   rZ   r   r   r   r   r   rP   r,   r*   r   r     s        
 ue$$  %$ ue999  :9< < <*8 8 8 8 8r,   r   c                        e Zd Zd Zd Zd ZdS )TestContainsNaNTestc                    t          j        dddt           j        g          }t          |d          \  }}|sJ |dk    sJ t          |d          \  }}|sJ |dk    sJ d}t	          j        t          |          5  t          |d	           d d d            n# 1 swxY w Y   d
}t	          j        t          |          5  t          |d           d d d            d S # 1 swxY w Y   d S )Nr-   r.   r/   	propagate)
nan_policyomitzThe input contains nan valuesr   raiseznan_policy must be one ofnan)r   r   r   r   r   r   r&   )rQ   r   contains_nanr   msgs        r*   test_policyzTestContainsNaNTest.test_policyN  s   xAq"&)**#0+#N#N#N j[((((#0&#I#I#I jV####-]:S111 	4 	4$73333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 *]:S111 	2 	2$51111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2s$    BB"%B"C%%C),C)c                 @   t          j        g d          }t          |          d         rJ t          j        dddt           j        g          }t          |          d         sJ t          j        t           j        ddt           j        g          }t          |          d         sJ t          j        dddt           j        g          }t          |          d         rJ t          j        dddt           j        gd          }t          |          d         sJ d S )	Nr   r   r-   r.   r/   3objectr   r   r   r   r   )rQ   data1data2data3data4data5s         r*   test_contains_nan_1dz(TestContainsNaNTest.test_contains_nan_1da  s   ## ''****!Q26*++U##A&&&&"&!Q/00U##A&&&&!QRV,-- ''****!QRV,H===U##A&&&&&&r,   c                    t          j        ddgddgg          }t          |          d         rJ t          j        ddgdt           j        gg          }t          |          d         sJ t          j        ddgdt           j        gg          }t          |          d         rJ t          j        ddgdt           j        ggd          }t          |          d         sJ d S )	Nr-   r.   r/   r0   r   1r   r   r   )rQ   r   r   r   r   s        r*   test_contains_nan_2dz(TestContainsNaNTest.test_contains_nan_2dq  s    1a&1a&)** ''****1a&1bf+.//U##A&&&&3(QK011 ''****3(QK0AAAU##A&&&&&&r,   N)rX   rY   rZ   r   r   r   rP   r,   r*   r   r   L  sA        2 2 2&' ' ' ' ' ' ' 'r,   r   c                  R    d }  t          |                       }g d}||k    sJ d S )Nc                      g d} | S )N)znp.random.default_rng(8989843)np.random.default_rng(seed)z8np.random.default_rng(0x9a71b21474694f919882289dc1559ca) bob rP   )liness    r*   mock_strz(test__rng_html_rewrite.<locals>.mock_str  s    
 
 
 r,   )np.random.default_rng()r   r   r   )r   )r   resrefs      r*   test__rng_html_rewriter     sM       &
H
%
%
'
'C  C #::::::r,   )-multiprocessingr   multiprocessing.poolrt   r   r   rp   	fractionsr   numpyr   numpy.testingr   r   r   r   rC   r   r   scipy._lib._utilr	   r
   r   r   r   r   r   r   r   r   r<   rG   ra   rn   rq   ry   r   r   r   r   r   r   r   r   r   rP   r,   r*   <module>r     s               , , , , , , 				 				            / / / / / / / /  ; ; ; ; ; ; ; ; @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ >  >  >F5 5 5&M M M&  & & &
) ) )B 	?A A& &A A&<5 5 57  7  7 t& & & & & & & &$<8 <8 <8 <8 <8 <8 <8 <8~0' 0' 0' 0' 0' 0' 0' 0'f    r,   