numpy 2.4.0__cp313-cp313t-musllinux_1_2_aarch64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- numpy/__config__.py +170 -0
- numpy/__config__.pyi +108 -0
- numpy/__init__.cython-30.pxd +1242 -0
- numpy/__init__.pxd +1155 -0
- numpy/__init__.py +942 -0
- numpy/__init__.pyi +6202 -0
- numpy/_array_api_info.py +346 -0
- numpy/_array_api_info.pyi +206 -0
- numpy/_configtool.py +39 -0
- numpy/_configtool.pyi +1 -0
- numpy/_core/__init__.py +201 -0
- numpy/_core/__init__.pyi +666 -0
- numpy/_core/_add_newdocs.py +7151 -0
- numpy/_core/_add_newdocs.pyi +2 -0
- numpy/_core/_add_newdocs_scalars.py +381 -0
- numpy/_core/_add_newdocs_scalars.pyi +16 -0
- numpy/_core/_asarray.py +130 -0
- numpy/_core/_asarray.pyi +43 -0
- numpy/_core/_dtype.py +366 -0
- numpy/_core/_dtype.pyi +56 -0
- numpy/_core/_dtype_ctypes.py +120 -0
- numpy/_core/_dtype_ctypes.pyi +83 -0
- numpy/_core/_exceptions.py +162 -0
- numpy/_core/_exceptions.pyi +54 -0
- numpy/_core/_internal.py +968 -0
- numpy/_core/_internal.pyi +61 -0
- numpy/_core/_methods.py +252 -0
- numpy/_core/_methods.pyi +22 -0
- numpy/_core/_multiarray_tests.cpython-313t-aarch64-linux-musl.so +0 -0
- numpy/_core/_multiarray_umath.cpython-313t-aarch64-linux-musl.so +0 -0
- numpy/_core/_operand_flag_tests.cpython-313t-aarch64-linux-musl.so +0 -0
- numpy/_core/_rational_tests.cpython-313t-aarch64-linux-musl.so +0 -0
- numpy/_core/_simd.cpython-313t-aarch64-linux-musl.so +0 -0
- numpy/_core/_simd.pyi +35 -0
- numpy/_core/_string_helpers.py +100 -0
- numpy/_core/_string_helpers.pyi +12 -0
- numpy/_core/_struct_ufunc_tests.cpython-313t-aarch64-linux-musl.so +0 -0
- numpy/_core/_type_aliases.py +131 -0
- numpy/_core/_type_aliases.pyi +86 -0
- numpy/_core/_ufunc_config.py +515 -0
- numpy/_core/_ufunc_config.pyi +69 -0
- numpy/_core/_umath_tests.cpython-313t-aarch64-linux-musl.so +0 -0
- numpy/_core/_umath_tests.pyi +47 -0
- numpy/_core/arrayprint.py +1779 -0
- numpy/_core/arrayprint.pyi +158 -0
- numpy/_core/cversions.py +13 -0
- numpy/_core/defchararray.py +1414 -0
- numpy/_core/defchararray.pyi +1150 -0
- numpy/_core/einsumfunc.py +1650 -0
- numpy/_core/einsumfunc.pyi +184 -0
- numpy/_core/fromnumeric.py +4233 -0
- numpy/_core/fromnumeric.pyi +1735 -0
- numpy/_core/function_base.py +547 -0
- numpy/_core/function_base.pyi +276 -0
- numpy/_core/getlimits.py +462 -0
- numpy/_core/getlimits.pyi +124 -0
- numpy/_core/include/numpy/__multiarray_api.c +376 -0
- numpy/_core/include/numpy/__multiarray_api.h +1628 -0
- numpy/_core/include/numpy/__ufunc_api.c +55 -0
- numpy/_core/include/numpy/__ufunc_api.h +349 -0
- numpy/_core/include/numpy/_neighborhood_iterator_imp.h +90 -0
- numpy/_core/include/numpy/_numpyconfig.h +33 -0
- numpy/_core/include/numpy/_public_dtype_api_table.h +86 -0
- numpy/_core/include/numpy/arrayobject.h +7 -0
- numpy/_core/include/numpy/arrayscalars.h +198 -0
- numpy/_core/include/numpy/dtype_api.h +547 -0
- numpy/_core/include/numpy/halffloat.h +70 -0
- numpy/_core/include/numpy/ndarrayobject.h +304 -0
- numpy/_core/include/numpy/ndarraytypes.h +1982 -0
- numpy/_core/include/numpy/npy_2_compat.h +249 -0
- numpy/_core/include/numpy/npy_2_complexcompat.h +28 -0
- numpy/_core/include/numpy/npy_3kcompat.h +374 -0
- numpy/_core/include/numpy/npy_common.h +989 -0
- numpy/_core/include/numpy/npy_cpu.h +126 -0
- numpy/_core/include/numpy/npy_endian.h +79 -0
- numpy/_core/include/numpy/npy_math.h +602 -0
- numpy/_core/include/numpy/npy_no_deprecated_api.h +20 -0
- numpy/_core/include/numpy/npy_os.h +42 -0
- numpy/_core/include/numpy/numpyconfig.h +185 -0
- numpy/_core/include/numpy/random/LICENSE.txt +21 -0
- numpy/_core/include/numpy/random/bitgen.h +20 -0
- numpy/_core/include/numpy/random/distributions.h +209 -0
- numpy/_core/include/numpy/random/libdivide.h +2079 -0
- numpy/_core/include/numpy/ufuncobject.h +343 -0
- numpy/_core/include/numpy/utils.h +37 -0
- numpy/_core/lib/libnpymath.a +0 -0
- numpy/_core/lib/npy-pkg-config/mlib.ini +12 -0
- numpy/_core/lib/npy-pkg-config/npymath.ini +20 -0
- numpy/_core/lib/pkgconfig/numpy.pc +7 -0
- numpy/_core/memmap.py +363 -0
- numpy/_core/memmap.pyi +3 -0
- numpy/_core/multiarray.py +1740 -0
- numpy/_core/multiarray.pyi +1316 -0
- numpy/_core/numeric.py +2758 -0
- numpy/_core/numeric.pyi +1276 -0
- numpy/_core/numerictypes.py +633 -0
- numpy/_core/numerictypes.pyi +196 -0
- numpy/_core/overrides.py +188 -0
- numpy/_core/overrides.pyi +47 -0
- numpy/_core/printoptions.py +32 -0
- numpy/_core/printoptions.pyi +28 -0
- numpy/_core/records.py +1088 -0
- numpy/_core/records.pyi +340 -0
- numpy/_core/shape_base.py +996 -0
- numpy/_core/shape_base.pyi +182 -0
- numpy/_core/strings.py +1813 -0
- numpy/_core/strings.pyi +536 -0
- numpy/_core/tests/_locales.py +72 -0
- numpy/_core/tests/_natype.py +144 -0
- numpy/_core/tests/data/astype_copy.pkl +0 -0
- numpy/_core/tests/data/generate_umath_validation_data.cpp +170 -0
- numpy/_core/tests/data/recarray_from_file.fits +0 -0
- numpy/_core/tests/data/umath-validation-set-README.txt +15 -0
- numpy/_core/tests/data/umath-validation-set-arccos.csv +1429 -0
- numpy/_core/tests/data/umath-validation-set-arccosh.csv +1429 -0
- numpy/_core/tests/data/umath-validation-set-arcsin.csv +1429 -0
- numpy/_core/tests/data/umath-validation-set-arcsinh.csv +1429 -0
- numpy/_core/tests/data/umath-validation-set-arctan.csv +1429 -0
- numpy/_core/tests/data/umath-validation-set-arctanh.csv +1429 -0
- numpy/_core/tests/data/umath-validation-set-cbrt.csv +1429 -0
- numpy/_core/tests/data/umath-validation-set-cos.csv +1375 -0
- numpy/_core/tests/data/umath-validation-set-cosh.csv +1429 -0
- numpy/_core/tests/data/umath-validation-set-exp.csv +412 -0
- numpy/_core/tests/data/umath-validation-set-exp2.csv +1429 -0
- numpy/_core/tests/data/umath-validation-set-expm1.csv +1429 -0
- numpy/_core/tests/data/umath-validation-set-log.csv +271 -0
- numpy/_core/tests/data/umath-validation-set-log10.csv +1629 -0
- numpy/_core/tests/data/umath-validation-set-log1p.csv +1429 -0
- numpy/_core/tests/data/umath-validation-set-log2.csv +1629 -0
- numpy/_core/tests/data/umath-validation-set-sin.csv +1370 -0
- numpy/_core/tests/data/umath-validation-set-sinh.csv +1429 -0
- numpy/_core/tests/data/umath-validation-set-tan.csv +1429 -0
- numpy/_core/tests/data/umath-validation-set-tanh.csv +1429 -0
- numpy/_core/tests/examples/cython/checks.pyx +373 -0
- numpy/_core/tests/examples/cython/meson.build +43 -0
- numpy/_core/tests/examples/cython/setup.py +39 -0
- numpy/_core/tests/examples/limited_api/limited_api1.c +17 -0
- numpy/_core/tests/examples/limited_api/limited_api2.pyx +11 -0
- numpy/_core/tests/examples/limited_api/limited_api_latest.c +19 -0
- numpy/_core/tests/examples/limited_api/meson.build +59 -0
- numpy/_core/tests/examples/limited_api/setup.py +24 -0
- numpy/_core/tests/test__exceptions.py +90 -0
- numpy/_core/tests/test_abc.py +54 -0
- numpy/_core/tests/test_api.py +655 -0
- numpy/_core/tests/test_argparse.py +90 -0
- numpy/_core/tests/test_array_api_info.py +113 -0
- numpy/_core/tests/test_array_coercion.py +928 -0
- numpy/_core/tests/test_array_interface.py +222 -0
- numpy/_core/tests/test_arraymethod.py +84 -0
- numpy/_core/tests/test_arrayobject.py +75 -0
- numpy/_core/tests/test_arrayprint.py +1324 -0
- numpy/_core/tests/test_casting_floatingpoint_errors.py +154 -0
- numpy/_core/tests/test_casting_unittests.py +955 -0
- numpy/_core/tests/test_conversion_utils.py +209 -0
- numpy/_core/tests/test_cpu_dispatcher.py +48 -0
- numpy/_core/tests/test_cpu_features.py +450 -0
- numpy/_core/tests/test_custom_dtypes.py +393 -0
- numpy/_core/tests/test_cython.py +352 -0
- numpy/_core/tests/test_datetime.py +2792 -0
- numpy/_core/tests/test_defchararray.py +858 -0
- numpy/_core/tests/test_deprecations.py +460 -0
- numpy/_core/tests/test_dlpack.py +190 -0
- numpy/_core/tests/test_dtype.py +2110 -0
- numpy/_core/tests/test_einsum.py +1351 -0
- numpy/_core/tests/test_errstate.py +131 -0
- numpy/_core/tests/test_extint128.py +217 -0
- numpy/_core/tests/test_finfo.py +86 -0
- numpy/_core/tests/test_function_base.py +504 -0
- numpy/_core/tests/test_getlimits.py +171 -0
- numpy/_core/tests/test_half.py +593 -0
- numpy/_core/tests/test_hashtable.py +36 -0
- numpy/_core/tests/test_indexerrors.py +122 -0
- numpy/_core/tests/test_indexing.py +1692 -0
- numpy/_core/tests/test_item_selection.py +167 -0
- numpy/_core/tests/test_limited_api.py +102 -0
- numpy/_core/tests/test_longdouble.py +370 -0
- numpy/_core/tests/test_mem_overlap.py +933 -0
- numpy/_core/tests/test_mem_policy.py +453 -0
- numpy/_core/tests/test_memmap.py +248 -0
- numpy/_core/tests/test_multiarray.py +11008 -0
- numpy/_core/tests/test_multiprocessing.py +55 -0
- numpy/_core/tests/test_multithreading.py +353 -0
- numpy/_core/tests/test_nditer.py +3533 -0
- numpy/_core/tests/test_nep50_promotions.py +287 -0
- numpy/_core/tests/test_numeric.py +4295 -0
- numpy/_core/tests/test_numerictypes.py +650 -0
- numpy/_core/tests/test_overrides.py +800 -0
- numpy/_core/tests/test_print.py +202 -0
- numpy/_core/tests/test_protocols.py +46 -0
- numpy/_core/tests/test_records.py +544 -0
- numpy/_core/tests/test_regression.py +2677 -0
- numpy/_core/tests/test_scalar_ctors.py +203 -0
- numpy/_core/tests/test_scalar_methods.py +328 -0
- numpy/_core/tests/test_scalarbuffer.py +153 -0
- numpy/_core/tests/test_scalarinherit.py +105 -0
- numpy/_core/tests/test_scalarmath.py +1168 -0
- numpy/_core/tests/test_scalarprint.py +403 -0
- numpy/_core/tests/test_shape_base.py +904 -0
- numpy/_core/tests/test_simd.py +1345 -0
- numpy/_core/tests/test_simd_module.py +105 -0
- numpy/_core/tests/test_stringdtype.py +1855 -0
- numpy/_core/tests/test_strings.py +1515 -0
- numpy/_core/tests/test_ufunc.py +3405 -0
- numpy/_core/tests/test_umath.py +4962 -0
- numpy/_core/tests/test_umath_accuracy.py +132 -0
- numpy/_core/tests/test_umath_complex.py +631 -0
- numpy/_core/tests/test_unicode.py +369 -0
- numpy/_core/umath.py +60 -0
- numpy/_core/umath.pyi +232 -0
- numpy/_distributor_init.py +15 -0
- numpy/_distributor_init.pyi +1 -0
- numpy/_expired_attrs_2_0.py +78 -0
- numpy/_expired_attrs_2_0.pyi +61 -0
- numpy/_globals.py +121 -0
- numpy/_globals.pyi +17 -0
- numpy/_pyinstaller/__init__.py +0 -0
- numpy/_pyinstaller/__init__.pyi +0 -0
- numpy/_pyinstaller/hook-numpy.py +36 -0
- numpy/_pyinstaller/hook-numpy.pyi +6 -0
- numpy/_pyinstaller/tests/__init__.py +16 -0
- numpy/_pyinstaller/tests/pyinstaller-smoke.py +32 -0
- numpy/_pyinstaller/tests/test_pyinstaller.py +35 -0
- numpy/_pytesttester.py +201 -0
- numpy/_pytesttester.pyi +18 -0
- numpy/_typing/__init__.py +173 -0
- numpy/_typing/_add_docstring.py +153 -0
- numpy/_typing/_array_like.py +106 -0
- numpy/_typing/_char_codes.py +213 -0
- numpy/_typing/_dtype_like.py +114 -0
- numpy/_typing/_extended_precision.py +15 -0
- numpy/_typing/_nbit.py +19 -0
- numpy/_typing/_nbit_base.py +94 -0
- numpy/_typing/_nbit_base.pyi +39 -0
- numpy/_typing/_nested_sequence.py +79 -0
- numpy/_typing/_scalars.py +20 -0
- numpy/_typing/_shape.py +8 -0
- numpy/_typing/_ufunc.py +7 -0
- numpy/_typing/_ufunc.pyi +975 -0
- numpy/_utils/__init__.py +95 -0
- numpy/_utils/__init__.pyi +28 -0
- numpy/_utils/_convertions.py +18 -0
- numpy/_utils/_convertions.pyi +4 -0
- numpy/_utils/_inspect.py +192 -0
- numpy/_utils/_inspect.pyi +70 -0
- numpy/_utils/_pep440.py +486 -0
- numpy/_utils/_pep440.pyi +118 -0
- numpy/char/__init__.py +2 -0
- numpy/char/__init__.pyi +111 -0
- numpy/conftest.py +248 -0
- numpy/core/__init__.py +33 -0
- numpy/core/__init__.pyi +0 -0
- numpy/core/_dtype.py +10 -0
- numpy/core/_dtype.pyi +0 -0
- numpy/core/_dtype_ctypes.py +10 -0
- numpy/core/_dtype_ctypes.pyi +0 -0
- numpy/core/_internal.py +27 -0
- numpy/core/_multiarray_umath.py +57 -0
- numpy/core/_utils.py +21 -0
- numpy/core/arrayprint.py +10 -0
- numpy/core/defchararray.py +10 -0
- numpy/core/einsumfunc.py +10 -0
- numpy/core/fromnumeric.py +10 -0
- numpy/core/function_base.py +10 -0
- numpy/core/getlimits.py +10 -0
- numpy/core/multiarray.py +25 -0
- numpy/core/numeric.py +12 -0
- numpy/core/numerictypes.py +10 -0
- numpy/core/overrides.py +10 -0
- numpy/core/overrides.pyi +7 -0
- numpy/core/records.py +10 -0
- numpy/core/shape_base.py +10 -0
- numpy/core/umath.py +10 -0
- numpy/ctypeslib/__init__.py +13 -0
- numpy/ctypeslib/__init__.pyi +15 -0
- numpy/ctypeslib/_ctypeslib.py +603 -0
- numpy/ctypeslib/_ctypeslib.pyi +236 -0
- numpy/doc/ufuncs.py +138 -0
- numpy/dtypes.py +41 -0
- numpy/dtypes.pyi +630 -0
- numpy/exceptions.py +246 -0
- numpy/exceptions.pyi +27 -0
- numpy/f2py/__init__.py +86 -0
- numpy/f2py/__init__.pyi +5 -0
- numpy/f2py/__main__.py +5 -0
- numpy/f2py/__version__.py +1 -0
- numpy/f2py/__version__.pyi +1 -0
- numpy/f2py/_backends/__init__.py +9 -0
- numpy/f2py/_backends/__init__.pyi +5 -0
- numpy/f2py/_backends/_backend.py +44 -0
- numpy/f2py/_backends/_backend.pyi +46 -0
- numpy/f2py/_backends/_distutils.py +76 -0
- numpy/f2py/_backends/_distutils.pyi +13 -0
- numpy/f2py/_backends/_meson.py +244 -0
- numpy/f2py/_backends/_meson.pyi +62 -0
- numpy/f2py/_backends/meson.build.template +58 -0
- numpy/f2py/_isocbind.py +62 -0
- numpy/f2py/_isocbind.pyi +13 -0
- numpy/f2py/_src_pyf.py +247 -0
- numpy/f2py/_src_pyf.pyi +28 -0
- numpy/f2py/auxfuncs.py +1004 -0
- numpy/f2py/auxfuncs.pyi +262 -0
- numpy/f2py/capi_maps.py +811 -0
- numpy/f2py/capi_maps.pyi +33 -0
- numpy/f2py/cb_rules.py +665 -0
- numpy/f2py/cb_rules.pyi +17 -0
- numpy/f2py/cfuncs.py +1563 -0
- numpy/f2py/cfuncs.pyi +31 -0
- numpy/f2py/common_rules.py +143 -0
- numpy/f2py/common_rules.pyi +9 -0
- numpy/f2py/crackfortran.py +3725 -0
- numpy/f2py/crackfortran.pyi +266 -0
- numpy/f2py/diagnose.py +149 -0
- numpy/f2py/diagnose.pyi +1 -0
- numpy/f2py/f2py2e.py +788 -0
- numpy/f2py/f2py2e.pyi +74 -0
- numpy/f2py/f90mod_rules.py +269 -0
- numpy/f2py/f90mod_rules.pyi +16 -0
- numpy/f2py/func2subr.py +329 -0
- numpy/f2py/func2subr.pyi +7 -0
- numpy/f2py/rules.py +1629 -0
- numpy/f2py/rules.pyi +41 -0
- numpy/f2py/setup.cfg +3 -0
- numpy/f2py/src/fortranobject.c +1436 -0
- numpy/f2py/src/fortranobject.h +173 -0
- numpy/f2py/symbolic.py +1518 -0
- numpy/f2py/symbolic.pyi +219 -0
- numpy/f2py/tests/__init__.py +16 -0
- numpy/f2py/tests/src/abstract_interface/foo.f90 +34 -0
- numpy/f2py/tests/src/abstract_interface/gh18403_mod.f90 +6 -0
- numpy/f2py/tests/src/array_from_pyobj/wrapmodule.c +235 -0
- numpy/f2py/tests/src/assumed_shape/.f2py_f2cmap +1 -0
- numpy/f2py/tests/src/assumed_shape/foo_free.f90 +34 -0
- numpy/f2py/tests/src/assumed_shape/foo_mod.f90 +41 -0
- numpy/f2py/tests/src/assumed_shape/foo_use.f90 +19 -0
- numpy/f2py/tests/src/assumed_shape/precision.f90 +4 -0
- numpy/f2py/tests/src/block_docstring/foo.f +6 -0
- numpy/f2py/tests/src/callback/foo.f +62 -0
- numpy/f2py/tests/src/callback/gh17797.f90 +7 -0
- numpy/f2py/tests/src/callback/gh18335.f90 +17 -0
- numpy/f2py/tests/src/callback/gh25211.f +10 -0
- numpy/f2py/tests/src/callback/gh25211.pyf +18 -0
- numpy/f2py/tests/src/callback/gh26681.f90 +18 -0
- numpy/f2py/tests/src/cli/gh_22819.pyf +6 -0
- numpy/f2py/tests/src/cli/hi77.f +3 -0
- numpy/f2py/tests/src/cli/hiworld.f90 +3 -0
- numpy/f2py/tests/src/common/block.f +11 -0
- numpy/f2py/tests/src/common/gh19161.f90 +10 -0
- numpy/f2py/tests/src/crackfortran/accesstype.f90 +13 -0
- numpy/f2py/tests/src/crackfortran/common_with_division.f +17 -0
- numpy/f2py/tests/src/crackfortran/data_common.f +8 -0
- numpy/f2py/tests/src/crackfortran/data_multiplier.f +5 -0
- numpy/f2py/tests/src/crackfortran/data_stmts.f90 +20 -0
- numpy/f2py/tests/src/crackfortran/data_with_comments.f +8 -0
- numpy/f2py/tests/src/crackfortran/foo_deps.f90 +6 -0
- numpy/f2py/tests/src/crackfortran/gh15035.f +16 -0
- numpy/f2py/tests/src/crackfortran/gh17859.f +12 -0
- numpy/f2py/tests/src/crackfortran/gh22648.pyf +7 -0
- numpy/f2py/tests/src/crackfortran/gh23533.f +5 -0
- numpy/f2py/tests/src/crackfortran/gh23598.f90 +4 -0
- numpy/f2py/tests/src/crackfortran/gh23598Warn.f90 +11 -0
- numpy/f2py/tests/src/crackfortran/gh23879.f90 +20 -0
- numpy/f2py/tests/src/crackfortran/gh27697.f90 +12 -0
- numpy/f2py/tests/src/crackfortran/gh2848.f90 +13 -0
- numpy/f2py/tests/src/crackfortran/operators.f90 +49 -0
- numpy/f2py/tests/src/crackfortran/privatemod.f90 +11 -0
- numpy/f2py/tests/src/crackfortran/publicmod.f90 +10 -0
- numpy/f2py/tests/src/crackfortran/pubprivmod.f90 +10 -0
- numpy/f2py/tests/src/crackfortran/unicode_comment.f90 +4 -0
- numpy/f2py/tests/src/f2cmap/.f2py_f2cmap +1 -0
- numpy/f2py/tests/src/f2cmap/isoFortranEnvMap.f90 +9 -0
- numpy/f2py/tests/src/isocintrin/isoCtests.f90 +34 -0
- numpy/f2py/tests/src/kind/foo.f90 +20 -0
- numpy/f2py/tests/src/mixed/foo.f +5 -0
- numpy/f2py/tests/src/mixed/foo_fixed.f90 +8 -0
- numpy/f2py/tests/src/mixed/foo_free.f90 +8 -0
- numpy/f2py/tests/src/modules/gh25337/data.f90 +8 -0
- numpy/f2py/tests/src/modules/gh25337/use_data.f90 +6 -0
- numpy/f2py/tests/src/modules/gh26920/two_mods_with_no_public_entities.f90 +21 -0
- numpy/f2py/tests/src/modules/gh26920/two_mods_with_one_public_routine.f90 +21 -0
- numpy/f2py/tests/src/modules/module_data_docstring.f90 +12 -0
- numpy/f2py/tests/src/modules/use_modules.f90 +20 -0
- numpy/f2py/tests/src/negative_bounds/issue_20853.f90 +7 -0
- numpy/f2py/tests/src/parameter/constant_array.f90 +45 -0
- numpy/f2py/tests/src/parameter/constant_both.f90 +57 -0
- numpy/f2py/tests/src/parameter/constant_compound.f90 +15 -0
- numpy/f2py/tests/src/parameter/constant_integer.f90 +22 -0
- numpy/f2py/tests/src/parameter/constant_non_compound.f90 +23 -0
- numpy/f2py/tests/src/parameter/constant_real.f90 +23 -0
- numpy/f2py/tests/src/quoted_character/foo.f +14 -0
- numpy/f2py/tests/src/regression/AB.inc +1 -0
- numpy/f2py/tests/src/regression/assignOnlyModule.f90 +25 -0
- numpy/f2py/tests/src/regression/datonly.f90 +17 -0
- numpy/f2py/tests/src/regression/f77comments.f +26 -0
- numpy/f2py/tests/src/regression/f77fixedform.f95 +5 -0
- numpy/f2py/tests/src/regression/f90continuation.f90 +9 -0
- numpy/f2py/tests/src/regression/incfile.f90 +5 -0
- numpy/f2py/tests/src/regression/inout.f90 +9 -0
- numpy/f2py/tests/src/regression/lower_f2py_fortran.f90 +5 -0
- numpy/f2py/tests/src/regression/mod_derived_types.f90 +23 -0
- numpy/f2py/tests/src/return_character/foo77.f +45 -0
- numpy/f2py/tests/src/return_character/foo90.f90 +48 -0
- numpy/f2py/tests/src/return_complex/foo77.f +45 -0
- numpy/f2py/tests/src/return_complex/foo90.f90 +48 -0
- numpy/f2py/tests/src/return_integer/foo77.f +56 -0
- numpy/f2py/tests/src/return_integer/foo90.f90 +59 -0
- numpy/f2py/tests/src/return_logical/foo77.f +56 -0
- numpy/f2py/tests/src/return_logical/foo90.f90 +59 -0
- numpy/f2py/tests/src/return_real/foo77.f +45 -0
- numpy/f2py/tests/src/return_real/foo90.f90 +48 -0
- numpy/f2py/tests/src/routines/funcfortranname.f +5 -0
- numpy/f2py/tests/src/routines/funcfortranname.pyf +11 -0
- numpy/f2py/tests/src/routines/subrout.f +4 -0
- numpy/f2py/tests/src/routines/subrout.pyf +10 -0
- numpy/f2py/tests/src/size/foo.f90 +44 -0
- numpy/f2py/tests/src/string/char.f90 +29 -0
- numpy/f2py/tests/src/string/fixed_string.f90 +34 -0
- numpy/f2py/tests/src/string/gh24008.f +8 -0
- numpy/f2py/tests/src/string/gh24662.f90 +7 -0
- numpy/f2py/tests/src/string/gh25286.f90 +14 -0
- numpy/f2py/tests/src/string/gh25286.pyf +12 -0
- numpy/f2py/tests/src/string/gh25286_bc.pyf +12 -0
- numpy/f2py/tests/src/string/scalar_string.f90 +9 -0
- numpy/f2py/tests/src/string/string.f +12 -0
- numpy/f2py/tests/src/value_attrspec/gh21665.f90 +9 -0
- numpy/f2py/tests/test_abstract_interface.py +26 -0
- numpy/f2py/tests/test_array_from_pyobj.py +678 -0
- numpy/f2py/tests/test_assumed_shape.py +50 -0
- numpy/f2py/tests/test_block_docstring.py +20 -0
- numpy/f2py/tests/test_callback.py +263 -0
- numpy/f2py/tests/test_character.py +641 -0
- numpy/f2py/tests/test_common.py +23 -0
- numpy/f2py/tests/test_crackfortran.py +421 -0
- numpy/f2py/tests/test_data.py +71 -0
- numpy/f2py/tests/test_docs.py +66 -0
- numpy/f2py/tests/test_f2cmap.py +17 -0
- numpy/f2py/tests/test_f2py2e.py +983 -0
- numpy/f2py/tests/test_isoc.py +56 -0
- numpy/f2py/tests/test_kind.py +52 -0
- numpy/f2py/tests/test_mixed.py +35 -0
- numpy/f2py/tests/test_modules.py +83 -0
- numpy/f2py/tests/test_parameter.py +129 -0
- numpy/f2py/tests/test_pyf_src.py +43 -0
- numpy/f2py/tests/test_quoted_character.py +18 -0
- numpy/f2py/tests/test_regression.py +187 -0
- numpy/f2py/tests/test_return_character.py +48 -0
- numpy/f2py/tests/test_return_complex.py +67 -0
- numpy/f2py/tests/test_return_integer.py +55 -0
- numpy/f2py/tests/test_return_logical.py +65 -0
- numpy/f2py/tests/test_return_real.py +109 -0
- numpy/f2py/tests/test_routines.py +29 -0
- numpy/f2py/tests/test_semicolon_split.py +75 -0
- numpy/f2py/tests/test_size.py +45 -0
- numpy/f2py/tests/test_string.py +100 -0
- numpy/f2py/tests/test_symbolic.py +500 -0
- numpy/f2py/tests/test_value_attrspec.py +15 -0
- numpy/f2py/tests/util.py +442 -0
- numpy/f2py/use_rules.py +99 -0
- numpy/f2py/use_rules.pyi +9 -0
- numpy/fft/__init__.py +213 -0
- numpy/fft/__init__.pyi +38 -0
- numpy/fft/_helper.py +235 -0
- numpy/fft/_helper.pyi +44 -0
- numpy/fft/_pocketfft.py +1693 -0
- numpy/fft/_pocketfft.pyi +137 -0
- numpy/fft/_pocketfft_umath.cpython-313t-aarch64-linux-musl.so +0 -0
- numpy/fft/tests/__init__.py +0 -0
- numpy/fft/tests/test_helper.py +167 -0
- numpy/fft/tests/test_pocketfft.py +589 -0
- numpy/lib/__init__.py +97 -0
- numpy/lib/__init__.pyi +52 -0
- numpy/lib/_array_utils_impl.py +62 -0
- numpy/lib/_array_utils_impl.pyi +10 -0
- numpy/lib/_arraypad_impl.py +926 -0
- numpy/lib/_arraypad_impl.pyi +88 -0
- numpy/lib/_arraysetops_impl.py +1158 -0
- numpy/lib/_arraysetops_impl.pyi +462 -0
- numpy/lib/_arrayterator_impl.py +224 -0
- numpy/lib/_arrayterator_impl.pyi +45 -0
- numpy/lib/_datasource.py +700 -0
- numpy/lib/_datasource.pyi +30 -0
- numpy/lib/_format_impl.py +1036 -0
- numpy/lib/_format_impl.pyi +56 -0
- numpy/lib/_function_base_impl.py +5758 -0
- numpy/lib/_function_base_impl.pyi +2324 -0
- numpy/lib/_histograms_impl.py +1085 -0
- numpy/lib/_histograms_impl.pyi +40 -0
- numpy/lib/_index_tricks_impl.py +1048 -0
- numpy/lib/_index_tricks_impl.pyi +267 -0
- numpy/lib/_iotools.py +900 -0
- numpy/lib/_iotools.pyi +116 -0
- numpy/lib/_nanfunctions_impl.py +2001 -0
- numpy/lib/_nanfunctions_impl.pyi +48 -0
- numpy/lib/_npyio_impl.py +2583 -0
- numpy/lib/_npyio_impl.pyi +299 -0
- numpy/lib/_polynomial_impl.py +1465 -0
- numpy/lib/_polynomial_impl.pyi +338 -0
- numpy/lib/_scimath_impl.py +642 -0
- numpy/lib/_scimath_impl.pyi +93 -0
- numpy/lib/_shape_base_impl.py +1289 -0
- numpy/lib/_shape_base_impl.pyi +236 -0
- numpy/lib/_stride_tricks_impl.py +582 -0
- numpy/lib/_stride_tricks_impl.pyi +73 -0
- numpy/lib/_twodim_base_impl.py +1201 -0
- numpy/lib/_twodim_base_impl.pyi +408 -0
- numpy/lib/_type_check_impl.py +710 -0
- numpy/lib/_type_check_impl.pyi +348 -0
- numpy/lib/_ufunclike_impl.py +199 -0
- numpy/lib/_ufunclike_impl.pyi +60 -0
- numpy/lib/_user_array_impl.py +310 -0
- numpy/lib/_user_array_impl.pyi +226 -0
- numpy/lib/_utils_impl.py +784 -0
- numpy/lib/_utils_impl.pyi +22 -0
- numpy/lib/_version.py +153 -0
- numpy/lib/_version.pyi +17 -0
- numpy/lib/array_utils.py +7 -0
- numpy/lib/array_utils.pyi +6 -0
- numpy/lib/format.py +24 -0
- numpy/lib/format.pyi +24 -0
- numpy/lib/introspect.py +94 -0
- numpy/lib/introspect.pyi +3 -0
- numpy/lib/mixins.py +180 -0
- numpy/lib/mixins.pyi +78 -0
- numpy/lib/npyio.py +1 -0
- numpy/lib/npyio.pyi +5 -0
- numpy/lib/recfunctions.py +1681 -0
- numpy/lib/recfunctions.pyi +444 -0
- numpy/lib/scimath.py +13 -0
- numpy/lib/scimath.pyi +12 -0
- numpy/lib/stride_tricks.py +1 -0
- numpy/lib/stride_tricks.pyi +4 -0
- numpy/lib/tests/__init__.py +0 -0
- numpy/lib/tests/data/py2-np0-objarr.npy +0 -0
- numpy/lib/tests/data/py2-objarr.npy +0 -0
- numpy/lib/tests/data/py2-objarr.npz +0 -0
- numpy/lib/tests/data/py3-objarr.npy +0 -0
- numpy/lib/tests/data/py3-objarr.npz +0 -0
- numpy/lib/tests/data/python3.npy +0 -0
- numpy/lib/tests/data/win64python2.npy +0 -0
- numpy/lib/tests/test__datasource.py +328 -0
- numpy/lib/tests/test__iotools.py +358 -0
- numpy/lib/tests/test__version.py +64 -0
- numpy/lib/tests/test_array_utils.py +32 -0
- numpy/lib/tests/test_arraypad.py +1427 -0
- numpy/lib/tests/test_arraysetops.py +1302 -0
- numpy/lib/tests/test_arrayterator.py +45 -0
- numpy/lib/tests/test_format.py +1054 -0
- numpy/lib/tests/test_function_base.py +4705 -0
- numpy/lib/tests/test_histograms.py +855 -0
- numpy/lib/tests/test_index_tricks.py +693 -0
- numpy/lib/tests/test_io.py +2857 -0
- numpy/lib/tests/test_loadtxt.py +1099 -0
- numpy/lib/tests/test_mixins.py +215 -0
- numpy/lib/tests/test_nanfunctions.py +1438 -0
- numpy/lib/tests/test_packbits.py +376 -0
- numpy/lib/tests/test_polynomial.py +325 -0
- numpy/lib/tests/test_recfunctions.py +1042 -0
- numpy/lib/tests/test_regression.py +231 -0
- numpy/lib/tests/test_shape_base.py +813 -0
- numpy/lib/tests/test_stride_tricks.py +655 -0
- numpy/lib/tests/test_twodim_base.py +559 -0
- numpy/lib/tests/test_type_check.py +473 -0
- numpy/lib/tests/test_ufunclike.py +97 -0
- numpy/lib/tests/test_utils.py +80 -0
- numpy/lib/user_array.py +1 -0
- numpy/lib/user_array.pyi +1 -0
- numpy/linalg/__init__.py +95 -0
- numpy/linalg/__init__.pyi +71 -0
- numpy/linalg/_linalg.py +3657 -0
- numpy/linalg/_linalg.pyi +548 -0
- numpy/linalg/_umath_linalg.cpython-313t-aarch64-linux-musl.so +0 -0
- numpy/linalg/_umath_linalg.pyi +60 -0
- numpy/linalg/lapack_lite.cpython-313t-aarch64-linux-musl.so +0 -0
- numpy/linalg/lapack_lite.pyi +143 -0
- numpy/linalg/tests/__init__.py +0 -0
- numpy/linalg/tests/test_deprecations.py +21 -0
- numpy/linalg/tests/test_linalg.py +2442 -0
- numpy/linalg/tests/test_regression.py +182 -0
- numpy/ma/API_CHANGES.txt +135 -0
- numpy/ma/LICENSE +24 -0
- numpy/ma/README.rst +236 -0
- numpy/ma/__init__.py +53 -0
- numpy/ma/__init__.pyi +458 -0
- numpy/ma/core.py +8929 -0
- numpy/ma/core.pyi +3720 -0
- numpy/ma/extras.py +2266 -0
- numpy/ma/extras.pyi +297 -0
- numpy/ma/mrecords.py +762 -0
- numpy/ma/mrecords.pyi +96 -0
- numpy/ma/tests/__init__.py +0 -0
- numpy/ma/tests/test_arrayobject.py +40 -0
- numpy/ma/tests/test_core.py +6008 -0
- numpy/ma/tests/test_deprecations.py +65 -0
- numpy/ma/tests/test_extras.py +1945 -0
- numpy/ma/tests/test_mrecords.py +495 -0
- numpy/ma/tests/test_old_ma.py +939 -0
- numpy/ma/tests/test_regression.py +83 -0
- numpy/ma/tests/test_subclassing.py +469 -0
- numpy/ma/testutils.py +294 -0
- numpy/ma/testutils.pyi +69 -0
- numpy/matlib.py +380 -0
- numpy/matlib.pyi +580 -0
- numpy/matrixlib/__init__.py +12 -0
- numpy/matrixlib/__init__.pyi +3 -0
- numpy/matrixlib/defmatrix.py +1119 -0
- numpy/matrixlib/defmatrix.pyi +218 -0
- numpy/matrixlib/tests/__init__.py +0 -0
- numpy/matrixlib/tests/test_defmatrix.py +455 -0
- numpy/matrixlib/tests/test_interaction.py +360 -0
- numpy/matrixlib/tests/test_masked_matrix.py +240 -0
- numpy/matrixlib/tests/test_matrix_linalg.py +110 -0
- numpy/matrixlib/tests/test_multiarray.py +17 -0
- numpy/matrixlib/tests/test_numeric.py +18 -0
- numpy/matrixlib/tests/test_regression.py +31 -0
- numpy/polynomial/__init__.py +187 -0
- numpy/polynomial/__init__.pyi +31 -0
- numpy/polynomial/_polybase.py +1191 -0
- numpy/polynomial/_polybase.pyi +262 -0
- numpy/polynomial/_polytypes.pyi +501 -0
- numpy/polynomial/chebyshev.py +2001 -0
- numpy/polynomial/chebyshev.pyi +180 -0
- numpy/polynomial/hermite.py +1738 -0
- numpy/polynomial/hermite.pyi +106 -0
- numpy/polynomial/hermite_e.py +1640 -0
- numpy/polynomial/hermite_e.pyi +106 -0
- numpy/polynomial/laguerre.py +1673 -0
- numpy/polynomial/laguerre.pyi +100 -0
- numpy/polynomial/legendre.py +1603 -0
- numpy/polynomial/legendre.pyi +100 -0
- numpy/polynomial/polynomial.py +1625 -0
- numpy/polynomial/polynomial.pyi +109 -0
- numpy/polynomial/polyutils.py +759 -0
- numpy/polynomial/polyutils.pyi +307 -0
- numpy/polynomial/tests/__init__.py +0 -0
- numpy/polynomial/tests/test_chebyshev.py +618 -0
- numpy/polynomial/tests/test_classes.py +613 -0
- numpy/polynomial/tests/test_hermite.py +553 -0
- numpy/polynomial/tests/test_hermite_e.py +554 -0
- numpy/polynomial/tests/test_laguerre.py +535 -0
- numpy/polynomial/tests/test_legendre.py +566 -0
- numpy/polynomial/tests/test_polynomial.py +691 -0
- numpy/polynomial/tests/test_polyutils.py +123 -0
- numpy/polynomial/tests/test_printing.py +557 -0
- numpy/polynomial/tests/test_symbol.py +217 -0
- numpy/py.typed +0 -0
- numpy/random/LICENSE.md +71 -0
- numpy/random/__init__.pxd +14 -0
- numpy/random/__init__.py +213 -0
- numpy/random/__init__.pyi +124 -0
- numpy/random/_bounded_integers.cpython-313t-aarch64-linux-musl.so +0 -0
- numpy/random/_bounded_integers.pxd +29 -0
- numpy/random/_bounded_integers.pyi +1 -0
- numpy/random/_common.cpython-313t-aarch64-linux-musl.so +0 -0
- numpy/random/_common.pxd +107 -0
- numpy/random/_common.pyi +16 -0
- numpy/random/_examples/cffi/extending.py +44 -0
- numpy/random/_examples/cffi/parse.py +53 -0
- numpy/random/_examples/cython/extending.pyx +77 -0
- numpy/random/_examples/cython/extending_distributions.pyx +117 -0
- numpy/random/_examples/cython/meson.build +53 -0
- numpy/random/_examples/numba/extending.py +86 -0
- numpy/random/_examples/numba/extending_distributions.py +67 -0
- numpy/random/_generator.cpython-313t-aarch64-linux-musl.so +0 -0
- numpy/random/_generator.pyi +862 -0
- numpy/random/_mt19937.cpython-313t-aarch64-linux-musl.so +0 -0
- numpy/random/_mt19937.pyi +27 -0
- numpy/random/_pcg64.cpython-313t-aarch64-linux-musl.so +0 -0
- numpy/random/_pcg64.pyi +41 -0
- numpy/random/_philox.cpython-313t-aarch64-linux-musl.so +0 -0
- numpy/random/_philox.pyi +36 -0
- numpy/random/_pickle.py +88 -0
- numpy/random/_pickle.pyi +43 -0
- numpy/random/_sfc64.cpython-313t-aarch64-linux-musl.so +0 -0
- numpy/random/_sfc64.pyi +25 -0
- numpy/random/bit_generator.cpython-313t-aarch64-linux-musl.so +0 -0
- numpy/random/bit_generator.pxd +35 -0
- numpy/random/bit_generator.pyi +123 -0
- numpy/random/c_distributions.pxd +119 -0
- numpy/random/lib/libnpyrandom.a +0 -0
- numpy/random/mtrand.cpython-313t-aarch64-linux-musl.so +0 -0
- numpy/random/mtrand.pyi +759 -0
- numpy/random/tests/__init__.py +0 -0
- numpy/random/tests/data/__init__.py +0 -0
- numpy/random/tests/data/generator_pcg64_np121.pkl.gz +0 -0
- numpy/random/tests/data/generator_pcg64_np126.pkl.gz +0 -0
- numpy/random/tests/data/mt19937-testset-1.csv +1001 -0
- numpy/random/tests/data/mt19937-testset-2.csv +1001 -0
- numpy/random/tests/data/pcg64-testset-1.csv +1001 -0
- numpy/random/tests/data/pcg64-testset-2.csv +1001 -0
- numpy/random/tests/data/pcg64dxsm-testset-1.csv +1001 -0
- numpy/random/tests/data/pcg64dxsm-testset-2.csv +1001 -0
- numpy/random/tests/data/philox-testset-1.csv +1001 -0
- numpy/random/tests/data/philox-testset-2.csv +1001 -0
- numpy/random/tests/data/sfc64-testset-1.csv +1001 -0
- numpy/random/tests/data/sfc64-testset-2.csv +1001 -0
- numpy/random/tests/data/sfc64_np126.pkl.gz +0 -0
- numpy/random/tests/test_direct.py +595 -0
- numpy/random/tests/test_extending.py +131 -0
- numpy/random/tests/test_generator_mt19937.py +2825 -0
- numpy/random/tests/test_generator_mt19937_regressions.py +221 -0
- numpy/random/tests/test_random.py +1724 -0
- numpy/random/tests/test_randomstate.py +2099 -0
- numpy/random/tests/test_randomstate_regression.py +213 -0
- numpy/random/tests/test_regression.py +175 -0
- numpy/random/tests/test_seed_sequence.py +79 -0
- numpy/random/tests/test_smoke.py +882 -0
- numpy/rec/__init__.py +2 -0
- numpy/rec/__init__.pyi +23 -0
- numpy/strings/__init__.py +2 -0
- numpy/strings/__init__.pyi +97 -0
- numpy/testing/__init__.py +22 -0
- numpy/testing/__init__.pyi +107 -0
- numpy/testing/_private/__init__.py +0 -0
- numpy/testing/_private/__init__.pyi +0 -0
- numpy/testing/_private/extbuild.py +250 -0
- numpy/testing/_private/extbuild.pyi +25 -0
- numpy/testing/_private/utils.py +2830 -0
- numpy/testing/_private/utils.pyi +505 -0
- numpy/testing/overrides.py +84 -0
- numpy/testing/overrides.pyi +10 -0
- numpy/testing/print_coercion_tables.py +207 -0
- numpy/testing/print_coercion_tables.pyi +26 -0
- numpy/testing/tests/__init__.py +0 -0
- numpy/testing/tests/test_utils.py +2123 -0
- numpy/tests/__init__.py +0 -0
- numpy/tests/test__all__.py +10 -0
- numpy/tests/test_configtool.py +51 -0
- numpy/tests/test_ctypeslib.py +383 -0
- numpy/tests/test_lazyloading.py +42 -0
- numpy/tests/test_matlib.py +59 -0
- numpy/tests/test_numpy_config.py +47 -0
- numpy/tests/test_numpy_version.py +54 -0
- numpy/tests/test_public_api.py +804 -0
- numpy/tests/test_reloading.py +76 -0
- numpy/tests/test_scripts.py +48 -0
- numpy/tests/test_warnings.py +79 -0
- numpy/typing/__init__.py +233 -0
- numpy/typing/__init__.pyi +3 -0
- numpy/typing/mypy_plugin.py +200 -0
- numpy/typing/tests/__init__.py +0 -0
- numpy/typing/tests/data/fail/arithmetic.pyi +126 -0
- numpy/typing/tests/data/fail/array_constructors.pyi +34 -0
- numpy/typing/tests/data/fail/array_like.pyi +15 -0
- numpy/typing/tests/data/fail/array_pad.pyi +6 -0
- numpy/typing/tests/data/fail/arrayprint.pyi +15 -0
- numpy/typing/tests/data/fail/arrayterator.pyi +14 -0
- numpy/typing/tests/data/fail/bitwise_ops.pyi +17 -0
- numpy/typing/tests/data/fail/char.pyi +63 -0
- numpy/typing/tests/data/fail/chararray.pyi +61 -0
- numpy/typing/tests/data/fail/comparisons.pyi +27 -0
- numpy/typing/tests/data/fail/constants.pyi +3 -0
- numpy/typing/tests/data/fail/datasource.pyi +16 -0
- numpy/typing/tests/data/fail/dtype.pyi +17 -0
- numpy/typing/tests/data/fail/einsumfunc.pyi +12 -0
- numpy/typing/tests/data/fail/flatiter.pyi +38 -0
- numpy/typing/tests/data/fail/fromnumeric.pyi +148 -0
- numpy/typing/tests/data/fail/histograms.pyi +12 -0
- numpy/typing/tests/data/fail/index_tricks.pyi +14 -0
- numpy/typing/tests/data/fail/lib_function_base.pyi +60 -0
- numpy/typing/tests/data/fail/lib_polynomial.pyi +29 -0
- numpy/typing/tests/data/fail/lib_utils.pyi +3 -0
- numpy/typing/tests/data/fail/lib_version.pyi +6 -0
- numpy/typing/tests/data/fail/linalg.pyi +52 -0
- numpy/typing/tests/data/fail/ma.pyi +155 -0
- numpy/typing/tests/data/fail/memmap.pyi +5 -0
- numpy/typing/tests/data/fail/modules.pyi +17 -0
- numpy/typing/tests/data/fail/multiarray.pyi +52 -0
- numpy/typing/tests/data/fail/ndarray.pyi +11 -0
- numpy/typing/tests/data/fail/ndarray_misc.pyi +49 -0
- numpy/typing/tests/data/fail/nditer.pyi +8 -0
- numpy/typing/tests/data/fail/nested_sequence.pyi +17 -0
- numpy/typing/tests/data/fail/npyio.pyi +24 -0
- numpy/typing/tests/data/fail/numerictypes.pyi +5 -0
- numpy/typing/tests/data/fail/random.pyi +62 -0
- numpy/typing/tests/data/fail/rec.pyi +17 -0
- numpy/typing/tests/data/fail/scalars.pyi +86 -0
- numpy/typing/tests/data/fail/shape.pyi +7 -0
- numpy/typing/tests/data/fail/shape_base.pyi +8 -0
- numpy/typing/tests/data/fail/stride_tricks.pyi +9 -0
- numpy/typing/tests/data/fail/strings.pyi +52 -0
- numpy/typing/tests/data/fail/testing.pyi +28 -0
- numpy/typing/tests/data/fail/twodim_base.pyi +39 -0
- numpy/typing/tests/data/fail/type_check.pyi +12 -0
- numpy/typing/tests/data/fail/ufunc_config.pyi +21 -0
- numpy/typing/tests/data/fail/ufunclike.pyi +21 -0
- numpy/typing/tests/data/fail/ufuncs.pyi +17 -0
- numpy/typing/tests/data/fail/warnings_and_errors.pyi +5 -0
- numpy/typing/tests/data/misc/extended_precision.pyi +9 -0
- numpy/typing/tests/data/mypy.ini +8 -0
- numpy/typing/tests/data/pass/arithmetic.py +614 -0
- numpy/typing/tests/data/pass/array_constructors.py +138 -0
- numpy/typing/tests/data/pass/array_like.py +43 -0
- numpy/typing/tests/data/pass/arrayprint.py +37 -0
- numpy/typing/tests/data/pass/arrayterator.py +28 -0
- numpy/typing/tests/data/pass/bitwise_ops.py +131 -0
- numpy/typing/tests/data/pass/comparisons.py +316 -0
- numpy/typing/tests/data/pass/dtype.py +57 -0
- numpy/typing/tests/data/pass/einsumfunc.py +36 -0
- numpy/typing/tests/data/pass/flatiter.py +26 -0
- numpy/typing/tests/data/pass/fromnumeric.py +272 -0
- numpy/typing/tests/data/pass/index_tricks.py +62 -0
- numpy/typing/tests/data/pass/lib_user_array.py +22 -0
- numpy/typing/tests/data/pass/lib_utils.py +19 -0
- numpy/typing/tests/data/pass/lib_version.py +18 -0
- numpy/typing/tests/data/pass/literal.py +52 -0
- numpy/typing/tests/data/pass/ma.py +199 -0
- numpy/typing/tests/data/pass/mod.py +149 -0
- numpy/typing/tests/data/pass/modules.py +45 -0
- numpy/typing/tests/data/pass/multiarray.py +77 -0
- numpy/typing/tests/data/pass/ndarray_conversion.py +81 -0
- numpy/typing/tests/data/pass/ndarray_misc.py +199 -0
- numpy/typing/tests/data/pass/ndarray_shape_manipulation.py +47 -0
- numpy/typing/tests/data/pass/nditer.py +4 -0
- numpy/typing/tests/data/pass/numeric.py +90 -0
- numpy/typing/tests/data/pass/numerictypes.py +17 -0
- numpy/typing/tests/data/pass/random.py +1498 -0
- numpy/typing/tests/data/pass/recfunctions.py +164 -0
- numpy/typing/tests/data/pass/scalars.py +249 -0
- numpy/typing/tests/data/pass/shape.py +19 -0
- numpy/typing/tests/data/pass/simple.py +170 -0
- numpy/typing/tests/data/pass/ufunc_config.py +64 -0
- numpy/typing/tests/data/pass/ufunclike.py +52 -0
- numpy/typing/tests/data/pass/ufuncs.py +16 -0
- numpy/typing/tests/data/pass/warnings_and_errors.py +6 -0
- numpy/typing/tests/data/reveal/arithmetic.pyi +719 -0
- numpy/typing/tests/data/reveal/array_api_info.pyi +70 -0
- numpy/typing/tests/data/reveal/array_constructors.pyi +277 -0
- numpy/typing/tests/data/reveal/arraypad.pyi +27 -0
- numpy/typing/tests/data/reveal/arrayprint.pyi +25 -0
- numpy/typing/tests/data/reveal/arraysetops.pyi +74 -0
- numpy/typing/tests/data/reveal/arrayterator.pyi +27 -0
- numpy/typing/tests/data/reveal/bitwise_ops.pyi +166 -0
- numpy/typing/tests/data/reveal/char.pyi +225 -0
- numpy/typing/tests/data/reveal/chararray.pyi +138 -0
- numpy/typing/tests/data/reveal/comparisons.pyi +264 -0
- numpy/typing/tests/data/reveal/constants.pyi +14 -0
- numpy/typing/tests/data/reveal/ctypeslib.pyi +81 -0
- numpy/typing/tests/data/reveal/datasource.pyi +23 -0
- numpy/typing/tests/data/reveal/dtype.pyi +132 -0
- numpy/typing/tests/data/reveal/einsumfunc.pyi +39 -0
- numpy/typing/tests/data/reveal/emath.pyi +54 -0
- numpy/typing/tests/data/reveal/fft.pyi +37 -0
- numpy/typing/tests/data/reveal/flatiter.pyi +86 -0
- numpy/typing/tests/data/reveal/fromnumeric.pyi +347 -0
- numpy/typing/tests/data/reveal/getlimits.pyi +53 -0
- numpy/typing/tests/data/reveal/histograms.pyi +25 -0
- numpy/typing/tests/data/reveal/index_tricks.pyi +70 -0
- numpy/typing/tests/data/reveal/lib_function_base.pyi +409 -0
- numpy/typing/tests/data/reveal/lib_polynomial.pyi +147 -0
- numpy/typing/tests/data/reveal/lib_utils.pyi +17 -0
- numpy/typing/tests/data/reveal/lib_version.pyi +20 -0
- numpy/typing/tests/data/reveal/linalg.pyi +154 -0
- numpy/typing/tests/data/reveal/ma.pyi +1098 -0
- numpy/typing/tests/data/reveal/matrix.pyi +73 -0
- numpy/typing/tests/data/reveal/memmap.pyi +19 -0
- numpy/typing/tests/data/reveal/mod.pyi +178 -0
- numpy/typing/tests/data/reveal/modules.pyi +51 -0
- numpy/typing/tests/data/reveal/multiarray.pyi +197 -0
- numpy/typing/tests/data/reveal/nbit_base_example.pyi +20 -0
- numpy/typing/tests/data/reveal/ndarray_assignability.pyi +82 -0
- numpy/typing/tests/data/reveal/ndarray_conversion.pyi +83 -0
- numpy/typing/tests/data/reveal/ndarray_misc.pyi +246 -0
- numpy/typing/tests/data/reveal/ndarray_shape_manipulation.pyi +47 -0
- numpy/typing/tests/data/reveal/nditer.pyi +49 -0
- numpy/typing/tests/data/reveal/nested_sequence.pyi +25 -0
- numpy/typing/tests/data/reveal/npyio.pyi +83 -0
- numpy/typing/tests/data/reveal/numeric.pyi +170 -0
- numpy/typing/tests/data/reveal/numerictypes.pyi +16 -0
- numpy/typing/tests/data/reveal/polynomial_polybase.pyi +217 -0
- numpy/typing/tests/data/reveal/polynomial_polyutils.pyi +218 -0
- numpy/typing/tests/data/reveal/polynomial_series.pyi +138 -0
- numpy/typing/tests/data/reveal/random.pyi +1546 -0
- numpy/typing/tests/data/reveal/rec.pyi +171 -0
- numpy/typing/tests/data/reveal/scalars.pyi +191 -0
- numpy/typing/tests/data/reveal/shape.pyi +13 -0
- numpy/typing/tests/data/reveal/shape_base.pyi +52 -0
- numpy/typing/tests/data/reveal/stride_tricks.pyi +27 -0
- numpy/typing/tests/data/reveal/strings.pyi +196 -0
- numpy/typing/tests/data/reveal/testing.pyi +198 -0
- numpy/typing/tests/data/reveal/twodim_base.pyi +225 -0
- numpy/typing/tests/data/reveal/type_check.pyi +67 -0
- numpy/typing/tests/data/reveal/ufunc_config.pyi +29 -0
- numpy/typing/tests/data/reveal/ufunclike.pyi +31 -0
- numpy/typing/tests/data/reveal/ufuncs.pyi +142 -0
- numpy/typing/tests/data/reveal/warnings_and_errors.pyi +11 -0
- numpy/typing/tests/test_isfile.py +38 -0
- numpy/typing/tests/test_runtime.py +110 -0
- numpy/typing/tests/test_typing.py +205 -0
- numpy/version.py +11 -0
- numpy/version.pyi +9 -0
- numpy-2.4.0.dist-info/METADATA +139 -0
- numpy-2.4.0.dist-info/RECORD +915 -0
- numpy-2.4.0.dist-info/WHEEL +5 -0
- numpy-2.4.0.dist-info/entry_points.txt +13 -0
- numpy-2.4.0.dist-info/licenses/LICENSE.txt +935 -0
- numpy-2.4.0.dist-info/licenses/numpy/_core/include/numpy/libdivide/LICENSE.txt +21 -0
- numpy-2.4.0.dist-info/licenses/numpy/_core/src/common/pythoncapi-compat/COPYING +14 -0
- numpy-2.4.0.dist-info/licenses/numpy/_core/src/highway/LICENSE +371 -0
- numpy-2.4.0.dist-info/licenses/numpy/_core/src/multiarray/dragon4_LICENSE.txt +27 -0
- numpy-2.4.0.dist-info/licenses/numpy/_core/src/npysort/x86-simd-sort/LICENSE.md +28 -0
- numpy-2.4.0.dist-info/licenses/numpy/_core/src/umath/svml/LICENSE +30 -0
- numpy-2.4.0.dist-info/licenses/numpy/fft/pocketfft/LICENSE.md +25 -0
- numpy-2.4.0.dist-info/licenses/numpy/linalg/lapack_lite/LICENSE.txt +48 -0
- numpy-2.4.0.dist-info/licenses/numpy/ma/LICENSE +24 -0
- numpy-2.4.0.dist-info/licenses/numpy/random/LICENSE.md +71 -0
- numpy-2.4.0.dist-info/licenses/numpy/random/src/distributions/LICENSE.md +61 -0
- numpy-2.4.0.dist-info/licenses/numpy/random/src/mt19937/LICENSE.md +61 -0
- numpy-2.4.0.dist-info/licenses/numpy/random/src/pcg64/LICENSE.md +22 -0
- numpy-2.4.0.dist-info/licenses/numpy/random/src/philox/LICENSE.md +31 -0
- numpy-2.4.0.dist-info/licenses/numpy/random/src/sfc64/LICENSE.md +27 -0
- numpy-2.4.0.dist-info/licenses/numpy/random/src/splitmix64/LICENSE.md +9 -0
- numpy.libs/libgcc_s-2d945d6c-767fb991.so.1 +0 -0
- numpy.libs/libgcc_s-2d945d6c.so.1 +0 -0
- numpy.libs/libgfortran-67378ab2-e7e7cfab.so.5.0.0 +0 -0
- numpy.libs/libscipy_openblas64_-1fc386ee.so +0 -0
- numpy.libs/libstdc++-85f2cd6d.so.6.0.33 +0 -0
numpy/f2py/f2py2e.py
ADDED
|
@@ -0,0 +1,788 @@
|
|
|
1
|
+
"""
|
|
2
|
+
|
|
3
|
+
f2py2e - Fortran to Python C/API generator. 2nd Edition.
|
|
4
|
+
See __usage__ below.
|
|
5
|
+
|
|
6
|
+
Copyright 1999 -- 2011 Pearu Peterson all rights reserved.
|
|
7
|
+
Copyright 2011 -- present NumPy Developers.
|
|
8
|
+
Permission to use, modify, and distribute this software is given under the
|
|
9
|
+
terms of the NumPy License.
|
|
10
|
+
|
|
11
|
+
NO WARRANTY IS EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.
|
|
12
|
+
"""
|
|
13
|
+
import argparse
|
|
14
|
+
import os
|
|
15
|
+
import pprint
|
|
16
|
+
import re
|
|
17
|
+
import sys
|
|
18
|
+
|
|
19
|
+
from numpy.f2py._backends import f2py_build_generator
|
|
20
|
+
|
|
21
|
+
from . import (
|
|
22
|
+
__version__,
|
|
23
|
+
auxfuncs,
|
|
24
|
+
capi_maps,
|
|
25
|
+
cb_rules,
|
|
26
|
+
cfuncs,
|
|
27
|
+
crackfortran,
|
|
28
|
+
f90mod_rules,
|
|
29
|
+
rules,
|
|
30
|
+
)
|
|
31
|
+
from .cfuncs import errmess
|
|
32
|
+
|
|
33
|
+
f2py_version = __version__.version
|
|
34
|
+
numpy_version = __version__.version
|
|
35
|
+
|
|
36
|
+
# outmess=sys.stdout.write
|
|
37
|
+
show = pprint.pprint
|
|
38
|
+
outmess = auxfuncs.outmess
|
|
39
|
+
MESON_ONLY_VER = (sys.version_info >= (3, 12))
|
|
40
|
+
|
|
41
|
+
__usage__ =\
|
|
42
|
+
f"""Usage:
|
|
43
|
+
|
|
44
|
+
1) To construct extension module sources:
|
|
45
|
+
|
|
46
|
+
f2py [<options>] <fortran files> [[[only:]||[skip:]] \\
|
|
47
|
+
<fortran functions> ] \\
|
|
48
|
+
[: <fortran files> ...]
|
|
49
|
+
|
|
50
|
+
2) To compile fortran files and build extension modules:
|
|
51
|
+
|
|
52
|
+
f2py -c [<options>, <build_flib options>, <extra options>] <fortran files>
|
|
53
|
+
|
|
54
|
+
3) To generate signature files:
|
|
55
|
+
|
|
56
|
+
f2py -h <filename.pyf> ...< same options as in (1) >
|
|
57
|
+
|
|
58
|
+
Description: This program generates a Python C/API file (<modulename>module.c)
|
|
59
|
+
that contains wrappers for given fortran functions so that they
|
|
60
|
+
can be called from Python. With the -c option the corresponding
|
|
61
|
+
extension modules are built.
|
|
62
|
+
|
|
63
|
+
Options:
|
|
64
|
+
|
|
65
|
+
-h <filename> Write signatures of the fortran routines to file <filename>
|
|
66
|
+
and exit. You can then edit <filename> and use it instead
|
|
67
|
+
of <fortran files>. If <filename>==stdout then the
|
|
68
|
+
signatures are printed to stdout.
|
|
69
|
+
<fortran functions> Names of fortran routines for which Python C/API
|
|
70
|
+
functions will be generated. Default is all that are found
|
|
71
|
+
in <fortran files>.
|
|
72
|
+
<fortran files> Paths to fortran/signature files that will be scanned for
|
|
73
|
+
<fortran functions> in order to determine their signatures.
|
|
74
|
+
skip: Ignore fortran functions that follow until `:'.
|
|
75
|
+
only: Use only fortran functions that follow until `:'.
|
|
76
|
+
: Get back to <fortran files> mode.
|
|
77
|
+
|
|
78
|
+
-m <modulename> Name of the module; f2py generates a Python/C API
|
|
79
|
+
file <modulename>module.c or extension module <modulename>.
|
|
80
|
+
Default is 'untitled'.
|
|
81
|
+
|
|
82
|
+
'-include<header>' Writes additional headers in the C wrapper, can be passed
|
|
83
|
+
multiple times, generates #include <header> each time.
|
|
84
|
+
|
|
85
|
+
--[no-]lower Do [not] lower the cases in <fortran files>. By default,
|
|
86
|
+
--lower is assumed with -h key, and --no-lower without -h key.
|
|
87
|
+
|
|
88
|
+
--build-dir <dirname> All f2py generated files are created in <dirname>.
|
|
89
|
+
Default is tempfile.mkdtemp().
|
|
90
|
+
|
|
91
|
+
--overwrite-signature Overwrite existing signature file.
|
|
92
|
+
|
|
93
|
+
--[no-]latex-doc Create (or not) <modulename>module.tex.
|
|
94
|
+
Default is --no-latex-doc.
|
|
95
|
+
--short-latex Create 'incomplete' LaTeX document (without commands
|
|
96
|
+
\\documentclass, \\tableofcontents, and \\begin{{document}},
|
|
97
|
+
\\end{{document}}).
|
|
98
|
+
|
|
99
|
+
--[no-]rest-doc Create (or not) <modulename>module.rst.
|
|
100
|
+
Default is --no-rest-doc.
|
|
101
|
+
|
|
102
|
+
--debug-capi Create C/API code that reports the state of the wrappers
|
|
103
|
+
during runtime. Useful for debugging.
|
|
104
|
+
|
|
105
|
+
--[no-]wrap-functions Create Fortran subroutine wrappers to Fortran 77
|
|
106
|
+
functions. --wrap-functions is default because it ensures
|
|
107
|
+
maximum portability/compiler independence.
|
|
108
|
+
|
|
109
|
+
--[no-]freethreading-compatible Create a module that declares it does or
|
|
110
|
+
doesn't require the GIL. The default is
|
|
111
|
+
--freethreading-compatible for backward
|
|
112
|
+
compatibility. Inspect the Fortran code you are wrapping for
|
|
113
|
+
thread safety issues before passing
|
|
114
|
+
--no-freethreading-compatible, as f2py does not analyze
|
|
115
|
+
fortran code for thread safety issues.
|
|
116
|
+
|
|
117
|
+
--include-paths <path1>:<path2>:... Search include files from the given
|
|
118
|
+
directories.
|
|
119
|
+
|
|
120
|
+
--help-link [..] List system resources found by system_info.py. See also
|
|
121
|
+
--link-<resource> switch below. [..] is optional list
|
|
122
|
+
of resources names. E.g. try 'f2py --help-link lapack_opt'.
|
|
123
|
+
|
|
124
|
+
--f2cmap <filename> Load Fortran-to-Python KIND specification from the given
|
|
125
|
+
file. Default: .f2py_f2cmap in current directory.
|
|
126
|
+
|
|
127
|
+
--quiet Run quietly.
|
|
128
|
+
--verbose Run with extra verbosity.
|
|
129
|
+
--skip-empty-wrappers Only generate wrapper files when needed.
|
|
130
|
+
-v Print f2py version ID and exit.
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
build backend options (only effective with -c)
|
|
134
|
+
[NO_MESON] is used to indicate an option not meant to be used
|
|
135
|
+
with the meson backend or above Python 3.12:
|
|
136
|
+
|
|
137
|
+
--fcompiler= Specify Fortran compiler type by vendor [NO_MESON]
|
|
138
|
+
--compiler= Specify distutils C compiler type [NO_MESON]
|
|
139
|
+
|
|
140
|
+
--help-fcompiler List available Fortran compilers and exit [NO_MESON]
|
|
141
|
+
--f77exec= Specify the path to F77 compiler [NO_MESON]
|
|
142
|
+
--f90exec= Specify the path to F90 compiler [NO_MESON]
|
|
143
|
+
--f77flags= Specify F77 compiler flags
|
|
144
|
+
--f90flags= Specify F90 compiler flags
|
|
145
|
+
--opt= Specify optimization flags [NO_MESON]
|
|
146
|
+
--arch= Specify architecture specific optimization flags [NO_MESON]
|
|
147
|
+
--noopt Compile without optimization [NO_MESON]
|
|
148
|
+
--noarch Compile without arch-dependent optimization [NO_MESON]
|
|
149
|
+
--debug Compile with debugging information
|
|
150
|
+
|
|
151
|
+
--dep <dependency>
|
|
152
|
+
Specify a meson dependency for the module. This may
|
|
153
|
+
be passed multiple times for multiple dependencies.
|
|
154
|
+
Dependencies are stored in a list for further processing.
|
|
155
|
+
|
|
156
|
+
Example: --dep lapack --dep scalapack
|
|
157
|
+
This will identify "lapack" and "scalapack" as dependencies
|
|
158
|
+
and remove them from argv, leaving a dependencies list
|
|
159
|
+
containing ["lapack", "scalapack"].
|
|
160
|
+
|
|
161
|
+
--backend <backend_type>
|
|
162
|
+
Specify the build backend for the compilation process.
|
|
163
|
+
The supported backends are 'meson' and 'distutils'.
|
|
164
|
+
If not specified, defaults to 'distutils'. On
|
|
165
|
+
Python 3.12 or higher, the default is 'meson'.
|
|
166
|
+
|
|
167
|
+
Extra options (only effective with -c):
|
|
168
|
+
|
|
169
|
+
--link-<resource> Link extension module with <resource> as defined
|
|
170
|
+
by numpy.distutils/system_info.py. E.g. to link
|
|
171
|
+
with optimized LAPACK libraries (vecLib on MacOSX,
|
|
172
|
+
ATLAS elsewhere), use --link-lapack_opt.
|
|
173
|
+
See also --help-link switch. [NO_MESON]
|
|
174
|
+
|
|
175
|
+
-L/path/to/lib/ -l<libname>
|
|
176
|
+
-D<define> -U<name>
|
|
177
|
+
-I/path/to/include/
|
|
178
|
+
<filename>.o <filename>.so <filename>.a
|
|
179
|
+
|
|
180
|
+
Using the following macros may be required with non-gcc Fortran
|
|
181
|
+
compilers:
|
|
182
|
+
-DPREPEND_FORTRAN -DNO_APPEND_FORTRAN -DUPPERCASE_FORTRAN
|
|
183
|
+
|
|
184
|
+
When using -DF2PY_REPORT_ATEXIT, a performance report of F2PY
|
|
185
|
+
interface is printed out at exit (platforms: Linux).
|
|
186
|
+
|
|
187
|
+
When using -DF2PY_REPORT_ON_ARRAY_COPY=<int>, a message is
|
|
188
|
+
sent to stderr whenever F2PY interface makes a copy of an
|
|
189
|
+
array. Integer <int> sets the threshold for array sizes when
|
|
190
|
+
a message should be shown.
|
|
191
|
+
|
|
192
|
+
Version: {f2py_version}
|
|
193
|
+
numpy Version: {numpy_version}
|
|
194
|
+
License: NumPy license (see LICENSE.txt in the NumPy source code)
|
|
195
|
+
Copyright 1999 -- 2011 Pearu Peterson all rights reserved.
|
|
196
|
+
Copyright 2011 -- present NumPy Developers.
|
|
197
|
+
https://numpy.org/doc/stable/f2py/index.html\n"""
|
|
198
|
+
|
|
199
|
+
|
|
200
|
+
def scaninputline(inputline):
|
|
201
|
+
files, skipfuncs, onlyfuncs, debug = [], [], [], []
|
|
202
|
+
f, f2, f3, f5, f6, f8, f9, f10 = 1, 0, 0, 0, 0, 0, 0, 0
|
|
203
|
+
verbose = 1
|
|
204
|
+
emptygen = True
|
|
205
|
+
dolc = -1
|
|
206
|
+
dolatexdoc = 0
|
|
207
|
+
dorestdoc = 0
|
|
208
|
+
wrapfuncs = 1
|
|
209
|
+
buildpath = '.'
|
|
210
|
+
include_paths, freethreading_compatible, inputline = get_newer_options(inputline)
|
|
211
|
+
signsfile, modulename = None, None
|
|
212
|
+
options = {'buildpath': buildpath,
|
|
213
|
+
'coutput': None,
|
|
214
|
+
'f2py_wrapper_output': None}
|
|
215
|
+
for l in inputline:
|
|
216
|
+
if l == '':
|
|
217
|
+
pass
|
|
218
|
+
elif l == 'only:':
|
|
219
|
+
f = 0
|
|
220
|
+
elif l == 'skip:':
|
|
221
|
+
f = -1
|
|
222
|
+
elif l == ':':
|
|
223
|
+
f = 1
|
|
224
|
+
elif l[:8] == '--debug-':
|
|
225
|
+
debug.append(l[8:])
|
|
226
|
+
elif l == '--lower':
|
|
227
|
+
dolc = 1
|
|
228
|
+
elif l == '--build-dir':
|
|
229
|
+
f6 = 1
|
|
230
|
+
elif l == '--no-lower':
|
|
231
|
+
dolc = 0
|
|
232
|
+
elif l == '--quiet':
|
|
233
|
+
verbose = 0
|
|
234
|
+
elif l == '--verbose':
|
|
235
|
+
verbose += 1
|
|
236
|
+
elif l == '--latex-doc':
|
|
237
|
+
dolatexdoc = 1
|
|
238
|
+
elif l == '--no-latex-doc':
|
|
239
|
+
dolatexdoc = 0
|
|
240
|
+
elif l == '--rest-doc':
|
|
241
|
+
dorestdoc = 1
|
|
242
|
+
elif l == '--no-rest-doc':
|
|
243
|
+
dorestdoc = 0
|
|
244
|
+
elif l == '--wrap-functions':
|
|
245
|
+
wrapfuncs = 1
|
|
246
|
+
elif l == '--no-wrap-functions':
|
|
247
|
+
wrapfuncs = 0
|
|
248
|
+
elif l == '--short-latex':
|
|
249
|
+
options['shortlatex'] = 1
|
|
250
|
+
elif l == '--coutput':
|
|
251
|
+
f8 = 1
|
|
252
|
+
elif l == '--f2py-wrapper-output':
|
|
253
|
+
f9 = 1
|
|
254
|
+
elif l == '--f2cmap':
|
|
255
|
+
f10 = 1
|
|
256
|
+
elif l == '--overwrite-signature':
|
|
257
|
+
options['h-overwrite'] = 1
|
|
258
|
+
elif l == '-h':
|
|
259
|
+
f2 = 1
|
|
260
|
+
elif l == '-m':
|
|
261
|
+
f3 = 1
|
|
262
|
+
elif l[:2] == '-v':
|
|
263
|
+
print(f2py_version)
|
|
264
|
+
sys.exit()
|
|
265
|
+
elif l == '--show-compilers':
|
|
266
|
+
f5 = 1
|
|
267
|
+
elif l[:8] == '-include':
|
|
268
|
+
cfuncs.outneeds['userincludes'].append(l[9:-1])
|
|
269
|
+
cfuncs.userincludes[l[9:-1]] = '#include ' + l[8:]
|
|
270
|
+
elif l == '--skip-empty-wrappers':
|
|
271
|
+
emptygen = False
|
|
272
|
+
elif l[0] == '-':
|
|
273
|
+
errmess(f'Unknown option {repr(l)}\n')
|
|
274
|
+
sys.exit()
|
|
275
|
+
elif f2:
|
|
276
|
+
f2 = 0
|
|
277
|
+
signsfile = l
|
|
278
|
+
elif f3:
|
|
279
|
+
f3 = 0
|
|
280
|
+
modulename = l
|
|
281
|
+
elif f6:
|
|
282
|
+
f6 = 0
|
|
283
|
+
buildpath = l
|
|
284
|
+
elif f8:
|
|
285
|
+
f8 = 0
|
|
286
|
+
options["coutput"] = l
|
|
287
|
+
elif f9:
|
|
288
|
+
f9 = 0
|
|
289
|
+
options["f2py_wrapper_output"] = l
|
|
290
|
+
elif f10:
|
|
291
|
+
f10 = 0
|
|
292
|
+
options["f2cmap_file"] = l
|
|
293
|
+
elif f == 1:
|
|
294
|
+
try:
|
|
295
|
+
with open(l):
|
|
296
|
+
pass
|
|
297
|
+
files.append(l)
|
|
298
|
+
except OSError as detail:
|
|
299
|
+
errmess(f'OSError: {detail!s}. Skipping file "{l!s}".\n')
|
|
300
|
+
elif f == -1:
|
|
301
|
+
skipfuncs.append(l)
|
|
302
|
+
elif f == 0:
|
|
303
|
+
onlyfuncs.append(l)
|
|
304
|
+
if not f5 and not files and not modulename:
|
|
305
|
+
print(__usage__)
|
|
306
|
+
sys.exit()
|
|
307
|
+
if not os.path.isdir(buildpath):
|
|
308
|
+
if not verbose:
|
|
309
|
+
outmess(f'Creating build directory {buildpath}\n')
|
|
310
|
+
os.mkdir(buildpath)
|
|
311
|
+
if signsfile:
|
|
312
|
+
signsfile = os.path.join(buildpath, signsfile)
|
|
313
|
+
if signsfile and os.path.isfile(signsfile) and 'h-overwrite' not in options:
|
|
314
|
+
errmess(
|
|
315
|
+
f'Signature file "{signsfile}" exists!!! Use --overwrite-signature to overwrite.\n')
|
|
316
|
+
sys.exit()
|
|
317
|
+
|
|
318
|
+
options['emptygen'] = emptygen
|
|
319
|
+
options['debug'] = debug
|
|
320
|
+
options['verbose'] = verbose
|
|
321
|
+
if dolc == -1 and not signsfile:
|
|
322
|
+
options['do-lower'] = 0
|
|
323
|
+
else:
|
|
324
|
+
options['do-lower'] = dolc
|
|
325
|
+
if modulename:
|
|
326
|
+
options['module'] = modulename
|
|
327
|
+
if signsfile:
|
|
328
|
+
options['signsfile'] = signsfile
|
|
329
|
+
if onlyfuncs:
|
|
330
|
+
options['onlyfuncs'] = onlyfuncs
|
|
331
|
+
if skipfuncs:
|
|
332
|
+
options['skipfuncs'] = skipfuncs
|
|
333
|
+
options['dolatexdoc'] = dolatexdoc
|
|
334
|
+
options['dorestdoc'] = dorestdoc
|
|
335
|
+
options['wrapfuncs'] = wrapfuncs
|
|
336
|
+
options['buildpath'] = buildpath
|
|
337
|
+
options['include_paths'] = include_paths
|
|
338
|
+
options['requires_gil'] = not freethreading_compatible
|
|
339
|
+
options.setdefault('f2cmap_file', None)
|
|
340
|
+
return files, options
|
|
341
|
+
|
|
342
|
+
|
|
343
|
+
def callcrackfortran(files, options):
|
|
344
|
+
rules.options = options
|
|
345
|
+
crackfortran.debug = options['debug']
|
|
346
|
+
crackfortran.verbose = options['verbose']
|
|
347
|
+
if 'module' in options:
|
|
348
|
+
crackfortran.f77modulename = options['module']
|
|
349
|
+
if 'skipfuncs' in options:
|
|
350
|
+
crackfortran.skipfuncs = options['skipfuncs']
|
|
351
|
+
if 'onlyfuncs' in options:
|
|
352
|
+
crackfortran.onlyfuncs = options['onlyfuncs']
|
|
353
|
+
crackfortran.include_paths[:] = options['include_paths']
|
|
354
|
+
crackfortran.dolowercase = options['do-lower']
|
|
355
|
+
postlist = crackfortran.crackfortran(files)
|
|
356
|
+
if 'signsfile' in options:
|
|
357
|
+
outmess(f"Saving signatures to file \"{options['signsfile']}\"\n")
|
|
358
|
+
pyf = crackfortran.crack2fortran(postlist)
|
|
359
|
+
if options['signsfile'][-6:] == 'stdout':
|
|
360
|
+
sys.stdout.write(pyf)
|
|
361
|
+
else:
|
|
362
|
+
with open(options['signsfile'], 'w') as f:
|
|
363
|
+
f.write(pyf)
|
|
364
|
+
if options["coutput"] is None:
|
|
365
|
+
for mod in postlist:
|
|
366
|
+
mod["coutput"] = f"{mod['name']}module.c"
|
|
367
|
+
else:
|
|
368
|
+
for mod in postlist:
|
|
369
|
+
mod["coutput"] = options["coutput"]
|
|
370
|
+
if options["f2py_wrapper_output"] is None:
|
|
371
|
+
for mod in postlist:
|
|
372
|
+
mod["f2py_wrapper_output"] = f"{mod['name']}-f2pywrappers.f"
|
|
373
|
+
else:
|
|
374
|
+
for mod in postlist:
|
|
375
|
+
mod["f2py_wrapper_output"] = options["f2py_wrapper_output"]
|
|
376
|
+
for mod in postlist:
|
|
377
|
+
if options["requires_gil"]:
|
|
378
|
+
mod['gil_used'] = 'Py_MOD_GIL_USED'
|
|
379
|
+
else:
|
|
380
|
+
mod['gil_used'] = 'Py_MOD_GIL_NOT_USED'
|
|
381
|
+
# gh-26718 Reset global
|
|
382
|
+
crackfortran.f77modulename = ''
|
|
383
|
+
return postlist
|
|
384
|
+
|
|
385
|
+
|
|
386
|
+
def buildmodules(lst):
|
|
387
|
+
cfuncs.buildcfuncs()
|
|
388
|
+
outmess('Building modules...\n')
|
|
389
|
+
modules, mnames, isusedby = [], [], {}
|
|
390
|
+
for item in lst:
|
|
391
|
+
if '__user__' in item['name']:
|
|
392
|
+
cb_rules.buildcallbacks(item)
|
|
393
|
+
else:
|
|
394
|
+
if 'use' in item:
|
|
395
|
+
for u in item['use'].keys():
|
|
396
|
+
if u not in isusedby:
|
|
397
|
+
isusedby[u] = []
|
|
398
|
+
isusedby[u].append(item['name'])
|
|
399
|
+
modules.append(item)
|
|
400
|
+
mnames.append(item['name'])
|
|
401
|
+
ret = {}
|
|
402
|
+
for module, name in zip(modules, mnames):
|
|
403
|
+
if name in isusedby:
|
|
404
|
+
outmess('\tSkipping module "%s" which is used by %s.\n' % (
|
|
405
|
+
name, ','.join('"%s"' % s for s in isusedby[name])))
|
|
406
|
+
else:
|
|
407
|
+
um = []
|
|
408
|
+
if 'use' in module:
|
|
409
|
+
for u in module['use'].keys():
|
|
410
|
+
if u in isusedby and u in mnames:
|
|
411
|
+
um.append(modules[mnames.index(u)])
|
|
412
|
+
else:
|
|
413
|
+
outmess(
|
|
414
|
+
f'\tModule "{name}" uses nonexisting "{u}" '
|
|
415
|
+
'which will be ignored.\n')
|
|
416
|
+
ret[name] = {}
|
|
417
|
+
dict_append(ret[name], rules.buildmodule(module, um))
|
|
418
|
+
return ret
|
|
419
|
+
|
|
420
|
+
|
|
421
|
+
def dict_append(d_out, d_in):
|
|
422
|
+
for (k, v) in d_in.items():
|
|
423
|
+
if k not in d_out:
|
|
424
|
+
d_out[k] = []
|
|
425
|
+
if isinstance(v, list):
|
|
426
|
+
d_out[k] = d_out[k] + v
|
|
427
|
+
else:
|
|
428
|
+
d_out[k].append(v)
|
|
429
|
+
|
|
430
|
+
|
|
431
|
+
def run_main(comline_list):
|
|
432
|
+
"""
|
|
433
|
+
Equivalent to running::
|
|
434
|
+
|
|
435
|
+
f2py <args>
|
|
436
|
+
|
|
437
|
+
where ``<args>=string.join(<list>,' ')``, but in Python. Unless
|
|
438
|
+
``-h`` is used, this function returns a dictionary containing
|
|
439
|
+
information on generated modules and their dependencies on source
|
|
440
|
+
files.
|
|
441
|
+
|
|
442
|
+
You cannot build extension modules with this function, that is,
|
|
443
|
+
using ``-c`` is not allowed. Use the ``compile`` command instead.
|
|
444
|
+
|
|
445
|
+
Examples
|
|
446
|
+
--------
|
|
447
|
+
The command ``f2py -m scalar scalar.f`` can be executed from Python as
|
|
448
|
+
follows.
|
|
449
|
+
|
|
450
|
+
.. literalinclude:: ../../source/f2py/code/results/run_main_session.dat
|
|
451
|
+
:language: python
|
|
452
|
+
|
|
453
|
+
"""
|
|
454
|
+
crackfortran.reset_global_f2py_vars()
|
|
455
|
+
f2pydir = os.path.dirname(os.path.abspath(cfuncs.__file__))
|
|
456
|
+
fobjhsrc = os.path.join(f2pydir, 'src', 'fortranobject.h')
|
|
457
|
+
fobjcsrc = os.path.join(f2pydir, 'src', 'fortranobject.c')
|
|
458
|
+
# gh-22819 -- begin
|
|
459
|
+
parser = make_f2py_compile_parser()
|
|
460
|
+
args, comline_list = parser.parse_known_args(comline_list)
|
|
461
|
+
pyf_files, _ = filter_files("", "[.]pyf([.]src|)", comline_list)
|
|
462
|
+
# Checks that no existing modulename is defined in a pyf file
|
|
463
|
+
# TODO: Remove all this when scaninputline is replaced
|
|
464
|
+
if args.module_name:
|
|
465
|
+
if "-h" in comline_list:
|
|
466
|
+
modname = (
|
|
467
|
+
args.module_name
|
|
468
|
+
) # Directly use from args when -h is present
|
|
469
|
+
else:
|
|
470
|
+
modname = validate_modulename(
|
|
471
|
+
pyf_files, args.module_name
|
|
472
|
+
) # Validate modname when -h is not present
|
|
473
|
+
comline_list += ['-m', modname] # needed for the rest of scaninputline
|
|
474
|
+
# gh-22819 -- end
|
|
475
|
+
files, options = scaninputline(comline_list)
|
|
476
|
+
auxfuncs.options = options
|
|
477
|
+
capi_maps.load_f2cmap_file(options['f2cmap_file'])
|
|
478
|
+
postlist = callcrackfortran(files, options)
|
|
479
|
+
isusedby = {}
|
|
480
|
+
for plist in postlist:
|
|
481
|
+
if 'use' in plist:
|
|
482
|
+
for u in plist['use'].keys():
|
|
483
|
+
if u not in isusedby:
|
|
484
|
+
isusedby[u] = []
|
|
485
|
+
isusedby[u].append(plist['name'])
|
|
486
|
+
for plist in postlist:
|
|
487
|
+
module_name = plist['name']
|
|
488
|
+
if plist['block'] == 'python module' and '__user__' in module_name:
|
|
489
|
+
if module_name in isusedby:
|
|
490
|
+
# if not quiet:
|
|
491
|
+
usedby = ','.join(f'"{s}"' for s in isusedby[module_name])
|
|
492
|
+
outmess(
|
|
493
|
+
f'Skipping Makefile build for module "{module_name}" '
|
|
494
|
+
f'which is used by {usedby}\n')
|
|
495
|
+
if 'signsfile' in options:
|
|
496
|
+
if options['verbose'] > 1:
|
|
497
|
+
outmess(
|
|
498
|
+
'Stopping. Edit the signature file and then run f2py on the signature file: ')
|
|
499
|
+
outmess(f"{os.path.basename(sys.argv[0])} {options['signsfile']}\n")
|
|
500
|
+
return
|
|
501
|
+
for plist in postlist:
|
|
502
|
+
if plist['block'] != 'python module':
|
|
503
|
+
if 'python module' not in options:
|
|
504
|
+
errmess(
|
|
505
|
+
'Tip: If your original code is Fortran source then you must use -m option.\n')
|
|
506
|
+
raise TypeError('All blocks must be python module blocks but got %s' % (
|
|
507
|
+
repr(plist['block'])))
|
|
508
|
+
auxfuncs.debugoptions = options['debug']
|
|
509
|
+
f90mod_rules.options = options
|
|
510
|
+
auxfuncs.wrapfuncs = options['wrapfuncs']
|
|
511
|
+
|
|
512
|
+
ret = buildmodules(postlist)
|
|
513
|
+
|
|
514
|
+
for mn in ret.keys():
|
|
515
|
+
dict_append(ret[mn], {'csrc': fobjcsrc, 'h': fobjhsrc})
|
|
516
|
+
return ret
|
|
517
|
+
|
|
518
|
+
|
|
519
|
+
def filter_files(prefix, suffix, files, remove_prefix=None):
|
|
520
|
+
"""
|
|
521
|
+
Filter files by prefix and suffix.
|
|
522
|
+
"""
|
|
523
|
+
filtered, rest = [], []
|
|
524
|
+
match = re.compile(prefix + r'.*' + suffix + r'\Z').match
|
|
525
|
+
if remove_prefix:
|
|
526
|
+
ind = len(prefix)
|
|
527
|
+
else:
|
|
528
|
+
ind = 0
|
|
529
|
+
for file in [x.strip() for x in files]:
|
|
530
|
+
if match(file):
|
|
531
|
+
filtered.append(file[ind:])
|
|
532
|
+
else:
|
|
533
|
+
rest.append(file)
|
|
534
|
+
return filtered, rest
|
|
535
|
+
|
|
536
|
+
|
|
537
|
+
def get_prefix(module):
|
|
538
|
+
p = os.path.dirname(os.path.dirname(module.__file__))
|
|
539
|
+
return p
|
|
540
|
+
|
|
541
|
+
|
|
542
|
+
class CombineIncludePaths(argparse.Action):
|
|
543
|
+
def __call__(self, parser, namespace, values, option_string=None):
|
|
544
|
+
include_paths_set = set(getattr(namespace, 'include_paths', []) or [])
|
|
545
|
+
if option_string == "--include_paths":
|
|
546
|
+
outmess("Use --include-paths or -I instead of --include_paths which will be removed")
|
|
547
|
+
if option_string in {"--include-paths", "--include_paths"}:
|
|
548
|
+
include_paths_set.update(values.split(':'))
|
|
549
|
+
else:
|
|
550
|
+
include_paths_set.add(values)
|
|
551
|
+
namespace.include_paths = list(include_paths_set)
|
|
552
|
+
|
|
553
|
+
def f2py_parser():
|
|
554
|
+
parser = argparse.ArgumentParser(add_help=False)
|
|
555
|
+
parser.add_argument("-I", dest="include_paths", action=CombineIncludePaths)
|
|
556
|
+
parser.add_argument("--include-paths", dest="include_paths", action=CombineIncludePaths)
|
|
557
|
+
parser.add_argument("--include_paths", dest="include_paths", action=CombineIncludePaths)
|
|
558
|
+
parser.add_argument("--freethreading-compatible", dest="ftcompat", action=argparse.BooleanOptionalAction)
|
|
559
|
+
return parser
|
|
560
|
+
|
|
561
|
+
def get_newer_options(iline):
|
|
562
|
+
iline = (' '.join(iline)).split()
|
|
563
|
+
parser = f2py_parser()
|
|
564
|
+
args, remain = parser.parse_known_args(iline)
|
|
565
|
+
ipaths = args.include_paths
|
|
566
|
+
if args.include_paths is None:
|
|
567
|
+
ipaths = []
|
|
568
|
+
return ipaths, args.ftcompat, remain
|
|
569
|
+
|
|
570
|
+
def make_f2py_compile_parser():
|
|
571
|
+
parser = argparse.ArgumentParser(add_help=False)
|
|
572
|
+
parser.add_argument("--dep", action="append", dest="dependencies")
|
|
573
|
+
parser.add_argument("--backend", choices=['meson', 'distutils'], default='distutils')
|
|
574
|
+
parser.add_argument("-m", dest="module_name")
|
|
575
|
+
return parser
|
|
576
|
+
|
|
577
|
+
def preparse_sysargv():
|
|
578
|
+
# To keep backwards bug compatibility, newer flags are handled by argparse,
|
|
579
|
+
# and `sys.argv` is passed to the rest of `f2py` as is.
|
|
580
|
+
parser = make_f2py_compile_parser()
|
|
581
|
+
|
|
582
|
+
args, remaining_argv = parser.parse_known_args()
|
|
583
|
+
sys.argv = [sys.argv[0]] + remaining_argv
|
|
584
|
+
|
|
585
|
+
backend_key = args.backend
|
|
586
|
+
if MESON_ONLY_VER and backend_key == 'distutils':
|
|
587
|
+
outmess("Cannot use distutils backend with Python>=3.12,"
|
|
588
|
+
" using meson backend instead.\n")
|
|
589
|
+
backend_key = "meson"
|
|
590
|
+
|
|
591
|
+
return {
|
|
592
|
+
"dependencies": args.dependencies or [],
|
|
593
|
+
"backend": backend_key,
|
|
594
|
+
"modulename": args.module_name,
|
|
595
|
+
}
|
|
596
|
+
|
|
597
|
+
def run_compile():
|
|
598
|
+
"""
|
|
599
|
+
Do it all in one call!
|
|
600
|
+
"""
|
|
601
|
+
import tempfile
|
|
602
|
+
|
|
603
|
+
# Collect dependency flags, preprocess sys.argv
|
|
604
|
+
argy = preparse_sysargv()
|
|
605
|
+
modulename = argy["modulename"]
|
|
606
|
+
if modulename is None:
|
|
607
|
+
modulename = 'untitled'
|
|
608
|
+
dependencies = argy["dependencies"]
|
|
609
|
+
backend_key = argy["backend"]
|
|
610
|
+
build_backend = f2py_build_generator(backend_key)
|
|
611
|
+
|
|
612
|
+
i = sys.argv.index('-c')
|
|
613
|
+
del sys.argv[i]
|
|
614
|
+
|
|
615
|
+
remove_build_dir = 0
|
|
616
|
+
try:
|
|
617
|
+
i = sys.argv.index('--build-dir')
|
|
618
|
+
except ValueError:
|
|
619
|
+
i = None
|
|
620
|
+
if i is not None:
|
|
621
|
+
build_dir = sys.argv[i + 1]
|
|
622
|
+
del sys.argv[i + 1]
|
|
623
|
+
del sys.argv[i]
|
|
624
|
+
else:
|
|
625
|
+
remove_build_dir = 1
|
|
626
|
+
build_dir = tempfile.mkdtemp()
|
|
627
|
+
|
|
628
|
+
_reg1 = re.compile(r'--link-')
|
|
629
|
+
sysinfo_flags = [_m for _m in sys.argv[1:] if _reg1.match(_m)]
|
|
630
|
+
sys.argv = [_m for _m in sys.argv if _m not in sysinfo_flags]
|
|
631
|
+
if sysinfo_flags:
|
|
632
|
+
sysinfo_flags = [f[7:] for f in sysinfo_flags]
|
|
633
|
+
|
|
634
|
+
_reg2 = re.compile(
|
|
635
|
+
r'--((no-|)(wrap-functions|lower|freethreading-compatible)|debug-capi|quiet|skip-empty-wrappers)|-include')
|
|
636
|
+
f2py_flags = [_m for _m in sys.argv[1:] if _reg2.match(_m)]
|
|
637
|
+
sys.argv = [_m for _m in sys.argv if _m not in f2py_flags]
|
|
638
|
+
f2py_flags2 = []
|
|
639
|
+
fl = 0
|
|
640
|
+
for a in sys.argv[1:]:
|
|
641
|
+
if a in ['only:', 'skip:']:
|
|
642
|
+
fl = 1
|
|
643
|
+
elif a == ':':
|
|
644
|
+
fl = 0
|
|
645
|
+
if fl or a == ':':
|
|
646
|
+
f2py_flags2.append(a)
|
|
647
|
+
if f2py_flags2 and f2py_flags2[-1] != ':':
|
|
648
|
+
f2py_flags2.append(':')
|
|
649
|
+
f2py_flags.extend(f2py_flags2)
|
|
650
|
+
sys.argv = [_m for _m in sys.argv if _m not in f2py_flags2]
|
|
651
|
+
_reg3 = re.compile(
|
|
652
|
+
r'--((f(90)?compiler(-exec|)|compiler)=|help-compiler)')
|
|
653
|
+
flib_flags = [_m for _m in sys.argv[1:] if _reg3.match(_m)]
|
|
654
|
+
sys.argv = [_m for _m in sys.argv if _m not in flib_flags]
|
|
655
|
+
# TODO: Once distutils is dropped completely, i.e. min_ver >= 3.12, unify into --fflags
|
|
656
|
+
reg_f77_f90_flags = re.compile(r'--f(77|90)flags=')
|
|
657
|
+
reg_distutils_flags = re.compile(r'--((f(77|90)exec|opt|arch)=|(debug|noopt|noarch|help-fcompiler))')
|
|
658
|
+
fc_flags = [_m for _m in sys.argv[1:] if reg_f77_f90_flags.match(_m)]
|
|
659
|
+
distutils_flags = [_m for _m in sys.argv[1:] if reg_distutils_flags.match(_m)]
|
|
660
|
+
if not (MESON_ONLY_VER or backend_key == 'meson'):
|
|
661
|
+
fc_flags.extend(distutils_flags)
|
|
662
|
+
sys.argv = [_m for _m in sys.argv if _m not in (fc_flags + distutils_flags)]
|
|
663
|
+
|
|
664
|
+
del_list = []
|
|
665
|
+
for s in flib_flags:
|
|
666
|
+
v = '--fcompiler='
|
|
667
|
+
if s[:len(v)] == v:
|
|
668
|
+
if MESON_ONLY_VER or backend_key == 'meson':
|
|
669
|
+
outmess(
|
|
670
|
+
"--fcompiler cannot be used with meson,"
|
|
671
|
+
"set compiler with the FC environment variable\n"
|
|
672
|
+
)
|
|
673
|
+
else:
|
|
674
|
+
from numpy.distutils import fcompiler
|
|
675
|
+
fcompiler.load_all_fcompiler_classes()
|
|
676
|
+
allowed_keys = list(fcompiler.fcompiler_class.keys())
|
|
677
|
+
nv = ov = s[len(v):].lower()
|
|
678
|
+
if ov not in allowed_keys:
|
|
679
|
+
vmap = {} # XXX
|
|
680
|
+
try:
|
|
681
|
+
nv = vmap[ov]
|
|
682
|
+
except KeyError:
|
|
683
|
+
if ov not in vmap.values():
|
|
684
|
+
print(f'Unknown vendor: "{s[len(v):]}"')
|
|
685
|
+
nv = ov
|
|
686
|
+
i = flib_flags.index(s)
|
|
687
|
+
flib_flags[i] = '--fcompiler=' + nv # noqa: B909
|
|
688
|
+
continue
|
|
689
|
+
for s in del_list:
|
|
690
|
+
i = flib_flags.index(s)
|
|
691
|
+
del flib_flags[i]
|
|
692
|
+
assert len(flib_flags) <= 2, repr(flib_flags)
|
|
693
|
+
|
|
694
|
+
_reg5 = re.compile(r'--(verbose)')
|
|
695
|
+
setup_flags = [_m for _m in sys.argv[1:] if _reg5.match(_m)]
|
|
696
|
+
sys.argv = [_m for _m in sys.argv if _m not in setup_flags]
|
|
697
|
+
|
|
698
|
+
if '--quiet' in f2py_flags:
|
|
699
|
+
setup_flags.append('--quiet')
|
|
700
|
+
|
|
701
|
+
# Ugly filter to remove everything but sources
|
|
702
|
+
sources = sys.argv[1:]
|
|
703
|
+
f2cmapopt = '--f2cmap'
|
|
704
|
+
if f2cmapopt in sys.argv:
|
|
705
|
+
i = sys.argv.index(f2cmapopt)
|
|
706
|
+
f2py_flags.extend(sys.argv[i:i + 2])
|
|
707
|
+
del sys.argv[i + 1], sys.argv[i]
|
|
708
|
+
sources = sys.argv[1:]
|
|
709
|
+
|
|
710
|
+
pyf_files, _sources = filter_files("", "[.]pyf([.]src|)", sources)
|
|
711
|
+
sources = pyf_files + _sources
|
|
712
|
+
modulename = validate_modulename(pyf_files, modulename)
|
|
713
|
+
extra_objects, sources = filter_files('', '[.](o|a|so|dylib)', sources)
|
|
714
|
+
library_dirs, sources = filter_files('-L', '', sources, remove_prefix=1)
|
|
715
|
+
libraries, sources = filter_files('-l', '', sources, remove_prefix=1)
|
|
716
|
+
undef_macros, sources = filter_files('-U', '', sources, remove_prefix=1)
|
|
717
|
+
define_macros, sources = filter_files('-D', '', sources, remove_prefix=1)
|
|
718
|
+
for i in range(len(define_macros)):
|
|
719
|
+
name_value = define_macros[i].split('=', 1)
|
|
720
|
+
if len(name_value) == 1:
|
|
721
|
+
name_value.append(None)
|
|
722
|
+
if len(name_value) == 2:
|
|
723
|
+
define_macros[i] = tuple(name_value)
|
|
724
|
+
else:
|
|
725
|
+
print('Invalid use of -D:', name_value)
|
|
726
|
+
|
|
727
|
+
# Construct wrappers / signatures / things
|
|
728
|
+
if backend_key == 'meson':
|
|
729
|
+
if not pyf_files:
|
|
730
|
+
outmess('Using meson backend\nWill pass --lower to f2py\nSee https://numpy.org/doc/stable/f2py/buildtools/meson.html\n')
|
|
731
|
+
f2py_flags.append('--lower')
|
|
732
|
+
run_main(f" {' '.join(f2py_flags)} -m {modulename} {' '.join(sources)}".split())
|
|
733
|
+
else:
|
|
734
|
+
run_main(f" {' '.join(f2py_flags)} {' '.join(pyf_files)}".split())
|
|
735
|
+
|
|
736
|
+
# Order matters here, includes are needed for run_main above
|
|
737
|
+
include_dirs, _, sources = get_newer_options(sources)
|
|
738
|
+
# Now use the builder
|
|
739
|
+
builder = build_backend(
|
|
740
|
+
modulename,
|
|
741
|
+
sources,
|
|
742
|
+
extra_objects,
|
|
743
|
+
build_dir,
|
|
744
|
+
include_dirs,
|
|
745
|
+
library_dirs,
|
|
746
|
+
libraries,
|
|
747
|
+
define_macros,
|
|
748
|
+
undef_macros,
|
|
749
|
+
f2py_flags,
|
|
750
|
+
sysinfo_flags,
|
|
751
|
+
fc_flags,
|
|
752
|
+
flib_flags,
|
|
753
|
+
setup_flags,
|
|
754
|
+
remove_build_dir,
|
|
755
|
+
{"dependencies": dependencies},
|
|
756
|
+
)
|
|
757
|
+
|
|
758
|
+
builder.compile()
|
|
759
|
+
|
|
760
|
+
|
|
761
|
+
def validate_modulename(pyf_files, modulename='untitled'):
|
|
762
|
+
if len(pyf_files) > 1:
|
|
763
|
+
raise ValueError("Only one .pyf file per call")
|
|
764
|
+
if pyf_files:
|
|
765
|
+
pyff = pyf_files[0]
|
|
766
|
+
pyf_modname = auxfuncs.get_f2py_modulename(pyff)
|
|
767
|
+
if modulename != pyf_modname:
|
|
768
|
+
outmess(
|
|
769
|
+
f"Ignoring -m {modulename}.\n"
|
|
770
|
+
f"{pyff} defines {pyf_modname} to be the modulename.\n"
|
|
771
|
+
)
|
|
772
|
+
modulename = pyf_modname
|
|
773
|
+
return modulename
|
|
774
|
+
|
|
775
|
+
def main():
|
|
776
|
+
if '--help-link' in sys.argv[1:]:
|
|
777
|
+
sys.argv.remove('--help-link')
|
|
778
|
+
if MESON_ONLY_VER:
|
|
779
|
+
outmess("Use --dep for meson builds\n")
|
|
780
|
+
else:
|
|
781
|
+
from numpy.distutils.system_info import show_all
|
|
782
|
+
show_all()
|
|
783
|
+
return
|
|
784
|
+
|
|
785
|
+
if '-c' in sys.argv[1:]:
|
|
786
|
+
run_compile()
|
|
787
|
+
else:
|
|
788
|
+
run_main(sys.argv[1:])
|