+
    ,ipI                        R t ^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RIt^ RIt^ RI	t	^ RI
Ht R t. RNRNRNRNR	NR
NRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNR NR!NR"NR#NR$NR%NR&NR'NR(NR)NR*NR+N U u. uF  p R,V ,           NK  	  up t. R-NR.NR/NR0NR1NR2NR3NR4NR5NR6NR7NR8NR9NR:NR;NR<NR=NR>NR?NR@NRANRBNRCNRDNRENRFNRGNRHNRINRJNRKNRLNRMNRNNRONRPNRQNRRNRSNRTNRUNRVNRWNRXNRYNRZNR[NR\NR]NR^NR_NR`NRaNRbNRcNRdNReNRfNRgNRhNRiNRjNRkNRlNRmNRnNRoNRpNRqNRrNRsNRtNRuNRvNRwNRxNRyNRzNR{NR|NR}NR~NRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNtR t. ROt]P"                  P$                  R 4       t. ROtR tR t]P"                  P$                  ]P"                  P/                  R. RNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNER NERNERNERNERNERNERNERNERNER	NER
NERNERNERNERNERNERNERNERNERN4      R 4       4       tR# u up i (  zo
This test script is adopted from:
    https://github.com/numpy/numpy/blob/main/numpy/tests/test_public_api.py
N)import_modulexp_available_backendsc                     \        \        \        4      4      \        \        \        \        4      4      4      8X  g   Q hR# )zSAssert that output of dir has only one "testing/tester"
attribute without duplicateN)lendirscipyset     B/usr/lib/python3/dist-packages/scipy/_lib/tests/test_public_api.pytest_dir_testingr      s'     s5z?c#c%j/2222r   clusterz
cluster.vqzcluster.hierarchy	constantsdatasetsdifferentiatefftfftpack	integrateinterpolateiozio.arffz	io.matlabz
io.wavfilelinalgzlinalg.blaszlinalg.cython_blaszlinalg.lapackzlinalg.cython_lapackzlinalg.interpolativendimageodroptimizezoptimize.elementwisesignalzsignal.windowssparsezsparse.linalgzsparse.csgraphspatialzspatial.distancezspatial.transformspecialstatszstats.contingencyzstats.distributionszstats.mstatsz	stats.qmczstats.samplingscipy.scipy.constants.codatascipy.constants.constantsscipy.fftpack.basiczscipy.fftpack.convolvescipy.fftpack.helperscipy.fftpack.pseudo_diffsscipy.fftpack.realtransformsscipy.integrate.dopscipy.integrate.lsodascipy.integrate.odepackscipy.integrate.quadpackscipy.integrate.vodescipy.interpolate.dfitpackscipy.interpolate.fitpackscipy.interpolate.fitpack2zscipy.interpolate.interpndscipy.interpolate.interpolatescipy.interpolate.ndgriddatascipy.interpolate.polyintscipy.interpolate.rbfscipy.io.arff.arffreadscipy.io.harwell_boeingscipy.io.idlscipy.io.matlab.byteordercodesscipy.io.matlab.mioscipy.io.matlab.mio4scipy.io.matlab.mio5scipy.io.matlab.mio5_paramsscipy.io.matlab.mio5_utilsscipy.io.matlab.mio_utilsscipy.io.matlab.miobasescipy.io.matlab.streamsscipy.io.mmioscipy.io.netcdfscipy.linalg.basicscipy.linalg.decompscipy.linalg.decomp_choleskyscipy.linalg.decomp_luscipy.linalg.decomp_qrscipy.linalg.decomp_schurscipy.linalg.decomp_svdscipy.linalg.matfuncsscipy.linalg.miscscipy.linalg.special_matrices
scipy.misczscipy.misc.commonzscipy.misc.doccerscipy.ndimage.filtersscipy.ndimage.fourierscipy.ndimage.interpolationscipy.ndimage.measurementsscipy.ndimage.morphologyscipy.odr.modelsscipy.odr.odrpackscipy.optimize.cobylazscipy.optimize.cython_optimizescipy.optimize.lbfgsbscipy.optimize.linesearchscipy.optimize.minpackscipy.optimize.minpack2scipy.optimize.moduleTNCscipy.optimize.nonlinscipy.optimize.optimizescipy.optimize.slsqpscipy.optimize.tncscipy.optimize.zerosscipy.signal.bsplinesscipy.signal.filter_designscipy.signal.fir_filter_designscipy.signal.lti_conversionscipy.signal.ltisysscipy.signal.signaltoolsscipy.signal.spectralscipy.signal.splinescipy.signal.waveformsscipy.signal.waveletsscipy.signal.windows.windowsscipy.sparse.basescipy.sparse.bsrscipy.sparse.compressedscipy.sparse.constructscipy.sparse.cooscipy.sparse.cscscipy.sparse.csrscipy.sparse.datascipy.sparse.diascipy.sparse.dokscipy.sparse.extractscipy.sparse.lilscipy.sparse.linalg.dsolvescipy.sparse.linalg.eigenscipy.sparse.linalg.interfacescipy.sparse.linalg.isolvescipy.sparse.linalg.matfuncsscipy.sparse.sparsetoolsscipy.sparse.spfuncsscipy.sparse.sputilsscipy.spatial.ckdtreescipy.spatial.kdtreescipy.spatial.qhull scipy.spatial.transform.rotationscipy.special.add_newdocsscipy.special.basiczscipy.special.cython_specialscipy.special.orthogonalscipy.special.sf_errorscipy.special.specfunscipy.special.spfun_statsscipy.stats.biasedurnscipy.stats.kdescipy.stats.morestatsscipy.stats.mstats_basicscipy.stats.mstats_extrasscipy.stats.mvnscipy.stats.statsc                h    RV 9   g   RV 9   g   RV 9   d   R# V \         9   d   R# V \        9   d   R# R# )z%Check if this needs to be considered.z._z.testsz.setupFT)PUBLIC_MODULESPRIVATE_BUT_PRESENT_MODULES)names   &r   is_unexpectedr      s4    t|x4'8t+;~**r   c                    R p . p\         P                  P                  4       ;_uu_ 4       pVP                  \        R4       \
        P                  ! \        P                  \        P                  R,           V R7       F7  w  r4p\        V4      '       g   K  V\        9  g   K&  VP                  V4       K9  	  RRR4       V'       d   \        RV 24      hR#   + '       g   i     L(; i)zp
