numpy 2.3.5__cp313-cp313-macosx_14_0_arm64.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.
Potentially problematic release.
This version of numpy might be problematic. Click here for more details.
- numpy/__config__.py +170 -0
- numpy/__config__.pyi +102 -0
- numpy/__init__.cython-30.pxd +1241 -0
- numpy/__init__.pxd +1154 -0
- numpy/__init__.py +945 -0
- numpy/__init__.pyi +6147 -0
- numpy/_array_api_info.py +346 -0
- numpy/_array_api_info.pyi +207 -0
- numpy/_configtool.py +39 -0
- numpy/_configtool.pyi +1 -0
- numpy/_core/__init__.py +186 -0
- numpy/_core/__init__.pyi +2 -0
- numpy/_core/_add_newdocs.py +6967 -0
- numpy/_core/_add_newdocs.pyi +3 -0
- numpy/_core/_add_newdocs_scalars.py +390 -0
- numpy/_core/_add_newdocs_scalars.pyi +16 -0
- numpy/_core/_asarray.py +134 -0
- numpy/_core/_asarray.pyi +41 -0
- numpy/_core/_dtype.py +366 -0
- numpy/_core/_dtype.pyi +58 -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 +55 -0
- numpy/_core/_internal.py +958 -0
- numpy/_core/_internal.pyi +72 -0
- numpy/_core/_machar.py +355 -0
- numpy/_core/_machar.pyi +55 -0
- numpy/_core/_methods.py +255 -0
- numpy/_core/_methods.pyi +22 -0
- numpy/_core/_multiarray_tests.cpython-313-darwin.so +0 -0
- numpy/_core/_multiarray_umath.cpython-313-darwin.so +0 -0
- numpy/_core/_operand_flag_tests.cpython-313-darwin.so +0 -0
- numpy/_core/_rational_tests.cpython-313-darwin.so +0 -0
- numpy/_core/_simd.cpython-313-darwin.so +0 -0
- numpy/_core/_simd.pyi +25 -0
- numpy/_core/_string_helpers.py +100 -0
- numpy/_core/_string_helpers.pyi +12 -0
- numpy/_core/_struct_ufunc_tests.cpython-313-darwin.so +0 -0
- numpy/_core/_type_aliases.py +119 -0
- numpy/_core/_type_aliases.pyi +97 -0
- numpy/_core/_ufunc_config.py +491 -0
- numpy/_core/_ufunc_config.pyi +78 -0
- numpy/_core/_umath_tests.cpython-313-darwin.so +0 -0
- numpy/_core/arrayprint.py +1775 -0
- numpy/_core/arrayprint.pyi +238 -0
- numpy/_core/cversions.py +13 -0
- numpy/_core/defchararray.py +1427 -0
- numpy/_core/defchararray.pyi +1135 -0
- numpy/_core/einsumfunc.py +1498 -0
- numpy/_core/einsumfunc.pyi +184 -0
- numpy/_core/fromnumeric.py +4269 -0
- numpy/_core/fromnumeric.pyi +1750 -0
- numpy/_core/function_base.py +545 -0
- numpy/_core/function_base.pyi +278 -0
- numpy/_core/getlimits.py +748 -0
- numpy/_core/getlimits.pyi +3 -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 +54 -0
- numpy/_core/include/numpy/__ufunc_api.h +341 -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 +196 -0
- numpy/_core/include/numpy/dtype_api.h +480 -0
- numpy/_core/include/numpy/halffloat.h +70 -0
- numpy/_core/include/numpy/ndarrayobject.h +304 -0
- numpy/_core/include/numpy/ndarraytypes.h +1950 -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 +977 -0
- numpy/_core/include/numpy/npy_cpu.h +124 -0
- numpy/_core/include/numpy/npy_endian.h +78 -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 +182 -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 +1762 -0
- numpy/_core/multiarray.pyi +1285 -0
- numpy/_core/numeric.py +2760 -0
- numpy/_core/numeric.pyi +882 -0
- numpy/_core/numerictypes.py +633 -0
- numpy/_core/numerictypes.pyi +197 -0
- numpy/_core/overrides.py +183 -0
- numpy/_core/overrides.pyi +48 -0
- numpy/_core/printoptions.py +32 -0
- numpy/_core/printoptions.pyi +28 -0
- numpy/_core/records.py +1089 -0
- numpy/_core/records.pyi +333 -0
- numpy/_core/shape_base.py +998 -0
- numpy/_core/shape_base.pyi +175 -0
- numpy/_core/strings.py +1829 -0
- numpy/_core/strings.pyi +511 -0
- numpy/_core/tests/_locales.py +72 -0
- numpy/_core/tests/_natype.py +205 -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 +654 -0
- numpy/_core/tests/test_argparse.py +92 -0
- numpy/_core/tests/test_array_api_info.py +113 -0
- numpy/_core/tests/test_array_coercion.py +911 -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 +1328 -0
- numpy/_core/tests/test_casting_floatingpoint_errors.py +154 -0
- numpy/_core/tests/test_casting_unittests.py +817 -0
- numpy/_core/tests/test_conversion_utils.py +206 -0
- numpy/_core/tests/test_cpu_dispatcher.py +49 -0
- numpy/_core/tests/test_cpu_features.py +432 -0
- numpy/_core/tests/test_custom_dtypes.py +315 -0
- numpy/_core/tests/test_cython.py +351 -0
- numpy/_core/tests/test_datetime.py +2734 -0
- numpy/_core/tests/test_defchararray.py +825 -0
- numpy/_core/tests/test_deprecations.py +454 -0
- numpy/_core/tests/test_dlpack.py +190 -0
- numpy/_core/tests/test_dtype.py +1995 -0
- numpy/_core/tests/test_einsum.py +1317 -0
- numpy/_core/tests/test_errstate.py +131 -0
- numpy/_core/tests/test_extint128.py +217 -0
- numpy/_core/tests/test_function_base.py +503 -0
- numpy/_core/tests/test_getlimits.py +205 -0
- numpy/_core/tests/test_half.py +568 -0
- numpy/_core/tests/test_hashtable.py +35 -0
- numpy/_core/tests/test_indexerrors.py +125 -0
- numpy/_core/tests/test_indexing.py +1455 -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 +369 -0
- numpy/_core/tests/test_machar.py +30 -0
- numpy/_core/tests/test_mem_overlap.py +930 -0
- numpy/_core/tests/test_mem_policy.py +452 -0
- numpy/_core/tests/test_memmap.py +246 -0
- numpy/_core/tests/test_multiarray.py +10577 -0
- numpy/_core/tests/test_multithreading.py +292 -0
- numpy/_core/tests/test_nditer.py +3498 -0
- numpy/_core/tests/test_nep50_promotions.py +287 -0
- numpy/_core/tests/test_numeric.py +4247 -0
- numpy/_core/tests/test_numerictypes.py +651 -0
- numpy/_core/tests/test_overrides.py +791 -0
- numpy/_core/tests/test_print.py +200 -0
- numpy/_core/tests/test_protocols.py +46 -0
- numpy/_core/tests/test_records.py +544 -0
- numpy/_core/tests/test_regression.py +2670 -0
- numpy/_core/tests/test_scalar_ctors.py +207 -0
- numpy/_core/tests/test_scalar_methods.py +246 -0
- numpy/_core/tests/test_scalarbuffer.py +153 -0
- numpy/_core/tests/test_scalarinherit.py +105 -0
- numpy/_core/tests/test_scalarmath.py +1176 -0
- numpy/_core/tests/test_scalarprint.py +403 -0
- numpy/_core/tests/test_shape_base.py +891 -0
- numpy/_core/tests/test_simd.py +1341 -0
- numpy/_core/tests/test_simd_module.py +103 -0
- numpy/_core/tests/test_stringdtype.py +1814 -0
- numpy/_core/tests/test_strings.py +1499 -0
- numpy/_core/tests/test_ufunc.py +3313 -0
- numpy/_core/tests/test_umath.py +4928 -0
- numpy/_core/tests/test_umath_accuracy.py +124 -0
- numpy/_core/tests/test_umath_complex.py +626 -0
- numpy/_core/tests/test_unicode.py +368 -0
- numpy/_core/umath.py +60 -0
- numpy/_core/umath.pyi +197 -0
- numpy/_distributor_init.py +15 -0
- numpy/_distributor_init.pyi +1 -0
- numpy/_expired_attrs_2_0.py +79 -0
- numpy/_expired_attrs_2_0.pyi +62 -0
- numpy/_globals.py +96 -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 +13 -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 +148 -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 +40 -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 +941 -0
- numpy/_utils/__init__.py +95 -0
- numpy/_utils/__init__.pyi +30 -0
- numpy/_utils/_convertions.py +18 -0
- numpy/_utils/_convertions.pyi +4 -0
- numpy/_utils/_inspect.py +192 -0
- numpy/_utils/_inspect.pyi +71 -0
- numpy/_utils/_pep440.py +486 -0
- numpy/_utils/_pep440.pyi +121 -0
- numpy/char/__init__.py +2 -0
- numpy/char/__init__.pyi +111 -0
- numpy/conftest.py +258 -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 +33 -0
- numpy/ctypeslib/_ctypeslib.py +603 -0
- numpy/ctypeslib/_ctypeslib.pyi +245 -0
- numpy/doc/ufuncs.py +138 -0
- numpy/dtypes.py +41 -0
- numpy/dtypes.pyi +631 -0
- numpy/exceptions.py +247 -0
- numpy/exceptions.pyi +27 -0
- numpy/f2py/__init__.py +86 -0
- numpy/f2py/__init__.pyi +6 -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 +231 -0
- numpy/f2py/_backends/_meson.pyi +63 -0
- numpy/f2py/_backends/meson.build.template +55 -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 +29 -0
- numpy/f2py/auxfuncs.py +1004 -0
- numpy/f2py/auxfuncs.pyi +264 -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 +258 -0
- numpy/f2py/diagnose.py +149 -0
- numpy/f2py/diagnose.pyi +1 -0
- numpy/f2py/f2py2e.py +786 -0
- numpy/f2py/f2py2e.pyi +76 -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 +43 -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 +1516 -0
- numpy/f2py/symbolic.pyi +221 -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 +64 -0
- numpy/f2py/tests/test_f2cmap.py +17 -0
- numpy/f2py/tests/test_f2py2e.py +964 -0
- numpy/f2py/tests/test_isoc.py +56 -0
- numpy/f2py/tests/test_kind.py +53 -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 +495 -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 +215 -0
- numpy/fft/__init__.pyi +43 -0
- numpy/fft/_helper.py +235 -0
- numpy/fft/_helper.pyi +45 -0
- numpy/fft/_pocketfft.py +1693 -0
- numpy/fft/_pocketfft.pyi +138 -0
- numpy/fft/_pocketfft_umath.cpython-313-darwin.so +0 -0
- numpy/fft/helper.py +17 -0
- numpy/fft/helper.pyi +22 -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 +44 -0
- numpy/lib/_array_utils_impl.py +62 -0
- numpy/lib/_array_utils_impl.pyi +26 -0
- numpy/lib/_arraypad_impl.py +890 -0
- numpy/lib/_arraypad_impl.pyi +89 -0
- numpy/lib/_arraysetops_impl.py +1260 -0
- numpy/lib/_arraysetops_impl.pyi +468 -0
- numpy/lib/_arrayterator_impl.py +224 -0
- numpy/lib/_arrayterator_impl.pyi +46 -0
- numpy/lib/_datasource.py +700 -0
- numpy/lib/_datasource.pyi +31 -0
- numpy/lib/_format_impl.py +1036 -0
- numpy/lib/_format_impl.pyi +26 -0
- numpy/lib/_function_base_impl.py +5844 -0
- numpy/lib/_function_base_impl.pyi +1164 -0
- numpy/lib/_histograms_impl.py +1085 -0
- numpy/lib/_histograms_impl.pyi +50 -0
- numpy/lib/_index_tricks_impl.py +1067 -0
- numpy/lib/_index_tricks_impl.pyi +208 -0
- numpy/lib/_iotools.py +900 -0
- numpy/lib/_iotools.pyi +114 -0
- numpy/lib/_nanfunctions_impl.py +2024 -0
- numpy/lib/_nanfunctions_impl.pyi +52 -0
- numpy/lib/_npyio_impl.py +2596 -0
- numpy/lib/_npyio_impl.pyi +301 -0
- numpy/lib/_polynomial_impl.py +1465 -0
- numpy/lib/_polynomial_impl.pyi +318 -0
- numpy/lib/_scimath_impl.py +642 -0
- numpy/lib/_scimath_impl.pyi +93 -0
- numpy/lib/_shape_base_impl.py +1301 -0
- numpy/lib/_shape_base_impl.pyi +235 -0
- numpy/lib/_stride_tricks_impl.py +549 -0
- numpy/lib/_stride_tricks_impl.pyi +74 -0
- numpy/lib/_twodim_base_impl.py +1201 -0
- numpy/lib/_twodim_base_impl.pyi +438 -0
- numpy/lib/_type_check_impl.py +699 -0
- numpy/lib/_type_check_impl.pyi +350 -0
- numpy/lib/_ufunclike_impl.py +207 -0
- numpy/lib/_ufunclike_impl.pyi +67 -0
- numpy/lib/_user_array_impl.py +299 -0
- numpy/lib/_user_array_impl.pyi +225 -0
- numpy/lib/_utils_impl.py +784 -0
- numpy/lib/_utils_impl.pyi +10 -0
- numpy/lib/_version.py +154 -0
- numpy/lib/_version.pyi +17 -0
- numpy/lib/array_utils.py +7 -0
- numpy/lib/array_utils.pyi +12 -0
- numpy/lib/format.py +24 -0
- numpy/lib/format.pyi +66 -0
- numpy/lib/introspect.py +95 -0
- numpy/lib/introspect.pyi +3 -0
- numpy/lib/mixins.py +180 -0
- numpy/lib/mixins.pyi +77 -0
- numpy/lib/npyio.py +1 -0
- numpy/lib/npyio.pyi +9 -0
- numpy/lib/recfunctions.py +1681 -0
- numpy/lib/recfunctions.pyi +435 -0
- numpy/lib/scimath.py +13 -0
- numpy/lib/scimath.pyi +30 -0
- numpy/lib/stride_tricks.py +1 -0
- numpy/lib/stride_tricks.pyi +6 -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 +352 -0
- numpy/lib/tests/test__iotools.py +360 -0
- numpy/lib/tests/test__version.py +64 -0
- numpy/lib/tests/test_array_utils.py +32 -0
- numpy/lib/tests/test_arraypad.py +1415 -0
- numpy/lib/tests/test_arraysetops.py +1074 -0
- numpy/lib/tests/test_arrayterator.py +46 -0
- numpy/lib/tests/test_format.py +1054 -0
- numpy/lib/tests/test_function_base.py +4573 -0
- numpy/lib/tests/test_histograms.py +855 -0
- numpy/lib/tests/test_index_tricks.py +573 -0
- numpy/lib/tests/test_io.py +2848 -0
- numpy/lib/tests/test_loadtxt.py +1101 -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 +320 -0
- numpy/lib/tests/test_recfunctions.py +1052 -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 +656 -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 +98 -0
- numpy/linalg/__init__.pyi +73 -0
- numpy/linalg/_linalg.py +3682 -0
- numpy/linalg/_linalg.pyi +475 -0
- numpy/linalg/_umath_linalg.cpython-313-darwin.so +0 -0
- numpy/linalg/_umath_linalg.pyi +61 -0
- numpy/linalg/lapack_lite.cpython-313-darwin.so +0 -0
- numpy/linalg/lapack_lite.pyi +141 -0
- numpy/linalg/linalg.py +17 -0
- numpy/linalg/linalg.pyi +69 -0
- numpy/linalg/tests/__init__.py +0 -0
- numpy/linalg/tests/test_deprecations.py +20 -0
- numpy/linalg/tests/test_linalg.py +2443 -0
- numpy/linalg/tests/test_regression.py +181 -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 +8933 -0
- numpy/ma/core.pyi +1462 -0
- numpy/ma/extras.py +2344 -0
- numpy/ma/extras.pyi +138 -0
- numpy/ma/mrecords.py +773 -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 +5886 -0
- numpy/ma/tests/test_deprecations.py +87 -0
- numpy/ma/tests/test_extras.py +1998 -0
- numpy/ma/tests/test_mrecords.py +497 -0
- numpy/ma/tests/test_old_ma.py +942 -0
- numpy/ma/tests/test_regression.py +100 -0
- numpy/ma/tests/test_subclassing.py +469 -0
- numpy/ma/testutils.py +294 -0
- numpy/matlib.py +380 -0
- numpy/matlib.pyi +582 -0
- numpy/matrixlib/__init__.py +12 -0
- numpy/matrixlib/__init__.pyi +5 -0
- numpy/matrixlib/defmatrix.py +1119 -0
- numpy/matrixlib/defmatrix.pyi +17 -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 +105 -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 +25 -0
- numpy/polynomial/_polybase.py +1191 -0
- numpy/polynomial/_polybase.pyi +285 -0
- numpy/polynomial/_polytypes.pyi +892 -0
- numpy/polynomial/chebyshev.py +2003 -0
- numpy/polynomial/chebyshev.pyi +181 -0
- numpy/polynomial/hermite.py +1740 -0
- numpy/polynomial/hermite.pyi +107 -0
- numpy/polynomial/hermite_e.py +1642 -0
- numpy/polynomial/hermite_e.pyi +107 -0
- numpy/polynomial/laguerre.py +1675 -0
- numpy/polynomial/laguerre.pyi +100 -0
- numpy/polynomial/legendre.py +1605 -0
- numpy/polynomial/legendre.pyi +100 -0
- numpy/polynomial/polynomial.py +1616 -0
- numpy/polynomial/polynomial.pyi +89 -0
- numpy/polynomial/polyutils.py +759 -0
- numpy/polynomial/polyutils.pyi +423 -0
- numpy/polynomial/tests/__init__.py +0 -0
- numpy/polynomial/tests/test_chebyshev.py +623 -0
- numpy/polynomial/tests/test_classes.py +618 -0
- numpy/polynomial/tests/test_hermite.py +558 -0
- numpy/polynomial/tests/test_hermite_e.py +559 -0
- numpy/polynomial/tests/test_laguerre.py +540 -0
- numpy/polynomial/tests/test_legendre.py +571 -0
- numpy/polynomial/tests/test_polynomial.py +669 -0
- numpy/polynomial/tests/test_polyutils.py +128 -0
- numpy/polynomial/tests/test_printing.py +555 -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-313-darwin.so +0 -0
- numpy/random/_bounded_integers.pxd +29 -0
- numpy/random/_bounded_integers.pyi +1 -0
- numpy/random/_common.cpython-313-darwin.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 +118 -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-313-darwin.so +0 -0
- numpy/random/_generator.pyi +861 -0
- numpy/random/_mt19937.cpython-313-darwin.so +0 -0
- numpy/random/_mt19937.pyi +25 -0
- numpy/random/_pcg64.cpython-313-darwin.so +0 -0
- numpy/random/_pcg64.pyi +44 -0
- numpy/random/_philox.cpython-313-darwin.so +0 -0
- numpy/random/_philox.pyi +39 -0
- numpy/random/_pickle.py +88 -0
- numpy/random/_pickle.pyi +43 -0
- numpy/random/_sfc64.cpython-313-darwin.so +0 -0
- numpy/random/_sfc64.pyi +28 -0
- numpy/random/bit_generator.cpython-313-darwin.so +0 -0
- numpy/random/bit_generator.pxd +35 -0
- numpy/random/bit_generator.pyi +124 -0
- numpy/random/c_distributions.pxd +119 -0
- numpy/random/lib/libnpyrandom.a +0 -0
- numpy/random/mtrand.cpython-313-darwin.so +0 -0
- numpy/random/mtrand.pyi +703 -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 +592 -0
- numpy/random/tests/test_extending.py +127 -0
- numpy/random/tests/test_generator_mt19937.py +2809 -0
- numpy/random/tests/test_generator_mt19937_regressions.py +207 -0
- numpy/random/tests/test_random.py +1757 -0
- numpy/random/tests/test_randomstate.py +2130 -0
- numpy/random/tests/test_randomstate_regression.py +217 -0
- numpy/random/tests/test_regression.py +152 -0
- numpy/random/tests/test_seed_sequence.py +79 -0
- numpy/random/tests/test_smoke.py +819 -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 +102 -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 +2752 -0
- numpy/testing/_private/utils.pyi +499 -0
- numpy/testing/overrides.py +84 -0
- numpy/testing/overrides.pyi +11 -0
- numpy/testing/print_coercion_tables.py +207 -0
- numpy/testing/print_coercion_tables.pyi +27 -0
- numpy/testing/tests/__init__.py +0 -0
- numpy/testing/tests/test_utils.py +1917 -0
- numpy/tests/__init__.py +0 -0
- numpy/tests/test__all__.py +10 -0
- numpy/tests/test_configtool.py +48 -0
- numpy/tests/test_ctypeslib.py +377 -0
- numpy/tests/test_lazyloading.py +38 -0
- numpy/tests/test_matlib.py +59 -0
- numpy/tests/test_numpy_config.py +46 -0
- numpy/tests/test_numpy_version.py +54 -0
- numpy/tests/test_public_api.py +806 -0
- numpy/tests/test_reloading.py +74 -0
- numpy/tests/test_scripts.py +49 -0
- numpy/tests/test_warnings.py +78 -0
- numpy/typing/__init__.py +201 -0
- numpy/typing/mypy_plugin.py +195 -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 +16 -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 +65 -0
- numpy/typing/tests/data/fail/chararray.pyi +62 -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 +15 -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 +20 -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 +62 -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 +48 -0
- numpy/typing/tests/data/fail/ma.pyi +143 -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 +36 -0
- numpy/typing/tests/data/fail/nditer.pyi +8 -0
- numpy/typing/tests/data/fail/nested_sequence.pyi +16 -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 +87 -0
- numpy/typing/tests/data/fail/shape.pyi +6 -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 +32 -0
- numpy/typing/tests/data/fail/type_check.pyi +13 -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 +9 -0
- numpy/typing/tests/data/pass/arithmetic.py +612 -0
- numpy/typing/tests/data/pass/array_constructors.py +137 -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 +27 -0
- numpy/typing/tests/data/pass/bitwise_ops.py +131 -0
- numpy/typing/tests/data/pass/comparisons.py +315 -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 +19 -0
- numpy/typing/tests/data/pass/fromnumeric.py +272 -0
- numpy/typing/tests/data/pass/index_tricks.py +60 -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 +51 -0
- numpy/typing/tests/data/pass/ma.py +174 -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 +76 -0
- numpy/typing/tests/data/pass/ndarray_conversion.py +87 -0
- numpy/typing/tests/data/pass/ndarray_misc.py +203 -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 +95 -0
- numpy/typing/tests/data/pass/numerictypes.py +17 -0
- numpy/typing/tests/data/pass/random.py +1497 -0
- numpy/typing/tests/data/pass/recfunctions.py +161 -0
- numpy/typing/tests/data/pass/scalars.py +248 -0
- numpy/typing/tests/data/pass/shape.py +19 -0
- numpy/typing/tests/data/pass/simple.py +168 -0
- numpy/typing/tests/data/pass/simple_py3.py +6 -0
- numpy/typing/tests/data/pass/ufunc_config.py +64 -0
- numpy/typing/tests/data/pass/ufunclike.py +47 -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 +720 -0
- numpy/typing/tests/data/reveal/array_api_info.pyi +70 -0
- numpy/typing/tests/data/reveal/array_constructors.pyi +249 -0
- numpy/typing/tests/data/reveal/arraypad.pyi +22 -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 +167 -0
- numpy/typing/tests/data/reveal/char.pyi +224 -0
- numpy/typing/tests/data/reveal/chararray.pyi +137 -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 +136 -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 +47 -0
- numpy/typing/tests/data/reveal/fromnumeric.pyi +347 -0
- numpy/typing/tests/data/reveal/getlimits.pyi +51 -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 +213 -0
- numpy/typing/tests/data/reveal/lib_polynomial.pyi +144 -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 +132 -0
- numpy/typing/tests/data/reveal/ma.pyi +369 -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 +179 -0
- numpy/typing/tests/data/reveal/modules.pyi +51 -0
- numpy/typing/tests/data/reveal/multiarray.pyi +194 -0
- numpy/typing/tests/data/reveal/nbit_base_example.pyi +21 -0
- numpy/typing/tests/data/reveal/ndarray_assignability.pyi +77 -0
- numpy/typing/tests/data/reveal/ndarray_conversion.pyi +85 -0
- numpy/typing/tests/data/reveal/ndarray_misc.pyi +247 -0
- numpy/typing/tests/data/reveal/ndarray_shape_manipulation.pyi +39 -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 +134 -0
- numpy/typing/tests/data/reveal/numerictypes.pyi +16 -0
- numpy/typing/tests/data/reveal/polynomial_polybase.pyi +220 -0
- numpy/typing/tests/data/reveal/polynomial_polyutils.pyi +219 -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 +145 -0
- numpy/typing/tests/data/reveal/type_check.pyi +67 -0
- numpy/typing/tests/data/reveal/ufunc_config.pyi +30 -0
- numpy/typing/tests/data/reveal/ufunclike.pyi +31 -0
- numpy/typing/tests/data/reveal/ufuncs.pyi +123 -0
- numpy/typing/tests/data/reveal/warnings_and_errors.pyi +11 -0
- numpy/typing/tests/test_isfile.py +32 -0
- numpy/typing/tests/test_runtime.py +102 -0
- numpy/typing/tests/test_typing.py +205 -0
- numpy/version.py +11 -0
- numpy/version.pyi +18 -0
- numpy-2.3.5.dist-info/LICENSE.txt +971 -0
- numpy-2.3.5.dist-info/METADATA +1093 -0
- numpy-2.3.5.dist-info/RECORD +897 -0
- numpy-2.3.5.dist-info/WHEEL +6 -0
- numpy-2.3.5.dist-info/entry_points.txt +13 -0
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* This header file defines relevant features which:
|
|
3
|
+
* - Require runtime inspection depending on the NumPy version.
|
|
4
|
+
* - May be needed when compiling with an older version of NumPy to allow
|
|
5
|
+
* a smooth transition.
|
|
6
|
+
*
|
|
7
|
+
* As such, it is shipped with NumPy 2.0, but designed to be vendored in full
|
|
8
|
+
* or parts by downstream projects.
|
|
9
|
+
*
|
|
10
|
+
* It must be included after any other includes. `import_array()` must have
|
|
11
|
+
* been called in the scope or version dependency will misbehave, even when
|
|
12
|
+
* only `PyUFunc_` API is used.
|
|
13
|
+
*
|
|
14
|
+
* If required complicated defs (with inline functions) should be written as:
|
|
15
|
+
*
|
|
16
|
+
* #if NPY_FEATURE_VERSION >= NPY_2_0_API_VERSION
|
|
17
|
+
* Simple definition when NumPy 2.0 API is guaranteed.
|
|
18
|
+
* #else
|
|
19
|
+
* static inline definition of a 1.x compatibility shim
|
|
20
|
+
* #if NPY_ABI_VERSION < 0x02000000
|
|
21
|
+
* Make 1.x compatibility shim the public API (1.x only branch)
|
|
22
|
+
* #else
|
|
23
|
+
* Runtime dispatched version (1.x or 2.x)
|
|
24
|
+
* #endif
|
|
25
|
+
* #endif
|
|
26
|
+
*
|
|
27
|
+
* An internal build always passes NPY_FEATURE_VERSION >= NPY_2_0_API_VERSION
|
|
28
|
+
*/
|
|
29
|
+
|
|
30
|
+
#ifndef NUMPY_CORE_INCLUDE_NUMPY_NPY_2_COMPAT_H_
|
|
31
|
+
#define NUMPY_CORE_INCLUDE_NUMPY_NPY_2_COMPAT_H_
|
|
32
|
+
|
|
33
|
+
/*
|
|
34
|
+
* New macros for accessing real and complex part of a complex number can be
|
|
35
|
+
* found in "npy_2_complexcompat.h".
|
|
36
|
+
*/
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
/*
|
|
40
|
+
* This header is meant to be included by downstream directly for 1.x compat.
|
|
41
|
+
* In that case we need to ensure that users first included the full headers
|
|
42
|
+
* and not just `ndarraytypes.h`.
|
|
43
|
+
*/
|
|
44
|
+
|
|
45
|
+
#ifndef NPY_FEATURE_VERSION
|
|
46
|
+
#error "The NumPy 2 compat header requires `import_array()` for which " \
|
|
47
|
+
"the `ndarraytypes.h` header include is not sufficient. Please " \
|
|
48
|
+
"include it after `numpy/ndarrayobject.h` or similar.\n" \
|
|
49
|
+
"To simplify inclusion, you may use `PyArray_ImportNumPy()` " \
|
|
50
|
+
"which is defined in the compat header and is lightweight (can be)."
|
|
51
|
+
#endif
|
|
52
|
+
|
|
53
|
+
#if NPY_ABI_VERSION < 0x02000000
|
|
54
|
+
/*
|
|
55
|
+
* Define 2.0 feature version as it is needed below to decide whether we
|
|
56
|
+
* compile for both 1.x and 2.x (defining it guarantees 1.x only).
|
|
57
|
+
*/
|
|
58
|
+
#define NPY_2_0_API_VERSION 0x00000012
|
|
59
|
+
/*
|
|
60
|
+
* If we are compiling with NumPy 1.x, PyArray_RUNTIME_VERSION so we
|
|
61
|
+
* pretend the `PyArray_RUNTIME_VERSION` is `NPY_FEATURE_VERSION`.
|
|
62
|
+
* This allows downstream to use `PyArray_RUNTIME_VERSION` if they need to.
|
|
63
|
+
*/
|
|
64
|
+
#define PyArray_RUNTIME_VERSION NPY_FEATURE_VERSION
|
|
65
|
+
/* Compiling on NumPy 1.x where these are the same: */
|
|
66
|
+
#define PyArray_DescrProto PyArray_Descr
|
|
67
|
+
#endif
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
/*
|
|
71
|
+
* Define a better way to call `_import_array()` to simplify backporting as
|
|
72
|
+
* we now require imports more often (necessary to make ABI flexible).
|
|
73
|
+
*/
|
|
74
|
+
#ifdef import_array1
|
|
75
|
+
|
|
76
|
+
static inline int
|
|
77
|
+
PyArray_ImportNumPyAPI(void)
|
|
78
|
+
{
|
|
79
|
+
if (NPY_UNLIKELY(PyArray_API == NULL)) {
|
|
80
|
+
import_array1(-1);
|
|
81
|
+
}
|
|
82
|
+
return 0;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
#endif /* import_array1 */
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
/*
|
|
89
|
+
* NPY_DEFAULT_INT
|
|
90
|
+
*
|
|
91
|
+
* The default integer has changed, `NPY_DEFAULT_INT` is available at runtime
|
|
92
|
+
* for use as type number, e.g. `PyArray_DescrFromType(NPY_DEFAULT_INT)`.
|
|
93
|
+
*
|
|
94
|
+
* NPY_RAVEL_AXIS
|
|
95
|
+
*
|
|
96
|
+
* This was introduced in NumPy 2.0 to allow indicating that an axis should be
|
|
97
|
+
* raveled in an operation. Before NumPy 2.0, NPY_MAXDIMS was used for this purpose.
|
|
98
|
+
*
|
|
99
|
+
* NPY_MAXDIMS
|
|
100
|
+
*
|
|
101
|
+
* A constant indicating the maximum number dimensions allowed when creating
|
|
102
|
+
* an ndarray.
|
|
103
|
+
*
|
|
104
|
+
* NPY_NTYPES_LEGACY
|
|
105
|
+
*
|
|
106
|
+
* The number of built-in NumPy dtypes.
|
|
107
|
+
*/
|
|
108
|
+
#if NPY_FEATURE_VERSION >= NPY_2_0_API_VERSION
|
|
109
|
+
#define NPY_DEFAULT_INT NPY_INTP
|
|
110
|
+
#define NPY_RAVEL_AXIS NPY_MIN_INT
|
|
111
|
+
#define NPY_MAXARGS 64
|
|
112
|
+
|
|
113
|
+
#elif NPY_ABI_VERSION < 0x02000000
|
|
114
|
+
#define NPY_DEFAULT_INT NPY_LONG
|
|
115
|
+
#define NPY_RAVEL_AXIS 32
|
|
116
|
+
#define NPY_MAXARGS 32
|
|
117
|
+
|
|
118
|
+
/* Aliases of 2.x names to 1.x only equivalent names */
|
|
119
|
+
#define NPY_NTYPES NPY_NTYPES_LEGACY
|
|
120
|
+
#define PyArray_DescrProto PyArray_Descr
|
|
121
|
+
#define _PyArray_LegacyDescr PyArray_Descr
|
|
122
|
+
/* NumPy 2 definition always works, but add it for 1.x only */
|
|
123
|
+
#define PyDataType_ISLEGACY(dtype) (1)
|
|
124
|
+
#else
|
|
125
|
+
#define NPY_DEFAULT_INT \
|
|
126
|
+
(PyArray_RUNTIME_VERSION >= NPY_2_0_API_VERSION ? NPY_INTP : NPY_LONG)
|
|
127
|
+
#define NPY_RAVEL_AXIS \
|
|
128
|
+
(PyArray_RUNTIME_VERSION >= NPY_2_0_API_VERSION ? NPY_MIN_INT : 32)
|
|
129
|
+
#define NPY_MAXARGS \
|
|
130
|
+
(PyArray_RUNTIME_VERSION >= NPY_2_0_API_VERSION ? 64 : 32)
|
|
131
|
+
#endif
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
/*
|
|
135
|
+
* Access inline functions for descriptor fields. Except for the first
|
|
136
|
+
* few fields, these needed to be moved (elsize, alignment) for
|
|
137
|
+
* additional space. Or they are descriptor specific and are not generally
|
|
138
|
+
* available anymore (metadata, c_metadata, subarray, names, fields).
|
|
139
|
+
*
|
|
140
|
+
* Most of these are defined via the `DESCR_ACCESSOR` macro helper.
|
|
141
|
+
*/
|
|
142
|
+
#if NPY_FEATURE_VERSION >= NPY_2_0_API_VERSION || NPY_ABI_VERSION < 0x02000000
|
|
143
|
+
/* Compiling for 1.x or 2.x only, direct field access is OK: */
|
|
144
|
+
|
|
145
|
+
static inline void
|
|
146
|
+
PyDataType_SET_ELSIZE(PyArray_Descr *dtype, npy_intp size)
|
|
147
|
+
{
|
|
148
|
+
dtype->elsize = size;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
static inline npy_uint64
|
|
152
|
+
PyDataType_FLAGS(const PyArray_Descr *dtype)
|
|
153
|
+
{
|
|
154
|
+
#if NPY_FEATURE_VERSION >= NPY_2_0_API_VERSION
|
|
155
|
+
return dtype->flags;
|
|
156
|
+
#else
|
|
157
|
+
return (unsigned char)dtype->flags; /* Need unsigned cast on 1.x */
|
|
158
|
+
#endif
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
#define DESCR_ACCESSOR(FIELD, field, type, legacy_only) \
|
|
162
|
+
static inline type \
|
|
163
|
+
PyDataType_##FIELD(const PyArray_Descr *dtype) { \
|
|
164
|
+
if (legacy_only && !PyDataType_ISLEGACY(dtype)) { \
|
|
165
|
+
return (type)0; \
|
|
166
|
+
} \
|
|
167
|
+
return ((_PyArray_LegacyDescr *)dtype)->field; \
|
|
168
|
+
}
|
|
169
|
+
#else /* compiling for both 1.x and 2.x */
|
|
170
|
+
|
|
171
|
+
static inline void
|
|
172
|
+
PyDataType_SET_ELSIZE(PyArray_Descr *dtype, npy_intp size)
|
|
173
|
+
{
|
|
174
|
+
if (PyArray_RUNTIME_VERSION >= NPY_2_0_API_VERSION) {
|
|
175
|
+
((_PyArray_DescrNumPy2 *)dtype)->elsize = size;
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
((PyArray_DescrProto *)dtype)->elsize = (int)size;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
static inline npy_uint64
|
|
183
|
+
PyDataType_FLAGS(const PyArray_Descr *dtype)
|
|
184
|
+
{
|
|
185
|
+
if (PyArray_RUNTIME_VERSION >= NPY_2_0_API_VERSION) {
|
|
186
|
+
return ((_PyArray_DescrNumPy2 *)dtype)->flags;
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
return (unsigned char)((PyArray_DescrProto *)dtype)->flags;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
/* Cast to LegacyDescr always fine but needed when `legacy_only` */
|
|
194
|
+
#define DESCR_ACCESSOR(FIELD, field, type, legacy_only) \
|
|
195
|
+
static inline type \
|
|
196
|
+
PyDataType_##FIELD(const PyArray_Descr *dtype) { \
|
|
197
|
+
if (legacy_only && !PyDataType_ISLEGACY(dtype)) { \
|
|
198
|
+
return (type)0; \
|
|
199
|
+
} \
|
|
200
|
+
if (PyArray_RUNTIME_VERSION >= NPY_2_0_API_VERSION) { \
|
|
201
|
+
return ((_PyArray_LegacyDescr *)dtype)->field; \
|
|
202
|
+
} \
|
|
203
|
+
else { \
|
|
204
|
+
return ((PyArray_DescrProto *)dtype)->field; \
|
|
205
|
+
} \
|
|
206
|
+
}
|
|
207
|
+
#endif
|
|
208
|
+
|
|
209
|
+
DESCR_ACCESSOR(ELSIZE, elsize, npy_intp, 0)
|
|
210
|
+
DESCR_ACCESSOR(ALIGNMENT, alignment, npy_intp, 0)
|
|
211
|
+
DESCR_ACCESSOR(METADATA, metadata, PyObject *, 1)
|
|
212
|
+
DESCR_ACCESSOR(SUBARRAY, subarray, PyArray_ArrayDescr *, 1)
|
|
213
|
+
DESCR_ACCESSOR(NAMES, names, PyObject *, 1)
|
|
214
|
+
DESCR_ACCESSOR(FIELDS, fields, PyObject *, 1)
|
|
215
|
+
DESCR_ACCESSOR(C_METADATA, c_metadata, NpyAuxData *, 1)
|
|
216
|
+
|
|
217
|
+
#undef DESCR_ACCESSOR
|
|
218
|
+
|
|
219
|
+
|
|
220
|
+
#if !(defined(NPY_INTERNAL_BUILD) && NPY_INTERNAL_BUILD)
|
|
221
|
+
#if NPY_FEATURE_VERSION >= NPY_2_0_API_VERSION
|
|
222
|
+
static inline PyArray_ArrFuncs *
|
|
223
|
+
PyDataType_GetArrFuncs(const PyArray_Descr *descr)
|
|
224
|
+
{
|
|
225
|
+
return _PyDataType_GetArrFuncs(descr);
|
|
226
|
+
}
|
|
227
|
+
#elif NPY_ABI_VERSION < 0x02000000
|
|
228
|
+
static inline PyArray_ArrFuncs *
|
|
229
|
+
PyDataType_GetArrFuncs(const PyArray_Descr *descr)
|
|
230
|
+
{
|
|
231
|
+
return descr->f;
|
|
232
|
+
}
|
|
233
|
+
#else
|
|
234
|
+
static inline PyArray_ArrFuncs *
|
|
235
|
+
PyDataType_GetArrFuncs(const PyArray_Descr *descr)
|
|
236
|
+
{
|
|
237
|
+
if (PyArray_RUNTIME_VERSION >= NPY_2_0_API_VERSION) {
|
|
238
|
+
return _PyDataType_GetArrFuncs(descr);
|
|
239
|
+
}
|
|
240
|
+
else {
|
|
241
|
+
return ((PyArray_DescrProto *)descr)->f;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
#endif
|
|
245
|
+
|
|
246
|
+
|
|
247
|
+
#endif /* not internal build */
|
|
248
|
+
|
|
249
|
+
#endif /* NUMPY_CORE_INCLUDE_NUMPY_NPY_2_COMPAT_H_ */
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/* This header is designed to be copy-pasted into downstream packages, since it provides
|
|
2
|
+
a compatibility layer between the old C struct complex types and the new native C99
|
|
3
|
+
complex types. The new macros are in numpy/npy_math.h, which is why it is included here. */
|
|
4
|
+
#ifndef NUMPY_CORE_INCLUDE_NUMPY_NPY_2_COMPLEXCOMPAT_H_
|
|
5
|
+
#define NUMPY_CORE_INCLUDE_NUMPY_NPY_2_COMPLEXCOMPAT_H_
|
|
6
|
+
|
|
7
|
+
#include <numpy/npy_math.h>
|
|
8
|
+
|
|
9
|
+
#ifndef NPY_CSETREALF
|
|
10
|
+
#define NPY_CSETREALF(c, r) (c)->real = (r)
|
|
11
|
+
#endif
|
|
12
|
+
#ifndef NPY_CSETIMAGF
|
|
13
|
+
#define NPY_CSETIMAGF(c, i) (c)->imag = (i)
|
|
14
|
+
#endif
|
|
15
|
+
#ifndef NPY_CSETREAL
|
|
16
|
+
#define NPY_CSETREAL(c, r) (c)->real = (r)
|
|
17
|
+
#endif
|
|
18
|
+
#ifndef NPY_CSETIMAG
|
|
19
|
+
#define NPY_CSETIMAG(c, i) (c)->imag = (i)
|
|
20
|
+
#endif
|
|
21
|
+
#ifndef NPY_CSETREALL
|
|
22
|
+
#define NPY_CSETREALL(c, r) (c)->real = (r)
|
|
23
|
+
#endif
|
|
24
|
+
#ifndef NPY_CSETIMAGL
|
|
25
|
+
#define NPY_CSETIMAGL(c, i) (c)->imag = (i)
|
|
26
|
+
#endif
|
|
27
|
+
|
|
28
|
+
#endif
|
|
@@ -0,0 +1,374 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* This is a convenience header file providing compatibility utilities
|
|
3
|
+
* for supporting different minor versions of Python 3.
|
|
4
|
+
* It was originally used to support the transition from Python 2,
|
|
5
|
+
* hence the "3k" naming.
|
|
6
|
+
*
|
|
7
|
+
* If you want to use this for your own projects, it's recommended to make a
|
|
8
|
+
* copy of it. We don't provide backwards compatibility guarantees.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
#ifndef NUMPY_CORE_INCLUDE_NUMPY_NPY_3KCOMPAT_H_
|
|
12
|
+
#define NUMPY_CORE_INCLUDE_NUMPY_NPY_3KCOMPAT_H_
|
|
13
|
+
|
|
14
|
+
#include <Python.h>
|
|
15
|
+
#include <stdio.h>
|
|
16
|
+
|
|
17
|
+
#include "npy_common.h"
|
|
18
|
+
|
|
19
|
+
#ifdef __cplusplus
|
|
20
|
+
extern "C" {
|
|
21
|
+
#endif
|
|
22
|
+
|
|
23
|
+
/* Python13 removes _PyLong_AsInt */
|
|
24
|
+
static inline int
|
|
25
|
+
Npy__PyLong_AsInt(PyObject *obj)
|
|
26
|
+
{
|
|
27
|
+
int overflow;
|
|
28
|
+
long result = PyLong_AsLongAndOverflow(obj, &overflow);
|
|
29
|
+
|
|
30
|
+
/* INT_MAX and INT_MIN are defined in Python.h */
|
|
31
|
+
if (overflow || result > INT_MAX || result < INT_MIN) {
|
|
32
|
+
/* XXX: could be cute and give a different
|
|
33
|
+
message for overflow == -1 */
|
|
34
|
+
PyErr_SetString(PyExc_OverflowError,
|
|
35
|
+
"Python int too large to convert to C int");
|
|
36
|
+
return -1;
|
|
37
|
+
}
|
|
38
|
+
return (int)result;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
#if defined _MSC_VER && _MSC_VER >= 1900
|
|
42
|
+
|
|
43
|
+
#include <stdlib.h>
|
|
44
|
+
|
|
45
|
+
/*
|
|
46
|
+
* Macros to protect CRT calls against instant termination when passed an
|
|
47
|
+
* invalid parameter (https://bugs.python.org/issue23524).
|
|
48
|
+
*/
|
|
49
|
+
extern _invalid_parameter_handler _Py_silent_invalid_parameter_handler;
|
|
50
|
+
#define NPY_BEGIN_SUPPRESS_IPH { _invalid_parameter_handler _Py_old_handler = \
|
|
51
|
+
_set_thread_local_invalid_parameter_handler(_Py_silent_invalid_parameter_handler);
|
|
52
|
+
#define NPY_END_SUPPRESS_IPH _set_thread_local_invalid_parameter_handler(_Py_old_handler); }
|
|
53
|
+
|
|
54
|
+
#else
|
|
55
|
+
|
|
56
|
+
#define NPY_BEGIN_SUPPRESS_IPH
|
|
57
|
+
#define NPY_END_SUPPRESS_IPH
|
|
58
|
+
|
|
59
|
+
#endif /* _MSC_VER >= 1900 */
|
|
60
|
+
|
|
61
|
+
/*
|
|
62
|
+
* PyFile_* compatibility
|
|
63
|
+
*/
|
|
64
|
+
|
|
65
|
+
/*
|
|
66
|
+
* Get a FILE* handle to the file represented by the Python object
|
|
67
|
+
*/
|
|
68
|
+
static inline FILE*
|
|
69
|
+
npy_PyFile_Dup2(PyObject *file, char *mode, npy_off_t *orig_pos)
|
|
70
|
+
{
|
|
71
|
+
int fd, fd2, unbuf;
|
|
72
|
+
Py_ssize_t fd2_tmp;
|
|
73
|
+
PyObject *ret, *os, *io, *io_raw;
|
|
74
|
+
npy_off_t pos;
|
|
75
|
+
FILE *handle;
|
|
76
|
+
|
|
77
|
+
/* Flush first to ensure things end up in the file in the correct order */
|
|
78
|
+
ret = PyObject_CallMethod(file, "flush", "");
|
|
79
|
+
if (ret == NULL) {
|
|
80
|
+
return NULL;
|
|
81
|
+
}
|
|
82
|
+
Py_DECREF(ret);
|
|
83
|
+
fd = PyObject_AsFileDescriptor(file);
|
|
84
|
+
if (fd == -1) {
|
|
85
|
+
return NULL;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/*
|
|
89
|
+
* The handle needs to be dup'd because we have to call fclose
|
|
90
|
+
* at the end
|
|
91
|
+
*/
|
|
92
|
+
os = PyImport_ImportModule("os");
|
|
93
|
+
if (os == NULL) {
|
|
94
|
+
return NULL;
|
|
95
|
+
}
|
|
96
|
+
ret = PyObject_CallMethod(os, "dup", "i", fd);
|
|
97
|
+
Py_DECREF(os);
|
|
98
|
+
if (ret == NULL) {
|
|
99
|
+
return NULL;
|
|
100
|
+
}
|
|
101
|
+
fd2_tmp = PyNumber_AsSsize_t(ret, PyExc_IOError);
|
|
102
|
+
Py_DECREF(ret);
|
|
103
|
+
if (fd2_tmp == -1 && PyErr_Occurred()) {
|
|
104
|
+
return NULL;
|
|
105
|
+
}
|
|
106
|
+
if (fd2_tmp < INT_MIN || fd2_tmp > INT_MAX) {
|
|
107
|
+
PyErr_SetString(PyExc_IOError,
|
|
108
|
+
"Getting an 'int' from os.dup() failed");
|
|
109
|
+
return NULL;
|
|
110
|
+
}
|
|
111
|
+
fd2 = (int)fd2_tmp;
|
|
112
|
+
|
|
113
|
+
/* Convert to FILE* handle */
|
|
114
|
+
#ifdef _WIN32
|
|
115
|
+
NPY_BEGIN_SUPPRESS_IPH
|
|
116
|
+
handle = _fdopen(fd2, mode);
|
|
117
|
+
NPY_END_SUPPRESS_IPH
|
|
118
|
+
#else
|
|
119
|
+
handle = fdopen(fd2, mode);
|
|
120
|
+
#endif
|
|
121
|
+
if (handle == NULL) {
|
|
122
|
+
PyErr_SetString(PyExc_IOError,
|
|
123
|
+
"Getting a FILE* from a Python file object via "
|
|
124
|
+
"_fdopen failed. If you built NumPy, you probably "
|
|
125
|
+
"linked with the wrong debug/release runtime");
|
|
126
|
+
return NULL;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/* Record the original raw file handle position */
|
|
130
|
+
*orig_pos = npy_ftell(handle);
|
|
131
|
+
if (*orig_pos == -1) {
|
|
132
|
+
/* The io module is needed to determine if buffering is used */
|
|
133
|
+
io = PyImport_ImportModule("io");
|
|
134
|
+
if (io == NULL) {
|
|
135
|
+
fclose(handle);
|
|
136
|
+
return NULL;
|
|
137
|
+
}
|
|
138
|
+
/* File object instances of RawIOBase are unbuffered */
|
|
139
|
+
io_raw = PyObject_GetAttrString(io, "RawIOBase");
|
|
140
|
+
Py_DECREF(io);
|
|
141
|
+
if (io_raw == NULL) {
|
|
142
|
+
fclose(handle);
|
|
143
|
+
return NULL;
|
|
144
|
+
}
|
|
145
|
+
unbuf = PyObject_IsInstance(file, io_raw);
|
|
146
|
+
Py_DECREF(io_raw);
|
|
147
|
+
if (unbuf == 1) {
|
|
148
|
+
/* Succeed if the IO is unbuffered */
|
|
149
|
+
return handle;
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
PyErr_SetString(PyExc_IOError, "obtaining file position failed");
|
|
153
|
+
fclose(handle);
|
|
154
|
+
return NULL;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/* Seek raw handle to the Python-side position */
|
|
159
|
+
ret = PyObject_CallMethod(file, "tell", "");
|
|
160
|
+
if (ret == NULL) {
|
|
161
|
+
fclose(handle);
|
|
162
|
+
return NULL;
|
|
163
|
+
}
|
|
164
|
+
pos = PyLong_AsLongLong(ret);
|
|
165
|
+
Py_DECREF(ret);
|
|
166
|
+
if (PyErr_Occurred()) {
|
|
167
|
+
fclose(handle);
|
|
168
|
+
return NULL;
|
|
169
|
+
}
|
|
170
|
+
if (npy_fseek(handle, pos, SEEK_SET) == -1) {
|
|
171
|
+
PyErr_SetString(PyExc_IOError, "seeking file failed");
|
|
172
|
+
fclose(handle);
|
|
173
|
+
return NULL;
|
|
174
|
+
}
|
|
175
|
+
return handle;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
/*
|
|
179
|
+
* Close the dup-ed file handle, and seek the Python one to the current position
|
|
180
|
+
*/
|
|
181
|
+
static inline int
|
|
182
|
+
npy_PyFile_DupClose2(PyObject *file, FILE* handle, npy_off_t orig_pos)
|
|
183
|
+
{
|
|
184
|
+
int fd, unbuf;
|
|
185
|
+
PyObject *ret, *io, *io_raw;
|
|
186
|
+
npy_off_t position;
|
|
187
|
+
|
|
188
|
+
position = npy_ftell(handle);
|
|
189
|
+
|
|
190
|
+
/* Close the FILE* handle */
|
|
191
|
+
fclose(handle);
|
|
192
|
+
|
|
193
|
+
/*
|
|
194
|
+
* Restore original file handle position, in order to not confuse
|
|
195
|
+
* Python-side data structures
|
|
196
|
+
*/
|
|
197
|
+
fd = PyObject_AsFileDescriptor(file);
|
|
198
|
+
if (fd == -1) {
|
|
199
|
+
return -1;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
if (npy_lseek(fd, orig_pos, SEEK_SET) == -1) {
|
|
203
|
+
|
|
204
|
+
/* The io module is needed to determine if buffering is used */
|
|
205
|
+
io = PyImport_ImportModule("io");
|
|
206
|
+
if (io == NULL) {
|
|
207
|
+
return -1;
|
|
208
|
+
}
|
|
209
|
+
/* File object instances of RawIOBase are unbuffered */
|
|
210
|
+
io_raw = PyObject_GetAttrString(io, "RawIOBase");
|
|
211
|
+
Py_DECREF(io);
|
|
212
|
+
if (io_raw == NULL) {
|
|
213
|
+
return -1;
|
|
214
|
+
}
|
|
215
|
+
unbuf = PyObject_IsInstance(file, io_raw);
|
|
216
|
+
Py_DECREF(io_raw);
|
|
217
|
+
if (unbuf == 1) {
|
|
218
|
+
/* Succeed if the IO is unbuffered */
|
|
219
|
+
return 0;
|
|
220
|
+
}
|
|
221
|
+
else {
|
|
222
|
+
PyErr_SetString(PyExc_IOError, "seeking file failed");
|
|
223
|
+
return -1;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
if (position == -1) {
|
|
228
|
+
PyErr_SetString(PyExc_IOError, "obtaining file position failed");
|
|
229
|
+
return -1;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
/* Seek Python-side handle to the FILE* handle position */
|
|
233
|
+
ret = PyObject_CallMethod(file, "seek", NPY_OFF_T_PYFMT "i", position, 0);
|
|
234
|
+
if (ret == NULL) {
|
|
235
|
+
return -1;
|
|
236
|
+
}
|
|
237
|
+
Py_DECREF(ret);
|
|
238
|
+
return 0;
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
static inline PyObject*
|
|
242
|
+
npy_PyFile_OpenFile(PyObject *filename, const char *mode)
|
|
243
|
+
{
|
|
244
|
+
PyObject *open;
|
|
245
|
+
open = PyDict_GetItemString(PyEval_GetBuiltins(), "open");
|
|
246
|
+
if (open == NULL) {
|
|
247
|
+
return NULL;
|
|
248
|
+
}
|
|
249
|
+
return PyObject_CallFunction(open, "Os", filename, mode);
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
static inline int
|
|
253
|
+
npy_PyFile_CloseFile(PyObject *file)
|
|
254
|
+
{
|
|
255
|
+
PyObject *ret;
|
|
256
|
+
|
|
257
|
+
ret = PyObject_CallMethod(file, "close", NULL);
|
|
258
|
+
if (ret == NULL) {
|
|
259
|
+
return -1;
|
|
260
|
+
}
|
|
261
|
+
Py_DECREF(ret);
|
|
262
|
+
return 0;
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
/* This is a copy of _PyErr_ChainExceptions, which
|
|
266
|
+
* is no longer exported from Python3.12
|
|
267
|
+
*/
|
|
268
|
+
static inline void
|
|
269
|
+
npy_PyErr_ChainExceptions(PyObject *exc, PyObject *val, PyObject *tb)
|
|
270
|
+
{
|
|
271
|
+
if (exc == NULL)
|
|
272
|
+
return;
|
|
273
|
+
|
|
274
|
+
if (PyErr_Occurred()) {
|
|
275
|
+
PyObject *exc2, *val2, *tb2;
|
|
276
|
+
PyErr_Fetch(&exc2, &val2, &tb2);
|
|
277
|
+
PyErr_NormalizeException(&exc, &val, &tb);
|
|
278
|
+
if (tb != NULL) {
|
|
279
|
+
PyException_SetTraceback(val, tb);
|
|
280
|
+
Py_DECREF(tb);
|
|
281
|
+
}
|
|
282
|
+
Py_DECREF(exc);
|
|
283
|
+
PyErr_NormalizeException(&exc2, &val2, &tb2);
|
|
284
|
+
PyException_SetContext(val2, val);
|
|
285
|
+
PyErr_Restore(exc2, val2, tb2);
|
|
286
|
+
}
|
|
287
|
+
else {
|
|
288
|
+
PyErr_Restore(exc, val, tb);
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
/* This is a copy of _PyErr_ChainExceptions, with:
|
|
293
|
+
* __cause__ used instead of __context__
|
|
294
|
+
*/
|
|
295
|
+
static inline void
|
|
296
|
+
npy_PyErr_ChainExceptionsCause(PyObject *exc, PyObject *val, PyObject *tb)
|
|
297
|
+
{
|
|
298
|
+
if (exc == NULL)
|
|
299
|
+
return;
|
|
300
|
+
|
|
301
|
+
if (PyErr_Occurred()) {
|
|
302
|
+
PyObject *exc2, *val2, *tb2;
|
|
303
|
+
PyErr_Fetch(&exc2, &val2, &tb2);
|
|
304
|
+
PyErr_NormalizeException(&exc, &val, &tb);
|
|
305
|
+
if (tb != NULL) {
|
|
306
|
+
PyException_SetTraceback(val, tb);
|
|
307
|
+
Py_DECREF(tb);
|
|
308
|
+
}
|
|
309
|
+
Py_DECREF(exc);
|
|
310
|
+
PyErr_NormalizeException(&exc2, &val2, &tb2);
|
|
311
|
+
PyException_SetCause(val2, val);
|
|
312
|
+
PyErr_Restore(exc2, val2, tb2);
|
|
313
|
+
}
|
|
314
|
+
else {
|
|
315
|
+
PyErr_Restore(exc, val, tb);
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
/*
|
|
320
|
+
* PyCObject functions adapted to PyCapsules.
|
|
321
|
+
*
|
|
322
|
+
* The main job here is to get rid of the improved error handling
|
|
323
|
+
* of PyCapsules. It's a shame...
|
|
324
|
+
*/
|
|
325
|
+
static inline PyObject *
|
|
326
|
+
NpyCapsule_FromVoidPtr(void *ptr, void (*dtor)(PyObject *))
|
|
327
|
+
{
|
|
328
|
+
PyObject *ret = PyCapsule_New(ptr, NULL, dtor);
|
|
329
|
+
if (ret == NULL) {
|
|
330
|
+
PyErr_Clear();
|
|
331
|
+
}
|
|
332
|
+
return ret;
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
static inline PyObject *
|
|
336
|
+
NpyCapsule_FromVoidPtrAndDesc(void *ptr, void* context, void (*dtor)(PyObject *))
|
|
337
|
+
{
|
|
338
|
+
PyObject *ret = NpyCapsule_FromVoidPtr(ptr, dtor);
|
|
339
|
+
if (ret != NULL && PyCapsule_SetContext(ret, context) != 0) {
|
|
340
|
+
PyErr_Clear();
|
|
341
|
+
Py_DECREF(ret);
|
|
342
|
+
ret = NULL;
|
|
343
|
+
}
|
|
344
|
+
return ret;
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
static inline void *
|
|
348
|
+
NpyCapsule_AsVoidPtr(PyObject *obj)
|
|
349
|
+
{
|
|
350
|
+
void *ret = PyCapsule_GetPointer(obj, NULL);
|
|
351
|
+
if (ret == NULL) {
|
|
352
|
+
PyErr_Clear();
|
|
353
|
+
}
|
|
354
|
+
return ret;
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
static inline void *
|
|
358
|
+
NpyCapsule_GetDesc(PyObject *obj)
|
|
359
|
+
{
|
|
360
|
+
return PyCapsule_GetContext(obj);
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
static inline int
|
|
364
|
+
NpyCapsule_Check(PyObject *ptr)
|
|
365
|
+
{
|
|
366
|
+
return PyCapsule_CheckExact(ptr);
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
#ifdef __cplusplus
|
|
370
|
+
}
|
|
371
|
+
#endif
|
|
372
|
+
|
|
373
|
+
|
|
374
|
+
#endif /* NUMPY_CORE_INCLUDE_NUMPY_NPY_3KCOMPAT_H_ */
|