
    sgK                        d Z ddlZddlZddlZddlZddlmZ ddlZddlZddlm	Z	 d Z
dD  cg c]  } d| z   	 c} Zg dZd	 Zg d
Zd Zg dZd Zd Zej&                  j)                  dg d      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
    N)import_module)xp_available_backendsc                  |    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     S/var/www/html/venv/lib/python3.12/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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.samplingscipy.)r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.vodez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.misc.common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.spectralzscipy.signal.splinescipy.signal.waveformsscipy.signal.wavelets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.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                 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.versionzscipy.special.libsf_error_statec                      d } g }t        j                  t        j                  t        j                  dz   |       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.
    c                 h    dddd}|j                         D ]  \  }}d| }|| v s|t        vs y   )Ncupytorch
dask.array)r   pytorchr   zarray_api_compat.)itemsr   )r   backendsbackenddir_namepaths        r   ignore_errorsz4test_all_modules_are_expected.<locals>.ignore_errors   sT    
 #&".0 "*!1 	GX&xj1Dt|/D D	 	r   .)r   prefixonerrorzFound unexpected modules: N)	pkgutilwalk_packagesr   __path____name__r   	SKIP_LISTappendAssertionError)r   modnames_modnames       r   test_all_modules_are_expectedr      s     H ..ENN6;nns6J7DF %7A !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|       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__r   r   )	importlibr   hasattrr   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   z3Found unexpected object(s) that look like modules: N)r   extendr   )r   unexpected_membersr   s      r   test_all_modules_are_expected_2r     s`    " 19! D!!"9'"BCD  ));(<> ? 	? r   c                     d } g }t         D ]  } | |      r|j                  |        |rt        d|       t        j                  d      5  t        j
                  dt               t        j
                  dt               t        D ]  } | |      r|j                  |        	 ddd       |rt        d|       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)r   r   ImportErrorAttributeError)module_names    r   check_importablez-test_api_importable.<locals>.check_importable7  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filterwarningsDeprecationWarningImportWarningr   )r   module_namesr   s      r   test_api_importabler   0  s     L% -,,-  **69 : 	: 
	 	 	- 13EF=A6 	1K#K0##K0	11  @ ,~/ 0 	0 1 1s   ACCC)r   correct_module)`)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)r3   N)r4   N)r>   N)r?   N)r2   arff)r5   matlab)r;   r   )r6   r   )r7   r   )r9   r   )r:   r   )r8   r   )r<   r   )r=   r   )r@   N)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   windows)rh   N)ri   r   )rj   r   )rk   r   )rl   r   )rm   r   )rn   N)ro   N)rp   N)rq   N)rr   N)rs   N)rt   	transform)ru   N)rv   N)rw   N)rx   N)ry   N)rz   N)r{   N)r|   N)r}   N)r~   mstats)r   r   )r   N)r   Nc                    t        |       }|d| j                  d      d    }nd| j                  d      d    d| }t        |      }|j                  D ]K  }|dk(  r	t        ||d       J d| d| d}t	        j
                  |      5  t        ||       d d d        M d	|  d
}t	        j                  t        |      5  t        |d       d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr    r      varmats_from_matPlease import `z` from the `z`...match`` 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   U  s!   J ;'F{005a89:{005a89>:JK";/N ^^ 	'	** ~y$7CCC#I;l;-tL##'2 	'FI&	' 	'	' +01G	~W	5     	' 	'   s   CC(C%	(C1c                  t   t        d      } t        d      }| j                  D ]I  }t        ||d       }|d| d}nd| d}t        j                  |      5  t        | |       d d d        K d}t        j
                  t        |      5  t        | d	       d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)
NrK   zscipy._lib.doccerz`scipy.misc.r   r   z!` from the `scipy._lib.doccer`...r   z$`scipy.misc.doccer` is deprecated...r   )r   r   r   r   r   r   r   )r   r   r   attrr   s        r   test_misc_doccer_deprecationr     s     ./F"#67N
 ^^ '	~y$7<$YK/ABG'	{2STG##'2 	'FI&	' 	'' 5G	~W	5     	' 	'   s   B"B."B+	.B7)__doc__r   r   r   r   r   r   r   scipy.conftestr   r   r   r   r   r   r   r   r   r   markparametrizer   r   )ss   0r   <module>r      s   
     #   03') '1(Q, '^s l	 FJ?B"0J :_7`8B C`8B @ m's   A=