Test that we don't add anything that looks like a new public module by
accident.  Check is based on filenames.
c                 T    0 RmpV F  pRV 2pW09   g   K  V\         9  g   K   R# 	  h )cupyzarray_api_compat.N>   r   torch
dask.arrayr   )r   backendsbackendpaths   &   r   ignore_errors4test_all_modules_are_expected.<locals>.ignore_errors   s4    
 3G&wi0D|/D D   	r   rK   .)r   prefixonerrorNzFound unexpected modules: )nptestingsuppress_warningsfilterDeprecationWarningpkgutilwalk_packagesr   __path____name__r   	SKIP_LISTappendAssertionError)r   modnamessup_modnames        r   test_all_modules_are_expectedr      s    
 H		%	%	'	'3

%l3$22:?..3:N;HJMA W%%'*B (J 
( 9(DEE  
(	's   A'CC%CC*	c                 @   R p \         P                  P                  4       ;_uu_ 4       pVP                  \        R4       V ! R4      pRRR4       \
         F  pXP                  V ! V4      4       K  	  X'       d   \        RV 24      hR#   + '       g   i     LL; i)z
Method checking all objects. The pkgutil-based method in
`test_all_modules_are_expected` does not catch imports into a namespace,
only filenames.
c                    . p\         P                  ! V 4      p\        VR 4      '       d   VP                  pM\	        V4      pV F  pVP                  R4      '       d   K  V R,           V,           p\        \        W$4      \        P                  4      '       g   KW  \        V4      '       g   Kj  V\        9  g   Kw  VP                  V4       K  	  V# )__all__r   r   )	importlibr   hasattrr   r   
startswith
isinstancegetattrtypes
ModuleTyper   SKIP_LIST_2r   )mod_namemembersmoduleobjnamesobjnamefullobjnames   &     r   find_unexpected_members@test_all_modules_are_expected_2.<locals>.find_unexpected_members  s    ((269%%~~H6{HG%%c**&nw6gf68H8HII$[11k6T{3   r   rK   r   Nz3Found unexpected object(s) that look like modules: )r   r   r   r   r   r   extendr   )r   r   unexpected_membersr   s       r   test_all_modules_are_expected_2r     s      
	%	%	'	'3

%|44W= 
( "!!"9'"BC "  ));(<> ? 	?  
(	's   BB	c                    R p . p\          F$  pV ! V4      '       d   K  VP                  V4       K&  	  V'       d   \        RV 24      h\        P                  ! RR7      ;_uu_ 4        \        P
                  ! R\        R7       \        P
                  ! R\        R7       \         F$  pV ! V4      '       d   K  VP                  V4       K&  	  RRR4       V'       d   \        RV 24      hR#   + '       g   i     L(; i)	z
Check that all submodules listed higher up in this file can be imported
Note that if a PRIVATE_BUT_PRESENT_MODULES entry goes missing, it may
simply need to be removed from the list (deprecation may or may not be
needed - apply common sense).
c                 d     \         P                  ! V 4       R#   \        \        3 d     R # i ; i)FT)r   r   ImportErrorAttributeError)module_names   &r   check_importable-test_api_importable.<locals>.check_importable=  s3    	##K0  ^, 		s    //z3Modules in the public API that cannot be imported: T)recordalways)categoryNzNModules that are not really public but looked public and can not be imported: )	r   r   r   warningscatch_warningsfilterwarningsr   ImportWarningr   )r   module_namesr   s      r   test_api_importabler   6  s     L%,,, &  **69 : 	: 
	 	 	-	-3EF=A6K#K00##K0 7 
.  @ ,~/ 0 	0  
.	-s   )AC0;C00D 	c                 :   \        V 4      pVf   RV P                  R4      ^,           2pMRV P                  R4      ^,           RV 2p\        V4      pVP                   FO  p\        WER 4      f   Q hRV RV R2p\        P
                  ! VR7      ;_uu_ 4        \        W%4       R R R 4       KQ  	  RV  R2p\        P                  ! \        VR7      ;_uu_ 4        \        VR	4       R R R 4       R #   + '       g   i     K  ; i  + '       g   i     R # ; i)
Nr    r   zPlease import `z` from the `z`...)match`z` is deprecated...ekki)r   splitr   r   pytestdeprecated_callraisesr   )r   correct_moduler   import_namecorrect_import	attr_namemessages   &&     r   $test_private_but_present_deprecationr   [  s   d ;'F{005a89:{005a89>:JK";/N ^^	~$7CCC#I;l;-tL##'22F& 32	 $ +01G	~W	5	5 
6	5 322 
6	5	5s   C5D	5D	D	)zscipy.conftestzscipy.versionzscipy.special.libsf_error_state)z
scipy.charz	scipy.reczscipy.emathz
scipy.mathzscipy.randomzscipy.ctypeslibzscipy.ma)r   r   )r!   N)r"   N)r#   N)r$   N)r%   N)r&   N)r'   N)r(   N)r)   N)r*   N)r+   N)r,   N)r-   N)r.   N)r/   N)r0   N)r1   N)r2   N)r4   N)r5   N)r?   N)r@   N)r3   arff)r6   matlab)r<   r   )r7   r   )r8   r   )r:   r   )r;   r   )r9   r   )r=   r   )r>   r   )rA   N)rB   N)rC   N)rD   N)rE   N)rF   N)rG   N)rH   N)rI   N)rJ   N)rL   N)rM   N)rN   N)rO   N)rP   N)rQ   N)rR   N)rS   N)rT   N)rU   N)rV   N)rW   N)rX   N)rY   N)rZ   N)r[   N)r\   N)r]   N)r^   N)r_   N)r`   N)ra   N)rb   N)rc   N)rd   N)re   N)rf   N)rg   N)rh   windows)ri   N)rj   N)rk   N)rl   N)rm   N)rn   N)ro   N)rp   N)rq   N)rr   N)rs   N)rt   N)ru   r   )rv   r   )rw   r   )rx   r   )ry   r   )rz   N)r{   N)r|   N)r}   N)r~   N)r   N)r   	transform)r   N)r   N)r   N)r   N)r   N)r   N)r   N)r   N)r   N)r   mstats)r   r   )r   N)r   N)__doc__r   r   r   r   r   r   numpyr   r   scipy.conftestr   r   r   r   r   r   markthread_unsafer   r   r   r   parametrizer   )ss   0r   <module>r      sZ  
     #    03()()() () 	()
 () () 
