
    xf2%                         d Z ddlZddlZddlZddlZddlZd ZdD  cg c]  } d| z   	 c} Zg dZd Z	dd	gZ
d
 Zg dZd Zd Zyc c} w )zo
This test script is adopted from:
    https://github.com/numpy/numpy/blob/main/numpy/tests/test_public_api.py
    Nc                  |    t        t        t                    t        t        t        t                          k(  sJ y)zWAssert 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fftfftpack	integrateinterpolateiozio.arffz	io.matlabz
io.wavfilelinalgzlinalg.blaszlinalg.cython_blaszlinalg.lapackzlinalg.cython_lapackzlinalg.interpolativemiscndimageodroptimizesignalzsignal.windowssparsezsparse.linalgzsparse.csgraphspatialzspatial.distancezspatial.transformspecialstatszstats.contingencyzstats.distributionszstats.mstatsz	stats.qmczstats.samplingzscipy.)tzscipy.constants.codatazscipy.constants.constantszscipy.fftpack.basiczscipy.fftpack.convolvezscipy.fftpack.helperzscipy.fftpack.pseudo_diffszscipy.fftpack.realtransformszscipy.integrate.odepackzscipy.integrate.quadpackzscipy.integrate.dopzscipy.integrate.lsodazscipy.integrate.vodezscipy.interpolate.dfitpackzscipy.interpolate.fitpackzscipy.interpolate.fitpack2zscipy.interpolate.interpndzscipy.interpolate.interpolatezscipy.interpolate.ndgriddatazscipy.interpolate.polyintzscipy.interpolate.rbfzscipy.io.arff.arffreadzscipy.io.harwell_boeingzscipy.io.idlzscipy.io.mmiozscipy.io.netcdfzscipy.io.matlab.byteordercodeszscipy.io.matlab.miozscipy.io.matlab.mio4zscipy.io.matlab.mio5zscipy.io.matlab.mio5_paramszscipy.io.matlab.mio5_utilszscipy.io.matlab.mio_utilszscipy.io.matlab.miobasezscipy.io.matlab.streamszscipy.linalg.basiczscipy.linalg.decompzscipy.linalg.decomp_choleskyzscipy.linalg.decomp_luzscipy.linalg.decomp_qrzscipy.linalg.decomp_schurzscipy.linalg.decomp_svdzscipy.linalg.flinalgzscipy.linalg.matfuncszscipy.linalg.misczscipy.linalg.special_matriceszscipy.misc.commonzscipy.misc.doccerzscipy.ndimage.filterszscipy.ndimage.fourierzscipy.ndimage.interpolationzscipy.ndimage.measurementszscipy.ndimage.morphologyzscipy.odr.modelszscipy.odr.odrpackzscipy.optimize.cobylazscipy.optimize.cython_optimizezscipy.optimize.lbfgsbzscipy.optimize.linesearchzscipy.optimize.minpackzscipy.optimize.minpack2zscipy.optimize.moduleTNCzscipy.optimize.nonlinzscipy.optimize.optimizezscipy.optimize.slsqpzscipy.optimize.tnczscipy.optimize.zeroszscipy.signal.bsplineszscipy.signal.filter_designzscipy.signal.fir_filter_designzscipy.signal.lti_conversionzscipy.signal.ltisyszscipy.signal.signaltoolszscipy.signal.spectralzscipy.signal.splinezscipy.signal.waveformszscipy.signal.waveletszscipy.signal.windows.windowszscipy.sparse.basezscipy.sparse.bsrzscipy.sparse.compressedzscipy.sparse.constructzscipy.sparse.coozscipy.sparse.csczscipy.sparse.csrzscipy.sparse.datazscipy.sparse.diazscipy.sparse.dokzscipy.sparse.extractzscipy.sparse.lilzscipy.sparse.linalg.dsolvezscipy.sparse.linalg.eigenzscipy.sparse.linalg.interfacezscipy.sparse.linalg.isolvezscipy.sparse.linalg.matfuncszscipy.sparse.sparsetoolszscipy.sparse.spfuncszscipy.sparse.sputilszscipy.spatial.ckdtreezscipy.spatial.kdtreezscipy.spatial.qhullz scipy.spatial.transform.rotationzscipy.special.add_newdocszscipy.special.basiczscipy.special.cython_specialzscipy.special.orthogonalzscipy.special.sf_errorzscipy.special.specfunzscipy.special.spfun_statszscipy.stats.biasedurnzscipy.stats.kdezscipy.stats.morestatszscipy.stats.mstats_basiczscipy.stats.mstats_extraszscipy.stats.mvnzscipy.stats.statlibzscipy.stats.statsc                 B    d| v sd| v sd| v ry| t         v ry| t        v ryy)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.versionc                      g } t        j                  t        j                  t        j                  dz   d      D ],  \  }}}t        |      s|t        vs| j                  |       . | rt        d|        y)z|
    Test that we don't add anything that looks like a new public module by
    accident.  Check is based on filenames.
    .N)pathprefixonerrorzFound unexpected modules: )	pkgutilwalk_packagesr   __path____name__r"   	SKIP_LISTappendAssertionError)modnames_modnameispkgs       r
   test_all_modules_are_expectedr3      s|     H$22:?..3:N;?A %7E !gY&> OOG$% 9(DEE r	   )z
scipy.charz	scipy.reczscipy.emathz
scipy.mathzscipy.randomzscipy.ctypeslibzscipy.mac                      d }  | d      }t         D ]  }|j                   | |              |rt        dj                  |            y)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                 T   g }t        j                  |       }t        |d      r|j                  }nt	        |      }|D ]g  }|j                  d      r| dz   |z   }t        t        ||      t        j                        sBt        |      sN|t        vsW|j                  |       i |S )N__all__r0   r$   )	importlibimport_modulehasattrr6   r   
startswith
isinstancegetattrtypes
ModuleTyper"   SKIP_LIST_2r-   )mod_namemembersmoduleobjnamesobjnamefullobjnames         r
   find_unexpected_membersz@test_all_modules_are_expected_2.<locals>.find_unexpected_members   s    ((269%~~H6{H 	4G%%c*&nw6gfg68H8HI$[1k6T{3	4 r	   r   z5Found unexpected object(s) that look like modules: {}N)r   extendr.   format)rF   unexpected_membersr1   s      r
   test_all_modules_are_expected_2rJ      sb    " 19! D!!"9'"BCD  ++162D+EG 	G r	   c                     d } g }t         D ]  } | |      r|j                  |        |rt        dj                  |            t	        j
                  d      5  t	        j                  dt               t	        j                  dt               t        D ]  } | |      r|j                  |        	 ddd       |rt        dj                  |            y# 1 sw Y   &xY w)	a  
    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                 Z    	 t        j                  |        y# t        t        f$ r Y yw xY w)NFT)r7   r8   ImportErrorAttributeError)module_names    r
   check_importablez-test_api_importable.<locals>.check_importable  s3    	##K0  ^, 		s    **z5Modules in the public API that cannot be imported: {}T)recordalways)categoryNzPModules that are not really public but looked public and can not be imported: {})
r   r-   r.   rH   warningscatch_warningsfilterwarningsDeprecationWarningImportWarningr    )rP   module_namesrO   s      r
   test_api_importablerZ     s     L% -,,-  ,,2F<,@B 	B 
	 	 	- 13EF=A6 	1K#K0##K0	11  ""(&"68 	8 1 1s   AC&CC()__doc__r(   r=   r7   rT   r   r   r   r    r"   r,   r3   r?   rJ   rZ   )ss   0r
   <module>r]      sx   
     3') '1(Q, '^u p 	F,GB"8{'s   A