Ë
    0Ò^j>E  ã                   ód  — 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	m
Z
 ddlmZ d„ Zg d¢Ze
r"ej                  d«       ej                  d	«       d
„ Zg d¢Zej$                  j'                  d¬«      d„ «       Zg d¢Zd„ Zd„ Zej$                  j1                  dg d¢«      d„ «       Zy)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Ú_without_fortran©Ú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© ó    úk/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/scipy/_lib/tests/test_public_api.pyÚtest_dir_testingr      s'   € ô Œs”5‹z‹?œ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.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.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.statsrA   rB   c                 ó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)r   ÚPRIVATE_BUT_PRESENT_MODULES)Únames    r   Úis_unexpectedr�   š   s4   € àˆt�|�x 4Ñ'¨8°tÑ+;ØàŒ~ÑØàÔ*Ñ*Øà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                  ó„  — d„ } g }t        j                  «       5  t        j                  ddt        «       t	        j
                  t        j                  t        j                  dz   | ¬«      D ],  \  }}}t        |«      sŒ|t        vsŒ|j                  |«       Œ. 	 ddd«       |rt        d|› �«      ‚y# 1 sw Y   ŒxY w)z|
    Test that we don't add anything that looks like a new public module by
    accident.  Check is based on filenames.
    c                 óB   — h d£}|D ]  }d|› �}|| v sŒ|t         vsŒ y  ‚ )N>   ú
dask.arrayÚcupyÚtorchzarray_api_compat.r   )r€   ÚbackendsÚbackendÚpaths       r   Úignore_errorsz4test_all_modules_are_expected.<locals>.ignore_errors¾   s;   € ò
 3ˆØò 	ˆGØ& w iÐ0ˆDØ�tŠ| Ô/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ò 	)‰MˆAˆw˜ô ˜WÕ%¨'¼Ò*Bð —‘ Õ(ñ	)÷	)ñ ÜÐ9¸(¸ÐDÓEÐEð ÷	)ð 	)ús   šA%B6Â B6Â	B6Â6B?)z
scipy.charz	scipy.reczscipy.emathz
scipy.mathzscipy.randomzscipy.ctypeslibzscipy.mar‚   c                  ó  — d„ } t        j                  «       5  t        j                  ddt        «        | d«      }ddd«       t        D ]  }j                   | |«      «       Œ rt        d|› �«      ‚y# 1 sw Y   Œ<xY w)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ˆÜ�6˜9Ô%Ø—~‘~‰Hä˜6“{ˆHàò 	4ˆGØ×%Ñ% cÕ*Ø&¨™n¨wÑ6�Üœg f¨gÓ6¼×8HÑ8HÕIÜ$ [Õ1°kÌÒ6TØŸ™ {Õ3ð	4ð ˆ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Ù4°WÓ=Ð÷>ô "ò DˆØ×!Ñ!Ñ"9¸'Ó"BÕCðDñ Üð )Ø);Ð(<ð>ó ?ð 	?ð ÷>ð >ús   ˜$A7Á7B 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_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ó :ð 	:ô 
×	 Ñ	 ¨Ô	-ñ 1Ü×Ñ˜hÔ1CÕDÜ×Ñ˜h´Õ?Ü6ò 	1ˆKÙ# KÕ0Ø×#Ñ# KÕ0ñ	1÷1ñ Üð @à ,˜~ð/ó 0ð 	0ð ÷1ð 1ú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)r0   N)r#   Úarff)r&   Úmatlab)r,   rÄ   )r'   rÄ   )r(   rÄ   )r*   rÄ   )r+   rÄ   )r)   rÄ   )r-   rÄ   )r.   rÄ   )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)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   N)rV   N)rW   N)rX   Úwindows)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   Úlinalg)rf   rÆ   )rg   rÆ   )rh   rÆ   )ri   rÆ   )rj   N)rk   N)rl   N)rm   N)rn   N)ro   N)rp   Ú	transform)rq   N)rr   N)rs   N)rt   N)ru   N)rv   N)rw   N)rx   N)ry   N)rz   Úmstats)r{   rÈ   )r|   N)r}   Nc                 óÜ  — t        | «      }|€d| j                  d«      d   › �}nd| j                  d«      d   › d|› �}t        |«      }|j                  D ]E  }t        ||d «      €J ‚d|› d|› d�}t	        j
                  |¬«      5  t        ||«       d d d «       ŒG 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)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Ö   1  s  € ô^ ˜;Ó'€FØÐØ˜{×0Ñ0°Ó5°aÑ8Ð9Ð:‰à˜{×0Ñ0°Ó5°aÑ8Ð9¸¸>Ð:JÐKˆä" ;Ó/€Nð —^‘^ò 'ˆ	ä�~ y°$Ó7ÐCÐCÐCØ# I ;¨l¸;¸-ÀtÐLˆÜ×#Ñ#¨'Ô2ñ 	'Ü�F˜IÔ&÷	'ð 	'ð	'ð �+�Ð0Ð1€GÜ	�‰”~¨WÔ	5ñ  Ü�˜Ô÷ ð  ÷	'ð 	'ú÷ ð  ús   ÂCÃ C"ÃC	Ã"C+)Ú__doc__r•   r¨   r£   r‘   r   rÏ   r   Úscipy._lib._public_apir   r   Úscipy.conftestr   r   r   Úremover�   r™   ÚmarkÚthread_unsaferŸ   rª   r´   rÁ   ÚparametrizerÖ   r   r   r   ú<module>rÞ      sÜ   ðñó
 Û Û Û Ý #ã ã ç CÝ 0ò3òsÐ ñj Ø×&Ñ&Ð'9Ô:Ø×&Ñ&Ð':Ô;òò€	ð ‡�×ÑðGð ó Iñ FóIð FòJ	€ò ?òF"0ðJ ‡�×ÑÐ:òi7ój8ñV óWj8ñV r   