() () () () 	() () () () ()  !()" #()$ %()& '()( )()* +(), 
-(). /()0 1()2 3()4 5()6 7()8 9(): ;()< =()> ?()@ A()B C()D E()F G()H I()J K()L M()N O() ( ()1(Q,, () (`ttt t 	t
 t !t #t t t t t t !t  t !t  !!t" $#t$ #%t&  't( )t* +t, -t. /t0 %1t2 3t4 5t6 7t8 "9t: !;t<  =t> ?t@ AtB CtD EtF GtH ItJ #KtL MtN OtP  QtR StT UtV WtX $YtZ [t\ ]t^ _t` atb ctd "etf !gth itj ktl mtn otp %qtr stt  utv wtx ytz {t| }t~ t@ AtB CtD EtF GtH !ItJ %KtL "MtN OtP QtR StT UtV WtX YtZ #[t\ ]t^ _t` atb ctd etf gth itj ktl mtn otp qtr stt !utv  wtx $ytz !{t| #}t~ t@ AtB CtD EtF GtH ItJ 'KtL  MtN OtP #QtR StT UtV WtX  YtZ [t\ ]t^ _t` atb  ctd etf gt n	  F  FJ ?F"0J :k7: k7=k77k7 9k7 ?	k7
 Ak7 8k7 :k7 <k7 =k7 9k7 ?k7 >k7 ?k7 Bk7 Ak7  >!k7" :#k7$ <%k7& 1'k7( 2)k7* 4+k7, =-k7. G/k70 B1k72 <3k74 =5k76 D7k78 C9k7: =;k7< @=k7> @?k7@ 7Ak7B 8Ck7D AEk7F ;Gk7H ;Ik7J >Kk7L <Mk7N :Ok7P 6Qk7R BSk7T :Uk7V :Wk7X @Yk7Z ?[k7\ =]k7^ 5_k7` 6ak7b :ck7d :ek7f >gk7h ;ik7j <kk7l =mk7n :ok7p <qk7r 9sk7t 7uk7v 9wk7x :yk7z ?{k7| C}k7~ @k7@ 8Ak7B =Ck7D :Ek7F 8Gk7H ;Ik7J :Kk7L FMk7N 6Ok7P 5Qk7R <Sk7T ;Uk7V 5Wk7X 5Yk7Z 5[k7\ 6]k7^ 5_k7` 5ak7b 9ck7d 5ek7f Cgk7h Bik7j Fkk7l Cmk7n Eok7p =qk7r 9sk7t 9uk7v :wk7x 9yk7z 8{k7| L}k7~ >k7@ 8Ak7B =Ck7D ;Ek7F :Gk7H >Ik7J :Kk7L 4Mk7N :Ok7P AQk7R BSk7T 4Uk7V 6Wk7l8Z [l8 \ Q(s    K