o
    Ô­júF  ã                   @   sð  d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
mZ zd dlZW n ey?   dZY nw d6dd„Zdd„ Ze	jjedd�e	j d	d
g¡dd„ ƒƒZdd„ Zdd„ Zdd„ Ze	jjedu dd�dd„ ƒZdd„ dD ƒZe jdk rŒedd„ dD ƒ7 Zg d¢Zdd„ dD ƒZe jdk r¥edd„ d D ƒ7 Zd!d"„ Zg d#¢Ze jdk r·ed$g7 Ze	j d%¡d&d'„ ƒZg d(¢Z e jdk rÐe g d)¢7 Z d*d+„ Z!d,d-„ Z"e	jj#e $d.¡d/vd0d�d1d2„ ƒZ%e	j d	g d3¢¡d4d5„ ƒZ&dS )7é    N)ÚIS_WASMc                 C   s`   |du 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   úX/var/www/html/CropPilot/venv/lib/python3.10/site-packages/numpy/tests/test_public_api.pyÚ	check_dir   s   

€r   c                  C   s�   i 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$œ¥} | }t tƒ}||ksFJ ‚d S )%NÚ_add_newdoc_ufuncz.numpy.core._multiarray_umath._add_newdoc_ufuncÚadd_docstringz*numpy.core._multiarray_umath.add_docstringÚ
add_newdocz#numpy.core.function_base.add_newdocÚadd_newdoc_ufuncÚbyte_boundsznumpy.lib.utils.byte_boundsÚcompare_chararraysz/numpy.core._multiarray_umath.compare_chararraysÚ	deprecateznumpy.lib.utils.deprecateÚdeprecate_with_docz"numpy.lib.utils.deprecate_with_docÚdispznumpy.lib.function_base.dispÚfastCopyAndTransposez1numpy.core._multiarray_umath.fastCopyAndTransposeÚget_array_wrapz#numpy.lib.shape_base.get_array_wrapÚget_includeznumpy.lib.utils.get_includeÚ
recfromcsvznumpy.lib.npyio.recfromcsvÚ
recfromtxtznumpy.lib.npyio.recfromtxtÚ	safe_evalznumpy.lib.utils.safe_evalÚset_string_functionz)numpy.core.arrayprint.set_string_functionÚshow_configznumpy.__config__.showznumpy.lib.utils.show_runtimeznumpy.lib.utils.who)Úshow_runtimeÚwho)r   Únp)ÚundocumentedÚ	allowlistÚbad_resultsr   r   r   Útest_numpy_namespace!   sR   ÿþýüûúùø	÷
öõôóòñðïír(   zcan't start subprocess)Úreasonr   Útestingc                 C   s6   t jdd|  f}t |¡}|rJ ‚| ttƒv sJ ‚dS )a¶  Make sure we can actually use the modules we lazy load.

    While not exported as part of the public API, it was accessible.  With the
    use of __getattr__ and __dir__, this isn't always true It can happen that
    an infinite recursion may happen.

    This is the only way I found that would force the failure to appear on the
    badly implemented code.

    We also test for the presence of the lazily imported modules in dir

    z-czimport numpy; numpy.N)ÚsysÚ
