
    = jD                        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J	r	  SSK
Jr  S r/ SQrS r/ S	Qr\R                   R#                  S
S9S 5       r/ SQrS rS r\R                   R-                  S/ SQ5      S 5       rg)zo
This test script is adopted from:
    https://github.com/numpy/numpy/blob/main/numpy/tests/test_public_api.py
    N)import_module)PUBLIC_MODULES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     q/root/GenerationalWealth/GenerationalWealth/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   )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.odepackscipy.integrate.quadpackscipy.integrate.vodescipy.interpolate.dfitpackscipy.interpolate.fitpackscipy.interpolate.fitpack2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.morphologyzscipy.odr.modelsz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)r   PRIVATE_BUT_PRESENT_MODULES)names    r   is_unexpectedr~      s4    t|x4'8t+;~**r   )zscipy.conftestzscipy.versionzscipy.special.libsf_error_statescipy.integrate.lsodaz^crashes in pkgutil.walk_packages, see https://github.com/data-apis/array-api-compat/issues/343)reasonc                     S n / n[         R                  " 5          [         R                  " SS[        5        [        R
                  " [        R                  [        R                  S-   U S9 H5  u  p#n[        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   ignorer:   .)r   prefixonerrorNzFound unexpected modules: )warningscatch_warningsfilterwarningsDeprecationWarningpkgutilwalk_packagesr
   __path____name__r~   	SKIP_LISTappendAssertionError)r   modnames_modnames       r   test_all_modules_are_expectedr      s    
 H		 	 	",8JK$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.mar   c                  "   S n [         R                  " 5          [         R                  " S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   r   r:   r
   Nz3Found unexpected object(s) that look like modules: )r   r   r   r   r   extendr   )r   unexpected_membersr   s      r   test_all_modules_are_expected_2r      s      
	 	 	"<9KL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   r   r   simplefilterr   ImportWarningr|   )r   module_namesr   s      r   test_api_importabler     s     L%,,, &  **69 : 	: 
	 	 	-h1CDh?6K#K00##K0 7 
.  @ ,~/ 0 	0  
.	-s   AC'C
C()r   correct_module)j)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)r   N)r    N)r!   N)r#   N)r$   N)r.   N)r/   N)r"   arff)r%   matlab)r+   r   )r&   r   )r'   r   )r)   r   )r*   r   )r(   r   )r,   r   )r-   r   )r0   N)r1   N)r2   N)r3   N)r4   N)r5   N)r6   N)r7   N)r8   N)r9   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   N)rJ   N)rK   N)rL   N)rM   N)rN   N)rO   N)rP   N)rQ   N)rR   N)rS   N)rT   N)rU   windows)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   linalg)rc   r   )rd   r   )re   r   )rf   r   )rg   N)rh   N)ri   N)rj   N)rk   N)rl   N)rm   	transform)rn   N)ro   N)rp   N)rq   N)rr   N)rs   N)rt   N)ru   N)rv   N)rw   mstats)rx   r   )ry   N)rz   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)Nzscipy.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    ^ ;'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   r
   scipy._lib._public_apir   scipy.conftestr   r   r|   r~   r   markthread_unsafer   r   r   r   parametrizer   r   r   r   <module>r      s   
     #   1 03s l	 G  I FI FJ	 ?F"0J :i7j8V Wj8V r   