numpy 2.4.0__cp313-cp313t-musllinux_1_2_aarch64.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 +201 -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.cpython-313t-aarch64-linux-musl.so +0 -0
- numpy/_core/_multiarray_umath.cpython-313t-aarch64-linux-musl.so +0 -0
- numpy/_core/_operand_flag_tests.cpython-313t-aarch64-linux-musl.so +0 -0
- numpy/_core/_rational_tests.cpython-313t-aarch64-linux-musl.so +0 -0
- numpy/_core/_simd.cpython-313t-aarch64-linux-musl.so +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.cpython-313t-aarch64-linux-musl.so +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.cpython-313t-aarch64-linux-musl.so +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/libnpymath.a +0 -0
- numpy/_core/lib/npy-pkg-config/mlib.ini +12 -0
- numpy/_core/lib/npy-pkg-config/npymath.ini +20 -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 +1316 -0
- numpy/_core/numeric.py +2758 -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 +373 -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 +17 -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 +59 -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 +75 -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 +353 -0
- numpy/_core/tests/test_nditer.py +3533 -0
- numpy/_core/tests/test_nep50_promotions.py +287 -0
- numpy/_core/tests/test_numeric.py +4295 -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 +1515 -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.cpython-313t-aarch64-linux-musl.so +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 +5758 -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 +2001 -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 +4705 -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.cpython-313t-aarch64-linux-musl.so +0 -0
- numpy/linalg/_umath_linalg.pyi +60 -0
- numpy/linalg/lapack_lite.cpython-313t-aarch64-linux-musl.so +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 +3720 -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.cpython-313t-aarch64-linux-musl.so +0 -0
- numpy/random/_bounded_integers.pxd +29 -0
- numpy/random/_bounded_integers.pyi +1 -0
- numpy/random/_common.cpython-313t-aarch64-linux-musl.so +0 -0
- numpy/random/_common.pxd +107 -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.cpython-313t-aarch64-linux-musl.so +0 -0
- numpy/random/_generator.pyi +862 -0
- numpy/random/_mt19937.cpython-313t-aarch64-linux-musl.so +0 -0
- numpy/random/_mt19937.pyi +27 -0
- numpy/random/_pcg64.cpython-313t-aarch64-linux-musl.so +0 -0
- numpy/random/_pcg64.pyi +41 -0
- numpy/random/_philox.cpython-313t-aarch64-linux-musl.so +0 -0
- numpy/random/_philox.pyi +36 -0
- numpy/random/_pickle.py +88 -0
- numpy/random/_pickle.pyi +43 -0
- numpy/random/_sfc64.cpython-313t-aarch64-linux-musl.so +0 -0
- numpy/random/_sfc64.pyi +25 -0
- numpy/random/bit_generator.cpython-313t-aarch64-linux-musl.so +0 -0
- numpy/random/bit_generator.pxd +35 -0
- numpy/random/bit_generator.pyi +123 -0
- numpy/random/c_distributions.pxd +119 -0
- numpy/random/lib/libnpyrandom.a +0 -0
- numpy/random/mtrand.cpython-313t-aarch64-linux-musl.so +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 +804 -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 +277 -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.0.dist-info/METADATA +139 -0
- numpy-2.4.0.dist-info/RECORD +915 -0
- numpy-2.4.0.dist-info/WHEEL +5 -0
- numpy-2.4.0.dist-info/entry_points.txt +13 -0
- numpy-2.4.0.dist-info/licenses/LICENSE.txt +935 -0
- numpy-2.4.0.dist-info/licenses/numpy/_core/include/numpy/libdivide/LICENSE.txt +21 -0
- numpy-2.4.0.dist-info/licenses/numpy/_core/src/common/pythoncapi-compat/COPYING +14 -0
- numpy-2.4.0.dist-info/licenses/numpy/_core/src/highway/LICENSE +371 -0
- numpy-2.4.0.dist-info/licenses/numpy/_core/src/multiarray/dragon4_LICENSE.txt +27 -0
- numpy-2.4.0.dist-info/licenses/numpy/_core/src/npysort/x86-simd-sort/LICENSE.md +28 -0
- numpy-2.4.0.dist-info/licenses/numpy/_core/src/umath/svml/LICENSE +30 -0
- numpy-2.4.0.dist-info/licenses/numpy/fft/pocketfft/LICENSE.md +25 -0
- numpy-2.4.0.dist-info/licenses/numpy/linalg/lapack_lite/LICENSE.txt +48 -0
- numpy-2.4.0.dist-info/licenses/numpy/ma/LICENSE +24 -0
- numpy-2.4.0.dist-info/licenses/numpy/random/LICENSE.md +71 -0
- numpy-2.4.0.dist-info/licenses/numpy/random/src/distributions/LICENSE.md +61 -0
- numpy-2.4.0.dist-info/licenses/numpy/random/src/mt19937/LICENSE.md +61 -0
- numpy-2.4.0.dist-info/licenses/numpy/random/src/pcg64/LICENSE.md +22 -0
- numpy-2.4.0.dist-info/licenses/numpy/random/src/philox/LICENSE.md +31 -0
- numpy-2.4.0.dist-info/licenses/numpy/random/src/sfc64/LICENSE.md +27 -0
- numpy-2.4.0.dist-info/licenses/numpy/random/src/splitmix64/LICENSE.md +9 -0
- numpy.libs/libgcc_s-2d945d6c-767fb991.so.1 +0 -0
- numpy.libs/libgcc_s-2d945d6c.so.1 +0 -0
- numpy.libs/libgfortran-67378ab2-e7e7cfab.so.5.0.0 +0 -0
- numpy.libs/libscipy_openblas64_-1fc386ee.so +0 -0
- numpy.libs/libstdc++-85f2cd6d.so.6.0.33 +0 -0
numpy/_core/_dtype.py
ADDED
|
@@ -0,0 +1,366 @@
|
|
|
1
|
+
"""
|
|
2
|
+
A place for code to be called from the implementation of np.dtype
|
|
3
|
+
|
|
4
|
+
String handling is much easier to do correctly in python.
|
|
5
|
+
"""
|
|
6
|
+
import numpy as np
|
|
7
|
+
|
|
8
|
+
_kind_to_stem = {
|
|
9
|
+
'u': 'uint',
|
|
10
|
+
'i': 'int',
|
|
11
|
+
'c': 'complex',
|
|
12
|
+
'f': 'float',
|
|
13
|
+
'b': 'bool',
|
|
14
|
+
'V': 'void',
|
|
15
|
+
'O': 'object',
|
|
16
|
+
'M': 'datetime',
|
|
17
|
+
'm': 'timedelta',
|
|
18
|
+
'S': 'bytes',
|
|
19
|
+
'U': 'str',
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def _kind_name(dtype):
|
|
24
|
+
try:
|
|
25
|
+
return _kind_to_stem[dtype.kind]
|
|
26
|
+
except KeyError as e:
|
|
27
|
+
raise RuntimeError(
|
|
28
|
+
f"internal dtype error, unknown kind {dtype.kind!r}"
|
|
29
|
+
) from None
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def __str__(dtype):
|
|
33
|
+
if dtype.fields is not None:
|
|
34
|
+
return _struct_str(dtype, include_align=True)
|
|
35
|
+
elif dtype.subdtype:
|
|
36
|
+
return _subarray_str(dtype)
|
|
37
|
+
elif issubclass(dtype.type, np.flexible) or not dtype.isnative:
|
|
38
|
+
return dtype.str
|
|
39
|
+
else:
|
|
40
|
+
return dtype.name
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def __repr__(dtype):
|
|
44
|
+
arg_str = _construction_repr(dtype, include_align=False)
|
|
45
|
+
if dtype.isalignedstruct:
|
|
46
|
+
arg_str = arg_str + ", align=True"
|
|
47
|
+
return f"dtype({arg_str})"
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
def _unpack_field(dtype, offset, title=None):
|
|
51
|
+
"""
|
|
52
|
+
Helper function to normalize the items in dtype.fields.
|
|
53
|
+
|
|
54
|
+
Call as:
|
|
55
|
+
|
|
56
|
+
dtype, offset, title = _unpack_field(*dtype.fields[name])
|
|
57
|
+
"""
|
|
58
|
+
return dtype, offset, title
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
def _isunsized(dtype):
|
|
62
|
+
# PyDataType_ISUNSIZED
|
|
63
|
+
return dtype.itemsize == 0
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
def _construction_repr(dtype, include_align=False, short=False):
|
|
67
|
+
"""
|
|
68
|
+
Creates a string repr of the dtype, excluding the 'dtype()' part
|
|
69
|
+
surrounding the object. This object may be a string, a list, or
|
|
70
|
+
a dict depending on the nature of the dtype. This
|
|
71
|
+
is the object passed as the first parameter to the dtype
|
|
72
|
+
constructor, and if no additional constructor parameters are
|
|
73
|
+
given, will reproduce the exact memory layout.
|
|
74
|
+
|
|
75
|
+
Parameters
|
|
76
|
+
----------
|
|
77
|
+
short : bool
|
|
78
|
+
If true, this creates a shorter repr using 'kind' and 'itemsize',
|
|
79
|
+
instead of the longer type name.
|
|
80
|
+
|
|
81
|
+
include_align : bool
|
|
82
|
+
If true, this includes the 'align=True' parameter
|
|
83
|
+
inside the struct dtype construction dict when needed. Use this flag
|
|
84
|
+
if you want a proper repr string without the 'dtype()' part around it.
|
|
85
|
+
|
|
86
|
+
If false, this does not preserve the
|
|
87
|
+
'align=True' parameter or sticky NPY_ALIGNED_STRUCT flag for
|
|
88
|
+
struct arrays like the regular repr does, because the 'align'
|
|
89
|
+
flag is not part of first dtype constructor parameter. This
|
|
90
|
+
mode is intended for a full 'repr', where the 'align=True' is
|
|
91
|
+
provided as the second parameter.
|
|
92
|
+
"""
|
|
93
|
+
if dtype.fields is not None:
|
|
94
|
+
return _struct_str(dtype, include_align=include_align)
|
|
95
|
+
elif dtype.subdtype:
|
|
96
|
+
return _subarray_str(dtype)
|
|
97
|
+
else:
|
|
98
|
+
return _scalar_str(dtype, short=short)
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
def _scalar_str(dtype, short):
|
|
102
|
+
byteorder = _byte_order_str(dtype)
|
|
103
|
+
|
|
104
|
+
if dtype.type == np.bool:
|
|
105
|
+
if short:
|
|
106
|
+
return "'?'"
|
|
107
|
+
else:
|
|
108
|
+
return "'bool'"
|
|
109
|
+
|
|
110
|
+
elif dtype.type == np.object_:
|
|
111
|
+
# The object reference may be different sizes on different
|
|
112
|
+
# platforms, so it should never include the itemsize here.
|
|
113
|
+
return "'O'"
|
|
114
|
+
|
|
115
|
+
elif dtype.type == np.bytes_:
|
|
116
|
+
if _isunsized(dtype):
|
|
117
|
+
return "'S'"
|
|
118
|
+
else:
|
|
119
|
+
return "'S%d'" % dtype.itemsize
|
|
120
|
+
|
|
121
|
+
elif dtype.type == np.str_:
|
|
122
|
+
if _isunsized(dtype):
|
|
123
|
+
return f"'{byteorder}U'"
|
|
124
|
+
else:
|
|
125
|
+
return "'%sU%d'" % (byteorder, dtype.itemsize / 4)
|
|
126
|
+
|
|
127
|
+
elif dtype.type == str:
|
|
128
|
+
return "'T'"
|
|
129
|
+
|
|
130
|
+
elif not type(dtype)._legacy:
|
|
131
|
+
return f"'{byteorder}{type(dtype).__name__}{dtype.itemsize * 8}'"
|
|
132
|
+
|
|
133
|
+
# unlike the other types, subclasses of void are preserved - but
|
|
134
|
+
# historically the repr does not actually reveal the subclass
|
|
135
|
+
elif issubclass(dtype.type, np.void):
|
|
136
|
+
if _isunsized(dtype):
|
|
137
|
+
return "'V'"
|
|
138
|
+
else:
|
|
139
|
+
return "'V%d'" % dtype.itemsize
|
|
140
|
+
|
|
141
|
+
elif dtype.type == np.datetime64:
|
|
142
|
+
return f"'{byteorder}M8{_datetime_metadata_str(dtype)}'"
|
|
143
|
+
|
|
144
|
+
elif dtype.type == np.timedelta64:
|
|
145
|
+
return f"'{byteorder}m8{_datetime_metadata_str(dtype)}'"
|
|
146
|
+
|
|
147
|
+
elif dtype.isbuiltin == 2:
|
|
148
|
+
return dtype.type.__name__
|
|
149
|
+
|
|
150
|
+
elif np.issubdtype(dtype, np.number):
|
|
151
|
+
# Short repr with endianness, like '<f8'
|
|
152
|
+
if short or dtype.byteorder not in ('=', '|'):
|
|
153
|
+
return "'%s%c%d'" % (byteorder, dtype.kind, dtype.itemsize)
|
|
154
|
+
|
|
155
|
+
# Longer repr, like 'float64'
|
|
156
|
+
else:
|
|
157
|
+
return "'%s%d'" % (_kind_name(dtype), 8 * dtype.itemsize)
|
|
158
|
+
|
|
159
|
+
else:
|
|
160
|
+
raise RuntimeError(
|
|
161
|
+
"Internal error: NumPy dtype unrecognized type number")
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
def _byte_order_str(dtype):
|
|
165
|
+
""" Normalize byteorder to '<' or '>' """
|
|
166
|
+
# hack to obtain the native and swapped byte order characters
|
|
167
|
+
swapped = np.dtype(int).newbyteorder('S')
|
|
168
|
+
native = swapped.newbyteorder('S')
|
|
169
|
+
|
|
170
|
+
byteorder = dtype.byteorder
|
|
171
|
+
if byteorder == '=':
|
|
172
|
+
return native.byteorder
|
|
173
|
+
if byteorder == 'S':
|
|
174
|
+
# TODO: this path can never be reached
|
|
175
|
+
return swapped.byteorder
|
|
176
|
+
elif byteorder == '|':
|
|
177
|
+
return ''
|
|
178
|
+
else:
|
|
179
|
+
return byteorder
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
def _datetime_metadata_str(dtype):
|
|
183
|
+
# TODO: this duplicates the C metastr_to_unicode functionality
|
|
184
|
+
unit, count = np.datetime_data(dtype)
|
|
185
|
+
if unit == 'generic':
|
|
186
|
+
return ''
|
|
187
|
+
elif count == 1:
|
|
188
|
+
return f'[{unit}]'
|
|
189
|
+
else:
|
|
190
|
+
return f'[{count}{unit}]'
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
def _struct_dict_str(dtype, includealignedflag):
|
|
194
|
+
# unpack the fields dictionary into ls
|
|
195
|
+
names = dtype.names
|
|
196
|
+
fld_dtypes = []
|
|
197
|
+
offsets = []
|
|
198
|
+
titles = []
|
|
199
|
+
for name in names:
|
|
200
|
+
fld_dtype, offset, title = _unpack_field(*dtype.fields[name])
|
|
201
|
+
fld_dtypes.append(fld_dtype)
|
|
202
|
+
offsets.append(offset)
|
|
203
|
+
titles.append(title)
|
|
204
|
+
|
|
205
|
+
# Build up a string to make the dictionary
|
|
206
|
+
|
|
207
|
+
if np._core.arrayprint._get_legacy_print_mode() <= 121:
|
|
208
|
+
colon = ":"
|
|
209
|
+
fieldsep = ","
|
|
210
|
+
else:
|
|
211
|
+
colon = ": "
|
|
212
|
+
fieldsep = ", "
|
|
213
|
+
|
|
214
|
+
# First, the names
|
|
215
|
+
ret = "{'names'%s[" % colon
|
|
216
|
+
ret += fieldsep.join(repr(name) for name in names)
|
|
217
|
+
|
|
218
|
+
# Second, the formats
|
|
219
|
+
ret += f"], 'formats'{colon}["
|
|
220
|
+
ret += fieldsep.join(
|
|
221
|
+
_construction_repr(fld_dtype, short=True) for fld_dtype in fld_dtypes)
|
|
222
|
+
|
|
223
|
+
# Third, the offsets
|
|
224
|
+
ret += f"], 'offsets'{colon}["
|
|
225
|
+
ret += fieldsep.join("%d" % offset for offset in offsets)
|
|
226
|
+
|
|
227
|
+
# Fourth, the titles
|
|
228
|
+
if any(title is not None for title in titles):
|
|
229
|
+
ret += f"], 'titles'{colon}["
|
|
230
|
+
ret += fieldsep.join(repr(title) for title in titles)
|
|
231
|
+
|
|
232
|
+
# Fifth, the itemsize
|
|
233
|
+
ret += "], 'itemsize'%s%d" % (colon, dtype.itemsize)
|
|
234
|
+
|
|
235
|
+
if (includealignedflag and dtype.isalignedstruct):
|
|
236
|
+
# Finally, the aligned flag
|
|
237
|
+
ret += ", 'aligned'%sTrue}" % colon
|
|
238
|
+
else:
|
|
239
|
+
ret += "}"
|
|
240
|
+
|
|
241
|
+
return ret
|
|
242
|
+
|
|
243
|
+
|
|
244
|
+
def _aligned_offset(offset, alignment):
|
|
245
|
+
# round up offset:
|
|
246
|
+
return - (-offset // alignment) * alignment
|
|
247
|
+
|
|
248
|
+
|
|
249
|
+
def _is_packed(dtype):
|
|
250
|
+
"""
|
|
251
|
+
Checks whether the structured data type in 'dtype'
|
|
252
|
+
has a simple layout, where all the fields are in order,
|
|
253
|
+
and follow each other with no alignment padding.
|
|
254
|
+
|
|
255
|
+
When this returns true, the dtype can be reconstructed
|
|
256
|
+
from a list of the field names and dtypes with no additional
|
|
257
|
+
dtype parameters.
|
|
258
|
+
|
|
259
|
+
Duplicates the C `is_dtype_struct_simple_unaligned_layout` function.
|
|
260
|
+
"""
|
|
261
|
+
align = dtype.isalignedstruct
|
|
262
|
+
max_alignment = 1
|
|
263
|
+
total_offset = 0
|
|
264
|
+
for name in dtype.names:
|
|
265
|
+
fld_dtype, fld_offset, title = _unpack_field(*dtype.fields[name])
|
|
266
|
+
|
|
267
|
+
if align:
|
|
268
|
+
total_offset = _aligned_offset(total_offset, fld_dtype.alignment)
|
|
269
|
+
max_alignment = max(max_alignment, fld_dtype.alignment)
|
|
270
|
+
|
|
271
|
+
if fld_offset != total_offset:
|
|
272
|
+
return False
|
|
273
|
+
total_offset += fld_dtype.itemsize
|
|
274
|
+
|
|
275
|
+
if align:
|
|
276
|
+
total_offset = _aligned_offset(total_offset, max_alignment)
|
|
277
|
+
|
|
278
|
+
return total_offset == dtype.itemsize
|
|
279
|
+
|
|
280
|
+
|
|
281
|
+
def _struct_list_str(dtype):
|
|
282
|
+
items = []
|
|
283
|
+
for name in dtype.names:
|
|
284
|
+
fld_dtype, fld_offset, title = _unpack_field(*dtype.fields[name])
|
|
285
|
+
|
|
286
|
+
item = "("
|
|
287
|
+
if title is not None:
|
|
288
|
+
item += f"({title!r}, {name!r}), "
|
|
289
|
+
else:
|
|
290
|
+
item += f"{name!r}, "
|
|
291
|
+
# Special case subarray handling here
|
|
292
|
+
if fld_dtype.subdtype is not None:
|
|
293
|
+
base, shape = fld_dtype.subdtype
|
|
294
|
+
item += f"{_construction_repr(base, short=True)}, {shape}"
|
|
295
|
+
else:
|
|
296
|
+
item += _construction_repr(fld_dtype, short=True)
|
|
297
|
+
|
|
298
|
+
item += ")"
|
|
299
|
+
items.append(item)
|
|
300
|
+
|
|
301
|
+
return "[" + ", ".join(items) + "]"
|
|
302
|
+
|
|
303
|
+
|
|
304
|
+
def _struct_str(dtype, include_align):
|
|
305
|
+
# The list str representation can't include the 'align=' flag,
|
|
306
|
+
# so if it is requested and the struct has the aligned flag set,
|
|
307
|
+
# we must use the dict str instead.
|
|
308
|
+
if not (include_align and dtype.isalignedstruct) and _is_packed(dtype):
|
|
309
|
+
sub = _struct_list_str(dtype)
|
|
310
|
+
|
|
311
|
+
else:
|
|
312
|
+
sub = _struct_dict_str(dtype, include_align)
|
|
313
|
+
|
|
314
|
+
# If the data type isn't the default, void, show it
|
|
315
|
+
if dtype.type != np.void:
|
|
316
|
+
return f"({dtype.type.__module__}.{dtype.type.__name__}, {sub})"
|
|
317
|
+
else:
|
|
318
|
+
return sub
|
|
319
|
+
|
|
320
|
+
|
|
321
|
+
def _subarray_str(dtype):
|
|
322
|
+
base, shape = dtype.subdtype
|
|
323
|
+
return f"({_construction_repr(base, short=True)}, {shape})"
|
|
324
|
+
|
|
325
|
+
|
|
326
|
+
def _name_includes_bit_suffix(dtype):
|
|
327
|
+
if dtype.type == np.object_:
|
|
328
|
+
# pointer size varies by system, best to omit it
|
|
329
|
+
return False
|
|
330
|
+
elif dtype.type == np.bool:
|
|
331
|
+
# implied
|
|
332
|
+
return False
|
|
333
|
+
elif dtype.type is None:
|
|
334
|
+
return True
|
|
335
|
+
elif np.issubdtype(dtype, np.flexible) and _isunsized(dtype):
|
|
336
|
+
# unspecified
|
|
337
|
+
return False
|
|
338
|
+
else:
|
|
339
|
+
return True
|
|
340
|
+
|
|
341
|
+
|
|
342
|
+
def _name_get(dtype):
|
|
343
|
+
# provides dtype.name.__get__, documented as returning a "bit name"
|
|
344
|
+
|
|
345
|
+
if dtype.isbuiltin == 2:
|
|
346
|
+
# user dtypes don't promise to do anything special
|
|
347
|
+
return dtype.type.__name__
|
|
348
|
+
|
|
349
|
+
if not type(dtype)._legacy:
|
|
350
|
+
name = type(dtype).__name__
|
|
351
|
+
|
|
352
|
+
elif issubclass(dtype.type, np.void):
|
|
353
|
+
# historically, void subclasses preserve their name, eg `record64`
|
|
354
|
+
name = dtype.type.__name__
|
|
355
|
+
else:
|
|
356
|
+
name = _kind_name(dtype)
|
|
357
|
+
|
|
358
|
+
# append bit counts
|
|
359
|
+
if _name_includes_bit_suffix(dtype):
|
|
360
|
+
name += f"{dtype.itemsize * 8}"
|
|
361
|
+
|
|
362
|
+
# append metadata to datetimes
|
|
363
|
+
if dtype.type in (np.datetime64, np.timedelta64):
|
|
364
|
+
name += _datetime_metadata_str(dtype)
|
|
365
|
+
|
|
366
|
+
return name
|
numpy/_core/_dtype.pyi
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
from typing import Final, Literal as L, TypeAlias, TypedDict, overload, type_check_only
|
|
2
|
+
from typing_extensions import ReadOnly, TypeVar
|
|
3
|
+
|
|
4
|
+
import numpy as np
|
|
5
|
+
|
|
6
|
+
###
|
|
7
|
+
|
|
8
|
+
_T = TypeVar("_T")
|
|
9
|
+
|
|
10
|
+
_Name: TypeAlias = L["uint", "int", "complex", "float", "bool", "void", "object", "datetime", "timedelta", "bytes", "str"]
|
|
11
|
+
|
|
12
|
+
@type_check_only
|
|
13
|
+
class _KindToStemType(TypedDict):
|
|
14
|
+
u: ReadOnly[L["uint"]]
|
|
15
|
+
i: ReadOnly[L["int"]]
|
|
16
|
+
c: ReadOnly[L["complex"]]
|
|
17
|
+
f: ReadOnly[L["float"]]
|
|
18
|
+
b: ReadOnly[L["bool"]]
|
|
19
|
+
V: ReadOnly[L["void"]]
|
|
20
|
+
O: ReadOnly[L["object"]]
|
|
21
|
+
M: ReadOnly[L["datetime"]]
|
|
22
|
+
m: ReadOnly[L["timedelta"]]
|
|
23
|
+
S: ReadOnly[L["bytes"]]
|
|
24
|
+
U: ReadOnly[L["str"]]
|
|
25
|
+
|
|
26
|
+
###
|
|
27
|
+
|
|
28
|
+
_kind_to_stem: Final[_KindToStemType] = ...
|
|
29
|
+
|
|
30
|
+
#
|
|
31
|
+
def _kind_name(dtype: np.dtype) -> _Name: ...
|
|
32
|
+
def __str__(dtype: np.dtype) -> str: ...
|
|
33
|
+
def __repr__(dtype: np.dtype) -> str: ...
|
|
34
|
+
|
|
35
|
+
#
|
|
36
|
+
def _isunsized(dtype: np.dtype) -> bool: ...
|
|
37
|
+
def _is_packed(dtype: np.dtype) -> bool: ...
|
|
38
|
+
def _name_includes_bit_suffix(dtype: np.dtype) -> bool: ...
|
|
39
|
+
|
|
40
|
+
#
|
|
41
|
+
def _construction_repr(dtype: np.dtype, include_align: bool = False, short: bool = False) -> str: ...
|
|
42
|
+
def _scalar_str(dtype: np.dtype, short: bool) -> str: ...
|
|
43
|
+
def _byte_order_str(dtype: np.dtype) -> str: ...
|
|
44
|
+
def _datetime_metadata_str(dtype: np.dtype) -> str: ...
|
|
45
|
+
def _struct_dict_str(dtype: np.dtype, includealignedflag: bool) -> str: ...
|
|
46
|
+
def _struct_list_str(dtype: np.dtype) -> str: ...
|
|
47
|
+
def _struct_str(dtype: np.dtype, include_align: bool) -> str: ...
|
|
48
|
+
def _subarray_str(dtype: np.dtype) -> str: ...
|
|
49
|
+
def _name_get(dtype: np.dtype) -> str: ...
|
|
50
|
+
|
|
51
|
+
#
|
|
52
|
+
@overload
|
|
53
|
+
def _unpack_field(dtype: np.dtype, offset: int, title: _T) -> tuple[np.dtype, int, _T]: ...
|
|
54
|
+
@overload
|
|
55
|
+
def _unpack_field(dtype: np.dtype, offset: int, title: None = None) -> tuple[np.dtype, int, None]: ...
|
|
56
|
+
def _aligned_offset(offset: int, alignment: int) -> int: ...
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Conversion from ctypes to dtype.
|
|
3
|
+
|
|
4
|
+
In an ideal world, we could achieve this through the PEP3118 buffer protocol,
|
|
5
|
+
something like::
|
|
6
|
+
|
|
7
|
+
def dtype_from_ctypes_type(t):
|
|
8
|
+
# needed to ensure that the shape of `t` is within memoryview.format
|
|
9
|
+
class DummyStruct(ctypes.Structure):
|
|
10
|
+
_fields_ = [('a', t)]
|
|
11
|
+
|
|
12
|
+
# empty to avoid memory allocation
|
|
13
|
+
ctype_0 = (DummyStruct * 0)()
|
|
14
|
+
mv = memoryview(ctype_0)
|
|
15
|
+
|
|
16
|
+
# convert the struct, and slice back out the field
|
|
17
|
+
return _dtype_from_pep3118(mv.format)['a']
|
|
18
|
+
|
|
19
|
+
Unfortunately, this fails because:
|
|
20
|
+
|
|
21
|
+
* ctypes cannot handle length-0 arrays with PEP3118 (bpo-32782)
|
|
22
|
+
* PEP3118 cannot represent unions, but both numpy and ctypes can
|
|
23
|
+
* ctypes cannot handle big-endian structs with PEP3118 (bpo-32780)
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
# We delay-import ctypes for distributions that do not include it.
|
|
27
|
+
# While this module is not used unless the user passes in ctypes
|
|
28
|
+
# members, it is eagerly imported from numpy/_core/__init__.py.
|
|
29
|
+
import numpy as np
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def _from_ctypes_array(t):
|
|
33
|
+
return np.dtype((dtype_from_ctypes_type(t._type_), (t._length_,)))
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def _from_ctypes_structure(t):
|
|
37
|
+
for item in t._fields_:
|
|
38
|
+
if len(item) > 2:
|
|
39
|
+
raise TypeError(
|
|
40
|
+
"ctypes bitfields have no dtype equivalent")
|
|
41
|
+
|
|
42
|
+
if hasattr(t, "_pack_"):
|
|
43
|
+
import ctypes
|
|
44
|
+
formats = []
|
|
45
|
+
offsets = []
|
|
46
|
+
names = []
|
|
47
|
+
current_offset = 0
|
|
48
|
+
for fname, ftyp in t._fields_:
|
|
49
|
+
names.append(fname)
|
|
50
|
+
formats.append(dtype_from_ctypes_type(ftyp))
|
|
51
|
+
# Each type has a default offset, this is platform dependent
|
|
52
|
+
# for some types.
|
|
53
|
+
effective_pack = min(t._pack_, ctypes.alignment(ftyp))
|
|
54
|
+
current_offset = (
|
|
55
|
+
(current_offset + effective_pack - 1) // effective_pack
|
|
56
|
+
) * effective_pack
|
|
57
|
+
offsets.append(current_offset)
|
|
58
|
+
current_offset += ctypes.sizeof(ftyp)
|
|
59
|
+
|
|
60
|
+
return np.dtype({
|
|
61
|
+
"formats": formats,
|
|
62
|
+
"offsets": offsets,
|
|
63
|
+
"names": names,
|
|
64
|
+
"itemsize": ctypes.sizeof(t)})
|
|
65
|
+
else:
|
|
66
|
+
fields = []
|
|
67
|
+
for fname, ftyp in t._fields_:
|
|
68
|
+
fields.append((fname, dtype_from_ctypes_type(ftyp)))
|
|
69
|
+
|
|
70
|
+
# by default, ctypes structs are aligned
|
|
71
|
+
return np.dtype(fields, align=True)
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
def _from_ctypes_scalar(t):
|
|
75
|
+
"""
|
|
76
|
+
Return the dtype type with endianness included if it's the case
|
|
77
|
+
"""
|
|
78
|
+
if getattr(t, '__ctype_be__', None) is t:
|
|
79
|
+
return np.dtype('>' + t._type_)
|
|
80
|
+
elif getattr(t, '__ctype_le__', None) is t:
|
|
81
|
+
return np.dtype('<' + t._type_)
|
|
82
|
+
else:
|
|
83
|
+
return np.dtype(t._type_)
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
def _from_ctypes_union(t):
|
|
87
|
+
import ctypes
|
|
88
|
+
formats = []
|
|
89
|
+
offsets = []
|
|
90
|
+
names = []
|
|
91
|
+
for fname, ftyp in t._fields_:
|
|
92
|
+
names.append(fname)
|
|
93
|
+
formats.append(dtype_from_ctypes_type(ftyp))
|
|
94
|
+
offsets.append(0) # Union fields are offset to 0
|
|
95
|
+
|
|
96
|
+
return np.dtype({
|
|
97
|
+
"formats": formats,
|
|
98
|
+
"offsets": offsets,
|
|
99
|
+
"names": names,
|
|
100
|
+
"itemsize": ctypes.sizeof(t)})
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
def dtype_from_ctypes_type(t):
|
|
104
|
+
"""
|
|
105
|
+
Construct a dtype object from a ctypes type
|
|
106
|
+
"""
|
|
107
|
+
import _ctypes
|
|
108
|
+
if issubclass(t, _ctypes.Array):
|
|
109
|
+
return _from_ctypes_array(t)
|
|
110
|
+
elif issubclass(t, _ctypes._Pointer):
|
|
111
|
+
raise TypeError("ctypes pointers have no dtype equivalent")
|
|
112
|
+
elif issubclass(t, _ctypes.Structure):
|
|
113
|
+
return _from_ctypes_structure(t)
|
|
114
|
+
elif issubclass(t, _ctypes.Union):
|
|
115
|
+
return _from_ctypes_union(t)
|
|
116
|
+
elif isinstance(getattr(t, '_type_', None), str):
|
|
117
|
+
return _from_ctypes_scalar(t)
|
|
118
|
+
else:
|
|
119
|
+
raise NotImplementedError(
|
|
120
|
+
f"Unknown ctypes type {t.__name__}")
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import _ctypes
|
|
2
|
+
import ctypes as ct
|
|
3
|
+
from typing import Any, overload
|
|
4
|
+
|
|
5
|
+
import numpy as np
|
|
6
|
+
|
|
7
|
+
#
|
|
8
|
+
@overload
|
|
9
|
+
def dtype_from_ctypes_type(t: type[_ctypes.Array[Any] | _ctypes.Structure]) -> np.dtype[np.void]: ...
|
|
10
|
+
@overload
|
|
11
|
+
def dtype_from_ctypes_type(t: type[ct.c_bool]) -> np.dtype[np.bool]: ...
|
|
12
|
+
@overload
|
|
13
|
+
def dtype_from_ctypes_type(t: type[ct.c_int8 | ct.c_byte]) -> np.dtype[np.int8]: ...
|
|
14
|
+
@overload
|
|
15
|
+
def dtype_from_ctypes_type(t: type[ct.c_uint8 | ct.c_ubyte]) -> np.dtype[np.uint8]: ...
|
|
16
|
+
@overload
|
|
17
|
+
def dtype_from_ctypes_type(t: type[ct.c_int16 | ct.c_short]) -> np.dtype[np.int16]: ...
|
|
18
|
+
@overload
|
|
19
|
+
def dtype_from_ctypes_type(t: type[ct.c_uint16 | ct.c_ushort]) -> np.dtype[np.uint16]: ...
|
|
20
|
+
@overload
|
|
21
|
+
def dtype_from_ctypes_type(t: type[ct.c_int32 | ct.c_int]) -> np.dtype[np.int32]: ...
|
|
22
|
+
@overload
|
|
23
|
+
def dtype_from_ctypes_type(t: type[ct.c_uint32 | ct.c_uint]) -> np.dtype[np.uint32]: ...
|
|
24
|
+
@overload
|
|
25
|
+
def dtype_from_ctypes_type(t: type[ct.c_ssize_t | ct.c_long]) -> np.dtype[np.int32 | np.int64]: ...
|
|
26
|
+
@overload
|
|
27
|
+
def dtype_from_ctypes_type(t: type[ct.c_size_t | ct.c_ulong]) -> np.dtype[np.uint32 | np.uint64]: ...
|
|
28
|
+
@overload
|
|
29
|
+
def dtype_from_ctypes_type(t: type[ct.c_int64 | ct.c_longlong]) -> np.dtype[np.int64]: ...
|
|
30
|
+
@overload
|
|
31
|
+
def dtype_from_ctypes_type(t: type[ct.c_uint64 | ct.c_ulonglong]) -> np.dtype[np.uint64]: ...
|
|
32
|
+
@overload
|
|
33
|
+
def dtype_from_ctypes_type(t: type[ct.c_float]) -> np.dtype[np.float32]: ...
|
|
34
|
+
@overload
|
|
35
|
+
def dtype_from_ctypes_type(t: type[ct.c_double]) -> np.dtype[np.float64]: ...
|
|
36
|
+
@overload
|
|
37
|
+
def dtype_from_ctypes_type(t: type[ct.c_longdouble]) -> np.dtype[np.longdouble]: ...
|
|
38
|
+
@overload
|
|
39
|
+
def dtype_from_ctypes_type(t: type[ct.c_char]) -> np.dtype[np.bytes_]: ...
|
|
40
|
+
@overload
|
|
41
|
+
def dtype_from_ctypes_type(t: type[ct.py_object[Any]]) -> np.dtype[np.object_]: ...
|
|
42
|
+
|
|
43
|
+
# NOTE: the complex ctypes on python>=3.14 are not yet supported at runtim, see
|
|
44
|
+
# https://github.com/numpy/numpy/issues/28360
|
|
45
|
+
|
|
46
|
+
#
|
|
47
|
+
def _from_ctypes_array(t: type[_ctypes.Array[Any]]) -> np.dtype[np.void]: ...
|
|
48
|
+
def _from_ctypes_structure(t: type[_ctypes.Structure]) -> np.dtype[np.void]: ...
|
|
49
|
+
def _from_ctypes_union(t: type[_ctypes.Union]) -> np.dtype[np.void]: ...
|
|
50
|
+
|
|
51
|
+
# keep in sync with `dtype_from_ctypes_type` (minus the first overload)
|
|
52
|
+
@overload
|
|
53
|
+
def _from_ctypes_scalar(t: type[ct.c_bool]) -> np.dtype[np.bool]: ...
|
|
54
|
+
@overload
|
|
55
|
+
def _from_ctypes_scalar(t: type[ct.c_int8 | ct.c_byte]) -> np.dtype[np.int8]: ...
|
|
56
|
+
@overload
|
|
57
|
+
def _from_ctypes_scalar(t: type[ct.c_uint8 | ct.c_ubyte]) -> np.dtype[np.uint8]: ...
|
|
58
|
+
@overload
|
|
59
|
+
def _from_ctypes_scalar(t: type[ct.c_int16 | ct.c_short]) -> np.dtype[np.int16]: ...
|
|
60
|
+
@overload
|
|
61
|
+
def _from_ctypes_scalar(t: type[ct.c_uint16 | ct.c_ushort]) -> np.dtype[np.uint16]: ...
|
|
62
|
+
@overload
|
|
63
|
+
def _from_ctypes_scalar(t: type[ct.c_int32 | ct.c_int]) -> np.dtype[np.int32]: ...
|
|
64
|
+
@overload
|
|
65
|
+
def _from_ctypes_scalar(t: type[ct.c_uint32 | ct.c_uint]) -> np.dtype[np.uint32]: ...
|
|
66
|
+
@overload
|
|
67
|
+
def _from_ctypes_scalar(t: type[ct.c_ssize_t | ct.c_long]) -> np.dtype[np.int32 | np.int64]: ...
|
|
68
|
+
@overload
|
|
69
|
+
def _from_ctypes_scalar(t: type[ct.c_size_t | ct.c_ulong]) -> np.dtype[np.uint32 | np.uint64]: ...
|
|
70
|
+
@overload
|
|
71
|
+
def _from_ctypes_scalar(t: type[ct.c_int64 | ct.c_longlong]) -> np.dtype[np.int64]: ...
|
|
72
|
+
@overload
|
|
73
|
+
def _from_ctypes_scalar(t: type[ct.c_uint64 | ct.c_ulonglong]) -> np.dtype[np.uint64]: ...
|
|
74
|
+
@overload
|
|
75
|
+
def _from_ctypes_scalar(t: type[ct.c_float]) -> np.dtype[np.float32]: ...
|
|
76
|
+
@overload
|
|
77
|
+
def _from_ctypes_scalar(t: type[ct.c_double]) -> np.dtype[np.float64]: ...
|
|
78
|
+
@overload
|
|
79
|
+
def _from_ctypes_scalar(t: type[ct.c_longdouble]) -> np.dtype[np.longdouble]: ...
|
|
80
|
+
@overload
|
|
81
|
+
def _from_ctypes_scalar(t: type[ct.c_char]) -> np.dtype[np.bytes_]: ...
|
|
82
|
+
@overload
|
|
83
|
+
def _from_ctypes_scalar(t: type[ct.py_object[Any]]) -> np.dtype[np.object_]: ...
|