U
    ?h&                  t   @   sv  d Z ddlZddlZddlZddlZddlZdddZdd Zdd d	D Zd
dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}gtZ	d~d Z
ddgZdd ZdddddddgZdd Zdd 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`   |dkr| j }i }t| D ]@}t| |}t|drt|dr|j|kr|jd |j  ||< q|S )zEReturns a mapping of all objects with the wrong __module__ attribute.N
__module____name__.)r   dirgetattrhasattrr   )modulemodule_nameresultsnameitem r   R/var/www/html/venv/lib/python3.8/site-packages/scipy/_lib/tests/test_public_api.py	check_dir   s    
r   c                   C   s$   t ttt tttks tdS )zWAssert that output of dir has only one "testing/tester"
    attribute without duplicateN)lenr   scipysetAssertionErrorr   r   r   r   test_dir_testing   s    r   c                 C   s   g | ]}d | qS )zscipy.r   ).0sr   r   r   
<listcomp>(   s     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.transformspecialstatszstats.contingencyzstats.distributionszstats.mstatsz	stats.qmczstats.samplingz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| ksd| ksd| krdS | t kr(dS | tkr4dS dS )z%Check if this needs to be considered.z._z.testsz.setupFT)PUBLIC_MODULESPRIVATE_BUT_PRESENT_MODULES)r   r   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k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.
    r   N)pathprefixonerrorzFound unexpected modules: )	pkgutilwalk_packagesr   __path__r   r"   	SKIP_LISTappendr   )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kr,|| q,|S )N__all__r,   r   )	importlibimport_moduler   r0   r   
startswith
isinstancer   types
ModuleTyper"   SKIP_LIST_2r*   )mod_namemembersr   Z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)r:   Zunexpected_membersr-   r   r   r   test_all_modules_are_expected_2  s    r=   c               	   C   s   dd } g }t D ]}| |s|| q|r:td|tjdd>}tjdtd tjdtd t	D ]}| |sh|| qhW 5 Q R X |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k
r(   Y dS X dS )NFT)r1   r2   ImportErrorAttributeError)r	   r   r   r   check_importable+  s
    z-test_api_importable.<locals>.check_importablez5Modules in the public API that cannot be imported: {}T)recordalways)categoryzPModules that are not really public but looked public and can not be imported: {}N)
r    r*   r   r<   warningscatch_warningsfilterwarningsDeprecationWarningImportWarningr!   )r@   Zmodule_namesr	   wr   r   r   test_api_importable$  s&    rJ   )N)__doc__r&   r5   r1   rD   r   r   r   r    r!   r"   r)   r/   r7   r=   rJ   r   r   r   r   <module>   s  
/x!