executableÚ
subprocessÚcheck_outputr   r$   )r   ÚexeÚresultr   r   r   Útest_import_lazy_importA   s   
r1   c                   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)Úlenr   r$   Úsetr   r   r   r   Útest_dir_testingX   s   $r4   c                  C   ó   t tjƒ} | i ksJ ‚d S ©N)r   r$   Úlinalg©r'   r   r   r   Útest_numpy_linalg^   ó   
r9   c                  C   r5   r6   )r   r$   Úfftr8   r   r   r   Útest_numpy_fftc   r:   r<   z#ctypes not available in this pythonc                  C   s0   t  tjjj¡} t| dd ƒ}|d u sJ dƒ‚d S )NÚtest_not_exportedzG'test_not_exported' is mistakenly exported, NPY_NO_EXPORT does not work)ÚctypesÚCDLLr$   ÚcoreÚ_multiarray_testsÚ__file__r   )ÚcdllÚfr   r   r   Útest_NPY_NO_EXPORTh   s   rE   c                 C   ó   g | ]}d | ‘qS ©znumpy.r   ©Ú.0Úsr   r   r   Ú
<listcomp>~   ó    rK   )"Ú	array_apizarray_api.linalgÚ	ctypeslibÚdoczdoc.constantsz
doc.ufuncsÚdtypesÚ
exceptionsÚf2pyr;   Úlibz
lib.formatz
lib.mixinszlib.recfunctionszlib.scimathzlib.stride_tricksr7   Úmaz	ma.extraszma.mrecordsÚmatlibÚ
polynomialzpolynomial.chebyshevzpolynomial.hermitezpolynomial.hermite_ezpolynomial.laguerrezpolynomial.legendrezpolynomial.polynomialÚrandomr*   ztesting.overridesÚtypingztyping.mypy_pluginÚversion)é   é   c                 C   rF   rG   r   rH   r   r   r   rK   £   ó    ÿ)Ú	distutilszdistutils.cpuinfozdistutils.exec_commandzdistutils.misc_utilzdistutils.logzdistutils.system_info)z
numpy.charznumpy.emathz	numpy.recc                 C   rF   rG   r   rH   r   r   r   rK   ·   rL   ):Úcompatzcompat.py3kÚconftestr@   zcore.arrayprintzcore.defchararrayzcore.einsumfunczcore.fromnumericzcore.function_basezcore.getlimitszcore.memmapzcore.multiarrayzcore.numericzcore.numerictypeszcore.overrideszcore.recordszcore.shape_basez
core.umathzf2py.auxfuncszf2py.capi_mapszf2py.cb_ruleszf2py.cfuncszf2py.common_ruleszf2py.crackfortranzf2py.diagnosezf2py.f2py2ezf2py.f90mod_ruleszf2py.func2subrz
f2py.ruleszf2py.symboliczf2py.use_rulesz
fft.helperzlib.arraypadzlib.arraysetopszlib.arrayteratorzlib.function_basezlib.histogramszlib.index_trickszlib.nanfunctionsz	lib.npyiozlib.polynomialzlib.shape_basezlib.twodim_basezlib.type_checkzlib.ufunclikezlib.user_arrayz	lib.utilszlinalg.lapack_litezlinalg.linalgzma.corezma.testutilszma.timer_comparisonÚ	matrixlibzmatrixlib.defmatrixzpolynomial.polyutilszrandom.mtrandzrandom.bit_generatorztesting.print_coercion_tablesc                 C   rF   rG   r   rH   r   r   r   rK   ô   r\   )7zdistutils.armccompilerzdistutils.fujitsuccompilerzdistutils.ccompilerzdistutils.ccompiler_optzdistutils.commandzdistutils.command.autodistzdistutils.command.bdist_rpmzdistutils.command.buildzdistutils.command.build_clibzdistutils.command.build_extzdistutils.command.build_pyzdistutils.command.build_scriptszdistutils.command.build_srczdistutils.command.configz!distutils.command.config_compilerzdistutils.command.developzdistutils.command.egg_infozdistutils.command.installzdistutils.command.install_clibzdistutils.command.install_dataz!distutils.command.install_headerszdistutils.command.sdistzdistutils.conv_templatezdistutils.corezdistutils.extensionzdistutils.fcompilerzdistutils.fcompiler.absoftzdistutils.fcompiler.armzdistutils.fcompiler.compaqzdistutils.fcompiler.environmentzdistutils.fcompiler.g95zdistutils.fcompiler.gnuzdistutils.fcompiler.hpuxzdistutils.fcompiler.ibmzdistutils.fcompiler.intelzdistutils.fcompiler.laheyzdistutils.fcompiler.mipszdistutils.fcompiler.nagzdistutils.fcompiler.nonezdistutils.fcompiler.pathf95zdistutils.fcompiler.pgzdistutils.fcompiler.nvzdistutils.fcompiler.sunzdistutils.fcompiler.vastzdistutils.fcompiler.fujitsuzdistutils.from_templatezdistutils.intelccompilerzdistutils.lib2defzdistutils.line_endingszdistutils.mingw32ccompilerzdistutils.msvccompilerzdistutils.npy_pkg_configzdistutils.numpy_distributionzdistutils.pathccompilerzdistutils.unixccompilerc                 C   sD   d| v sd| v sd| v rdS | t v rdS | tv rdS | tv r dS dS )z%Check if this needs to be considered.z._z.testsz.setupFT)ÚPUBLIC_MODULESÚPUBLIC_ALIASED_MODULESÚPRIVATE_BUT_PRESENT_MODULES©r   r   r   r   Úis_unexpected1  s   re   )znumpy.core.code_generatorsz!numpy.core.code_generators.genapiz)numpy.core.code_generators.generate_umathz+numpy.core.code_generators.ufunc_docstringsz-numpy.core.code_generators.generate_numpy_apiz-numpy.core.code_generators.generate_ufunc_apiz$numpy.core.code_generators.numpy_apiz-numpy.core.code_generators.generate_umath_docz/numpy.core.code_generators.verify_c_api_versionznumpy.core.cversionsznumpy.core.generate_numpy_apiznumpy.core.umath_testsznumpy.distutils.msvc9compilerz'ignore:.*np.compat.*:DeprecationWarningc                  C   sX   g } t jtjtjd dd�D ]\}}}t|ƒr |tvr |  |¡ q| r*t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   re   Ú	SKIP_LISTÚappendÚAssertionError)ÚmodnamesÚ_ÚmodnameÚispkgr   r   r   Útest_all_modules_are_expectedW  s   þ
€ÿrs   )z
numpy.mathznumpy.doc.constants.reznumpy.doc.constants.textwrapznumpy.lib.emathznumpy.lib.mathznumpy.matlib.charznumpy.matlib.recznumpy.matlib.emathznumpy.matlib.exceptionsznumpy.matlib.mathznumpy.matlib.linalgznumpy.matlib.fftznumpy.matlib.randomznumpy.matlib.ctypeslibznumpy.matlib.ma)znumpy.distutils.log.sysznumpy.distutils.log.loggingznumpy.distutils.log.warningsc                  C   s>   dd„ } | dƒ}t D ]	}| | |ƒ¡ q
|rtd |¡ƒ‚dS )aâ  
    Method checking all objects. The pkgutil-based method in
    `test_all_modules_are_expected` does not catch imports into a namespace,
    only filenames.  So this test is more thorough, and checks this like:

        import .lib.scimath as emath

    To check if something in a module is (effectively) public, one can check if
    there's anything in that namespace that's a public function/object but is
    not exposed in a higher-level namespace.  For example for a `numpy.lib`
    submodule::

        mod = np.lib.mixins
        for obj in mod.__all__:
            if obj in np.__all__:
                continue
            elif obj in np.lib.__all__:
                continue

            else:
                print(obj)

    c                 S   sx   g }t  | ¡}t|dƒr|j}nt|ƒ}|D ]#}| d¡s9| d | }tt||ƒtj	ƒr9t
