
    -ipI                     p   S r SSKrSSKrSSKrSSKrSSKJr  SSKrSSKrSSK	r	SSK
Jr  S rS V s/ s H  n SU -   PM
     sn r/ SQrS	 r/ S
Qr\R"                  R$                  S 5       r/ SQrS rS r\R"                  R$                  \R"                  R/                  S/ SQ5      S 5       5       rgs  sn f )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                  ~    [        [        [        5      5      [        [        [        [        5      5      5      :X  d   eg)zSAssert that output of dir has only one "testing/tester"
attribute without duplicateN)lendirscipyset     S/var/www/html/venv/lib/python3.13/site-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.)s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                 V    SU ;   d  SU ;   d  SU ;   a  gU [         ;   a  gU [        ;   a  gg)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   )zscipy.conftestzscipy.versionzscipy.special.libsf_error_statec                     S n / n[         R                  R                  5        nUR                  [        S5        [
        R                  " [        R                  [        R                  S-   U S9 H5  u  p4n[        U5      (       d  M  U[        ;  d  M$  UR                  U5        M7     SSS5        U(       a  [        SU 35      eg! , (       d  f       N$= f)zp
Test that we don't add anything that looks like a new public module by
accident.  Check is based on filenames.
c                 N    1 SknU H  nSU 3nX0;   d  M  U[         ;  d  M    g    e )N>   cupytorch
dask.arrayzarray_api_compat.r   )r   backendsbackendpaths       r   ignore_errors4test_all_modules_are_expected.<locals>.ignore_errors   s4    
 3G&wi0D|/D D   	r   rL   .)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)z
scipy.charz	scipy.reczscipy.emathz
scipy.mathzscipy.randomzscipy.ctypeslibzscipy.mac                  (   S n [         R                  R                  5        nUR                  [        S5        U " S5      nSSS5        [
         H  nWR                  U " U5      5        M     W(       a  [        SU 35      eg! , (       d  f       NH= f)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                    / n[         R                  " U 5      n[        US5      (       a  UR                  nO[	        U5      nU H|  nUR                  S5      (       a  M  U S-   U-   n[        [        X$5      [        R                  5      (       d  MM  [        U5      (       d  M_  U[        ;  d  Mk  UR                  U5        M~     U$ )N__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   rL   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                     S n / n[          H#  nU " U5      (       a  M  UR                  U5        M%     U(       a  [        SU 35      e[        R                  " SS9   [        R
                  " S[        S9  [        R
                  " S[        S9  [         H#  nU " U5      (       a  M  UR                  U5        M%     SSS5        U(       a  [        SU 35      eg! , (       d  f       N$= f)	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                 ^     [         R                  " U 5        g! [        [        4 a     gf = f)NFT)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C'C
C()r   correct_module)l)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)r3   N)r5   N)r6   N)r@   N)rA   N)r4   arff)r7   matlab)r=   r   )r8   r   )r9   r   )r;   r   )r<   r   )r:   r   )r>   r   )r?   r   )rB   N)rC   N)rD   N)rE   N)rF   N)rG   N)rH   N)rI   N)rJ   N)rK   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   N)ri   windows)rj   N)rk   N)rl   N)rm   N)rn   N)ro   N)rp   N)rq   N)rr   N)rs   N)rt   N)ru   N)rv   r   )rw   r   )rx   r   )ry   r   )rz   r   )r{   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   Nc                    [        U 5      nUc  SU R                  S5      S    3nOSU R                  S5      S    SU 3n[        U5      nUR                   HC  n[        XES 5      c   eSU SU S3n[        R
                  " US9   [        X%5        S S S 5        ME     SU  S	3n[        R                  " [        US9   [        US
5        S S S 5        g ! , (       d  f       M  = f! , (       d  f       g = f)Nr!   r      zPlease import `z` from the `z`...)match`z` is deprecated...ekki)r   splitr   r   pytestdeprecated_callraisesr   )r   r   r   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F& 32	 $ +01G	~W	5 
6	5 32 
6	5s   C>C&
C#	&
C4)__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      s   
     #    03() ( ()1(Q, () (`t n	  F  FJ ?F"0J :k7l8Z [l8 \ Q(s   B3