a
    Re2%                     @   s~   d Z ddlZddlZddlZddlZddlZdd Zdd dD Zg dZd	d
 Z	ddgZ
dd Zg dZdd Zdd ZdS )zo
This test script is adopted from:
    https://github.com/numpy/numpy/blob/main/numpy/tests/test_public_api.py
    Nc                   C   s$   t ttt tttks J dS )zWAssert that output of dir has only one "testing/tester"
    attribute without duplicateN)lendirscipyset r   r   T/var/www/sunrise/env/lib/python3.9/site-packages/scipy/_lib/tests/test_public_api.pytest_dir_testing   s    r   c                 C   s   g | ]}d | qS )zscipy.r   ).0sr   r   r   
<listcomp>       r   )&Zclusterz
cluster.vqzcluster.hierarchy	constantsZdatasetsZfftZfftpackZ	integrateZinterpolateiozio.arffz	io.matlabz
io.wavfileZlinalgzlinalg.blaszlinalg.cython_blaszlinalg.lapackzlinalg.cython_lapackzlinalg.interpolativemiscZndimageZodroptimizesignalzsignal.windowssparsezsparse.linalgzsparse.csgraphZspatialzspatial.distancezspatial.transformZspecialstatszstats.contingencyzstats.distributionszstats.mstatsz	stats.qmczstats.sampling)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                 C   s8   d| v sd| v sd| v rdS | t v r(dS | tv r4dS dS )z%Check if this needs to be considered.z._z.testsz.setupFT)PUBLIC_MODULESPRIVATE_BUT_PRESENT_MODULES)namer   r   r   is_unexpected   s    r   zscipy.conftestzscipy.versionc                  C   sX   g } t jtjtjd ddD ]$\}}}t|r|tvr| | q| rTtd|  dS )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ispkgr   r   r   test_all_modules_are_expected   s    r'   )z
scipy.charz	scipy.reczscipy.emathz
scipy.mathzscipy.randomzscipy.ctypeslibzscipy.mac                  C   s>   dd } | d}t D ]}|| | q|r:td|dS )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                 S   sx   g }t | }t|dr |j}nt|}|D ]F}|ds,| d | }tt||tj	r,t
|r,|tvr,|| q,|S )N__all__r$   r   )	importlibimport_modulehasattrr(   r   
startswith
isinstancegetattrtypes
ModuleTyper   SKIP_LIST_2r!   )mod_namemembersmoduleZobjnamesZobjnameZfullobjnamer   r   r   find_unexpected_members   s    


z@test_all_modules_are_expected_2.<locals>.find_unexpected_membersr   z5Found unexpected object(s) that look like modules: {}N)r   extendr"   format)r5   Zunexpected_membersr%   r   r   r   test_all_modules_are_expected_2   s    r8   c                  C   s   dd } g }t D ]}| |s|| q|r:td|tjddH tjdtd tjdtd t	D ]}| |sh|| qhW d   n1 s0    Y  |rtd	|dS )
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              	   S   s,   zt |  W n ttfy&   Y dS 0 dS )NFT)r)   r*   ImportErrorAttributeError)module_namer   r   r   check_importable  s
    z-test_api_importable.<locals>.check_importablez5Modules 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"   r7   warningscatch_warningsfilterwarningsDeprecationWarningImportWarningr   )r<   Zmodule_namesr;   r   r   r   test_api_importable  s&    *rE   )__doc__r   r/   r)   r@   r   r   r   r   r   r    r'   r1   r8   rE   r   r   r   r   <module>   s    /x!