numpy 2.4.1__pp311-pypy311_pp73-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.
- 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.pypy311-pp73-darwin.so +0 -0
- numpy/_core/_multiarray_umath.pypy311-pp73-darwin.so +0 -0
- numpy/_core/_operand_flag_tests.pypy311-pp73-darwin.so +0 -0
- numpy/_core/_rational_tests.pypy311-pp73-darwin.so +0 -0
- numpy/_core/_simd.pyi +35 -0
- numpy/_core/_simd.pypy311-pp73-darwin.so +0 -0
- numpy/_core/_string_helpers.py +100 -0
- numpy/_core/_string_helpers.pyi +12 -0
- numpy/_core/_struct_ufunc_tests.pypy311-pp73-darwin.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.pyi +47 -0
- numpy/_core/_umath_tests.pypy311-pp73-darwin.so +0 -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 +377 -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 +1523 -0
- numpy/_core/tests/test_ufunc.py +3405 -0
- numpy/_core/tests/test_umath.py +4962 -0
- numpy/_core/tests/test_umath_accuracy.py +132 -0
- numpy/_core/tests/test_umath_complex.py +631 -0
- numpy/_core/tests/test_unicode.py +369 -0
- numpy/_core/umath.py +60 -0
- numpy/_core/umath.pyi +232 -0
- numpy/_distributor_init.py +15 -0
- numpy/_distributor_init.pyi +1 -0
- numpy/_expired_attrs_2_0.py +78 -0
- numpy/_expired_attrs_2_0.pyi +61 -0
- numpy/_globals.py +121 -0
- numpy/_globals.pyi +17 -0
- numpy/_pyinstaller/__init__.py +0 -0
- numpy/_pyinstaller/__init__.pyi +0 -0
- numpy/_pyinstaller/hook-numpy.py +36 -0
- numpy/_pyinstaller/hook-numpy.pyi +6 -0
- numpy/_pyinstaller/tests/__init__.py +16 -0
- numpy/_pyinstaller/tests/pyinstaller-smoke.py +32 -0
- numpy/_pyinstaller/tests/test_pyinstaller.py +35 -0
- numpy/_pytesttester.py +201 -0
- numpy/_pytesttester.pyi +18 -0
- numpy/_typing/__init__.py +173 -0
- numpy/_typing/_add_docstring.py +153 -0
- numpy/_typing/_array_like.py +106 -0
- numpy/_typing/_char_codes.py +213 -0
- numpy/_typing/_dtype_like.py +114 -0
- numpy/_typing/_extended_precision.py +15 -0
- numpy/_typing/_nbit.py +19 -0
- numpy/_typing/_nbit_base.py +94 -0
- numpy/_typing/_nbit_base.pyi +39 -0
- numpy/_typing/_nested_sequence.py +79 -0
- numpy/_typing/_scalars.py +20 -0
- numpy/_typing/_shape.py +8 -0
- numpy/_typing/_ufunc.py +7 -0
- numpy/_typing/_ufunc.pyi +975 -0
- numpy/_utils/__init__.py +95 -0
- numpy/_utils/__init__.pyi +28 -0
- numpy/_utils/_convertions.py +18 -0
- numpy/_utils/_convertions.pyi +4 -0
- numpy/_utils/_inspect.py +192 -0
- numpy/_utils/_inspect.pyi +70 -0
- numpy/_utils/_pep440.py +486 -0
- numpy/_utils/_pep440.pyi +118 -0
- numpy/char/__init__.py +2 -0
- numpy/char/__init__.pyi +111 -0
- numpy/conftest.py +248 -0
- numpy/core/__init__.py +33 -0
- numpy/core/__init__.pyi +0 -0
- numpy/core/_dtype.py +10 -0
- numpy/core/_dtype.pyi +0 -0
- numpy/core/_dtype_ctypes.py +10 -0
- numpy/core/_dtype_ctypes.pyi +0 -0
- numpy/core/_internal.py +27 -0
- numpy/core/_multiarray_umath.py +57 -0
- numpy/core/_utils.py +21 -0
- numpy/core/arrayprint.py +10 -0
- numpy/core/defchararray.py +10 -0
- numpy/core/einsumfunc.py +10 -0
- numpy/core/fromnumeric.py +10 -0
- numpy/core/function_base.py +10 -0
- numpy/core/getlimits.py +10 -0
- numpy/core/multiarray.py +25 -0
- numpy/core/numeric.py +12 -0
- numpy/core/numerictypes.py +10 -0
- numpy/core/overrides.py +10 -0
- numpy/core/overrides.pyi +7 -0
- numpy/core/records.py +10 -0
- numpy/core/shape_base.py +10 -0
- numpy/core/umath.py +10 -0
- numpy/ctypeslib/__init__.py +13 -0
- numpy/ctypeslib/__init__.pyi +15 -0
- numpy/ctypeslib/_ctypeslib.py +603 -0
- numpy/ctypeslib/_ctypeslib.pyi +236 -0
- numpy/distutils/__init__.py +64 -0
- numpy/distutils/__init__.pyi +4 -0
- numpy/distutils/__pycache__/conv_template.pypy311.pyc +0 -0
- numpy/distutils/_shell_utils.py +87 -0
- numpy/distutils/armccompiler.py +26 -0
- numpy/distutils/ccompiler.py +826 -0
- numpy/distutils/ccompiler_opt.py +2668 -0
- numpy/distutils/checks/cpu_asimd.c +27 -0
- numpy/distutils/checks/cpu_asimddp.c +16 -0
- numpy/distutils/checks/cpu_asimdfhm.c +19 -0
- numpy/distutils/checks/cpu_asimdhp.c +15 -0
- numpy/distutils/checks/cpu_avx.c +20 -0
- numpy/distutils/checks/cpu_avx2.c +20 -0
- numpy/distutils/checks/cpu_avx512_clx.c +22 -0
- numpy/distutils/checks/cpu_avx512_cnl.c +24 -0
- numpy/distutils/checks/cpu_avx512_icl.c +26 -0
- numpy/distutils/checks/cpu_avx512_knl.c +25 -0
- numpy/distutils/checks/cpu_avx512_knm.c +30 -0
- numpy/distutils/checks/cpu_avx512_skx.c +26 -0
- numpy/distutils/checks/cpu_avx512_spr.c +26 -0
- numpy/distutils/checks/cpu_avx512cd.c +20 -0
- numpy/distutils/checks/cpu_avx512f.c +20 -0
- numpy/distutils/checks/cpu_f16c.c +22 -0
- numpy/distutils/checks/cpu_fma3.c +22 -0
- numpy/distutils/checks/cpu_fma4.c +13 -0
- numpy/distutils/checks/cpu_lsx.c +11 -0
- numpy/distutils/checks/cpu_neon.c +19 -0
- numpy/distutils/checks/cpu_neon_fp16.c +11 -0
- numpy/distutils/checks/cpu_neon_vfpv4.c +21 -0
- numpy/distutils/checks/cpu_popcnt.c +32 -0
- numpy/distutils/checks/cpu_rvv.c +13 -0
- numpy/distutils/checks/cpu_sse.c +20 -0
- numpy/distutils/checks/cpu_sse2.c +20 -0
- numpy/distutils/checks/cpu_sse3.c +20 -0
- numpy/distutils/checks/cpu_sse41.c +20 -0
- numpy/distutils/checks/cpu_sse42.c +20 -0
- numpy/distutils/checks/cpu_ssse3.c +20 -0
- numpy/distutils/checks/cpu_sve.c +14 -0
- numpy/distutils/checks/cpu_vsx.c +21 -0
- numpy/distutils/checks/cpu_vsx2.c +13 -0
- numpy/distutils/checks/cpu_vsx3.c +13 -0
- numpy/distutils/checks/cpu_vsx4.c +14 -0
- numpy/distutils/checks/cpu_vx.c +16 -0
- numpy/distutils/checks/cpu_vxe.c +25 -0
- numpy/distutils/checks/cpu_vxe2.c +21 -0
- numpy/distutils/checks/cpu_xop.c +12 -0
- numpy/distutils/checks/extra_avx512bw_mask.c +18 -0
- numpy/distutils/checks/extra_avx512dq_mask.c +16 -0
- numpy/distutils/checks/extra_avx512f_reduce.c +41 -0
- numpy/distutils/checks/extra_vsx3_half_double.c +12 -0
- numpy/distutils/checks/extra_vsx4_mma.c +21 -0
- numpy/distutils/checks/extra_vsx_asm.c +36 -0
- numpy/distutils/checks/test_flags.c +1 -0
- numpy/distutils/command/__init__.py +41 -0
- numpy/distutils/command/autodist.py +148 -0
- numpy/distutils/command/bdist_rpm.py +22 -0
- numpy/distutils/command/build.py +62 -0
- numpy/distutils/command/build_clib.py +469 -0
- numpy/distutils/command/build_ext.py +752 -0
- numpy/distutils/command/build_py.py +31 -0
- numpy/distutils/command/build_scripts.py +49 -0
- numpy/distutils/command/build_src.py +773 -0
- numpy/distutils/command/config.py +516 -0
- numpy/distutils/command/config_compiler.py +126 -0
- numpy/distutils/command/develop.py +15 -0
- numpy/distutils/command/egg_info.py +25 -0
- numpy/distutils/command/install.py +79 -0
- numpy/distutils/command/install_clib.py +40 -0
- numpy/distutils/command/install_data.py +24 -0
- numpy/distutils/command/install_headers.py +25 -0
- numpy/distutils/command/sdist.py +27 -0
- numpy/distutils/conv_template.py +329 -0
- numpy/distutils/core.py +215 -0
- numpy/distutils/cpuinfo.py +683 -0
- numpy/distutils/exec_command.py +315 -0
- numpy/distutils/extension.py +101 -0
- numpy/distutils/fcompiler/__init__.py +1035 -0
- numpy/distutils/fcompiler/absoft.py +158 -0
- numpy/distutils/fcompiler/arm.py +71 -0
- numpy/distutils/fcompiler/compaq.py +120 -0
- numpy/distutils/fcompiler/environment.py +88 -0
- numpy/distutils/fcompiler/fujitsu.py +46 -0
- numpy/distutils/fcompiler/g95.py +42 -0
- numpy/distutils/fcompiler/gnu.py +555 -0
- numpy/distutils/fcompiler/hpux.py +41 -0
- numpy/distutils/fcompiler/ibm.py +97 -0
- numpy/distutils/fcompiler/intel.py +211 -0
- numpy/distutils/fcompiler/lahey.py +45 -0
- numpy/distutils/fcompiler/mips.py +54 -0
- numpy/distutils/fcompiler/nag.py +87 -0
- numpy/distutils/fcompiler/none.py +28 -0
- numpy/distutils/fcompiler/nv.py +53 -0
- numpy/distutils/fcompiler/pathf95.py +33 -0
- numpy/distutils/fcompiler/pg.py +128 -0
- numpy/distutils/fcompiler/sun.py +51 -0
- numpy/distutils/fcompiler/vast.py +52 -0
- numpy/distutils/from_template.py +261 -0
- numpy/distutils/fujitsuccompiler.py +28 -0
- numpy/distutils/intelccompiler.py +106 -0
- numpy/distutils/lib2def.py +116 -0
- numpy/distutils/line_endings.py +77 -0
- numpy/distutils/log.py +111 -0
- numpy/distutils/mingw/gfortran_vs2003_hack.c +6 -0
- numpy/distutils/mingw32ccompiler.py +620 -0
- numpy/distutils/misc_util.py +2484 -0
- numpy/distutils/msvc9compiler.py +63 -0
- numpy/distutils/msvccompiler.py +76 -0
- numpy/distutils/npy_pkg_config.py +441 -0
- numpy/distutils/numpy_distribution.py +17 -0
- numpy/distutils/pathccompiler.py +21 -0
- numpy/distutils/system_info.py +3267 -0
- numpy/distutils/tests/__init__.py +0 -0
- numpy/distutils/tests/test_build_ext.py +74 -0
- numpy/distutils/tests/test_ccompiler_opt.py +808 -0
- numpy/distutils/tests/test_ccompiler_opt_conf.py +176 -0
- numpy/distutils/tests/test_exec_command.py +217 -0
- numpy/distutils/tests/test_fcompiler.py +43 -0
- numpy/distutils/tests/test_fcompiler_gnu.py +55 -0
- numpy/distutils/tests/test_fcompiler_intel.py +30 -0
- numpy/distutils/tests/test_fcompiler_nagfor.py +22 -0
- numpy/distutils/tests/test_from_template.py +44 -0
- numpy/distutils/tests/test_log.py +34 -0
- numpy/distutils/tests/test_mingw32ccompiler.py +47 -0
- numpy/distutils/tests/test_misc_util.py +88 -0
- numpy/distutils/tests/test_npy_pkg_config.py +84 -0
- numpy/distutils/tests/test_shell_utils.py +79 -0
- numpy/distutils/tests/test_system_info.py +334 -0
- numpy/distutils/tests/utilities.py +90 -0
- numpy/distutils/unixccompiler.py +141 -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.pypy311-pp73-darwin.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 +5760 -0
- numpy/lib/_function_base_impl.pyi +2324 -0
- numpy/lib/_histograms_impl.py +1085 -0
- numpy/lib/_histograms_impl.pyi +40 -0
- numpy/lib/_index_tricks_impl.py +1048 -0
- numpy/lib/_index_tricks_impl.pyi +267 -0
- numpy/lib/_iotools.py +900 -0
- numpy/lib/_iotools.pyi +116 -0
- numpy/lib/_nanfunctions_impl.py +2006 -0
- numpy/lib/_nanfunctions_impl.pyi +48 -0
- numpy/lib/_npyio_impl.py +2583 -0
- numpy/lib/_npyio_impl.pyi +299 -0
- numpy/lib/_polynomial_impl.py +1465 -0
- numpy/lib/_polynomial_impl.pyi +338 -0
- numpy/lib/_scimath_impl.py +642 -0
- numpy/lib/_scimath_impl.pyi +93 -0
- numpy/lib/_shape_base_impl.py +1289 -0
- numpy/lib/_shape_base_impl.pyi +236 -0
- numpy/lib/_stride_tricks_impl.py +582 -0
- numpy/lib/_stride_tricks_impl.pyi +73 -0
- numpy/lib/_twodim_base_impl.py +1201 -0
- numpy/lib/_twodim_base_impl.pyi +408 -0
- numpy/lib/_type_check_impl.py +710 -0
- numpy/lib/_type_check_impl.pyi +348 -0
- numpy/lib/_ufunclike_impl.py +199 -0
- numpy/lib/_ufunclike_impl.pyi +60 -0
- numpy/lib/_user_array_impl.py +310 -0
- numpy/lib/_user_array_impl.pyi +226 -0
- numpy/lib/_utils_impl.py +784 -0
- numpy/lib/_utils_impl.pyi +22 -0
- numpy/lib/_version.py +153 -0
- numpy/lib/_version.pyi +17 -0
- numpy/lib/array_utils.py +7 -0
- numpy/lib/array_utils.pyi +6 -0
- numpy/lib/format.py +24 -0
- numpy/lib/format.pyi +24 -0
- numpy/lib/introspect.py +94 -0
- numpy/lib/introspect.pyi +3 -0
- numpy/lib/mixins.py +180 -0
- numpy/lib/mixins.pyi +78 -0
- numpy/lib/npyio.py +1 -0
- numpy/lib/npyio.pyi +5 -0
- numpy/lib/recfunctions.py +1681 -0
- numpy/lib/recfunctions.pyi +444 -0
- numpy/lib/scimath.py +13 -0
- numpy/lib/scimath.pyi +12 -0
- numpy/lib/stride_tricks.py +1 -0
- numpy/lib/stride_tricks.pyi +4 -0
- numpy/lib/tests/__init__.py +0 -0
- numpy/lib/tests/data/py2-np0-objarr.npy +0 -0
- numpy/lib/tests/data/py2-objarr.npy +0 -0
- numpy/lib/tests/data/py2-objarr.npz +0 -0
- numpy/lib/tests/data/py3-objarr.npy +0 -0
- numpy/lib/tests/data/py3-objarr.npz +0 -0
- numpy/lib/tests/data/python3.npy +0 -0
- numpy/lib/tests/data/win64python2.npy +0 -0
- numpy/lib/tests/test__datasource.py +328 -0
- numpy/lib/tests/test__iotools.py +358 -0
- numpy/lib/tests/test__version.py +64 -0
- numpy/lib/tests/test_array_utils.py +32 -0
- numpy/lib/tests/test_arraypad.py +1427 -0
- numpy/lib/tests/test_arraysetops.py +1302 -0
- numpy/lib/tests/test_arrayterator.py +45 -0
- numpy/lib/tests/test_format.py +1054 -0
- numpy/lib/tests/test_function_base.py +4750 -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.pyi +60 -0
- numpy/linalg/_umath_linalg.pypy311-pp73-darwin.so +0 -0
- numpy/linalg/lapack_lite.pyi +143 -0
- numpy/linalg/lapack_lite.pypy311-pp73-darwin.so +0 -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.pxd +29 -0
- numpy/random/_bounded_integers.pyi +1 -0
- numpy/random/_bounded_integers.pypy311-pp73-darwin.so +0 -0
- numpy/random/_common.pxd +110 -0
- numpy/random/_common.pyi +16 -0
- numpy/random/_common.pypy311-pp73-darwin.so +0 -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.pyi +862 -0
- numpy/random/_generator.pypy311-pp73-darwin.so +0 -0
- numpy/random/_mt19937.pyi +27 -0
- numpy/random/_mt19937.pypy311-pp73-darwin.so +0 -0
- numpy/random/_pcg64.pyi +41 -0
- numpy/random/_pcg64.pypy311-pp73-darwin.so +0 -0
- numpy/random/_philox.pyi +36 -0
- numpy/random/_philox.pypy311-pp73-darwin.so +0 -0
- numpy/random/_pickle.py +88 -0
- numpy/random/_pickle.pyi +43 -0
- numpy/random/_sfc64.pyi +25 -0
- numpy/random/_sfc64.pypy311-pp73-darwin.so +0 -0
- numpy/random/bit_generator.pxd +40 -0
- numpy/random/bit_generator.pyi +123 -0
- numpy/random/bit_generator.pypy311-pp73-darwin.so +0 -0
- numpy/random/c_distributions.pxd +119 -0
- numpy/random/lib/libnpyrandom.a +0 -0
- numpy/random/mtrand.pyi +759 -0
- numpy/random/mtrand.pypy311-pp73-darwin.so +0 -0
- numpy/random/tests/__init__.py +0 -0
- numpy/random/tests/data/__init__.py +0 -0
- numpy/random/tests/data/generator_pcg64_np121.pkl.gz +0 -0
- numpy/random/tests/data/generator_pcg64_np126.pkl.gz +0 -0
- numpy/random/tests/data/mt19937-testset-1.csv +1001 -0
- numpy/random/tests/data/mt19937-testset-2.csv +1001 -0
- numpy/random/tests/data/pcg64-testset-1.csv +1001 -0
- numpy/random/tests/data/pcg64-testset-2.csv +1001 -0
- numpy/random/tests/data/pcg64dxsm-testset-1.csv +1001 -0
- numpy/random/tests/data/pcg64dxsm-testset-2.csv +1001 -0
- numpy/random/tests/data/philox-testset-1.csv +1001 -0
- numpy/random/tests/data/philox-testset-2.csv +1001 -0
- numpy/random/tests/data/sfc64-testset-1.csv +1001 -0
- numpy/random/tests/data/sfc64-testset-2.csv +1001 -0
- numpy/random/tests/data/sfc64_np126.pkl.gz +0 -0
- numpy/random/tests/test_direct.py +595 -0
- numpy/random/tests/test_extending.py +131 -0
- numpy/random/tests/test_generator_mt19937.py +2825 -0
- numpy/random/tests/test_generator_mt19937_regressions.py +221 -0
- numpy/random/tests/test_random.py +1724 -0
- numpy/random/tests/test_randomstate.py +2099 -0
- numpy/random/tests/test_randomstate_regression.py +213 -0
- numpy/random/tests/test_regression.py +175 -0
- numpy/random/tests/test_seed_sequence.py +79 -0
- numpy/random/tests/test_smoke.py +882 -0
- numpy/rec/__init__.py +2 -0
- numpy/rec/__init__.pyi +23 -0
- numpy/strings/__init__.py +2 -0
- numpy/strings/__init__.pyi +97 -0
- numpy/testing/__init__.py +22 -0
- numpy/testing/__init__.pyi +107 -0
- numpy/testing/_private/__init__.py +0 -0
- numpy/testing/_private/__init__.pyi +0 -0
- numpy/testing/_private/extbuild.py +250 -0
- numpy/testing/_private/extbuild.pyi +25 -0
- numpy/testing/_private/utils.py +2830 -0
- numpy/testing/_private/utils.pyi +505 -0
- numpy/testing/overrides.py +84 -0
- numpy/testing/overrides.pyi +10 -0
- numpy/testing/print_coercion_tables.py +207 -0
- numpy/testing/print_coercion_tables.pyi +26 -0
- numpy/testing/tests/__init__.py +0 -0
- numpy/testing/tests/test_utils.py +2123 -0
- numpy/tests/__init__.py +0 -0
- numpy/tests/test__all__.py +10 -0
- numpy/tests/test_configtool.py +51 -0
- numpy/tests/test_ctypeslib.py +383 -0
- numpy/tests/test_lazyloading.py +42 -0
- numpy/tests/test_matlib.py +59 -0
- numpy/tests/test_numpy_config.py +47 -0
- numpy/tests/test_numpy_version.py +54 -0
- numpy/tests/test_public_api.py +807 -0
- numpy/tests/test_reloading.py +76 -0
- numpy/tests/test_scripts.py +48 -0
- numpy/tests/test_warnings.py +79 -0
- numpy/typing/__init__.py +233 -0
- numpy/typing/__init__.pyi +3 -0
- numpy/typing/mypy_plugin.py +200 -0
- numpy/typing/tests/__init__.py +0 -0
- numpy/typing/tests/data/fail/arithmetic.pyi +126 -0
- numpy/typing/tests/data/fail/array_constructors.pyi +34 -0
- numpy/typing/tests/data/fail/array_like.pyi +15 -0
- numpy/typing/tests/data/fail/array_pad.pyi +6 -0
- numpy/typing/tests/data/fail/arrayprint.pyi +15 -0
- numpy/typing/tests/data/fail/arrayterator.pyi +14 -0
- numpy/typing/tests/data/fail/bitwise_ops.pyi +17 -0
- numpy/typing/tests/data/fail/char.pyi +63 -0
- numpy/typing/tests/data/fail/chararray.pyi +61 -0
- numpy/typing/tests/data/fail/comparisons.pyi +27 -0
- numpy/typing/tests/data/fail/constants.pyi +3 -0
- numpy/typing/tests/data/fail/datasource.pyi +16 -0
- numpy/typing/tests/data/fail/dtype.pyi +17 -0
- numpy/typing/tests/data/fail/einsumfunc.pyi +12 -0
- numpy/typing/tests/data/fail/flatiter.pyi +38 -0
- numpy/typing/tests/data/fail/fromnumeric.pyi +148 -0
- numpy/typing/tests/data/fail/histograms.pyi +12 -0
- numpy/typing/tests/data/fail/index_tricks.pyi +14 -0
- numpy/typing/tests/data/fail/lib_function_base.pyi +60 -0
- numpy/typing/tests/data/fail/lib_polynomial.pyi +29 -0
- numpy/typing/tests/data/fail/lib_utils.pyi +3 -0
- numpy/typing/tests/data/fail/lib_version.pyi +6 -0
- numpy/typing/tests/data/fail/linalg.pyi +52 -0
- numpy/typing/tests/data/fail/ma.pyi +155 -0
- numpy/typing/tests/data/fail/memmap.pyi +5 -0
- numpy/typing/tests/data/fail/modules.pyi +17 -0
- numpy/typing/tests/data/fail/multiarray.pyi +52 -0
- numpy/typing/tests/data/fail/ndarray.pyi +11 -0
- numpy/typing/tests/data/fail/ndarray_misc.pyi +49 -0
- numpy/typing/tests/data/fail/nditer.pyi +8 -0
- numpy/typing/tests/data/fail/nested_sequence.pyi +17 -0
- numpy/typing/tests/data/fail/npyio.pyi +24 -0
- numpy/typing/tests/data/fail/numerictypes.pyi +5 -0
- numpy/typing/tests/data/fail/random.pyi +62 -0
- numpy/typing/tests/data/fail/rec.pyi +17 -0
- numpy/typing/tests/data/fail/scalars.pyi +86 -0
- numpy/typing/tests/data/fail/shape.pyi +7 -0
- numpy/typing/tests/data/fail/shape_base.pyi +8 -0
- numpy/typing/tests/data/fail/stride_tricks.pyi +9 -0
- numpy/typing/tests/data/fail/strings.pyi +52 -0
- numpy/typing/tests/data/fail/testing.pyi +28 -0
- numpy/typing/tests/data/fail/twodim_base.pyi +39 -0
- numpy/typing/tests/data/fail/type_check.pyi +12 -0
- numpy/typing/tests/data/fail/ufunc_config.pyi +21 -0
- numpy/typing/tests/data/fail/ufunclike.pyi +21 -0
- numpy/typing/tests/data/fail/ufuncs.pyi +17 -0
- numpy/typing/tests/data/fail/warnings_and_errors.pyi +5 -0
- numpy/typing/tests/data/misc/extended_precision.pyi +9 -0
- numpy/typing/tests/data/mypy.ini +8 -0
- numpy/typing/tests/data/pass/arithmetic.py +614 -0
- numpy/typing/tests/data/pass/array_constructors.py +138 -0
- numpy/typing/tests/data/pass/array_like.py +43 -0
- numpy/typing/tests/data/pass/arrayprint.py +37 -0
- numpy/typing/tests/data/pass/arrayterator.py +28 -0
- numpy/typing/tests/data/pass/bitwise_ops.py +131 -0
- numpy/typing/tests/data/pass/comparisons.py +316 -0
- numpy/typing/tests/data/pass/dtype.py +57 -0
- numpy/typing/tests/data/pass/einsumfunc.py +36 -0
- numpy/typing/tests/data/pass/flatiter.py +26 -0
- numpy/typing/tests/data/pass/fromnumeric.py +272 -0
- numpy/typing/tests/data/pass/index_tricks.py +62 -0
- numpy/typing/tests/data/pass/lib_user_array.py +22 -0
- numpy/typing/tests/data/pass/lib_utils.py +19 -0
- numpy/typing/tests/data/pass/lib_version.py +18 -0
- numpy/typing/tests/data/pass/literal.py +52 -0
- numpy/typing/tests/data/pass/ma.py +199 -0
- numpy/typing/tests/data/pass/mod.py +149 -0
- numpy/typing/tests/data/pass/modules.py +45 -0
- numpy/typing/tests/data/pass/multiarray.py +77 -0
- numpy/typing/tests/data/pass/ndarray_conversion.py +81 -0
- numpy/typing/tests/data/pass/ndarray_misc.py +199 -0
- numpy/typing/tests/data/pass/ndarray_shape_manipulation.py +47 -0
- numpy/typing/tests/data/pass/nditer.py +4 -0
- numpy/typing/tests/data/pass/numeric.py +90 -0
- numpy/typing/tests/data/pass/numerictypes.py +17 -0
- numpy/typing/tests/data/pass/random.py +1498 -0
- numpy/typing/tests/data/pass/recfunctions.py +164 -0
- numpy/typing/tests/data/pass/scalars.py +249 -0
- numpy/typing/tests/data/pass/shape.py +19 -0
- numpy/typing/tests/data/pass/simple.py +170 -0
- numpy/typing/tests/data/pass/ufunc_config.py +64 -0
- numpy/typing/tests/data/pass/ufunclike.py +52 -0
- numpy/typing/tests/data/pass/ufuncs.py +16 -0
- numpy/typing/tests/data/pass/warnings_and_errors.py +6 -0
- numpy/typing/tests/data/reveal/arithmetic.pyi +719 -0
- numpy/typing/tests/data/reveal/array_api_info.pyi +70 -0
- numpy/typing/tests/data/reveal/array_constructors.pyi +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.1.dist-info/METADATA +139 -0
- numpy-2.4.1.dist-info/RECORD +1039 -0
- numpy-2.4.1.dist-info/WHEEL +6 -0
- numpy-2.4.1.dist-info/entry_points.txt +13 -0
- numpy-2.4.1.dist-info/licenses/LICENSE.txt +935 -0
- numpy-2.4.1.dist-info/licenses/numpy/_core/include/numpy/libdivide/LICENSE.txt +21 -0
- numpy-2.4.1.dist-info/licenses/numpy/_core/src/common/pythoncapi-compat/COPYING +14 -0
- numpy-2.4.1.dist-info/licenses/numpy/_core/src/highway/LICENSE +371 -0
- numpy-2.4.1.dist-info/licenses/numpy/_core/src/multiarray/dragon4_LICENSE.txt +27 -0
- numpy-2.4.1.dist-info/licenses/numpy/_core/src/npysort/x86-simd-sort/LICENSE.md +28 -0
- numpy-2.4.1.dist-info/licenses/numpy/_core/src/umath/svml/LICENSE +30 -0
- numpy-2.4.1.dist-info/licenses/numpy/fft/pocketfft/LICENSE.md +25 -0
- numpy-2.4.1.dist-info/licenses/numpy/linalg/lapack_lite/LICENSE.txt +48 -0
- numpy-2.4.1.dist-info/licenses/numpy/ma/LICENSE +24 -0
- numpy-2.4.1.dist-info/licenses/numpy/random/LICENSE.md +71 -0
- numpy-2.4.1.dist-info/licenses/numpy/random/src/distributions/LICENSE.md +61 -0
- numpy-2.4.1.dist-info/licenses/numpy/random/src/mt19937/LICENSE.md +61 -0
- numpy-2.4.1.dist-info/licenses/numpy/random/src/pcg64/LICENSE.md +22 -0
- numpy-2.4.1.dist-info/licenses/numpy/random/src/philox/LICENSE.md +31 -0
- numpy-2.4.1.dist-info/licenses/numpy/random/src/sfc64/LICENSE.md +27 -0
- numpy-2.4.1.dist-info/licenses/numpy/random/src/splitmix64/LICENSE.md +9 -0
|
@@ -0,0 +1,547 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* The public DType API
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
#ifndef NUMPY_CORE_INCLUDE_NUMPY___DTYPE_API_H_
|
|
6
|
+
#define NUMPY_CORE_INCLUDE_NUMPY___DTYPE_API_H_
|
|
7
|
+
|
|
8
|
+
struct PyArrayMethodObject_tag;
|
|
9
|
+
|
|
10
|
+
/*
|
|
11
|
+
* Largely opaque struct for DType classes (i.e. metaclass instances).
|
|
12
|
+
* The internal definition is currently in `ndarraytypes.h` (export is a bit
|
|
13
|
+
* more complex because `PyArray_Descr` is a DTypeMeta internally but not
|
|
14
|
+
* externally).
|
|
15
|
+
*/
|
|
16
|
+
#if !(defined(NPY_INTERNAL_BUILD) && NPY_INTERNAL_BUILD)
|
|
17
|
+
|
|
18
|
+
#ifndef Py_LIMITED_API
|
|
19
|
+
|
|
20
|
+
typedef struct PyArray_DTypeMeta_tag {
|
|
21
|
+
PyHeapTypeObject super;
|
|
22
|
+
|
|
23
|
+
/*
|
|
24
|
+
* Most DTypes will have a singleton default instance, for the
|
|
25
|
+
* parametric legacy DTypes (bytes, string, void, datetime) this
|
|
26
|
+
* may be a pointer to the *prototype* instance?
|
|
27
|
+
*/
|
|
28
|
+
PyArray_Descr *singleton;
|
|
29
|
+
/* Copy of the legacy DTypes type number, usually invalid. */
|
|
30
|
+
int type_num;
|
|
31
|
+
|
|
32
|
+
/* The type object of the scalar instances (may be NULL?) */
|
|
33
|
+
PyTypeObject *scalar_type;
|
|
34
|
+
/*
|
|
35
|
+
* DType flags to signal legacy, parametric, or
|
|
36
|
+
* abstract. But plenty of space for additional information/flags.
|
|
37
|
+
*/
|
|
38
|
+
npy_uint64 flags;
|
|
39
|
+
|
|
40
|
+
/*
|
|
41
|
+
* Use indirection in order to allow a fixed size for this struct.
|
|
42
|
+
* A stable ABI size makes creating a static DType less painful
|
|
43
|
+
* while also ensuring flexibility for all opaque API (with one
|
|
44
|
+
* indirection due the pointer lookup).
|
|
45
|
+
*/
|
|
46
|
+
void *dt_slots;
|
|
47
|
+
/* Allow growing (at the moment also beyond this) */
|
|
48
|
+
void *reserved[3];
|
|
49
|
+
} PyArray_DTypeMeta;
|
|
50
|
+
|
|
51
|
+
#else
|
|
52
|
+
|
|
53
|
+
typedef PyTypeObject PyArray_DTypeMeta;
|
|
54
|
+
|
|
55
|
+
#endif /* Py_LIMITED_API */
|
|
56
|
+
|
|
57
|
+
#endif /* not internal build */
|
|
58
|
+
|
|
59
|
+
/*
|
|
60
|
+
* ******************************************************
|
|
61
|
+
* ArrayMethod API (Casting and UFuncs)
|
|
62
|
+
* ******************************************************
|
|
63
|
+
*/
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
typedef enum {
|
|
67
|
+
/* Flag for whether the GIL is required */
|
|
68
|
+
NPY_METH_REQUIRES_PYAPI = 1 << 0,
|
|
69
|
+
/*
|
|
70
|
+
* Some functions cannot set floating point error flags, this flag
|
|
71
|
+
* gives us the option (not requirement) to skip floating point error
|
|
72
|
+
* setup/check. No function should set error flags and ignore them
|
|
73
|
+
* since it would interfere with chaining operations (e.g. casting).
|
|
74
|
+
*/
|
|
75
|
+
NPY_METH_NO_FLOATINGPOINT_ERRORS = 1 << 1,
|
|
76
|
+
/* Whether the method supports unaligned access (not runtime) */
|
|
77
|
+
NPY_METH_SUPPORTS_UNALIGNED = 1 << 2,
|
|
78
|
+
/*
|
|
79
|
+
* Used for reductions to allow reordering the operation. At this point
|
|
80
|
+
* assume that if set, it also applies to normal operations though!
|
|
81
|
+
*/
|
|
82
|
+
NPY_METH_IS_REORDERABLE = 1 << 3,
|
|
83
|
+
/*
|
|
84
|
+
* Private flag for now for *logic* functions. The logical functions
|
|
85
|
+
* `logical_or` and `logical_and` can always cast the inputs to booleans
|
|
86
|
+
* "safely" (because that is how the cast to bool is defined).
|
|
87
|
+
* @seberg: I am not sure this is the best way to handle this, so its
|
|
88
|
+
* private for now (also it is very limited anyway).
|
|
89
|
+
* There is one "exception". NA aware dtypes cannot cast to bool
|
|
90
|
+
* (hopefully), so the `??->?` loop should error even with this flag.
|
|
91
|
+
* But a second NA fallback loop will be necessary.
|
|
92
|
+
*/
|
|
93
|
+
_NPY_METH_FORCE_CAST_INPUTS = 1 << 17,
|
|
94
|
+
|
|
95
|
+
/* All flags which can change at runtime */
|
|
96
|
+
NPY_METH_RUNTIME_FLAGS = (
|
|
97
|
+
NPY_METH_REQUIRES_PYAPI |
|
|
98
|
+
NPY_METH_NO_FLOATINGPOINT_ERRORS),
|
|
99
|
+
} NPY_ARRAYMETHOD_FLAGS;
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
typedef enum {
|
|
103
|
+
/* Casting via same_value logic */
|
|
104
|
+
NPY_SAME_VALUE_CONTEXT_FLAG=1,
|
|
105
|
+
} NPY_ARRAYMETHOD_CONTEXT_FLAGS;
|
|
106
|
+
|
|
107
|
+
typedef struct PyArrayMethod_Context_tag {
|
|
108
|
+
/* The caller, which is typically the original ufunc. May be NULL */
|
|
109
|
+
PyObject *caller;
|
|
110
|
+
/* The method "self". Currently an opaque object. */
|
|
111
|
+
struct PyArrayMethodObject_tag *method;
|
|
112
|
+
|
|
113
|
+
/* Operand descriptors, filled in by resolve_descriptors */
|
|
114
|
+
PyArray_Descr *const *descriptors;
|
|
115
|
+
#if NPY_FEATURE_VERSION > NPY_2_3_API_VERSION
|
|
116
|
+
void * _reserved;
|
|
117
|
+
/*
|
|
118
|
+
* Optional flag to pass information into the inner loop
|
|
119
|
+
* NPY_ARRAYMETHOD_CONTEXT_FLAGS
|
|
120
|
+
*/
|
|
121
|
+
uint64_t flags;
|
|
122
|
+
|
|
123
|
+
/*
|
|
124
|
+
* Optional run-time parameters to pass to the loop (currently used in sorting).
|
|
125
|
+
* Fixed parameters are expected to be passed via auxdata.
|
|
126
|
+
*/
|
|
127
|
+
void *parameters;
|
|
128
|
+
|
|
129
|
+
/* Structure may grow (this is harmless for DType authors) */
|
|
130
|
+
#endif
|
|
131
|
+
} PyArrayMethod_Context;
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
/*
|
|
135
|
+
* The main object for creating a new ArrayMethod. We use the typical `slots`
|
|
136
|
+
* mechanism used by the Python limited API (see below for the slot defs).
|
|
137
|
+
*/
|
|
138
|
+
typedef struct {
|
|
139
|
+
const char *name;
|
|
140
|
+
int nin, nout;
|
|
141
|
+
NPY_CASTING casting;
|
|
142
|
+
NPY_ARRAYMETHOD_FLAGS flags;
|
|
143
|
+
PyArray_DTypeMeta **dtypes;
|
|
144
|
+
PyType_Slot *slots;
|
|
145
|
+
} PyArrayMethod_Spec;
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
// This is used for the convenience function `PyUFunc_AddLoopsFromSpecs`
|
|
149
|
+
typedef struct {
|
|
150
|
+
const char *name;
|
|
151
|
+
PyArrayMethod_Spec *spec;
|
|
152
|
+
} PyUFunc_LoopSlot;
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
/*
|
|
156
|
+
* ArrayMethod slots
|
|
157
|
+
* -----------------
|
|
158
|
+
*
|
|
159
|
+
* SLOTS IDs For the ArrayMethod creation, once fully public, IDs are fixed
|
|
160
|
+
* but can be deprecated and arbitrarily extended.
|
|
161
|
+
*/
|
|
162
|
+
#define _NPY_METH_resolve_descriptors_with_scalars 1
|
|
163
|
+
#define NPY_METH_resolve_descriptors 2
|
|
164
|
+
#define NPY_METH_get_loop 3
|
|
165
|
+
#define NPY_METH_get_reduction_initial 4
|
|
166
|
+
/* specific loops for constructions/default get_loop: */
|
|
167
|
+
#define NPY_METH_strided_loop 5
|
|
168
|
+
#define NPY_METH_contiguous_loop 6
|
|
169
|
+
#define NPY_METH_unaligned_strided_loop 7
|
|
170
|
+
#define NPY_METH_unaligned_contiguous_loop 8
|
|
171
|
+
#define NPY_METH_contiguous_indexed_loop 9
|
|
172
|
+
#define _NPY_METH_static_data 10
|
|
173
|
+
|
|
174
|
+
/*
|
|
175
|
+
* The resolve descriptors function, must be able to handle NULL values for
|
|
176
|
+
* all output (but not input) `given_descrs` and fill `loop_descrs`.
|
|
177
|
+
* Return -1 on error or 0 if the operation is not possible without an error
|
|
178
|
+
* set. (This may still be in flux.)
|
|
179
|
+
* Otherwise must return the "casting safety", for normal functions, this is
|
|
180
|
+
* almost always "safe" (or even "equivalent"?).
|
|
181
|
+
*
|
|
182
|
+
* `resolve_descriptors` is optional if all output DTypes are non-parametric.
|
|
183
|
+
*/
|
|
184
|
+
typedef NPY_CASTING (PyArrayMethod_ResolveDescriptors)(
|
|
185
|
+
/* "method" is currently opaque (necessary e.g. to wrap Python) */
|
|
186
|
+
struct PyArrayMethodObject_tag *method,
|
|
187
|
+
/* DTypes the method was created for */
|
|
188
|
+
PyArray_DTypeMeta *const *dtypes,
|
|
189
|
+
/* Input descriptors (instances). Outputs may be NULL. */
|
|
190
|
+
PyArray_Descr *const *given_descrs,
|
|
191
|
+
/* Exact loop descriptors to use, must not hold references on error */
|
|
192
|
+
PyArray_Descr **loop_descrs,
|
|
193
|
+
npy_intp *view_offset);
|
|
194
|
+
|
|
195
|
+
|
|
196
|
+
/*
|
|
197
|
+
* Rarely needed, slightly more powerful version of `resolve_descriptors`.
|
|
198
|
+
* See also `PyArrayMethod_ResolveDescriptors` for details on shared arguments.
|
|
199
|
+
*
|
|
200
|
+
* NOTE: This function is private now as it is unclear how and what to pass
|
|
201
|
+
* exactly as additional information to allow dealing with the scalars.
|
|
202
|
+
* See also gh-24915.
|
|
203
|
+
*/
|
|
204
|
+
typedef NPY_CASTING (PyArrayMethod_ResolveDescriptorsWithScalar)(
|
|
205
|
+
struct PyArrayMethodObject_tag *method,
|
|
206
|
+
PyArray_DTypeMeta *const *dtypes,
|
|
207
|
+
/* Unlike above, these can have any DType and we may allow NULL. */
|
|
208
|
+
PyArray_Descr *const *given_descrs,
|
|
209
|
+
/*
|
|
210
|
+
* Input scalars or NULL. Only ever passed for python scalars.
|
|
211
|
+
* WARNING: In some cases, a loop may be explicitly selected and the
|
|
212
|
+
* value passed is not available (NULL) or does not have the
|
|
213
|
+
* expected type.
|
|
214
|
+
*/
|
|
215
|
+
PyObject *const *input_scalars,
|
|
216
|
+
PyArray_Descr **loop_descrs,
|
|
217
|
+
npy_intp *view_offset);
|
|
218
|
+
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
typedef int (PyArrayMethod_StridedLoop)(PyArrayMethod_Context *context,
|
|
222
|
+
char *const *data, const npy_intp *dimensions, const npy_intp *strides,
|
|
223
|
+
NpyAuxData *transferdata);
|
|
224
|
+
|
|
225
|
+
|
|
226
|
+
typedef int (PyArrayMethod_GetLoop)(
|
|
227
|
+
PyArrayMethod_Context *context,
|
|
228
|
+
int aligned, int move_references,
|
|
229
|
+
const npy_intp *strides,
|
|
230
|
+
PyArrayMethod_StridedLoop **out_loop,
|
|
231
|
+
NpyAuxData **out_transferdata,
|
|
232
|
+
NPY_ARRAYMETHOD_FLAGS *flags);
|
|
233
|
+
|
|
234
|
+
/**
|
|
235
|
+
* Query an ArrayMethod for the initial value for use in reduction.
|
|
236
|
+
*
|
|
237
|
+
* @param context The arraymethod context, mainly to access the descriptors.
|
|
238
|
+
* @param reduction_is_empty Whether the reduction is empty. When it is, the
|
|
239
|
+
* value returned may differ. In this case it is a "default" value that
|
|
240
|
+
* may differ from the "identity" value normally used. For example:
|
|
241
|
+
* - `0.0` is the default for `sum([])`. But `-0.0` is the correct
|
|
242
|
+
* identity otherwise as it preserves the sign for `sum([-0.0])`.
|
|
243
|
+
* - We use no identity for object, but return the default of `0` and `1`
|
|
244
|
+
* for the empty `sum([], dtype=object)` and `prod([], dtype=object)`.
|
|
245
|
+
* This allows `np.sum(np.array(["a", "b"], dtype=object))` to work.
|
|
246
|
+
* - `-inf` or `INT_MIN` for `max` is an identity, but at least `INT_MIN`
|
|
247
|
+
* not a good *default* when there are no items.
|
|
248
|
+
* @param initial Pointer to initial data to be filled (if possible)
|
|
249
|
+
*
|
|
250
|
+
* @returns -1, 0, or 1 indicating error, no initial value, and initial being
|
|
251
|
+
* successfully filled. Errors must not be given where 0 is correct, NumPy
|
|
252
|
+
* may call this even when not strictly necessary.
|
|
253
|
+
*/
|
|
254
|
+
typedef int (PyArrayMethod_GetReductionInitial)(
|
|
255
|
+
PyArrayMethod_Context *context, npy_bool reduction_is_empty,
|
|
256
|
+
void *initial);
|
|
257
|
+
|
|
258
|
+
/*
|
|
259
|
+
* The following functions are only used by the wrapping array method defined
|
|
260
|
+
* in umath/wrapping_array_method.c
|
|
261
|
+
*/
|
|
262
|
+
|
|
263
|
+
|
|
264
|
+
/*
|
|
265
|
+
* The function to convert the given descriptors (passed in to
|
|
266
|
+
* `resolve_descriptors`) and translates them for the wrapped loop.
|
|
267
|
+
* The new descriptors MUST be viewable with the old ones, `NULL` must be
|
|
268
|
+
* supported (for outputs) and should normally be forwarded.
|
|
269
|
+
*
|
|
270
|
+
* The function must clean up on error.
|
|
271
|
+
*
|
|
272
|
+
* NOTE: We currently assume that this translation gives "viewable" results.
|
|
273
|
+
* I.e. there is no additional casting related to the wrapping process.
|
|
274
|
+
* In principle that could be supported, but not sure it is useful.
|
|
275
|
+
* This currently also means that e.g. alignment must apply identically
|
|
276
|
+
* to the new dtypes.
|
|
277
|
+
*
|
|
278
|
+
* TODO: Due to the fact that `resolve_descriptors` is also used for `can_cast`
|
|
279
|
+
* there is no way to "pass out" the result of this function. This means
|
|
280
|
+
* it will be called twice for every ufunc call.
|
|
281
|
+
* (I am considering including `auxdata` as an "optional" parameter to
|
|
282
|
+
* `resolve_descriptors`, so that it can be filled there if not NULL.)
|
|
283
|
+
*/
|
|
284
|
+
typedef int (PyArrayMethod_TranslateGivenDescriptors)(int nin, int nout,
|
|
285
|
+
PyArray_DTypeMeta *const wrapped_dtypes[],
|
|
286
|
+
PyArray_Descr *const given_descrs[], PyArray_Descr *new_descrs[]);
|
|
287
|
+
|
|
288
|
+
/**
|
|
289
|
+
* The function to convert the actual loop descriptors (as returned by the
|
|
290
|
+
* original `resolve_descriptors` function) to the ones the output array
|
|
291
|
+
* should use.
|
|
292
|
+
* This function must return "viewable" types, it must not mutate them in any
|
|
293
|
+
* form that would break the inner-loop logic. Does not need to support NULL.
|
|
294
|
+
*
|
|
295
|
+
* The function must clean up on error.
|
|
296
|
+
*
|
|
297
|
+
* @param nin Number of input arguments
|
|
298
|
+
* @param nout Number of output arguments
|
|
299
|
+
* @param new_dtypes The DTypes of the output (usually probably not needed)
|
|
300
|
+
* @param given_descrs Original given_descrs to the resolver, necessary to
|
|
301
|
+
* fetch any information related to the new dtypes from the original.
|
|
302
|
+
* @param original_descrs The `loop_descrs` returned by the wrapped loop.
|
|
303
|
+
* @param loop_descrs The output descriptors, compatible to `original_descrs`.
|
|
304
|
+
*
|
|
305
|
+
* @returns 0 on success, -1 on failure.
|
|
306
|
+
*/
|
|
307
|
+
typedef int (PyArrayMethod_TranslateLoopDescriptors)(int nin, int nout,
|
|
308
|
+
PyArray_DTypeMeta *const new_dtypes[], PyArray_Descr *const given_descrs[],
|
|
309
|
+
PyArray_Descr *original_descrs[], PyArray_Descr *loop_descrs[]);
|
|
310
|
+
|
|
311
|
+
|
|
312
|
+
|
|
313
|
+
/*
|
|
314
|
+
* A traverse loop working on a single array. This is similar to the general
|
|
315
|
+
* strided-loop function. This is designed for loops that need to visit every
|
|
316
|
+
* element of a single array.
|
|
317
|
+
*
|
|
318
|
+
* Currently this is used for array clearing, via the NPY_DT_get_clear_loop
|
|
319
|
+
* API hook, and zero-filling, via the NPY_DT_get_fill_zero_loop API hook.
|
|
320
|
+
* These are most useful for handling arrays storing embedded references to
|
|
321
|
+
* python objects or heap-allocated data.
|
|
322
|
+
*
|
|
323
|
+
* The `void *traverse_context` is passed in because we may need to pass in
|
|
324
|
+
* Interpreter state or similar in the future, but we don't want to pass in
|
|
325
|
+
* a full context (with pointers to dtypes, method, caller which all make
|
|
326
|
+
* no sense for a traverse function).
|
|
327
|
+
*
|
|
328
|
+
* We assume for now that this context can be just passed through in the
|
|
329
|
+
* the future (for structured dtypes).
|
|
330
|
+
*
|
|
331
|
+
*/
|
|
332
|
+
typedef int (PyArrayMethod_TraverseLoop)(
|
|
333
|
+
void *traverse_context, const PyArray_Descr *descr, char *data,
|
|
334
|
+
npy_intp size, npy_intp stride, NpyAuxData *auxdata);
|
|
335
|
+
|
|
336
|
+
|
|
337
|
+
/*
|
|
338
|
+
* Simplified get_loop function specific to dtype traversal
|
|
339
|
+
*
|
|
340
|
+
* It should set the flags needed for the traversal loop and set out_loop to the
|
|
341
|
+
* loop function, which must be a valid PyArrayMethod_TraverseLoop
|
|
342
|
+
* pointer. Currently this is used for zero-filling and clearing arrays storing
|
|
343
|
+
* embedded references.
|
|
344
|
+
*
|
|
345
|
+
*/
|
|
346
|
+
typedef int (PyArrayMethod_GetTraverseLoop)(
|
|
347
|
+
void *traverse_context, const PyArray_Descr *descr,
|
|
348
|
+
int aligned, npy_intp fixed_stride,
|
|
349
|
+
PyArrayMethod_TraverseLoop **out_loop, NpyAuxData **out_auxdata,
|
|
350
|
+
NPY_ARRAYMETHOD_FLAGS *flags);
|
|
351
|
+
|
|
352
|
+
|
|
353
|
+
/*
|
|
354
|
+
* Type of the C promoter function, which must be wrapped into a
|
|
355
|
+
* PyCapsule with name "numpy._ufunc_promoter".
|
|
356
|
+
*
|
|
357
|
+
* Note that currently the output dtypes are always NULL unless they are
|
|
358
|
+
* also part of the signature. This is an implementation detail and could
|
|
359
|
+
* change in the future. However, in general promoters should not have a
|
|
360
|
+
* need for output dtypes.
|
|
361
|
+
* (There are potential use-cases, these are currently unsupported.)
|
|
362
|
+
*/
|
|
363
|
+
typedef int (PyArrayMethod_PromoterFunction)(PyObject *ufunc,
|
|
364
|
+
PyArray_DTypeMeta *const op_dtypes[], PyArray_DTypeMeta *const signature[],
|
|
365
|
+
PyArray_DTypeMeta *new_op_dtypes[]);
|
|
366
|
+
|
|
367
|
+
/*
|
|
368
|
+
* ****************************
|
|
369
|
+
* DTYPE API
|
|
370
|
+
* ****************************
|
|
371
|
+
*/
|
|
372
|
+
|
|
373
|
+
#define NPY_DT_ABSTRACT 1 << 1
|
|
374
|
+
#define NPY_DT_PARAMETRIC 1 << 2
|
|
375
|
+
#define NPY_DT_NUMERIC 1 << 3
|
|
376
|
+
|
|
377
|
+
/*
|
|
378
|
+
* These correspond to slots in the NPY_DType_Slots struct and must
|
|
379
|
+
* be in the same order as the members of that struct. If new slots
|
|
380
|
+
* get added or old slots get removed NPY_NUM_DTYPE_SLOTS must also
|
|
381
|
+
* be updated
|
|
382
|
+
*/
|
|
383
|
+
|
|
384
|
+
#define NPY_DT_discover_descr_from_pyobject 1
|
|
385
|
+
// this slot is considered private because its API hasn't been decided
|
|
386
|
+
#define _NPY_DT_is_known_scalar_type 2
|
|
387
|
+
#define NPY_DT_default_descr 3
|
|
388
|
+
#define NPY_DT_common_dtype 4
|
|
389
|
+
#define NPY_DT_common_instance 5
|
|
390
|
+
#define NPY_DT_ensure_canonical 6
|
|
391
|
+
#define NPY_DT_setitem 7
|
|
392
|
+
#define NPY_DT_getitem 8
|
|
393
|
+
#define NPY_DT_get_clear_loop 9
|
|
394
|
+
#define NPY_DT_get_fill_zero_loop 10
|
|
395
|
+
#define NPY_DT_finalize_descr 11
|
|
396
|
+
#define NPY_DT_get_constant 12
|
|
397
|
+
|
|
398
|
+
// These PyArray_ArrFunc slots will be deprecated and replaced eventually
|
|
399
|
+
// getitem and setitem can be defined as a performance optimization;
|
|
400
|
+
// by default the user dtypes call `legacy_getitem_using_DType` and
|
|
401
|
+
// `legacy_setitem_using_DType`, respectively. This functionality is
|
|
402
|
+
// only supported for basic NumPy DTypes.
|
|
403
|
+
|
|
404
|
+
|
|
405
|
+
// used to separate dtype slots from arrfuncs slots
|
|
406
|
+
// intended only for internal use but defined here for clarity
|
|
407
|
+
#define _NPY_DT_ARRFUNCS_OFFSET (1 << 11)
|
|
408
|
+
|
|
409
|
+
// Cast is disabled
|
|
410
|
+
// #define NPY_DT_PyArray_ArrFuncs_cast 0 + _NPY_DT_ARRFUNCS_OFFSET
|
|
411
|
+
|
|
412
|
+
#define NPY_DT_PyArray_ArrFuncs_getitem 1 + _NPY_DT_ARRFUNCS_OFFSET
|
|
413
|
+
#define NPY_DT_PyArray_ArrFuncs_setitem 2 + _NPY_DT_ARRFUNCS_OFFSET
|
|
414
|
+
|
|
415
|
+
// Copyswap is disabled
|
|
416
|
+
// #define NPY_DT_PyArray_ArrFuncs_copyswapn 3 + _NPY_DT_ARRFUNCS_OFFSET
|
|
417
|
+
// #define NPY_DT_PyArray_ArrFuncs_copyswap 4 + _NPY_DT_ARRFUNCS_OFFSET
|
|
418
|
+
#define NPY_DT_PyArray_ArrFuncs_compare 5 + _NPY_DT_ARRFUNCS_OFFSET
|
|
419
|
+
#define NPY_DT_PyArray_ArrFuncs_argmax 6 + _NPY_DT_ARRFUNCS_OFFSET
|
|
420
|
+
#define NPY_DT_PyArray_ArrFuncs_dotfunc 7 + _NPY_DT_ARRFUNCS_OFFSET
|
|
421
|
+
#define NPY_DT_PyArray_ArrFuncs_scanfunc 8 + _NPY_DT_ARRFUNCS_OFFSET
|
|
422
|
+
#define NPY_DT_PyArray_ArrFuncs_fromstr 9 + _NPY_DT_ARRFUNCS_OFFSET
|
|
423
|
+
#define NPY_DT_PyArray_ArrFuncs_nonzero 10 + _NPY_DT_ARRFUNCS_OFFSET
|
|
424
|
+
#define NPY_DT_PyArray_ArrFuncs_fill 11 + _NPY_DT_ARRFUNCS_OFFSET
|
|
425
|
+
#define NPY_DT_PyArray_ArrFuncs_fillwithscalar 12 + _NPY_DT_ARRFUNCS_OFFSET
|
|
426
|
+
#define NPY_DT_PyArray_ArrFuncs_sort 13 + _NPY_DT_ARRFUNCS_OFFSET
|
|
427
|
+
#define NPY_DT_PyArray_ArrFuncs_argsort 14 + _NPY_DT_ARRFUNCS_OFFSET
|
|
428
|
+
|
|
429
|
+
// Casting related slots are disabled. See
|
|
430
|
+
// https://github.com/numpy/numpy/pull/23173#discussion_r1101098163
|
|
431
|
+
// #define NPY_DT_PyArray_ArrFuncs_castdict 15 + _NPY_DT_ARRFUNCS_OFFSET
|
|
432
|
+
// #define NPY_DT_PyArray_ArrFuncs_scalarkind 16 + _NPY_DT_ARRFUNCS_OFFSET
|
|
433
|
+
// #define NPY_DT_PyArray_ArrFuncs_cancastscalarkindto 17 + _NPY_DT_ARRFUNCS_OFFSET
|
|
434
|
+
// #define NPY_DT_PyArray_ArrFuncs_cancastto 18 + _NPY_DT_ARRFUNCS_OFFSET
|
|
435
|
+
|
|
436
|
+
// These are deprecated in NumPy 1.19, so are disabled here.
|
|
437
|
+
// #define NPY_DT_PyArray_ArrFuncs_fastclip 19 + _NPY_DT_ARRFUNCS_OFFSET
|
|
438
|
+
// #define NPY_DT_PyArray_ArrFuncs_fastputmask 20 + _NPY_DT_ARRFUNCS_OFFSET
|
|
439
|
+
// #define NPY_DT_PyArray_ArrFuncs_fasttake 21 + _NPY_DT_ARRFUNCS_OFFSET
|
|
440
|
+
#define NPY_DT_PyArray_ArrFuncs_argmin 22 + _NPY_DT_ARRFUNCS_OFFSET
|
|
441
|
+
|
|
442
|
+
|
|
443
|
+
// TODO: These slots probably still need some thought, and/or a way to "grow"?
|
|
444
|
+
typedef struct {
|
|
445
|
+
PyTypeObject *typeobj; /* type of python scalar or NULL */
|
|
446
|
+
int flags; /* flags, including parametric and abstract */
|
|
447
|
+
/* NULL terminated cast definitions. Use NULL for the newly created DType */
|
|
448
|
+
PyArrayMethod_Spec **casts;
|
|
449
|
+
PyType_Slot *slots;
|
|
450
|
+
/* Baseclass or NULL (will always subclass `np.dtype`) */
|
|
451
|
+
PyTypeObject *baseclass;
|
|
452
|
+
} PyArrayDTypeMeta_Spec;
|
|
453
|
+
|
|
454
|
+
|
|
455
|
+
typedef PyArray_Descr *(PyArrayDTypeMeta_DiscoverDescrFromPyobject)(
|
|
456
|
+
PyArray_DTypeMeta *cls, PyObject *obj);
|
|
457
|
+
|
|
458
|
+
/*
|
|
459
|
+
* Before making this public, we should decide whether it should pass
|
|
460
|
+
* the type, or allow looking at the object. A possible use-case:
|
|
461
|
+
* `np.array(np.array([0]), dtype=np.ndarray)`
|
|
462
|
+
* Could consider arrays that are not `dtype=ndarray` "scalars".
|
|
463
|
+
*/
|
|
464
|
+
typedef int (PyArrayDTypeMeta_IsKnownScalarType)(
|
|
465
|
+
PyArray_DTypeMeta *cls, PyTypeObject *obj);
|
|
466
|
+
|
|
467
|
+
typedef PyArray_Descr *(PyArrayDTypeMeta_DefaultDescriptor)(PyArray_DTypeMeta *cls);
|
|
468
|
+
typedef PyArray_DTypeMeta *(PyArrayDTypeMeta_CommonDType)(
|
|
469
|
+
PyArray_DTypeMeta *dtype1, PyArray_DTypeMeta *dtype2);
|
|
470
|
+
|
|
471
|
+
|
|
472
|
+
/*
|
|
473
|
+
* Convenience utility for getting a reference to the DType metaclass associated
|
|
474
|
+
* with a dtype instance.
|
|
475
|
+
*/
|
|
476
|
+
#define NPY_DTYPE(descr) ((PyArray_DTypeMeta *)Py_TYPE(descr))
|
|
477
|
+
|
|
478
|
+
static inline PyArray_DTypeMeta *
|
|
479
|
+
NPY_DT_NewRef(PyArray_DTypeMeta *o) {
|
|
480
|
+
Py_INCREF((PyObject *)o);
|
|
481
|
+
return o;
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
|
|
485
|
+
typedef PyArray_Descr *(PyArrayDTypeMeta_CommonInstance)(
|
|
486
|
+
PyArray_Descr *dtype1, PyArray_Descr *dtype2);
|
|
487
|
+
typedef PyArray_Descr *(PyArrayDTypeMeta_EnsureCanonical)(PyArray_Descr *dtype);
|
|
488
|
+
/*
|
|
489
|
+
* Returns either a new reference to *dtype* or a new descriptor instance
|
|
490
|
+
* initialized with the same parameters as *dtype*. The caller cannot know
|
|
491
|
+
* which choice a dtype will make. This function is called just before the
|
|
492
|
+
* array buffer is created for a newly created array, it is not called for
|
|
493
|
+
* views and the descriptor returned by this function is attached to the array.
|
|
494
|
+
*/
|
|
495
|
+
typedef PyArray_Descr *(PyArrayDTypeMeta_FinalizeDescriptor)(PyArray_Descr *dtype);
|
|
496
|
+
|
|
497
|
+
/*
|
|
498
|
+
* Constants that can be queried and used e.g. by reduce identies defaults.
|
|
499
|
+
* These are also used to expose .finfo and .iinfo for example.
|
|
500
|
+
*/
|
|
501
|
+
/* Numerical constants */
|
|
502
|
+
#define NPY_CONSTANT_zero 1
|
|
503
|
+
#define NPY_CONSTANT_one 2
|
|
504
|
+
#define NPY_CONSTANT_all_bits_set 3
|
|
505
|
+
#define NPY_CONSTANT_maximum_finite 4
|
|
506
|
+
#define NPY_CONSTANT_minimum_finite 5
|
|
507
|
+
#define NPY_CONSTANT_inf 6
|
|
508
|
+
#define NPY_CONSTANT_ninf 7
|
|
509
|
+
#define NPY_CONSTANT_nan 8
|
|
510
|
+
#define NPY_CONSTANT_finfo_radix 9
|
|
511
|
+
#define NPY_CONSTANT_finfo_eps 10
|
|
512
|
+
#define NPY_CONSTANT_finfo_smallest_normal 11
|
|
513
|
+
#define NPY_CONSTANT_finfo_smallest_subnormal 12
|
|
514
|
+
/* Constants that are always of integer type, value is `npy_intp/Py_ssize_t` */
|
|
515
|
+
#define NPY_CONSTANT_finfo_nmant (1 << 16) + 0
|
|
516
|
+
#define NPY_CONSTANT_finfo_min_exp (1 << 16) + 1
|
|
517
|
+
#define NPY_CONSTANT_finfo_max_exp (1 << 16) + 2
|
|
518
|
+
#define NPY_CONSTANT_finfo_decimal_digits (1 << 16) + 3
|
|
519
|
+
|
|
520
|
+
/* It may make sense to continue with other constants here, e.g. pi, etc? */
|
|
521
|
+
|
|
522
|
+
/*
|
|
523
|
+
* Function to get a constant value for the dtype. Data may be unaligned, the
|
|
524
|
+
* function is always called with the GIL held.
|
|
525
|
+
*
|
|
526
|
+
* @param descr The dtype instance (i.e. self)
|
|
527
|
+
* @param ID The ID of the constant to get.
|
|
528
|
+
* @param data Pointer to the data to be written too, may be unaligned.
|
|
529
|
+
* @returns 1 on success, 0 if the constant is not available, or -1 with an error set.
|
|
530
|
+
*/
|
|
531
|
+
typedef int (PyArrayDTypeMeta_GetConstant)(PyArray_Descr *descr, int ID, void *data);
|
|
532
|
+
|
|
533
|
+
/*
|
|
534
|
+
* TODO: These two functions are currently only used for experimental DType
|
|
535
|
+
* API support. Their relation should be "reversed": NumPy should
|
|
536
|
+
* always use them internally.
|
|
537
|
+
* There are open points about "casting safety" though, e.g. setting
|
|
538
|
+
* elements is currently always unsafe.
|
|
539
|
+
*/
|
|
540
|
+
typedef int(PyArrayDTypeMeta_SetItem)(PyArray_Descr *, PyObject *, char *);
|
|
541
|
+
typedef PyObject *(PyArrayDTypeMeta_GetItem)(PyArray_Descr *, char *);
|
|
542
|
+
|
|
543
|
+
typedef struct {
|
|
544
|
+
NPY_SORTKIND flags;
|
|
545
|
+
} PyArrayMethod_SortParameters;
|
|
546
|
+
|
|
547
|
+
#endif /* NUMPY_CORE_INCLUDE_NUMPY___DTYPE_API_H_ */
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
#ifndef NUMPY_CORE_INCLUDE_NUMPY_HALFFLOAT_H_
|
|
2
|
+
#define NUMPY_CORE_INCLUDE_NUMPY_HALFFLOAT_H_
|
|
3
|
+
|
|
4
|
+
#include <Python.h>
|
|
5
|
+
#include <numpy/npy_math.h>
|
|
6
|
+
|
|
7
|
+
#ifdef __cplusplus
|
|
8
|
+
extern "C" {
|
|
9
|
+
#endif
|
|
10
|
+
|
|
11
|
+
/*
|
|
12
|
+
* Half-precision routines
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
/* Conversions */
|
|
16
|
+
float npy_half_to_float(npy_half h);
|
|
17
|
+
double npy_half_to_double(npy_half h);
|
|
18
|
+
npy_half npy_float_to_half(float f);
|
|
19
|
+
npy_half npy_double_to_half(double d);
|
|
20
|
+
/* Comparisons */
|
|
21
|
+
int npy_half_eq(npy_half h1, npy_half h2);
|
|
22
|
+
int npy_half_ne(npy_half h1, npy_half h2);
|
|
23
|
+
int npy_half_le(npy_half h1, npy_half h2);
|
|
24
|
+
int npy_half_lt(npy_half h1, npy_half h2);
|
|
25
|
+
int npy_half_ge(npy_half h1, npy_half h2);
|
|
26
|
+
int npy_half_gt(npy_half h1, npy_half h2);
|
|
27
|
+
/* faster *_nonan variants for when you know h1 and h2 are not NaN */
|
|
28
|
+
int npy_half_eq_nonan(npy_half h1, npy_half h2);
|
|
29
|
+
int npy_half_lt_nonan(npy_half h1, npy_half h2);
|
|
30
|
+
int npy_half_le_nonan(npy_half h1, npy_half h2);
|
|
31
|
+
/* Miscellaneous functions */
|
|
32
|
+
int npy_half_iszero(npy_half h);
|
|
33
|
+
int npy_half_isnan(npy_half h);
|
|
34
|
+
int npy_half_isinf(npy_half h);
|
|
35
|
+
int npy_half_isfinite(npy_half h);
|
|
36
|
+
int npy_half_signbit(npy_half h);
|
|
37
|
+
npy_half npy_half_copysign(npy_half x, npy_half y);
|
|
38
|
+
npy_half npy_half_spacing(npy_half h);
|
|
39
|
+
npy_half npy_half_nextafter(npy_half x, npy_half y);
|
|
40
|
+
npy_half npy_half_divmod(npy_half x, npy_half y, npy_half *modulus);
|
|
41
|
+
|
|
42
|
+
/*
|
|
43
|
+
* Half-precision constants
|
|
44
|
+
*/
|
|
45
|
+
|
|
46
|
+
#define NPY_HALF_ZERO (0x0000u)
|
|
47
|
+
#define NPY_HALF_PZERO (0x0000u)
|
|
48
|
+
#define NPY_HALF_NZERO (0x8000u)
|
|
49
|
+
#define NPY_HALF_ONE (0x3c00u)
|
|
50
|
+
#define NPY_HALF_NEGONE (0xbc00u)
|
|
51
|
+
#define NPY_HALF_PINF (0x7c00u)
|
|
52
|
+
#define NPY_HALF_NINF (0xfc00u)
|
|
53
|
+
#define NPY_HALF_NAN (0x7e00u)
|
|
54
|
+
|
|
55
|
+
#define NPY_MAX_HALF (0x7bffu)
|
|
56
|
+
|
|
57
|
+
/*
|
|
58
|
+
* Bit-level conversions
|
|
59
|
+
*/
|
|
60
|
+
|
|
61
|
+
npy_uint16 npy_floatbits_to_halfbits(npy_uint32 f);
|
|
62
|
+
npy_uint16 npy_doublebits_to_halfbits(npy_uint64 d);
|
|
63
|
+
npy_uint32 npy_halfbits_to_floatbits(npy_uint16 h);
|
|
64
|
+
npy_uint64 npy_halfbits_to_doublebits(npy_uint16 h);
|
|
65
|
+
|
|
66
|
+
#ifdef __cplusplus
|
|
67
|
+
}
|
|
68
|
+
#endif
|
|
69
|
+
|
|
70
|
+
#endif /* NUMPY_CORE_INCLUDE_NUMPY_HALFFLOAT_H_ */
|