numpy 2.4.2__cp313-cp313t-win32.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- numpy/__config__.py +170 -0
- numpy/__config__.pyi +108 -0
- numpy/__init__.cython-30.pxd +1242 -0
- numpy/__init__.pxd +1155 -0
- numpy/__init__.py +942 -0
- numpy/__init__.pyi +6202 -0
- numpy/_array_api_info.py +346 -0
- numpy/_array_api_info.pyi +206 -0
- numpy/_configtool.py +39 -0
- numpy/_configtool.pyi +1 -0
- numpy/_core/__init__.py +203 -0
- numpy/_core/__init__.pyi +666 -0
- numpy/_core/_add_newdocs.py +7151 -0
- numpy/_core/_add_newdocs.pyi +2 -0
- numpy/_core/_add_newdocs_scalars.py +381 -0
- numpy/_core/_add_newdocs_scalars.pyi +16 -0
- numpy/_core/_asarray.py +130 -0
- numpy/_core/_asarray.pyi +43 -0
- numpy/_core/_dtype.py +366 -0
- numpy/_core/_dtype.pyi +56 -0
- numpy/_core/_dtype_ctypes.py +120 -0
- numpy/_core/_dtype_ctypes.pyi +83 -0
- numpy/_core/_exceptions.py +162 -0
- numpy/_core/_exceptions.pyi +54 -0
- numpy/_core/_internal.py +968 -0
- numpy/_core/_internal.pyi +61 -0
- numpy/_core/_methods.py +252 -0
- numpy/_core/_methods.pyi +22 -0
- numpy/_core/_multiarray_tests.cp313t-win32.lib +0 -0
- numpy/_core/_multiarray_tests.cp313t-win32.pyd +0 -0
- numpy/_core/_multiarray_umath.cp313t-win32.lib +0 -0
- numpy/_core/_multiarray_umath.cp313t-win32.pyd +0 -0
- numpy/_core/_operand_flag_tests.cp313t-win32.lib +0 -0
- numpy/_core/_operand_flag_tests.cp313t-win32.pyd +0 -0
- numpy/_core/_rational_tests.cp313t-win32.lib +0 -0
- numpy/_core/_rational_tests.cp313t-win32.pyd +0 -0
- numpy/_core/_simd.cp313t-win32.lib +0 -0
- numpy/_core/_simd.cp313t-win32.pyd +0 -0
- numpy/_core/_simd.pyi +35 -0
- numpy/_core/_string_helpers.py +100 -0
- numpy/_core/_string_helpers.pyi +12 -0
- numpy/_core/_struct_ufunc_tests.cp313t-win32.lib +0 -0
- numpy/_core/_struct_ufunc_tests.cp313t-win32.pyd +0 -0
- numpy/_core/_type_aliases.py +131 -0
- numpy/_core/_type_aliases.pyi +86 -0
- numpy/_core/_ufunc_config.py +515 -0
- numpy/_core/_ufunc_config.pyi +69 -0
- numpy/_core/_umath_tests.cp313t-win32.lib +0 -0
- numpy/_core/_umath_tests.cp313t-win32.pyd +0 -0
- numpy/_core/_umath_tests.pyi +47 -0
- numpy/_core/arrayprint.py +1779 -0
- numpy/_core/arrayprint.pyi +158 -0
- numpy/_core/cversions.py +13 -0
- numpy/_core/defchararray.py +1414 -0
- numpy/_core/defchararray.pyi +1150 -0
- numpy/_core/einsumfunc.py +1650 -0
- numpy/_core/einsumfunc.pyi +184 -0
- numpy/_core/fromnumeric.py +4233 -0
- numpy/_core/fromnumeric.pyi +1735 -0
- numpy/_core/function_base.py +547 -0
- numpy/_core/function_base.pyi +276 -0
- numpy/_core/getlimits.py +462 -0
- numpy/_core/getlimits.pyi +124 -0
- numpy/_core/include/numpy/__multiarray_api.c +376 -0
- numpy/_core/include/numpy/__multiarray_api.h +1628 -0
- numpy/_core/include/numpy/__ufunc_api.c +55 -0
- numpy/_core/include/numpy/__ufunc_api.h +349 -0
- numpy/_core/include/numpy/_neighborhood_iterator_imp.h +90 -0
- numpy/_core/include/numpy/_numpyconfig.h +33 -0
- numpy/_core/include/numpy/_public_dtype_api_table.h +86 -0
- numpy/_core/include/numpy/arrayobject.h +7 -0
- numpy/_core/include/numpy/arrayscalars.h +198 -0
- numpy/_core/include/numpy/dtype_api.h +547 -0
- numpy/_core/include/numpy/halffloat.h +70 -0
- numpy/_core/include/numpy/ndarrayobject.h +304 -0
- numpy/_core/include/numpy/ndarraytypes.h +1982 -0
- numpy/_core/include/numpy/npy_2_compat.h +249 -0
- numpy/_core/include/numpy/npy_2_complexcompat.h +28 -0
- numpy/_core/include/numpy/npy_3kcompat.h +374 -0
- numpy/_core/include/numpy/npy_common.h +989 -0
- numpy/_core/include/numpy/npy_cpu.h +126 -0
- numpy/_core/include/numpy/npy_endian.h +79 -0
- numpy/_core/include/numpy/npy_math.h +602 -0
- numpy/_core/include/numpy/npy_no_deprecated_api.h +20 -0
- numpy/_core/include/numpy/npy_os.h +42 -0
- numpy/_core/include/numpy/numpyconfig.h +185 -0
- numpy/_core/include/numpy/random/LICENSE.txt +21 -0
- numpy/_core/include/numpy/random/bitgen.h +20 -0
- numpy/_core/include/numpy/random/distributions.h +209 -0
- numpy/_core/include/numpy/random/libdivide.h +2079 -0
- numpy/_core/include/numpy/ufuncobject.h +343 -0
- numpy/_core/include/numpy/utils.h +37 -0
- numpy/_core/lib/npy-pkg-config/mlib.ini +12 -0
- numpy/_core/lib/npy-pkg-config/npymath.ini +20 -0
- numpy/_core/lib/npymath.lib +0 -0
- numpy/_core/lib/pkgconfig/numpy.pc +7 -0
- numpy/_core/memmap.py +363 -0
- numpy/_core/memmap.pyi +3 -0
- numpy/_core/multiarray.py +1740 -0
- numpy/_core/multiarray.pyi +1328 -0
- numpy/_core/numeric.py +2771 -0
- numpy/_core/numeric.pyi +1276 -0
- numpy/_core/numerictypes.py +633 -0
- numpy/_core/numerictypes.pyi +196 -0
- numpy/_core/overrides.py +188 -0
- numpy/_core/overrides.pyi +47 -0
- numpy/_core/printoptions.py +32 -0
- numpy/_core/printoptions.pyi +28 -0
- numpy/_core/records.py +1088 -0
- numpy/_core/records.pyi +340 -0
- numpy/_core/shape_base.py +996 -0
- numpy/_core/shape_base.pyi +182 -0
- numpy/_core/strings.py +1813 -0
- numpy/_core/strings.pyi +536 -0
- numpy/_core/tests/_locales.py +72 -0
- numpy/_core/tests/_natype.py +144 -0
- numpy/_core/tests/data/astype_copy.pkl +0 -0
- numpy/_core/tests/data/generate_umath_validation_data.cpp +170 -0
- numpy/_core/tests/data/recarray_from_file.fits +0 -0
- numpy/_core/tests/data/umath-validation-set-README.txt +15 -0
- numpy/_core/tests/data/umath-validation-set-arccos.csv +1429 -0
- numpy/_core/tests/data/umath-validation-set-arccosh.csv +1429 -0
- numpy/_core/tests/data/umath-validation-set-arcsin.csv +1429 -0
- numpy/_core/tests/data/umath-validation-set-arcsinh.csv +1429 -0
- numpy/_core/tests/data/umath-validation-set-arctan.csv +1429 -0
- numpy/_core/tests/data/umath-validation-set-arctanh.csv +1429 -0
- numpy/_core/tests/data/umath-validation-set-cbrt.csv +1429 -0
- numpy/_core/tests/data/umath-validation-set-cos.csv +1375 -0
- numpy/_core/tests/data/umath-validation-set-cosh.csv +1429 -0
- numpy/_core/tests/data/umath-validation-set-exp.csv +412 -0
- numpy/_core/tests/data/umath-validation-set-exp2.csv +1429 -0
- numpy/_core/tests/data/umath-validation-set-expm1.csv +1429 -0
- numpy/_core/tests/data/umath-validation-set-log.csv +271 -0
- numpy/_core/tests/data/umath-validation-set-log10.csv +1629 -0
- numpy/_core/tests/data/umath-validation-set-log1p.csv +1429 -0
- numpy/_core/tests/data/umath-validation-set-log2.csv +1629 -0
- numpy/_core/tests/data/umath-validation-set-sin.csv +1370 -0
- numpy/_core/tests/data/umath-validation-set-sinh.csv +1429 -0
- numpy/_core/tests/data/umath-validation-set-tan.csv +1429 -0
- numpy/_core/tests/data/umath-validation-set-tanh.csv +1429 -0
- numpy/_core/tests/examples/cython/checks.pyx +374 -0
- numpy/_core/tests/examples/cython/meson.build +43 -0
- numpy/_core/tests/examples/cython/setup.py +39 -0
- numpy/_core/tests/examples/limited_api/limited_api1.c +15 -0
- numpy/_core/tests/examples/limited_api/limited_api2.pyx +11 -0
- numpy/_core/tests/examples/limited_api/limited_api_latest.c +19 -0
- numpy/_core/tests/examples/limited_api/meson.build +63 -0
- numpy/_core/tests/examples/limited_api/setup.py +24 -0
- numpy/_core/tests/test__exceptions.py +90 -0
- numpy/_core/tests/test_abc.py +54 -0
- numpy/_core/tests/test_api.py +655 -0
- numpy/_core/tests/test_argparse.py +90 -0
- numpy/_core/tests/test_array_api_info.py +113 -0
- numpy/_core/tests/test_array_coercion.py +928 -0
- numpy/_core/tests/test_array_interface.py +222 -0
- numpy/_core/tests/test_arraymethod.py +84 -0
- numpy/_core/tests/test_arrayobject.py +95 -0
- numpy/_core/tests/test_arrayprint.py +1324 -0
- numpy/_core/tests/test_casting_floatingpoint_errors.py +154 -0
- numpy/_core/tests/test_casting_unittests.py +955 -0
- numpy/_core/tests/test_conversion_utils.py +209 -0
- numpy/_core/tests/test_cpu_dispatcher.py +48 -0
- numpy/_core/tests/test_cpu_features.py +450 -0
- numpy/_core/tests/test_custom_dtypes.py +393 -0
- numpy/_core/tests/test_cython.py +352 -0
- numpy/_core/tests/test_datetime.py +2792 -0
- numpy/_core/tests/test_defchararray.py +858 -0
- numpy/_core/tests/test_deprecations.py +460 -0
- numpy/_core/tests/test_dlpack.py +190 -0
- numpy/_core/tests/test_dtype.py +2110 -0
- numpy/_core/tests/test_einsum.py +1351 -0
- numpy/_core/tests/test_errstate.py +131 -0
- numpy/_core/tests/test_extint128.py +217 -0
- numpy/_core/tests/test_finfo.py +86 -0
- numpy/_core/tests/test_function_base.py +504 -0
- numpy/_core/tests/test_getlimits.py +171 -0
- numpy/_core/tests/test_half.py +593 -0
- numpy/_core/tests/test_hashtable.py +36 -0
- numpy/_core/tests/test_indexerrors.py +122 -0
- numpy/_core/tests/test_indexing.py +1692 -0
- numpy/_core/tests/test_item_selection.py +167 -0
- numpy/_core/tests/test_limited_api.py +102 -0
- numpy/_core/tests/test_longdouble.py +370 -0
- numpy/_core/tests/test_mem_overlap.py +933 -0
- numpy/_core/tests/test_mem_policy.py +453 -0
- numpy/_core/tests/test_memmap.py +248 -0
- numpy/_core/tests/test_multiarray.py +11008 -0
- numpy/_core/tests/test_multiprocessing.py +55 -0
- numpy/_core/tests/test_multithreading.py +406 -0
- numpy/_core/tests/test_nditer.py +3533 -0
- numpy/_core/tests/test_nep50_promotions.py +287 -0
- numpy/_core/tests/test_numeric.py +4301 -0
- numpy/_core/tests/test_numerictypes.py +650 -0
- numpy/_core/tests/test_overrides.py +800 -0
- numpy/_core/tests/test_print.py +202 -0
- numpy/_core/tests/test_protocols.py +46 -0
- numpy/_core/tests/test_records.py +544 -0
- numpy/_core/tests/test_regression.py +2677 -0
- numpy/_core/tests/test_scalar_ctors.py +203 -0
- numpy/_core/tests/test_scalar_methods.py +328 -0
- numpy/_core/tests/test_scalarbuffer.py +153 -0
- numpy/_core/tests/test_scalarinherit.py +105 -0
- numpy/_core/tests/test_scalarmath.py +1168 -0
- numpy/_core/tests/test_scalarprint.py +403 -0
- numpy/_core/tests/test_shape_base.py +904 -0
- numpy/_core/tests/test_simd.py +1345 -0
- numpy/_core/tests/test_simd_module.py +105 -0
- numpy/_core/tests/test_stringdtype.py +1855 -0
- numpy/_core/tests/test_strings.py +1523 -0
- numpy/_core/tests/test_ufunc.py +3405 -0
- numpy/_core/tests/test_umath.py +4962 -0
- numpy/_core/tests/test_umath_accuracy.py +132 -0
- numpy/_core/tests/test_umath_complex.py +631 -0
- numpy/_core/tests/test_unicode.py +369 -0
- numpy/_core/umath.py +60 -0
- numpy/_core/umath.pyi +232 -0
- numpy/_distributor_init.py +15 -0
- numpy/_distributor_init.pyi +1 -0
- numpy/_expired_attrs_2_0.py +78 -0
- numpy/_expired_attrs_2_0.pyi +61 -0
- numpy/_globals.py +121 -0
- numpy/_globals.pyi +17 -0
- numpy/_pyinstaller/__init__.py +0 -0
- numpy/_pyinstaller/__init__.pyi +0 -0
- numpy/_pyinstaller/hook-numpy.py +36 -0
- numpy/_pyinstaller/hook-numpy.pyi +6 -0
- numpy/_pyinstaller/tests/__init__.py +16 -0
- numpy/_pyinstaller/tests/pyinstaller-smoke.py +32 -0
- numpy/_pyinstaller/tests/test_pyinstaller.py +35 -0
- numpy/_pytesttester.py +201 -0
- numpy/_pytesttester.pyi +18 -0
- numpy/_typing/__init__.py +173 -0
- numpy/_typing/_add_docstring.py +153 -0
- numpy/_typing/_array_like.py +106 -0
- numpy/_typing/_char_codes.py +213 -0
- numpy/_typing/_dtype_like.py +114 -0
- numpy/_typing/_extended_precision.py +15 -0
- numpy/_typing/_nbit.py +19 -0
- numpy/_typing/_nbit_base.py +94 -0
- numpy/_typing/_nbit_base.pyi +39 -0
- numpy/_typing/_nested_sequence.py +79 -0
- numpy/_typing/_scalars.py +20 -0
- numpy/_typing/_shape.py +8 -0
- numpy/_typing/_ufunc.py +7 -0
- numpy/_typing/_ufunc.pyi +975 -0
- numpy/_utils/__init__.py +95 -0
- numpy/_utils/__init__.pyi +28 -0
- numpy/_utils/_convertions.py +18 -0
- numpy/_utils/_convertions.pyi +4 -0
- numpy/_utils/_inspect.py +192 -0
- numpy/_utils/_inspect.pyi +70 -0
- numpy/_utils/_pep440.py +486 -0
- numpy/_utils/_pep440.pyi +118 -0
- numpy/char/__init__.py +2 -0
- numpy/char/__init__.pyi +111 -0
- numpy/conftest.py +248 -0
- numpy/core/__init__.py +33 -0
- numpy/core/__init__.pyi +0 -0
- numpy/core/_dtype.py +10 -0
- numpy/core/_dtype.pyi +0 -0
- numpy/core/_dtype_ctypes.py +10 -0
- numpy/core/_dtype_ctypes.pyi +0 -0
- numpy/core/_internal.py +27 -0
- numpy/core/_multiarray_umath.py +57 -0
- numpy/core/_utils.py +21 -0
- numpy/core/arrayprint.py +10 -0
- numpy/core/defchararray.py +10 -0
- numpy/core/einsumfunc.py +10 -0
- numpy/core/fromnumeric.py +10 -0
- numpy/core/function_base.py +10 -0
- numpy/core/getlimits.py +10 -0
- numpy/core/multiarray.py +25 -0
- numpy/core/numeric.py +12 -0
- numpy/core/numerictypes.py +10 -0
- numpy/core/overrides.py +10 -0
- numpy/core/overrides.pyi +7 -0
- numpy/core/records.py +10 -0
- numpy/core/shape_base.py +10 -0
- numpy/core/umath.py +10 -0
- numpy/ctypeslib/__init__.py +13 -0
- numpy/ctypeslib/__init__.pyi +15 -0
- numpy/ctypeslib/_ctypeslib.py +603 -0
- numpy/ctypeslib/_ctypeslib.pyi +236 -0
- numpy/doc/ufuncs.py +138 -0
- numpy/dtypes.py +41 -0
- numpy/dtypes.pyi +630 -0
- numpy/exceptions.py +246 -0
- numpy/exceptions.pyi +27 -0
- numpy/f2py/__init__.py +86 -0
- numpy/f2py/__init__.pyi +5 -0
- numpy/f2py/__main__.py +5 -0
- numpy/f2py/__version__.py +1 -0
- numpy/f2py/__version__.pyi +1 -0
- numpy/f2py/_backends/__init__.py +9 -0
- numpy/f2py/_backends/__init__.pyi +5 -0
- numpy/f2py/_backends/_backend.py +44 -0
- numpy/f2py/_backends/_backend.pyi +46 -0
- numpy/f2py/_backends/_distutils.py +76 -0
- numpy/f2py/_backends/_distutils.pyi +13 -0
- numpy/f2py/_backends/_meson.py +244 -0
- numpy/f2py/_backends/_meson.pyi +62 -0
- numpy/f2py/_backends/meson.build.template +58 -0
- numpy/f2py/_isocbind.py +62 -0
- numpy/f2py/_isocbind.pyi +13 -0
- numpy/f2py/_src_pyf.py +247 -0
- numpy/f2py/_src_pyf.pyi +28 -0
- numpy/f2py/auxfuncs.py +1004 -0
- numpy/f2py/auxfuncs.pyi +262 -0
- numpy/f2py/capi_maps.py +811 -0
- numpy/f2py/capi_maps.pyi +33 -0
- numpy/f2py/cb_rules.py +665 -0
- numpy/f2py/cb_rules.pyi +17 -0
- numpy/f2py/cfuncs.py +1563 -0
- numpy/f2py/cfuncs.pyi +31 -0
- numpy/f2py/common_rules.py +143 -0
- numpy/f2py/common_rules.pyi +9 -0
- numpy/f2py/crackfortran.py +3725 -0
- numpy/f2py/crackfortran.pyi +266 -0
- numpy/f2py/diagnose.py +149 -0
- numpy/f2py/diagnose.pyi +1 -0
- numpy/f2py/f2py2e.py +788 -0
- numpy/f2py/f2py2e.pyi +74 -0
- numpy/f2py/f90mod_rules.py +269 -0
- numpy/f2py/f90mod_rules.pyi +16 -0
- numpy/f2py/func2subr.py +329 -0
- numpy/f2py/func2subr.pyi +7 -0
- numpy/f2py/rules.py +1629 -0
- numpy/f2py/rules.pyi +41 -0
- numpy/f2py/setup.cfg +3 -0
- numpy/f2py/src/fortranobject.c +1436 -0
- numpy/f2py/src/fortranobject.h +173 -0
- numpy/f2py/symbolic.py +1518 -0
- numpy/f2py/symbolic.pyi +219 -0
- numpy/f2py/tests/__init__.py +16 -0
- numpy/f2py/tests/src/abstract_interface/foo.f90 +34 -0
- numpy/f2py/tests/src/abstract_interface/gh18403_mod.f90 +6 -0
- numpy/f2py/tests/src/array_from_pyobj/wrapmodule.c +235 -0
- numpy/f2py/tests/src/assumed_shape/.f2py_f2cmap +1 -0
- numpy/f2py/tests/src/assumed_shape/foo_free.f90 +34 -0
- numpy/f2py/tests/src/assumed_shape/foo_mod.f90 +41 -0
- numpy/f2py/tests/src/assumed_shape/foo_use.f90 +19 -0
- numpy/f2py/tests/src/assumed_shape/precision.f90 +4 -0
- numpy/f2py/tests/src/block_docstring/foo.f +6 -0
- numpy/f2py/tests/src/callback/foo.f +62 -0
- numpy/f2py/tests/src/callback/gh17797.f90 +7 -0
- numpy/f2py/tests/src/callback/gh18335.f90 +17 -0
- numpy/f2py/tests/src/callback/gh25211.f +10 -0
- numpy/f2py/tests/src/callback/gh25211.pyf +18 -0
- numpy/f2py/tests/src/callback/gh26681.f90 +18 -0
- numpy/f2py/tests/src/cli/gh_22819.pyf +6 -0
- numpy/f2py/tests/src/cli/hi77.f +3 -0
- numpy/f2py/tests/src/cli/hiworld.f90 +3 -0
- numpy/f2py/tests/src/common/block.f +11 -0
- numpy/f2py/tests/src/common/gh19161.f90 +10 -0
- numpy/f2py/tests/src/crackfortran/accesstype.f90 +13 -0
- numpy/f2py/tests/src/crackfortran/common_with_division.f +17 -0
- numpy/f2py/tests/src/crackfortran/data_common.f +8 -0
- numpy/f2py/tests/src/crackfortran/data_multiplier.f +5 -0
- numpy/f2py/tests/src/crackfortran/data_stmts.f90 +20 -0
- numpy/f2py/tests/src/crackfortran/data_with_comments.f +8 -0
- numpy/f2py/tests/src/crackfortran/foo_deps.f90 +6 -0
- numpy/f2py/tests/src/crackfortran/gh15035.f +16 -0
- numpy/f2py/tests/src/crackfortran/gh17859.f +12 -0
- numpy/f2py/tests/src/crackfortran/gh22648.pyf +7 -0
- numpy/f2py/tests/src/crackfortran/gh23533.f +5 -0
- numpy/f2py/tests/src/crackfortran/gh23598.f90 +4 -0
- numpy/f2py/tests/src/crackfortran/gh23598Warn.f90 +11 -0
- numpy/f2py/tests/src/crackfortran/gh23879.f90 +20 -0
- numpy/f2py/tests/src/crackfortran/gh27697.f90 +12 -0
- numpy/f2py/tests/src/crackfortran/gh2848.f90 +13 -0
- numpy/f2py/tests/src/crackfortran/operators.f90 +49 -0
- numpy/f2py/tests/src/crackfortran/privatemod.f90 +11 -0
- numpy/f2py/tests/src/crackfortran/publicmod.f90 +10 -0
- numpy/f2py/tests/src/crackfortran/pubprivmod.f90 +10 -0
- numpy/f2py/tests/src/crackfortran/unicode_comment.f90 +4 -0
- numpy/f2py/tests/src/f2cmap/.f2py_f2cmap +1 -0
- numpy/f2py/tests/src/f2cmap/isoFortranEnvMap.f90 +9 -0
- numpy/f2py/tests/src/isocintrin/isoCtests.f90 +34 -0
- numpy/f2py/tests/src/kind/foo.f90 +20 -0
- numpy/f2py/tests/src/mixed/foo.f +5 -0
- numpy/f2py/tests/src/mixed/foo_fixed.f90 +8 -0
- numpy/f2py/tests/src/mixed/foo_free.f90 +8 -0
- numpy/f2py/tests/src/modules/gh25337/data.f90 +8 -0
- numpy/f2py/tests/src/modules/gh25337/use_data.f90 +6 -0
- numpy/f2py/tests/src/modules/gh26920/two_mods_with_no_public_entities.f90 +21 -0
- numpy/f2py/tests/src/modules/gh26920/two_mods_with_one_public_routine.f90 +21 -0
- numpy/f2py/tests/src/modules/module_data_docstring.f90 +12 -0
- numpy/f2py/tests/src/modules/use_modules.f90 +20 -0
- numpy/f2py/tests/src/negative_bounds/issue_20853.f90 +7 -0
- numpy/f2py/tests/src/parameter/constant_array.f90 +45 -0
- numpy/f2py/tests/src/parameter/constant_both.f90 +57 -0
- numpy/f2py/tests/src/parameter/constant_compound.f90 +15 -0
- numpy/f2py/tests/src/parameter/constant_integer.f90 +22 -0
- numpy/f2py/tests/src/parameter/constant_non_compound.f90 +23 -0
- numpy/f2py/tests/src/parameter/constant_real.f90 +23 -0
- numpy/f2py/tests/src/quoted_character/foo.f +14 -0
- numpy/f2py/tests/src/regression/AB.inc +1 -0
- numpy/f2py/tests/src/regression/assignOnlyModule.f90 +25 -0
- numpy/f2py/tests/src/regression/datonly.f90 +17 -0
- numpy/f2py/tests/src/regression/f77comments.f +26 -0
- numpy/f2py/tests/src/regression/f77fixedform.f95 +5 -0
- numpy/f2py/tests/src/regression/f90continuation.f90 +9 -0
- numpy/f2py/tests/src/regression/incfile.f90 +5 -0
- numpy/f2py/tests/src/regression/inout.f90 +9 -0
- numpy/f2py/tests/src/regression/lower_f2py_fortran.f90 +5 -0
- numpy/f2py/tests/src/regression/mod_derived_types.f90 +23 -0
- numpy/f2py/tests/src/return_character/foo77.f +45 -0
- numpy/f2py/tests/src/return_character/foo90.f90 +48 -0
- numpy/f2py/tests/src/return_complex/foo77.f +45 -0
- numpy/f2py/tests/src/return_complex/foo90.f90 +48 -0
- numpy/f2py/tests/src/return_integer/foo77.f +56 -0
- numpy/f2py/tests/src/return_integer/foo90.f90 +59 -0
- numpy/f2py/tests/src/return_logical/foo77.f +56 -0
- numpy/f2py/tests/src/return_logical/foo90.f90 +59 -0
- numpy/f2py/tests/src/return_real/foo77.f +45 -0
- numpy/f2py/tests/src/return_real/foo90.f90 +48 -0
- numpy/f2py/tests/src/routines/funcfortranname.f +5 -0
- numpy/f2py/tests/src/routines/funcfortranname.pyf +11 -0
- numpy/f2py/tests/src/routines/subrout.f +4 -0
- numpy/f2py/tests/src/routines/subrout.pyf +10 -0
- numpy/f2py/tests/src/size/foo.f90 +44 -0
- numpy/f2py/tests/src/string/char.f90 +29 -0
- numpy/f2py/tests/src/string/fixed_string.f90 +34 -0
- numpy/f2py/tests/src/string/gh24008.f +8 -0
- numpy/f2py/tests/src/string/gh24662.f90 +7 -0
- numpy/f2py/tests/src/string/gh25286.f90 +14 -0
- numpy/f2py/tests/src/string/gh25286.pyf +12 -0
- numpy/f2py/tests/src/string/gh25286_bc.pyf +12 -0
- numpy/f2py/tests/src/string/scalar_string.f90 +9 -0
- numpy/f2py/tests/src/string/string.f +12 -0
- numpy/f2py/tests/src/value_attrspec/gh21665.f90 +9 -0
- numpy/f2py/tests/test_abstract_interface.py +26 -0
- numpy/f2py/tests/test_array_from_pyobj.py +678 -0
- numpy/f2py/tests/test_assumed_shape.py +50 -0
- numpy/f2py/tests/test_block_docstring.py +20 -0
- numpy/f2py/tests/test_callback.py +263 -0
- numpy/f2py/tests/test_character.py +641 -0
- numpy/f2py/tests/test_common.py +23 -0
- numpy/f2py/tests/test_crackfortran.py +421 -0
- numpy/f2py/tests/test_data.py +71 -0
- numpy/f2py/tests/test_docs.py +66 -0
- numpy/f2py/tests/test_f2cmap.py +17 -0
- numpy/f2py/tests/test_f2py2e.py +983 -0
- numpy/f2py/tests/test_isoc.py +56 -0
- numpy/f2py/tests/test_kind.py +52 -0
- numpy/f2py/tests/test_mixed.py +35 -0
- numpy/f2py/tests/test_modules.py +83 -0
- numpy/f2py/tests/test_parameter.py +129 -0
- numpy/f2py/tests/test_pyf_src.py +43 -0
- numpy/f2py/tests/test_quoted_character.py +18 -0
- numpy/f2py/tests/test_regression.py +187 -0
- numpy/f2py/tests/test_return_character.py +48 -0
- numpy/f2py/tests/test_return_complex.py +67 -0
- numpy/f2py/tests/test_return_integer.py +55 -0
- numpy/f2py/tests/test_return_logical.py +65 -0
- numpy/f2py/tests/test_return_real.py +109 -0
- numpy/f2py/tests/test_routines.py +29 -0
- numpy/f2py/tests/test_semicolon_split.py +75 -0
- numpy/f2py/tests/test_size.py +45 -0
- numpy/f2py/tests/test_string.py +100 -0
- numpy/f2py/tests/test_symbolic.py +500 -0
- numpy/f2py/tests/test_value_attrspec.py +15 -0
- numpy/f2py/tests/util.py +442 -0
- numpy/f2py/use_rules.py +99 -0
- numpy/f2py/use_rules.pyi +9 -0
- numpy/fft/__init__.py +213 -0
- numpy/fft/__init__.pyi +38 -0
- numpy/fft/_helper.py +235 -0
- numpy/fft/_helper.pyi +44 -0
- numpy/fft/_pocketfft.py +1693 -0
- numpy/fft/_pocketfft.pyi +137 -0
- numpy/fft/_pocketfft_umath.cp313t-win32.lib +0 -0
- numpy/fft/_pocketfft_umath.cp313t-win32.pyd +0 -0
- numpy/fft/tests/__init__.py +0 -0
- numpy/fft/tests/test_helper.py +167 -0
- numpy/fft/tests/test_pocketfft.py +589 -0
- numpy/lib/__init__.py +97 -0
- numpy/lib/__init__.pyi +52 -0
- numpy/lib/_array_utils_impl.py +62 -0
- numpy/lib/_array_utils_impl.pyi +10 -0
- numpy/lib/_arraypad_impl.py +926 -0
- numpy/lib/_arraypad_impl.pyi +88 -0
- numpy/lib/_arraysetops_impl.py +1158 -0
- numpy/lib/_arraysetops_impl.pyi +462 -0
- numpy/lib/_arrayterator_impl.py +224 -0
- numpy/lib/_arrayterator_impl.pyi +45 -0
- numpy/lib/_datasource.py +700 -0
- numpy/lib/_datasource.pyi +30 -0
- numpy/lib/_format_impl.py +1036 -0
- numpy/lib/_format_impl.pyi +56 -0
- numpy/lib/_function_base_impl.py +5760 -0
- numpy/lib/_function_base_impl.pyi +2324 -0
- numpy/lib/_histograms_impl.py +1085 -0
- numpy/lib/_histograms_impl.pyi +40 -0
- numpy/lib/_index_tricks_impl.py +1048 -0
- numpy/lib/_index_tricks_impl.pyi +267 -0
- numpy/lib/_iotools.py +900 -0
- numpy/lib/_iotools.pyi +116 -0
- numpy/lib/_nanfunctions_impl.py +2006 -0
- numpy/lib/_nanfunctions_impl.pyi +48 -0
- numpy/lib/_npyio_impl.py +2583 -0
- numpy/lib/_npyio_impl.pyi +299 -0
- numpy/lib/_polynomial_impl.py +1465 -0
- numpy/lib/_polynomial_impl.pyi +338 -0
- numpy/lib/_scimath_impl.py +642 -0
- numpy/lib/_scimath_impl.pyi +93 -0
- numpy/lib/_shape_base_impl.py +1289 -0
- numpy/lib/_shape_base_impl.pyi +236 -0
- numpy/lib/_stride_tricks_impl.py +582 -0
- numpy/lib/_stride_tricks_impl.pyi +73 -0
- numpy/lib/_twodim_base_impl.py +1201 -0
- numpy/lib/_twodim_base_impl.pyi +408 -0
- numpy/lib/_type_check_impl.py +710 -0
- numpy/lib/_type_check_impl.pyi +348 -0
- numpy/lib/_ufunclike_impl.py +199 -0
- numpy/lib/_ufunclike_impl.pyi +60 -0
- numpy/lib/_user_array_impl.py +310 -0
- numpy/lib/_user_array_impl.pyi +226 -0
- numpy/lib/_utils_impl.py +784 -0
- numpy/lib/_utils_impl.pyi +22 -0
- numpy/lib/_version.py +153 -0
- numpy/lib/_version.pyi +17 -0
- numpy/lib/array_utils.py +7 -0
- numpy/lib/array_utils.pyi +6 -0
- numpy/lib/format.py +24 -0
- numpy/lib/format.pyi +24 -0
- numpy/lib/introspect.py +94 -0
- numpy/lib/introspect.pyi +3 -0
- numpy/lib/mixins.py +180 -0
- numpy/lib/mixins.pyi +78 -0
- numpy/lib/npyio.py +1 -0
- numpy/lib/npyio.pyi +5 -0
- numpy/lib/recfunctions.py +1681 -0
- numpy/lib/recfunctions.pyi +444 -0
- numpy/lib/scimath.py +13 -0
- numpy/lib/scimath.pyi +12 -0
- numpy/lib/stride_tricks.py +1 -0
- numpy/lib/stride_tricks.pyi +4 -0
- numpy/lib/tests/__init__.py +0 -0
- numpy/lib/tests/data/py2-np0-objarr.npy +0 -0
- numpy/lib/tests/data/py2-objarr.npy +0 -0
- numpy/lib/tests/data/py2-objarr.npz +0 -0
- numpy/lib/tests/data/py3-objarr.npy +0 -0
- numpy/lib/tests/data/py3-objarr.npz +0 -0
- numpy/lib/tests/data/python3.npy +0 -0
- numpy/lib/tests/data/win64python2.npy +0 -0
- numpy/lib/tests/test__datasource.py +328 -0
- numpy/lib/tests/test__iotools.py +358 -0
- numpy/lib/tests/test__version.py +64 -0
- numpy/lib/tests/test_array_utils.py +32 -0
- numpy/lib/tests/test_arraypad.py +1427 -0
- numpy/lib/tests/test_arraysetops.py +1302 -0
- numpy/lib/tests/test_arrayterator.py +45 -0
- numpy/lib/tests/test_format.py +1054 -0
- numpy/lib/tests/test_function_base.py +4756 -0
- numpy/lib/tests/test_histograms.py +855 -0
- numpy/lib/tests/test_index_tricks.py +693 -0
- numpy/lib/tests/test_io.py +2857 -0
- numpy/lib/tests/test_loadtxt.py +1099 -0
- numpy/lib/tests/test_mixins.py +215 -0
- numpy/lib/tests/test_nanfunctions.py +1438 -0
- numpy/lib/tests/test_packbits.py +376 -0
- numpy/lib/tests/test_polynomial.py +325 -0
- numpy/lib/tests/test_recfunctions.py +1042 -0
- numpy/lib/tests/test_regression.py +231 -0
- numpy/lib/tests/test_shape_base.py +813 -0
- numpy/lib/tests/test_stride_tricks.py +655 -0
- numpy/lib/tests/test_twodim_base.py +559 -0
- numpy/lib/tests/test_type_check.py +473 -0
- numpy/lib/tests/test_ufunclike.py +97 -0
- numpy/lib/tests/test_utils.py +80 -0
- numpy/lib/user_array.py +1 -0
- numpy/lib/user_array.pyi +1 -0
- numpy/linalg/__init__.py +95 -0
- numpy/linalg/__init__.pyi +71 -0
- numpy/linalg/_linalg.py +3657 -0
- numpy/linalg/_linalg.pyi +548 -0
- numpy/linalg/_umath_linalg.cp313t-win32.lib +0 -0
- numpy/linalg/_umath_linalg.cp313t-win32.pyd +0 -0
- numpy/linalg/_umath_linalg.pyi +60 -0
- numpy/linalg/lapack_lite.cp313t-win32.lib +0 -0
- numpy/linalg/lapack_lite.cp313t-win32.pyd +0 -0
- numpy/linalg/lapack_lite.pyi +143 -0
- numpy/linalg/tests/__init__.py +0 -0
- numpy/linalg/tests/test_deprecations.py +21 -0
- numpy/linalg/tests/test_linalg.py +2442 -0
- numpy/linalg/tests/test_regression.py +182 -0
- numpy/ma/API_CHANGES.txt +135 -0
- numpy/ma/LICENSE +24 -0
- numpy/ma/README.rst +236 -0
- numpy/ma/__init__.py +53 -0
- numpy/ma/__init__.pyi +458 -0
- numpy/ma/core.py +8929 -0
- numpy/ma/core.pyi +3733 -0
- numpy/ma/extras.py +2266 -0
- numpy/ma/extras.pyi +297 -0
- numpy/ma/mrecords.py +762 -0
- numpy/ma/mrecords.pyi +96 -0
- numpy/ma/tests/__init__.py +0 -0
- numpy/ma/tests/test_arrayobject.py +40 -0
- numpy/ma/tests/test_core.py +6008 -0
- numpy/ma/tests/test_deprecations.py +65 -0
- numpy/ma/tests/test_extras.py +1945 -0
- numpy/ma/tests/test_mrecords.py +495 -0
- numpy/ma/tests/test_old_ma.py +939 -0
- numpy/ma/tests/test_regression.py +83 -0
- numpy/ma/tests/test_subclassing.py +469 -0
- numpy/ma/testutils.py +294 -0
- numpy/ma/testutils.pyi +69 -0
- numpy/matlib.py +380 -0
- numpy/matlib.pyi +580 -0
- numpy/matrixlib/__init__.py +12 -0
- numpy/matrixlib/__init__.pyi +3 -0
- numpy/matrixlib/defmatrix.py +1119 -0
- numpy/matrixlib/defmatrix.pyi +218 -0
- numpy/matrixlib/tests/__init__.py +0 -0
- numpy/matrixlib/tests/test_defmatrix.py +455 -0
- numpy/matrixlib/tests/test_interaction.py +360 -0
- numpy/matrixlib/tests/test_masked_matrix.py +240 -0
- numpy/matrixlib/tests/test_matrix_linalg.py +110 -0
- numpy/matrixlib/tests/test_multiarray.py +17 -0
- numpy/matrixlib/tests/test_numeric.py +18 -0
- numpy/matrixlib/tests/test_regression.py +31 -0
- numpy/polynomial/__init__.py +187 -0
- numpy/polynomial/__init__.pyi +31 -0
- numpy/polynomial/_polybase.py +1191 -0
- numpy/polynomial/_polybase.pyi +262 -0
- numpy/polynomial/_polytypes.pyi +501 -0
- numpy/polynomial/chebyshev.py +2001 -0
- numpy/polynomial/chebyshev.pyi +180 -0
- numpy/polynomial/hermite.py +1738 -0
- numpy/polynomial/hermite.pyi +106 -0
- numpy/polynomial/hermite_e.py +1640 -0
- numpy/polynomial/hermite_e.pyi +106 -0
- numpy/polynomial/laguerre.py +1673 -0
- numpy/polynomial/laguerre.pyi +100 -0
- numpy/polynomial/legendre.py +1603 -0
- numpy/polynomial/legendre.pyi +100 -0
- numpy/polynomial/polynomial.py +1625 -0
- numpy/polynomial/polynomial.pyi +109 -0
- numpy/polynomial/polyutils.py +759 -0
- numpy/polynomial/polyutils.pyi +307 -0
- numpy/polynomial/tests/__init__.py +0 -0
- numpy/polynomial/tests/test_chebyshev.py +618 -0
- numpy/polynomial/tests/test_classes.py +613 -0
- numpy/polynomial/tests/test_hermite.py +553 -0
- numpy/polynomial/tests/test_hermite_e.py +554 -0
- numpy/polynomial/tests/test_laguerre.py +535 -0
- numpy/polynomial/tests/test_legendre.py +566 -0
- numpy/polynomial/tests/test_polynomial.py +691 -0
- numpy/polynomial/tests/test_polyutils.py +123 -0
- numpy/polynomial/tests/test_printing.py +557 -0
- numpy/polynomial/tests/test_symbol.py +217 -0
- numpy/py.typed +0 -0
- numpy/random/LICENSE.md +71 -0
- numpy/random/__init__.pxd +14 -0
- numpy/random/__init__.py +213 -0
- numpy/random/__init__.pyi +124 -0
- numpy/random/_bounded_integers.cp313t-win32.lib +0 -0
- numpy/random/_bounded_integers.cp313t-win32.pyd +0 -0
- numpy/random/_bounded_integers.pxd +38 -0
- numpy/random/_bounded_integers.pyi +1 -0
- numpy/random/_common.cp313t-win32.lib +0 -0
- numpy/random/_common.cp313t-win32.pyd +0 -0
- numpy/random/_common.pxd +110 -0
- numpy/random/_common.pyi +16 -0
- numpy/random/_examples/cffi/extending.py +44 -0
- numpy/random/_examples/cffi/parse.py +53 -0
- numpy/random/_examples/cython/extending.pyx +77 -0
- numpy/random/_examples/cython/extending_distributions.pyx +117 -0
- numpy/random/_examples/cython/meson.build +53 -0
- numpy/random/_examples/numba/extending.py +86 -0
- numpy/random/_examples/numba/extending_distributions.py +67 -0
- numpy/random/_generator.cp313t-win32.lib +0 -0
- numpy/random/_generator.cp313t-win32.pyd +0 -0
- numpy/random/_generator.pyi +862 -0
- numpy/random/_mt19937.cp313t-win32.lib +0 -0
- numpy/random/_mt19937.cp313t-win32.pyd +0 -0
- numpy/random/_mt19937.pyi +27 -0
- numpy/random/_pcg64.cp313t-win32.lib +0 -0
- numpy/random/_pcg64.cp313t-win32.pyd +0 -0
- numpy/random/_pcg64.pyi +41 -0
- numpy/random/_philox.cp313t-win32.lib +0 -0
- numpy/random/_philox.cp313t-win32.pyd +0 -0
- numpy/random/_philox.pyi +36 -0
- numpy/random/_pickle.py +88 -0
- numpy/random/_pickle.pyi +43 -0
- numpy/random/_sfc64.cp313t-win32.lib +0 -0
- numpy/random/_sfc64.cp313t-win32.pyd +0 -0
- numpy/random/_sfc64.pyi +25 -0
- numpy/random/bit_generator.cp313t-win32.lib +0 -0
- numpy/random/bit_generator.cp313t-win32.pyd +0 -0
- numpy/random/bit_generator.pxd +40 -0
- numpy/random/bit_generator.pyi +123 -0
- numpy/random/c_distributions.pxd +119 -0
- numpy/random/lib/npyrandom.lib +0 -0
- numpy/random/mtrand.cp313t-win32.lib +0 -0
- numpy/random/mtrand.cp313t-win32.pyd +0 -0
- numpy/random/mtrand.pyi +759 -0
- numpy/random/tests/__init__.py +0 -0
- numpy/random/tests/data/__init__.py +0 -0
- numpy/random/tests/data/generator_pcg64_np121.pkl.gz +0 -0
- numpy/random/tests/data/generator_pcg64_np126.pkl.gz +0 -0
- numpy/random/tests/data/mt19937-testset-1.csv +1001 -0
- numpy/random/tests/data/mt19937-testset-2.csv +1001 -0
- numpy/random/tests/data/pcg64-testset-1.csv +1001 -0
- numpy/random/tests/data/pcg64-testset-2.csv +1001 -0
- numpy/random/tests/data/pcg64dxsm-testset-1.csv +1001 -0
- numpy/random/tests/data/pcg64dxsm-testset-2.csv +1001 -0
- numpy/random/tests/data/philox-testset-1.csv +1001 -0
- numpy/random/tests/data/philox-testset-2.csv +1001 -0
- numpy/random/tests/data/sfc64-testset-1.csv +1001 -0
- numpy/random/tests/data/sfc64-testset-2.csv +1001 -0
- numpy/random/tests/data/sfc64_np126.pkl.gz +0 -0
- numpy/random/tests/test_direct.py +595 -0
- numpy/random/tests/test_extending.py +131 -0
- numpy/random/tests/test_generator_mt19937.py +2825 -0
- numpy/random/tests/test_generator_mt19937_regressions.py +221 -0
- numpy/random/tests/test_random.py +1724 -0
- numpy/random/tests/test_randomstate.py +2099 -0
- numpy/random/tests/test_randomstate_regression.py +213 -0
- numpy/random/tests/test_regression.py +175 -0
- numpy/random/tests/test_seed_sequence.py +79 -0
- numpy/random/tests/test_smoke.py +882 -0
- numpy/rec/__init__.py +2 -0
- numpy/rec/__init__.pyi +23 -0
- numpy/strings/__init__.py +2 -0
- numpy/strings/__init__.pyi +97 -0
- numpy/testing/__init__.py +22 -0
- numpy/testing/__init__.pyi +107 -0
- numpy/testing/_private/__init__.py +0 -0
- numpy/testing/_private/__init__.pyi +0 -0
- numpy/testing/_private/extbuild.py +250 -0
- numpy/testing/_private/extbuild.pyi +25 -0
- numpy/testing/_private/utils.py +2830 -0
- numpy/testing/_private/utils.pyi +505 -0
- numpy/testing/overrides.py +84 -0
- numpy/testing/overrides.pyi +10 -0
- numpy/testing/print_coercion_tables.py +207 -0
- numpy/testing/print_coercion_tables.pyi +26 -0
- numpy/testing/tests/__init__.py +0 -0
- numpy/testing/tests/test_utils.py +2123 -0
- numpy/tests/__init__.py +0 -0
- numpy/tests/test__all__.py +10 -0
- numpy/tests/test_configtool.py +51 -0
- numpy/tests/test_ctypeslib.py +383 -0
- numpy/tests/test_lazyloading.py +42 -0
- numpy/tests/test_matlib.py +59 -0
- numpy/tests/test_numpy_config.py +47 -0
- numpy/tests/test_numpy_version.py +54 -0
- numpy/tests/test_public_api.py +807 -0
- numpy/tests/test_reloading.py +76 -0
- numpy/tests/test_scripts.py +48 -0
- numpy/tests/test_warnings.py +79 -0
- numpy/typing/__init__.py +233 -0
- numpy/typing/__init__.pyi +3 -0
- numpy/typing/mypy_plugin.py +200 -0
- numpy/typing/tests/__init__.py +0 -0
- numpy/typing/tests/data/fail/arithmetic.pyi +126 -0
- numpy/typing/tests/data/fail/array_constructors.pyi +34 -0
- numpy/typing/tests/data/fail/array_like.pyi +15 -0
- numpy/typing/tests/data/fail/array_pad.pyi +6 -0
- numpy/typing/tests/data/fail/arrayprint.pyi +15 -0
- numpy/typing/tests/data/fail/arrayterator.pyi +14 -0
- numpy/typing/tests/data/fail/bitwise_ops.pyi +17 -0
- numpy/typing/tests/data/fail/char.pyi +63 -0
- numpy/typing/tests/data/fail/chararray.pyi +61 -0
- numpy/typing/tests/data/fail/comparisons.pyi +27 -0
- numpy/typing/tests/data/fail/constants.pyi +3 -0
- numpy/typing/tests/data/fail/datasource.pyi +16 -0
- numpy/typing/tests/data/fail/dtype.pyi +17 -0
- numpy/typing/tests/data/fail/einsumfunc.pyi +12 -0
- numpy/typing/tests/data/fail/flatiter.pyi +38 -0
- numpy/typing/tests/data/fail/fromnumeric.pyi +148 -0
- numpy/typing/tests/data/fail/histograms.pyi +12 -0
- numpy/typing/tests/data/fail/index_tricks.pyi +14 -0
- numpy/typing/tests/data/fail/lib_function_base.pyi +60 -0
- numpy/typing/tests/data/fail/lib_polynomial.pyi +29 -0
- numpy/typing/tests/data/fail/lib_utils.pyi +3 -0
- numpy/typing/tests/data/fail/lib_version.pyi +6 -0
- numpy/typing/tests/data/fail/linalg.pyi +52 -0
- numpy/typing/tests/data/fail/ma.pyi +155 -0
- numpy/typing/tests/data/fail/memmap.pyi +5 -0
- numpy/typing/tests/data/fail/modules.pyi +17 -0
- numpy/typing/tests/data/fail/multiarray.pyi +52 -0
- numpy/typing/tests/data/fail/ndarray.pyi +11 -0
- numpy/typing/tests/data/fail/ndarray_misc.pyi +49 -0
- numpy/typing/tests/data/fail/nditer.pyi +8 -0
- numpy/typing/tests/data/fail/nested_sequence.pyi +17 -0
- numpy/typing/tests/data/fail/npyio.pyi +24 -0
- numpy/typing/tests/data/fail/numerictypes.pyi +5 -0
- numpy/typing/tests/data/fail/random.pyi +62 -0
- numpy/typing/tests/data/fail/rec.pyi +17 -0
- numpy/typing/tests/data/fail/scalars.pyi +86 -0
- numpy/typing/tests/data/fail/shape.pyi +7 -0
- numpy/typing/tests/data/fail/shape_base.pyi +8 -0
- numpy/typing/tests/data/fail/stride_tricks.pyi +9 -0
- numpy/typing/tests/data/fail/strings.pyi +52 -0
- numpy/typing/tests/data/fail/testing.pyi +28 -0
- numpy/typing/tests/data/fail/twodim_base.pyi +39 -0
- numpy/typing/tests/data/fail/type_check.pyi +12 -0
- numpy/typing/tests/data/fail/ufunc_config.pyi +21 -0
- numpy/typing/tests/data/fail/ufunclike.pyi +21 -0
- numpy/typing/tests/data/fail/ufuncs.pyi +17 -0
- numpy/typing/tests/data/fail/warnings_and_errors.pyi +5 -0
- numpy/typing/tests/data/misc/extended_precision.pyi +9 -0
- numpy/typing/tests/data/mypy.ini +8 -0
- numpy/typing/tests/data/pass/arithmetic.py +614 -0
- numpy/typing/tests/data/pass/array_constructors.py +138 -0
- numpy/typing/tests/data/pass/array_like.py +43 -0
- numpy/typing/tests/data/pass/arrayprint.py +37 -0
- numpy/typing/tests/data/pass/arrayterator.py +28 -0
- numpy/typing/tests/data/pass/bitwise_ops.py +131 -0
- numpy/typing/tests/data/pass/comparisons.py +316 -0
- numpy/typing/tests/data/pass/dtype.py +57 -0
- numpy/typing/tests/data/pass/einsumfunc.py +36 -0
- numpy/typing/tests/data/pass/flatiter.py +26 -0
- numpy/typing/tests/data/pass/fromnumeric.py +272 -0
- numpy/typing/tests/data/pass/index_tricks.py +62 -0
- numpy/typing/tests/data/pass/lib_user_array.py +22 -0
- numpy/typing/tests/data/pass/lib_utils.py +19 -0
- numpy/typing/tests/data/pass/lib_version.py +18 -0
- numpy/typing/tests/data/pass/literal.py +52 -0
- numpy/typing/tests/data/pass/ma.py +199 -0
- numpy/typing/tests/data/pass/mod.py +149 -0
- numpy/typing/tests/data/pass/modules.py +45 -0
- numpy/typing/tests/data/pass/multiarray.py +77 -0
- numpy/typing/tests/data/pass/ndarray_conversion.py +81 -0
- numpy/typing/tests/data/pass/ndarray_misc.py +199 -0
- numpy/typing/tests/data/pass/ndarray_shape_manipulation.py +47 -0
- numpy/typing/tests/data/pass/nditer.py +4 -0
- numpy/typing/tests/data/pass/numeric.py +90 -0
- numpy/typing/tests/data/pass/numerictypes.py +17 -0
- numpy/typing/tests/data/pass/random.py +1498 -0
- numpy/typing/tests/data/pass/recfunctions.py +164 -0
- numpy/typing/tests/data/pass/scalars.py +249 -0
- numpy/typing/tests/data/pass/shape.py +19 -0
- numpy/typing/tests/data/pass/simple.py +170 -0
- numpy/typing/tests/data/pass/ufunc_config.py +64 -0
- numpy/typing/tests/data/pass/ufunclike.py +52 -0
- numpy/typing/tests/data/pass/ufuncs.py +16 -0
- numpy/typing/tests/data/pass/warnings_and_errors.py +6 -0
- numpy/typing/tests/data/reveal/arithmetic.pyi +719 -0
- numpy/typing/tests/data/reveal/array_api_info.pyi +70 -0
- numpy/typing/tests/data/reveal/array_constructors.pyi +279 -0
- numpy/typing/tests/data/reveal/arraypad.pyi +27 -0
- numpy/typing/tests/data/reveal/arrayprint.pyi +25 -0
- numpy/typing/tests/data/reveal/arraysetops.pyi +74 -0
- numpy/typing/tests/data/reveal/arrayterator.pyi +27 -0
- numpy/typing/tests/data/reveal/bitwise_ops.pyi +166 -0
- numpy/typing/tests/data/reveal/char.pyi +225 -0
- numpy/typing/tests/data/reveal/chararray.pyi +138 -0
- numpy/typing/tests/data/reveal/comparisons.pyi +264 -0
- numpy/typing/tests/data/reveal/constants.pyi +14 -0
- numpy/typing/tests/data/reveal/ctypeslib.pyi +81 -0
- numpy/typing/tests/data/reveal/datasource.pyi +23 -0
- numpy/typing/tests/data/reveal/dtype.pyi +132 -0
- numpy/typing/tests/data/reveal/einsumfunc.pyi +39 -0
- numpy/typing/tests/data/reveal/emath.pyi +54 -0
- numpy/typing/tests/data/reveal/fft.pyi +37 -0
- numpy/typing/tests/data/reveal/flatiter.pyi +86 -0
- numpy/typing/tests/data/reveal/fromnumeric.pyi +347 -0
- numpy/typing/tests/data/reveal/getlimits.pyi +53 -0
- numpy/typing/tests/data/reveal/histograms.pyi +25 -0
- numpy/typing/tests/data/reveal/index_tricks.pyi +70 -0
- numpy/typing/tests/data/reveal/lib_function_base.pyi +409 -0
- numpy/typing/tests/data/reveal/lib_polynomial.pyi +147 -0
- numpy/typing/tests/data/reveal/lib_utils.pyi +17 -0
- numpy/typing/tests/data/reveal/lib_version.pyi +20 -0
- numpy/typing/tests/data/reveal/linalg.pyi +154 -0
- numpy/typing/tests/data/reveal/ma.pyi +1098 -0
- numpy/typing/tests/data/reveal/matrix.pyi +73 -0
- numpy/typing/tests/data/reveal/memmap.pyi +19 -0
- numpy/typing/tests/data/reveal/mod.pyi +178 -0
- numpy/typing/tests/data/reveal/modules.pyi +51 -0
- numpy/typing/tests/data/reveal/multiarray.pyi +197 -0
- numpy/typing/tests/data/reveal/nbit_base_example.pyi +20 -0
- numpy/typing/tests/data/reveal/ndarray_assignability.pyi +82 -0
- numpy/typing/tests/data/reveal/ndarray_conversion.pyi +83 -0
- numpy/typing/tests/data/reveal/ndarray_misc.pyi +246 -0
- numpy/typing/tests/data/reveal/ndarray_shape_manipulation.pyi +47 -0
- numpy/typing/tests/data/reveal/nditer.pyi +49 -0
- numpy/typing/tests/data/reveal/nested_sequence.pyi +25 -0
- numpy/typing/tests/data/reveal/npyio.pyi +83 -0
- numpy/typing/tests/data/reveal/numeric.pyi +170 -0
- numpy/typing/tests/data/reveal/numerictypes.pyi +16 -0
- numpy/typing/tests/data/reveal/polynomial_polybase.pyi +217 -0
- numpy/typing/tests/data/reveal/polynomial_polyutils.pyi +218 -0
- numpy/typing/tests/data/reveal/polynomial_series.pyi +138 -0
- numpy/typing/tests/data/reveal/random.pyi +1546 -0
- numpy/typing/tests/data/reveal/rec.pyi +171 -0
- numpy/typing/tests/data/reveal/scalars.pyi +191 -0
- numpy/typing/tests/data/reveal/shape.pyi +13 -0
- numpy/typing/tests/data/reveal/shape_base.pyi +52 -0
- numpy/typing/tests/data/reveal/stride_tricks.pyi +27 -0
- numpy/typing/tests/data/reveal/strings.pyi +196 -0
- numpy/typing/tests/data/reveal/testing.pyi +198 -0
- numpy/typing/tests/data/reveal/twodim_base.pyi +225 -0
- numpy/typing/tests/data/reveal/type_check.pyi +67 -0
- numpy/typing/tests/data/reveal/ufunc_config.pyi +29 -0
- numpy/typing/tests/data/reveal/ufunclike.pyi +31 -0
- numpy/typing/tests/data/reveal/ufuncs.pyi +142 -0
- numpy/typing/tests/data/reveal/warnings_and_errors.pyi +11 -0
- numpy/typing/tests/test_isfile.py +38 -0
- numpy/typing/tests/test_runtime.py +110 -0
- numpy/typing/tests/test_typing.py +205 -0
- numpy/version.py +11 -0
- numpy/version.pyi +9 -0
- numpy-2.4.2.dist-info/METADATA +139 -0
- numpy-2.4.2.dist-info/RECORD +929 -0
- numpy-2.4.2.dist-info/WHEEL +4 -0
- numpy-2.4.2.dist-info/entry_points.txt +13 -0
- numpy-2.4.2.dist-info/licenses/LICENSE.txt +914 -0
- numpy-2.4.2.dist-info/licenses/numpy/_core/include/numpy/libdivide/LICENSE.txt +21 -0
- numpy-2.4.2.dist-info/licenses/numpy/_core/src/common/pythoncapi-compat/COPYING +14 -0
- numpy-2.4.2.dist-info/licenses/numpy/_core/src/highway/LICENSE +371 -0
- numpy-2.4.2.dist-info/licenses/numpy/_core/src/multiarray/dragon4_LICENSE.txt +27 -0
- numpy-2.4.2.dist-info/licenses/numpy/_core/src/npysort/x86-simd-sort/LICENSE.md +28 -0
- numpy-2.4.2.dist-info/licenses/numpy/_core/src/umath/svml/LICENSE +30 -0
- numpy-2.4.2.dist-info/licenses/numpy/fft/pocketfft/LICENSE.md +25 -0
- numpy-2.4.2.dist-info/licenses/numpy/linalg/lapack_lite/LICENSE.txt +48 -0
- numpy-2.4.2.dist-info/licenses/numpy/ma/LICENSE +24 -0
- numpy-2.4.2.dist-info/licenses/numpy/random/LICENSE.md +71 -0
- numpy-2.4.2.dist-info/licenses/numpy/random/src/distributions/LICENSE.md +61 -0
- numpy-2.4.2.dist-info/licenses/numpy/random/src/mt19937/LICENSE.md +61 -0
- numpy-2.4.2.dist-info/licenses/numpy/random/src/pcg64/LICENSE.md +22 -0
- numpy-2.4.2.dist-info/licenses/numpy/random/src/philox/LICENSE.md +31 -0
- numpy-2.4.2.dist-info/licenses/numpy/random/src/sfc64/LICENSE.md +27 -0
- numpy-2.4.2.dist-info/licenses/numpy/random/src/splitmix64/LICENSE.md +9 -0
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import pickle
|
|
2
|
+
import subprocess
|
|
3
|
+
import sys
|
|
4
|
+
import textwrap
|
|
5
|
+
from importlib import reload
|
|
6
|
+
|
|
7
|
+
import pytest
|
|
8
|
+
|
|
9
|
+
import numpy.exceptions as ex
|
|
10
|
+
from numpy.testing import IS_WASM, assert_, assert_equal, assert_raises
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
@pytest.mark.thread_unsafe(reason="reloads global module")
|
|
14
|
+
def test_numpy_reloading():
|
|
15
|
+
# gh-7844. Also check that relevant globals retain their identity.
|
|
16
|
+
import numpy as np
|
|
17
|
+
import numpy._globals
|
|
18
|
+
|
|
19
|
+
_NoValue = np._NoValue
|
|
20
|
+
VisibleDeprecationWarning = ex.VisibleDeprecationWarning
|
|
21
|
+
ModuleDeprecationWarning = ex.ModuleDeprecationWarning
|
|
22
|
+
|
|
23
|
+
with pytest.warns(UserWarning):
|
|
24
|
+
reload(np)
|
|
25
|
+
assert_(_NoValue is np._NoValue)
|
|
26
|
+
assert_(ModuleDeprecationWarning is ex.ModuleDeprecationWarning)
|
|
27
|
+
assert_(VisibleDeprecationWarning is ex.VisibleDeprecationWarning)
|
|
28
|
+
|
|
29
|
+
assert_raises(RuntimeError, reload, numpy._globals)
|
|
30
|
+
with pytest.warns(UserWarning):
|
|
31
|
+
reload(np)
|
|
32
|
+
assert_(_NoValue is np._NoValue)
|
|
33
|
+
assert_(ModuleDeprecationWarning is ex.ModuleDeprecationWarning)
|
|
34
|
+
assert_(VisibleDeprecationWarning is ex.VisibleDeprecationWarning)
|
|
35
|
+
|
|
36
|
+
def test_novalue():
|
|
37
|
+
import numpy as np
|
|
38
|
+
for proto in range(2, pickle.HIGHEST_PROTOCOL + 1):
|
|
39
|
+
assert_equal(repr(np._NoValue), '<no value>')
|
|
40
|
+
assert_(pickle.loads(pickle.dumps(np._NoValue,
|
|
41
|
+
protocol=proto)) is np._NoValue)
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
@pytest.mark.skipif(IS_WASM, reason="can't start subprocess")
|
|
45
|
+
def test_full_reimport():
|
|
46
|
+
# Reimporting numpy like this is not safe due to use of global C state,
|
|
47
|
+
# and has unexpected side effects. Test that an ImportError is raised.
|
|
48
|
+
# When all extension modules are isolated, this should test that clearing
|
|
49
|
+
# sys.modules and reimporting numpy works without error.
|
|
50
|
+
|
|
51
|
+
# Test within a new process, to ensure that we do not mess with the
|
|
52
|
+
# global state during the test run (could lead to cryptic test failures).
|
|
53
|
+
# This is generally unsafe, especially, since we also reload the C-modules.
|
|
54
|
+
code = textwrap.dedent(r"""
|
|
55
|
+
import sys
|
|
56
|
+
import numpy as np
|
|
57
|
+
|
|
58
|
+
for k in [k for k in sys.modules if k.startswith('numpy')]:
|
|
59
|
+
del sys.modules[k]
|
|
60
|
+
|
|
61
|
+
try:
|
|
62
|
+
import numpy as np
|
|
63
|
+
except ImportError as err:
|
|
64
|
+
if str(err) != "cannot load module more than once per process":
|
|
65
|
+
raise SystemExit(f"Unexpected ImportError: {err}")
|
|
66
|
+
else:
|
|
67
|
+
raise SystemExit("DID NOT RAISE ImportError")
|
|
68
|
+
""")
|
|
69
|
+
p = subprocess.run(
|
|
70
|
+
(sys.executable, '-c', code),
|
|
71
|
+
stdout=subprocess.PIPE,
|
|
72
|
+
stderr=subprocess.STDOUT,
|
|
73
|
+
encoding='utf-8',
|
|
74
|
+
check=False,
|
|
75
|
+
)
|
|
76
|
+
assert p.returncode == 0, p.stdout
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
""" Test scripts
|
|
2
|
+
|
|
3
|
+
Test that we can run executable scripts that have been installed with numpy.
|
|
4
|
+
"""
|
|
5
|
+
import os
|
|
6
|
+
import subprocess
|
|
7
|
+
import sys
|
|
8
|
+
from os.path import dirname, isfile, join as pathjoin
|
|
9
|
+
|
|
10
|
+
import pytest
|
|
11
|
+
|
|
12
|
+
import numpy as np
|
|
13
|
+
from numpy.testing import IS_WASM, assert_equal
|
|
14
|
+
|
|
15
|
+
is_inplace = isfile(pathjoin(dirname(np.__file__), '..', 'setup.py'))
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def find_f2py_commands():
|
|
19
|
+
if sys.platform == 'win32':
|
|
20
|
+
exe_dir = dirname(sys.executable)
|
|
21
|
+
if exe_dir.endswith('Scripts'): # virtualenv
|
|
22
|
+
return [os.path.join(exe_dir, 'f2py')]
|
|
23
|
+
else:
|
|
24
|
+
return [os.path.join(exe_dir, "Scripts", 'f2py')]
|
|
25
|
+
else:
|
|
26
|
+
# Three scripts are installed in Unix-like systems:
|
|
27
|
+
# 'f2py', 'f2py{major}', and 'f2py{major.minor}'. For example,
|
|
28
|
+
# if installed with python3.9 the scripts would be named
|
|
29
|
+
# 'f2py', 'f2py3', and 'f2py3.9'.
|
|
30
|
+
version = sys.version_info
|
|
31
|
+
major = str(version.major)
|
|
32
|
+
minor = str(version.minor)
|
|
33
|
+
return ['f2py', 'f2py' + major, 'f2py' + major + '.' + minor]
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
@pytest.mark.skipif(is_inplace, reason="Cannot test f2py command inplace")
|
|
37
|
+
@pytest.mark.xfail(reason="Test is unreliable")
|
|
38
|
+
@pytest.mark.parametrize('f2py_cmd', find_f2py_commands())
|
|
39
|
+
def test_f2py(f2py_cmd):
|
|
40
|
+
# test that we can run f2py script
|
|
41
|
+
stdout = subprocess.check_output([f2py_cmd, '-v'])
|
|
42
|
+
assert_equal(stdout.strip(), np.__version__.encode('ascii'))
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
@pytest.mark.skipif(IS_WASM, reason="Cannot start subprocess")
|
|
46
|
+
def test_pep338():
|
|
47
|
+
stdout = subprocess.check_output([sys.executable, '-mnumpy.f2py', '-v'])
|
|
48
|
+
assert_equal(stdout.strip(), np.__version__.encode('ascii'))
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Tests which scan for certain occurrences in the code, they may not find
|
|
3
|
+
all of these occurrences but should catch almost all.
|
|
4
|
+
"""
|
|
5
|
+
import ast
|
|
6
|
+
import tokenize
|
|
7
|
+
from pathlib import Path
|
|
8
|
+
|
|
9
|
+
import pytest
|
|
10
|
+
|
|
11
|
+
import numpy
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class ParseCall(ast.NodeVisitor):
|
|
15
|
+
def __init__(self):
|
|
16
|
+
self.ls = []
|
|
17
|
+
|
|
18
|
+
def visit_Attribute(self, node):
|
|
19
|
+
ast.NodeVisitor.generic_visit(self, node)
|
|
20
|
+
self.ls.append(node.attr)
|
|
21
|
+
|
|
22
|
+
def visit_Name(self, node):
|
|
23
|
+
self.ls.append(node.id)
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class FindFuncs(ast.NodeVisitor):
|
|
27
|
+
def __init__(self, filename):
|
|
28
|
+
super().__init__()
|
|
29
|
+
self.__filename = filename
|
|
30
|
+
|
|
31
|
+
def visit_Call(self, node):
|
|
32
|
+
p = ParseCall()
|
|
33
|
+
p.visit(node.func)
|
|
34
|
+
ast.NodeVisitor.generic_visit(self, node)
|
|
35
|
+
|
|
36
|
+
if p.ls[-1] == 'simplefilter' or p.ls[-1] == 'filterwarnings':
|
|
37
|
+
if getattr(node.args[0], "value", None) == "ignore":
|
|
38
|
+
if not self.__filename.name.startswith("test_"):
|
|
39
|
+
raise AssertionError(
|
|
40
|
+
"ignore filters should only be used in tests; "
|
|
41
|
+
f"found in {self.__filename} on line {node.lineno}")
|
|
42
|
+
|
|
43
|
+
if p.ls[-1] == 'warn' and (
|
|
44
|
+
len(p.ls) == 1 or p.ls[-2] == 'warnings'):
|
|
45
|
+
|
|
46
|
+
if "testing/tests/test_warnings.py" == self.__filename:
|
|
47
|
+
# This file
|
|
48
|
+
return
|
|
49
|
+
|
|
50
|
+
# See if stacklevel exists:
|
|
51
|
+
if len(node.args) == 3:
|
|
52
|
+
return
|
|
53
|
+
args = {kw.arg for kw in node.keywords}
|
|
54
|
+
if "stacklevel" in args:
|
|
55
|
+
return
|
|
56
|
+
raise AssertionError(
|
|
57
|
+
"warnings should have an appropriate stacklevel; "
|
|
58
|
+
f"found in {self.__filename} on line {node.lineno}")
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
@pytest.mark.slow
|
|
62
|
+
def test_warning_calls():
|
|
63
|
+
# combined "ignore" and stacklevel error
|
|
64
|
+
base = Path(numpy.__file__).parent
|
|
65
|
+
|
|
66
|
+
for path in base.rglob("*.py"):
|
|
67
|
+
if base / "testing" in path.parents:
|
|
68
|
+
continue
|
|
69
|
+
if path == base / "__init__.py":
|
|
70
|
+
continue
|
|
71
|
+
if path == base / "random" / "__init__.py":
|
|
72
|
+
continue
|
|
73
|
+
if path == base / "conftest.py":
|
|
74
|
+
continue
|
|
75
|
+
# use tokenize to auto-detect encoding on systems where no
|
|
76
|
+
# default encoding is defined (e.g. LANG='C')
|
|
77
|
+
with tokenize.open(str(path)) as file:
|
|
78
|
+
tree = ast.parse(file.read())
|
|
79
|
+
FindFuncs(path).visit(tree)
|
numpy/typing/__init__.py
ADDED
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
"""
|
|
2
|
+
============================
|
|
3
|
+
Typing (:mod:`numpy.typing`)
|
|
4
|
+
============================
|
|
5
|
+
|
|
6
|
+
.. versionadded:: 1.20
|
|
7
|
+
|
|
8
|
+
Large parts of the NumPy API have :pep:`484`-style type annotations. In
|
|
9
|
+
addition a number of type aliases are available to users, most prominently
|
|
10
|
+
the two below:
|
|
11
|
+
|
|
12
|
+
- `ArrayLike`: objects that can be converted to arrays
|
|
13
|
+
- `DTypeLike`: objects that can be converted to dtypes
|
|
14
|
+
|
|
15
|
+
.. _typing-extensions: https://pypi.org/project/typing-extensions/
|
|
16
|
+
|
|
17
|
+
Mypy plugin
|
|
18
|
+
-----------
|
|
19
|
+
|
|
20
|
+
.. versionadded:: 1.21
|
|
21
|
+
|
|
22
|
+
.. automodule:: numpy.typing.mypy_plugin
|
|
23
|
+
|
|
24
|
+
.. currentmodule:: numpy.typing
|
|
25
|
+
|
|
26
|
+
Differences from the runtime NumPy API
|
|
27
|
+
--------------------------------------
|
|
28
|
+
|
|
29
|
+
NumPy is very flexible. Trying to describe the full range of
|
|
30
|
+
possibilities statically would result in types that are not very
|
|
31
|
+
helpful. For that reason, the typed NumPy API is often stricter than
|
|
32
|
+
the runtime NumPy API. This section describes some notable
|
|
33
|
+
differences.
|
|
34
|
+
|
|
35
|
+
ArrayLike
|
|
36
|
+
~~~~~~~~~
|
|
37
|
+
|
|
38
|
+
The `ArrayLike` type tries to avoid creating object arrays. For
|
|
39
|
+
example,
|
|
40
|
+
|
|
41
|
+
.. code-block:: python
|
|
42
|
+
|
|
43
|
+
>>> np.array(x**2 for x in range(10))
|
|
44
|
+
array(<generator object <genexpr> at ...>, dtype=object)
|
|
45
|
+
|
|
46
|
+
is valid NumPy code which will create a 0-dimensional object
|
|
47
|
+
array. Type checkers will complain about the above example when using
|
|
48
|
+
the NumPy types however. If you really intended to do the above, then
|
|
49
|
+
you can either use a ``# type: ignore`` comment:
|
|
50
|
+
|
|
51
|
+
.. code-block:: python
|
|
52
|
+
|
|
53
|
+
>>> np.array(x**2 for x in range(10)) # type: ignore
|
|
54
|
+
|
|
55
|
+
or explicitly type the array like object as `~typing.Any`:
|
|
56
|
+
|
|
57
|
+
.. code-block:: python
|
|
58
|
+
|
|
59
|
+
>>> from typing import Any
|
|
60
|
+
>>> array_like: Any = (x**2 for x in range(10))
|
|
61
|
+
>>> np.array(array_like)
|
|
62
|
+
array(<generator object <genexpr> at ...>, dtype=object)
|
|
63
|
+
|
|
64
|
+
ndarray
|
|
65
|
+
~~~~~~~
|
|
66
|
+
|
|
67
|
+
It's possible to mutate the dtype of an array at runtime. For example,
|
|
68
|
+
the following code is valid:
|
|
69
|
+
|
|
70
|
+
.. code-block:: python
|
|
71
|
+
|
|
72
|
+
>>> x = np.array([1, 2])
|
|
73
|
+
>>> x.dtype = np.bool
|
|
74
|
+
|
|
75
|
+
This sort of mutation is not allowed by the types. Users who want to
|
|
76
|
+
write statically typed code should instead use the `numpy.ndarray.view`
|
|
77
|
+
method to create a view of the array with a different dtype.
|
|
78
|
+
|
|
79
|
+
DTypeLike
|
|
80
|
+
~~~~~~~~~
|
|
81
|
+
|
|
82
|
+
The `DTypeLike` type tries to avoid creation of dtype objects using
|
|
83
|
+
dictionary of fields like below:
|
|
84
|
+
|
|
85
|
+
.. code-block:: python
|
|
86
|
+
|
|
87
|
+
>>> x = np.dtype({"field1": (float, 1), "field2": (int, 3)})
|
|
88
|
+
|
|
89
|
+
Although this is valid NumPy code, the type checker will complain about it,
|
|
90
|
+
since its usage is discouraged.
|
|
91
|
+
Please see : :ref:`Data type objects <arrays.dtypes>`
|
|
92
|
+
|
|
93
|
+
Number precision
|
|
94
|
+
~~~~~~~~~~~~~~~~
|
|
95
|
+
|
|
96
|
+
The precision of `numpy.number` subclasses is treated as a invariant generic
|
|
97
|
+
parameter (see :class:`~NBitBase`), simplifying the annotating of processes
|
|
98
|
+
involving precision-based casting.
|
|
99
|
+
|
|
100
|
+
.. code-block:: python
|
|
101
|
+
|
|
102
|
+
>>> from typing import TypeVar
|
|
103
|
+
>>> import numpy as np
|
|
104
|
+
>>> import numpy.typing as npt
|
|
105
|
+
|
|
106
|
+
>>> T = TypeVar("T", bound=npt.NBitBase)
|
|
107
|
+
>>> def func(a: np.floating[T], b: np.floating[T]) -> np.floating[T]:
|
|
108
|
+
... ...
|
|
109
|
+
|
|
110
|
+
Consequently, the likes of `~numpy.float16`, `~numpy.float32` and
|
|
111
|
+
`~numpy.float64` are still sub-types of `~numpy.floating`, but, contrary to
|
|
112
|
+
runtime, they're not necessarily considered as sub-classes.
|
|
113
|
+
|
|
114
|
+
.. deprecated:: 2.3
|
|
115
|
+
The :class:`~numpy.typing.NBitBase` helper is deprecated and will be
|
|
116
|
+
removed in a future release. Prefer expressing precision relationships via
|
|
117
|
+
``typing.overload`` or ``TypeVar`` definitions bounded by concrete scalar
|
|
118
|
+
classes. For example:
|
|
119
|
+
|
|
120
|
+
.. code-block:: python
|
|
121
|
+
|
|
122
|
+
from typing import TypeVar
|
|
123
|
+
import numpy as np
|
|
124
|
+
|
|
125
|
+
S = TypeVar("S", bound=np.floating)
|
|
126
|
+
|
|
127
|
+
def func(a: S, b: S) -> S:
|
|
128
|
+
...
|
|
129
|
+
|
|
130
|
+
or in the case of different input types mapping to different output types:
|
|
131
|
+
|
|
132
|
+
.. code-block:: python
|
|
133
|
+
|
|
134
|
+
from typing import overload
|
|
135
|
+
import numpy as np
|
|
136
|
+
|
|
137
|
+
@overload
|
|
138
|
+
def phase(x: np.complex64) -> np.float32: ...
|
|
139
|
+
@overload
|
|
140
|
+
def phase(x: np.complex128) -> np.float64: ...
|
|
141
|
+
@overload
|
|
142
|
+
def phase(x: np.clongdouble) -> np.longdouble: ...
|
|
143
|
+
def phase(x: np.complexfloating) -> np.floating:
|
|
144
|
+
...
|
|
145
|
+
|
|
146
|
+
Timedelta64
|
|
147
|
+
~~~~~~~~~~~
|
|
148
|
+
|
|
149
|
+
The `~numpy.timedelta64` class is not considered a subclass of
|
|
150
|
+
`~numpy.signedinteger`, the former only inheriting from `~numpy.generic`
|
|
151
|
+
while static type checking.
|
|
152
|
+
|
|
153
|
+
0D arrays
|
|
154
|
+
~~~~~~~~~
|
|
155
|
+
|
|
156
|
+
During runtime numpy aggressively casts any passed 0D arrays into their
|
|
157
|
+
corresponding `~numpy.generic` instance. Until the introduction of shape
|
|
158
|
+
typing (see :pep:`646`) it is unfortunately not possible to make the
|
|
159
|
+
necessary distinction between 0D and >0D arrays. While thus not strictly
|
|
160
|
+
correct, all operations that can potentially perform a 0D-array -> scalar
|
|
161
|
+
cast are currently annotated as exclusively returning an `~numpy.ndarray`.
|
|
162
|
+
|
|
163
|
+
If it is known in advance that an operation *will* perform a
|
|
164
|
+
0D-array -> scalar cast, then one can consider manually remedying the
|
|
165
|
+
situation with either `typing.cast` or a ``# type: ignore`` comment.
|
|
166
|
+
|
|
167
|
+
Record array dtypes
|
|
168
|
+
~~~~~~~~~~~~~~~~~~~
|
|
169
|
+
|
|
170
|
+
The dtype of `numpy.recarray`, and the :ref:`routines.array-creation.rec`
|
|
171
|
+
functions in general, can be specified in one of two ways:
|
|
172
|
+
|
|
173
|
+
* Directly via the ``dtype`` argument.
|
|
174
|
+
* With up to five helper arguments that operate via `numpy.rec.format_parser`:
|
|
175
|
+
``formats``, ``names``, ``titles``, ``aligned`` and ``byteorder``.
|
|
176
|
+
|
|
177
|
+
These two approaches are currently typed as being mutually exclusive,
|
|
178
|
+
*i.e.* if ``dtype`` is specified than one may not specify ``formats``.
|
|
179
|
+
While this mutual exclusivity is not (strictly) enforced during runtime,
|
|
180
|
+
combining both dtype specifiers can lead to unexpected or even downright
|
|
181
|
+
buggy behavior.
|
|
182
|
+
|
|
183
|
+
API
|
|
184
|
+
---
|
|
185
|
+
|
|
186
|
+
"""
|
|
187
|
+
# NOTE: The API section will be appended with additional entries
|
|
188
|
+
# further down in this file
|
|
189
|
+
|
|
190
|
+
# pyright: reportDeprecated=false
|
|
191
|
+
|
|
192
|
+
from numpy._typing import ArrayLike, DTypeLike, NBitBase, NDArray
|
|
193
|
+
|
|
194
|
+
__all__ = ["ArrayLike", "DTypeLike", "NBitBase", "NDArray"]
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
__DIR = __all__ + [k for k in globals() if k.startswith("__") and k.endswith("__")]
|
|
198
|
+
__DIR_SET = frozenset(__DIR)
|
|
199
|
+
|
|
200
|
+
|
|
201
|
+
def __dir__() -> list[str]:
|
|
202
|
+
return __DIR
|
|
203
|
+
|
|
204
|
+
def __getattr__(name: str) -> object:
|
|
205
|
+
if name == "NBitBase":
|
|
206
|
+
import warnings
|
|
207
|
+
|
|
208
|
+
# Deprecated in NumPy 2.3, 2025-05-01
|
|
209
|
+
warnings.warn(
|
|
210
|
+
"`NBitBase` is deprecated and will be removed from numpy.typing in the "
|
|
211
|
+
"future. Use `@typing.overload` or a `TypeVar` with a scalar-type as upper "
|
|
212
|
+
"bound, instead. (deprecated in NumPy 2.3)",
|
|
213
|
+
DeprecationWarning,
|
|
214
|
+
stacklevel=2,
|
|
215
|
+
)
|
|
216
|
+
return NBitBase
|
|
217
|
+
|
|
218
|
+
if name in __DIR_SET:
|
|
219
|
+
return globals()[name]
|
|
220
|
+
|
|
221
|
+
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
if __doc__ is not None:
|
|
225
|
+
from numpy._typing._add_docstring import _docstrings
|
|
226
|
+
__doc__ += _docstrings
|
|
227
|
+
__doc__ += '\n.. autoclass:: numpy.typing.NBitBase\n'
|
|
228
|
+
del _docstrings
|
|
229
|
+
|
|
230
|
+
from numpy._pytesttester import PytestTester
|
|
231
|
+
|
|
232
|
+
test = PytestTester(__name__)
|
|
233
|
+
del PytestTester
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
"""A mypy_ plugin for managing a number of platform-specific annotations.
|
|
2
|
+
Its functionality can be split into three distinct parts:
|
|
3
|
+
|
|
4
|
+
* Assigning the (platform-dependent) precisions of certain `~numpy.number`
|
|
5
|
+
subclasses, including the likes of `~numpy.int_`, `~numpy.intp` and
|
|
6
|
+
`~numpy.longlong`. See the documentation on
|
|
7
|
+
:ref:`scalar types <arrays.scalars.built-in>` for a comprehensive overview
|
|
8
|
+
of the affected classes. Without the plugin the precision of all relevant
|
|
9
|
+
classes will be inferred as `~typing.Any`.
|
|
10
|
+
* Removing all extended-precision `~numpy.number` subclasses that are
|
|
11
|
+
unavailable for the platform in question. Most notably this includes the
|
|
12
|
+
likes of `~numpy.float128` and `~numpy.complex256`. Without the plugin *all*
|
|
13
|
+
extended-precision types will, as far as mypy is concerned, be available
|
|
14
|
+
to all platforms.
|
|
15
|
+
* Assigning the (platform-dependent) precision of `~numpy.ctypeslib.c_intp`.
|
|
16
|
+
Without the plugin the type will default to `ctypes.c_int64`.
|
|
17
|
+
|
|
18
|
+
.. versionadded:: 1.22
|
|
19
|
+
|
|
20
|
+
.. deprecated:: 2.3
|
|
21
|
+
The :mod:`numpy.typing.mypy_plugin` entry-point is deprecated in favor of
|
|
22
|
+
platform-agnostic static type inference. Remove
|
|
23
|
+
``numpy.typing.mypy_plugin`` from the ``plugins`` section of your mypy
|
|
24
|
+
configuration; if that surfaces new errors, please open an issue with a
|
|
25
|
+
minimal reproducer.
|
|
26
|
+
|
|
27
|
+
Examples
|
|
28
|
+
--------
|
|
29
|
+
To enable the plugin, one must add it to their mypy `configuration file`_:
|
|
30
|
+
|
|
31
|
+
.. code-block:: ini
|
|
32
|
+
|
|
33
|
+
[mypy]
|
|
34
|
+
plugins = numpy.typing.mypy_plugin
|
|
35
|
+
|
|
36
|
+
.. _mypy: https://mypy-lang.org/
|
|
37
|
+
.. _configuration file: https://mypy.readthedocs.io/en/stable/config_file.html
|
|
38
|
+
|
|
39
|
+
"""
|
|
40
|
+
|
|
41
|
+
from collections.abc import Callable, Iterable
|
|
42
|
+
from typing import TYPE_CHECKING, Final, TypeAlias, cast
|
|
43
|
+
|
|
44
|
+
import numpy as np
|
|
45
|
+
|
|
46
|
+
__all__: list[str] = []
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
def _get_precision_dict() -> dict[str, str]:
|
|
50
|
+
names = [
|
|
51
|
+
("_NBitByte", np.byte),
|
|
52
|
+
("_NBitShort", np.short),
|
|
53
|
+
("_NBitIntC", np.intc),
|
|
54
|
+
("_NBitIntP", np.intp),
|
|
55
|
+
("_NBitInt", np.int_),
|
|
56
|
+
("_NBitLong", np.long),
|
|
57
|
+
("_NBitLongLong", np.longlong),
|
|
58
|
+
|
|
59
|
+
("_NBitHalf", np.half),
|
|
60
|
+
("_NBitSingle", np.single),
|
|
61
|
+
("_NBitDouble", np.double),
|
|
62
|
+
("_NBitLongDouble", np.longdouble),
|
|
63
|
+
]
|
|
64
|
+
ret: dict[str, str] = {}
|
|
65
|
+
for name, typ in names:
|
|
66
|
+
n = 8 * np.dtype(typ).itemsize
|
|
67
|
+
ret[f"{_MODULE}._nbit.{name}"] = f"{_MODULE}._nbit_base._{n}Bit"
|
|
68
|
+
return ret
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
def _get_extended_precision_list() -> list[str]:
|
|
72
|
+
extended_names = [
|
|
73
|
+
"float96",
|
|
74
|
+
"float128",
|
|
75
|
+
"complex192",
|
|
76
|
+
"complex256",
|
|
77
|
+
]
|
|
78
|
+
return [i for i in extended_names if hasattr(np, i)]
|
|
79
|
+
|
|
80
|
+
def _get_c_intp_name() -> str:
|
|
81
|
+
# Adapted from `np.core._internal._getintp_ctype`
|
|
82
|
+
return {
|
|
83
|
+
"i": "c_int",
|
|
84
|
+
"l": "c_long",
|
|
85
|
+
"q": "c_longlong",
|
|
86
|
+
}.get(np.dtype("n").char, "c_long")
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
_MODULE: Final = "numpy._typing"
|
|
90
|
+
|
|
91
|
+
#: A dictionary mapping type-aliases in `numpy._typing._nbit` to
|
|
92
|
+
#: concrete `numpy.typing.NBitBase` subclasses.
|
|
93
|
+
_PRECISION_DICT: Final = _get_precision_dict()
|
|
94
|
+
|
|
95
|
+
#: A list with the names of all extended precision `np.number` subclasses.
|
|
96
|
+
_EXTENDED_PRECISION_LIST: Final = _get_extended_precision_list()
|
|
97
|
+
|
|
98
|
+
#: The name of the ctypes equivalent of `np.intp`
|
|
99
|
+
_C_INTP: Final = _get_c_intp_name()
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
try:
|
|
103
|
+
if TYPE_CHECKING:
|
|
104
|
+
from mypy.typeanal import TypeAnalyser
|
|
105
|
+
|
|
106
|
+
import mypy.types
|
|
107
|
+
from mypy.build import PRI_MED
|
|
108
|
+
from mypy.nodes import ImportFrom, MypyFile, Statement
|
|
109
|
+
from mypy.plugin import AnalyzeTypeContext, Plugin
|
|
110
|
+
|
|
111
|
+
except ModuleNotFoundError as e:
|
|
112
|
+
|
|
113
|
+
def plugin(version: str) -> type:
|
|
114
|
+
raise e
|
|
115
|
+
|
|
116
|
+
else:
|
|
117
|
+
|
|
118
|
+
_HookFunc: TypeAlias = Callable[[AnalyzeTypeContext], mypy.types.Type]
|
|
119
|
+
|
|
120
|
+
def _hook(ctx: AnalyzeTypeContext) -> mypy.types.Type:
|
|
121
|
+
"""Replace a type-alias with a concrete ``NBitBase`` subclass."""
|
|
122
|
+
typ, _, api = ctx
|
|
123
|
+
name = typ.name.split(".")[-1]
|
|
124
|
+
name_new = _PRECISION_DICT[f"{_MODULE}._nbit.{name}"]
|
|
125
|
+
return cast("TypeAnalyser", api).named_type(name_new)
|
|
126
|
+
|
|
127
|
+
def _index(iterable: Iterable[Statement], id: str) -> int:
|
|
128
|
+
"""Identify the first ``ImportFrom`` instance the specified `id`."""
|
|
129
|
+
for i, value in enumerate(iterable):
|
|
130
|
+
if getattr(value, "id", None) == id:
|
|
131
|
+
return i
|
|
132
|
+
raise ValueError("Failed to identify a `ImportFrom` instance "
|
|
133
|
+
f"with the following id: {id!r}")
|
|
134
|
+
|
|
135
|
+
def _override_imports(
|
|
136
|
+
file: MypyFile,
|
|
137
|
+
module: str,
|
|
138
|
+
imports: list[tuple[str, str | None]],
|
|
139
|
+
) -> None:
|
|
140
|
+
"""Override the first `module`-based import with new `imports`."""
|
|
141
|
+
# Construct a new `from module import y` statement
|
|
142
|
+
import_obj = ImportFrom(module, 0, names=imports)
|
|
143
|
+
import_obj.is_top_level = True
|
|
144
|
+
|
|
145
|
+
# Replace the first `module`-based import statement with `import_obj`
|
|
146
|
+
for lst in [file.defs, cast("list[Statement]", file.imports)]:
|
|
147
|
+
i = _index(lst, module)
|
|
148
|
+
lst[i] = import_obj
|
|
149
|
+
|
|
150
|
+
class _NumpyPlugin(Plugin):
|
|
151
|
+
"""A mypy plugin for handling versus numpy-specific typing tasks."""
|
|
152
|
+
|
|
153
|
+
def get_type_analyze_hook(self, fullname: str) -> _HookFunc | None:
|
|
154
|
+
"""Set the precision of platform-specific `numpy.number`
|
|
155
|
+
subclasses.
|
|
156
|
+
|
|
157
|
+
For example: `numpy.int_`, `numpy.longlong` and `numpy.longdouble`.
|
|
158
|
+
"""
|
|
159
|
+
if fullname in _PRECISION_DICT:
|
|
160
|
+
return _hook
|
|
161
|
+
return None
|
|
162
|
+
|
|
163
|
+
def get_additional_deps(
|
|
164
|
+
self, file: MypyFile
|
|
165
|
+
) -> list[tuple[int, str, int]]:
|
|
166
|
+
"""Handle all import-based overrides.
|
|
167
|
+
|
|
168
|
+
* Import platform-specific extended-precision `numpy.number`
|
|
169
|
+
subclasses (*e.g.* `numpy.float96` and `numpy.float128`).
|
|
170
|
+
* Import the appropriate `ctypes` equivalent to `numpy.intp`.
|
|
171
|
+
|
|
172
|
+
"""
|
|
173
|
+
fullname = file.fullname
|
|
174
|
+
if fullname == "numpy":
|
|
175
|
+
_override_imports(
|
|
176
|
+
file,
|
|
177
|
+
f"{_MODULE}._extended_precision",
|
|
178
|
+
imports=[(v, v) for v in _EXTENDED_PRECISION_LIST],
|
|
179
|
+
)
|
|
180
|
+
elif fullname == "numpy.ctypeslib":
|
|
181
|
+
_override_imports(
|
|
182
|
+
file,
|
|
183
|
+
"ctypes",
|
|
184
|
+
imports=[(_C_INTP, "_c_intp")],
|
|
185
|
+
)
|
|
186
|
+
return [(PRI_MED, fullname, -1)]
|
|
187
|
+
|
|
188
|
+
def plugin(version: str) -> type:
|
|
189
|
+
import warnings
|
|
190
|
+
|
|
191
|
+
plugin = "numpy.typing.mypy_plugin"
|
|
192
|
+
# Deprecated 2025-01-10, NumPy 2.3
|
|
193
|
+
warn_msg = (
|
|
194
|
+
f"`{plugin}` is deprecated, and will be removed in a future "
|
|
195
|
+
f"release. Please remove `plugins = {plugin}` in your mypy config."
|
|
196
|
+
f"(deprecated in NumPy 2.3)"
|
|
197
|
+
)
|
|
198
|
+
warnings.warn(warn_msg, DeprecationWarning, stacklevel=3)
|
|
199
|
+
|
|
200
|
+
return _NumpyPlugin
|
|
File without changes
|