|ƒr9|tvr9| |¡ q|S )NÚ__all__rp   r   )Ú	importlibÚimport_moduler   rt   r   Ú
startswithÚ
isinstancer   ÚtypesÚ
ModuleTypere   ÚSKIP_LIST_2rm   )Úmod_nameÚmembersr	   ÚobjnamesÚobjnameÚfullobjnamer   r   r   Úfind_unexpected_members   s   



€z@test_all_modules_are_expected_2.<locals>.find_unexpected_membersÚnumpyz5Found unexpected object(s) that look like modules: {}N)ra   Úextendrn   Úformat)r�   Úunexpected_membersrq   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D ]}zt|ƒ W q ty5   | |¡ Y qw |r?td |¡ƒ‚tjdd��$}tj	dt
d� tj	dtd� tD ]}| |ƒsa| |¡ qVW d	  ƒ n1 slw   Y  |rzt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 dS  ttfy   Y dS w )NFT)ru   rv   ÚImportErrorÚAttributeError)r
   r   r   r   Úcheck_importableÃ  s   ýÿz-test_api_importable.<locals>.check_importablez5Modules in the public API that cannot be imported: {}z1Modules in the public API that were not found: {}T)ÚrecordÚalways)ÚcategoryNzPModules that are not really public but looked public and can not be imported: {})ra   rm   rn   r„   rb   Úevalrˆ   ÚwarningsÚcatch_warningsÚfilterwarningsÚDeprecationWarningÚImportWarningrc   )r‰   Úmodule_namesr
   Úwr   r   r   Útest_api_importable»  sD   
€ÿÿÿ
€þýþÿr•   ÚPy_DEBUG)Nr   Ú0z£NumPy possibly built with `USE_DEBUG=True ./tools/travis-test.sh`, which does not expose the `array_api` entry point. See https://github.com/numpy/numpy/pull/19800c                  C   sÖ   t  d¡tjv } tj ¡ }z|jdd�}W n ty$   | 	dg ¡}Y nw t
|ƒdkr6| r4d}t|ƒd‚dS ztdd„ |D ƒƒ}W n tyT   | rQd	}t|ƒd‚Y dS w | ¡ }d
|j› d�}|tju siJ |ƒ‚dS )z}
    Entry point for Array API implementation can be found with importlib and
    returns the numpy.array_api namespace.
    ÚplatlibrM   )Úgroupr   z%No entry points for 'array_api' foundNc                 s   s   � | ]
}|j d kr|V  qdS )r‚   Nrd   )rI   Úepr   r   r   Ú	<genexpr>  s   € z-test_array_api_entry_point.<locals>.<genexpr>z%'numpy' not in array_api entry pointsznumpy entry point value 'z0' does not point to our Array API implementation)Ú	sysconfigÚget_pathr$   rB   ru   ÚmetadataÚentry_pointsÚselectrˆ   Úgetr2   rn   ÚnextÚStopIterationÚloadÚvaluer‚   rM   )Únumpy_in_sitepackagesÚepsÚxp_epsÚmsgrš   Úxpr   r   r   Útest_array_api_entry_pointë  s0   
û

üÿr«   )ÚModuleDeprecationWarningÚVisibleDeprecationWarningÚComplexWarningÚTooHardErrorÚ	AxisErrorc                 C   sR   | t jv sJ ‚| t  ¡ vsJ ‚tt | ƒjdksJ ‚| t jjv s!J ‚tt j| ƒ d S )Nznumpy.exceptions)r$   rt   Ú__dir__r   r   rQ   rd   r   r   r   Útest_moved_exceptions  s
   r²   r6   )'r+   rœ   r-   ri   ry   ru   rŽ   r‚   r$   ÚpytestÚnumpy.testingr   r>   r‡   r   r(   ÚmarkÚskipifÚparametrizer1   r4   r9   r<   rE   ra   Úversion_inforb   rc   re   rl   r�   rs   r{   r†   r•   ÚxfailÚget_config_varr«   r²   r   r   r   r   Ú<module>   sr    ÿ
 ÿ

$ÿ
<ÿ=




40ý
)