
    xf6                     ^   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jH                  jK                  dd      d        Z&d Z'd Z( G d d      Z) G d d      Z* G d d      Z+d Z,y)    )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 ]]  }dD ]V  }dD ]O  }t         j                  t         j                  fD ]*  }|ddd|ffD ]  }t        |       D ]  } |||||         , Q X _ y )	N
   c                 t   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                  |       y |dk(  r1|j                  dkD  r!t        |j                  j                  |       y y |!t        |j                  j                  |       y 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         =/usr/lib/python3/dist-packages/scipy/_lib/tests/test__util.pycheckz"test__aligned_zeros.<locals>.check   s    ueU345%e<=HHUO--EQ**6215=qA5)$%15(G4QWWe$C<AGG(('2c\vvz,,g6  ]AGG(('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) > hh

3 >E"#aAq\!2 >!&u >A!%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      rtt        j                  j                  t        j                  j                               }t        |      } t        t        |       t        j                  j                         y y )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BII112
S
!CcBII112
T
"CcBII112*0#6ryy+&YY  !23 $T#Y		 3 34	 'r,   c                  l   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              y )Nr-   pool)r-   funciterablec                       e Zd ZddddZy)0test_getfullargspec_no_self.<locals>._rv_genericN)r$   c                     y N )selfr>   bcr$   argskwargss          r*   _rvsz5test_getfullargspec_no_self.<locals>._rv_generic._rvsT   s    r,   r.   r/   )__name__
__module____qualname__rV   rP   r,   r*   _rv_genericrM   S   s    	 	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$QZZ0G+vhdD"&*B0 1$QZZ0G+vz&:D$&($4 5  ]F$V[[1G+ovx&,vhL 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        y # 1 sw Y   y xY w)N      $@r-   Fr   )r   arangesinr   r   _mapfuncmaprI   	_own_poollistr   rC   RuntimeError)in_argout_argr^   outs       r*   test_mapwrapper_serialrn   ]   s    YYs^FffVnG1AAJJ#AFFdNAKK5 !
q 
!Cg	|	$ qM  s   :CCc                      t        d      5 } | j                  t        j                  g d       d d d        y # 1 sw Y   y xY w)Nr.   )r-   r.   r/   r0   )r   rg   mathre   )r^   s    r*   	test_poolrq   l   s2    	a &A	dhh%& & &s	   #8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        t        t              5 } t         j                  |        d d d        t        j                  t        u        t!        d      5 }t        |j"                        }t        |j                  du        |j%                          |j#                  t         j                  |       }t	        t        |      |       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)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   s@   YYs^FffVnG	A (!T#Y(t#$
1663'(

$&'( 
y	! W	"&&& GLLJ&' 
a 	)Aquuu$%		 eeBFFF#T#Y(	) 	)!( ( 	) 	)s%   A>FFA2F$FF!$F-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       j                  D cg c].  }t
        j                  j                  |j                        d	   0 }}|D cg c]!  }t
        j                  j                  |      # }}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 yy# 1 sw Y   xY wc c}w c c}w )z9Test that 'from numpy import *' functions are deprecated.)r{   r|   r}   g      ?g        finfor.   z scipy\.%s is deprecated.*2\.0\.0matchNr   
test__util)r   r~   r{   )floatgetattrscipyr   ri   ospathsplitextfilenamebasenamer   rA   fftrs   r@   )rz   argrJ   r   depdfnamesfname	basenamesrootfunc_nps              r*   test_numpy_deprecationr      s3    ((Bi	5#D/#5E	u	% S	 8;xx@!bggqzz*1-@F@6<=U!!%(=I=9$$$
yy	vvdC GCL$'4 $%%% !!  A=s   	D.3D:&D?.D7c                  f   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        y # 1 sw Y   y xY w)Nr-   r.   r/   r   )
r   r   r   r7   r   r   r   float32eps
issubclass)r)   s    r*   $test_numpy_deprecation_functionalityr      s     
	 	5KK	7ww%--'''ww"**$$$KK&uu,00000}}

***"**emm444	5 	5 	5s   DD''D0c                     t         j                  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                  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 y # t        $ r Y y w xY w)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      s   
))


!C sd
CC66#;!66#;!99 sd
;C66#;!66#;!99 se
DC66#;!66#;!99 se
<C66#;!66#;!99ii##%
 sd
CC66#;!66#;!99 sd
;C66#;!66#;!99 se
DC66#;!66#;!99 se
<C66#;!66#;!993  s   2K# #	K/.K/c            	       8   e Zd Zej                  j                  dd ej                  d       ej                  d       ej                  d      g      d        Z
ej                  j                  dd ej                  dg       edd      g      d        Zd Zy)	TestValidateIntr:   r0   c                 *    t        |d      }|dk(  sJ y )Nr:   r0   )r   rQ   r:   s     r*   test_validate_intz!TestValidateInt.test_validate_int   s    !S!Avvr,   g      @r-   c                 |    t        j                  t        d      5  t        |d       d d d        y # 1 sw Y   y xY w)Nzn must be an integerr   r:   )pytestr   	TypeErrorr   r   s     r*   test_validate_int_badz%TestValidateInt.test_validate_int_bad  s0    ]]9,BC 	"!S!	" 	" 	"s   2;c                 ~    t        j                  t        d      5  t        ddd       d d d        y # 1 sw Y   y xY w)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  s6    ]]: .; < 	&"c1%	& 	& 	&s   3<N)rX   rY   rZ   r   markparametrizer   r6   int16r   r   r   r   r   rP   r,   r*   r   r      s    [[S1hbhhqk8288A;"LM N [[S3!x1~"FG" H"&r,   r   c                   X    e Zd Z edd      d        Z eddd      d        Zd Zd Zy	)
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                    | j                  d      }| j                  d      }| j                  d      }||cxk(  r|cxk(  rdk(  sJ  J t        j                  d      }t        j                  t
        |      5  | j                  d       d d d        t        j                  d      }t        j                  t
        |      5  | j                  dd       d d d        t        j                  t
        |      5  | j                  dd       d d d        t        j                  t
        |      5  | j                  dd       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   YxY w# 1 sw Y   y xY w)	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  sS   ..r2..2.6..2.6t)t)r))))) ))LM]]9G4 	;++r+:	; ))GH]]9G4 	8++BB+7	8]]9G4 	8++BB+7	8]]9G4 	<+++;	< 	<	; 	;
	8 	8	8 	8	< 	<s0   <EE>E*5E6EE'*E36E?c                 ,   d}| j                  d      }| j                  d      }t        j                  t        |      5  | j                  d      }d d d        ||cxk(  rcxk(  rdk(  sJ  J t	        j
                  d      }t        j                  t        |      5  | j                  d       d d d        t	        j
                  d      }t        j                  t        |      5  | j                  dd       d d d        t        j                  t        |      5  t        j                  t        |      5  | j                  dd       d d d        d d d        t        j                  t        |      5  t        j                  t        |      5  | j                  dd	       d d d        d d d        y # 1 sw Y   nxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   PxY w# 1 sw Y   y xY w)
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\\,G< 	7..2.6D	7t)t)r))))) ))HI]]9G4 	7''2'6	7
 ))CD]]9G4 	4'''3	4]]9G4 	4/w?	4'''3	4 	4 ]]9G4 	8/w?	8''BB'7	8 	8 	8#	7 	7	7 	7	4 	4	4 	4 	4 	4	8 	8 	8 	8sl   G "G-G$G2 G&G2?H
G>/H
 G
GG#&G/	+G22G;>H	H

HN)rX   rY   rZ   r   r   r   r   r   rP   r,   r*   r   r     sD    
 ue$ % ue9 :<*8r,   r   c                       e Zd Zd Zd Zd Zy)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        d
}t	        j
                  t        |      5  t        |d       d d d        y # 1 sw Y   =xY w# 1 sw Y   y xY w)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    xxAq"&&)*#0+#N j|[(((#0&#I j|V###-]]:S1 	4$73	4 *]]:S1 	2$51	2 	2		4 	4	2 	2s   ;C.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 y )	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266*+U#A&&&"&&!Q/0U#A&&&!QRVV,- '***!QRVV,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 y )	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&1bff+./U#A&&&3(QK01 '***3(QK0AU#A&&&r,   N)rX   rY   rZ   r   r   r   rP   r,   r*   r   r   L  s    2&' 'r,   r   c                  @    d }  t        |              }g d}||k(  sJ y )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     s.     &
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&M&&
)B 	?A&A&<57 t& &$<8 <8~0' 0'fr,   