| [build-system] |
| build-backend = "mesonpy" |
| requires = [ |
| "meson-python>=0.18.0", |
| "Cython>=3.0.6", # keep in sync with version check in meson.build |
| ] |
| |
| [project] |
| name = "numpy" |
| version = "2.5.0.dev0" |
| description = "Fundamental package for array computing in Python" |
| authors = [{name = "Travis E. Oliphant et al."}] |
| maintainers = [ |
| {name = "NumPy Developers", email="numpy-discussion@python.org"}, |
| ] |
| requires-python = ">=3.12" |
| readme = "README.md" |
| classifiers = [ |
| 'Development Status :: 5 - Production/Stable', |
| 'Intended Audience :: Science/Research', |
| 'Intended Audience :: Developers', |
| 'Programming Language :: C', |
| 'Programming Language :: Python', |
| 'Programming Language :: Python :: 3', |
| 'Programming Language :: Python :: 3.12', |
| 'Programming Language :: Python :: 3.13', |
| 'Programming Language :: Python :: 3.14', |
| 'Programming Language :: Python :: 3 :: Only', |
| 'Programming Language :: Python :: Implementation :: CPython', |
| 'Topic :: Software Development', |
| 'Topic :: Scientific/Engineering', |
| 'Typing :: Typed', |
| 'Operating System :: Microsoft :: Windows', |
| 'Operating System :: POSIX', |
| 'Operating System :: Unix', |
| 'Operating System :: MacOS', |
| ] |
| # License info: |
| # - The main NumPy project license is BSD-3-Clause. |
| # - The SPDX license expression below reflects installed numpy packages when |
| # built from source (e.g., with `python -m build --wheel`), with no vendoring. |
| # - That SPDX expression is therefore incomplete for: |
| # (a) sdists - see the comment below `license-files` for other licenses |
| # included in the sdist |
| # (b) wheels on PyPI - most wheels include vendored libraries with additional licenses: |
| # - libopenblas : BSD-3-Clause AND BSD-3-Clause-Attribution (all except arm64 macOS>=14) |
| # - libgfortran : GPL-3.0-with-GCC-exception (all except arm64 macOS>=14) |
| # - libquadmath : LGPL-2.1-or-later (all except arm64 macOS>=14 and Windows) |
| # The licenses for these vendored components are dynamically included |
| # in the build process for PyPI wheels. |
| license = 'BSD-3-Clause AND 0BSD AND MIT AND Zlib AND CC0-1.0' |
| license-files = [ |
| 'LICENSE.txt', # BSD-3-Clause |
| 'numpy/_core/include/numpy/libdivide/LICENSE.txt', # Zlib |
| 'numpy/_core/src/common/pythoncapi-compat/COPYING', # 0BSD |
| 'numpy/_core/src/highway/LICENSE', # Dual-licensed: Apache 2.0 or BSD 3-Clause |
| 'numpy/_core/src/multiarray/dragon4_LICENSE.txt', # MIT |
| 'numpy/_core/src/npysort/x86-simd-sort/LICENSE.md', # BSD-3-Clause |
| 'numpy/_core/src/umath/svml/LICENSE', # BSD-3-Clause |
| 'numpy/fft/pocketfft/LICENSE.md', # BSD-3-Clause |
| 'numpy/ma/LICENSE', # BSD-3-Clause |
| 'numpy/linalg/lapack_lite/LICENSE.txt', # BSD-3-Clause |
| 'numpy/random/LICENSE.md', # BSD-3-Clause |
| 'numpy/random/src/distributions/LICENSE.md', # BSD-3-Clause AND MIT |
| 'numpy/random/src/mt19937/LICENSE.md', # BSD-3-Clause AND MIT |
| 'numpy/random/src/pcg64/LICENSE.md', # MIT |
| 'numpy/random/src/philox/LICENSE.md', # BSD-3-Clause |
| 'numpy/random/src/sfc64/LICENSE.md', # MIT |
| 'numpy/random/src/splitmix64/LICENSE.md', # CC0-1.0 |
| ] |
| # The license files below apply only to files in the repo and sdist, not to |
| # installed `numpy` packages or wheels (build/doc tools don't affect the |
| # license of the installed package). We have to make a choice whether to add |
| # those to the SPDX expression above since PEP 639 is unclear on the |
| # differences; we choose to make the SPDX expression reflect *a wheel built |
| # from the sources*. |
| # '.spin/LICENSE', # BSD-3-Clause |
| # 'doc/source/_static/scipy-mathjax/LICENSE', # Apache-2.0 |
| # 'numpy/_build_utils/tempita/LICENSE.txt', # BSD-3-Clause |
| # 'vendored-meson/meson/COPYING', # Apache-2.0 |
| # Note that the commented out license files are still included in the sdist, |
| # just not in Core Metadata and in the .dist-info directory. |
| |
| |
| [project.scripts] |
| f2py = 'numpy.f2py.f2py2e:main' |
| numpy-config = 'numpy._configtool:main' |
| |
| [project.entry-points.pkg_config] |
| numpy = 'numpy._core.lib.pkgconfig' |
| |
| [project.entry-points.array_api] |
| numpy = 'numpy' |
| |
| [project.entry-points.pyinstaller40] |
| hook-dirs = 'numpy:_pyinstaller_hooks_dir' |
| |
| [project.urls] |
| homepage = "https://numpy.org" |
| documentation = "https://numpy.org/doc/" |
| source = "https://github.com/numpy/numpy" |
| download = "https://pypi.org/project/numpy/#files" |
| tracker = "https://github.com/numpy/numpy/issues" |
| "release notes" = "https://numpy.org/doc/stable/release" |
| |
| [tool.towncrier] |
| single_file = false |
| filename = "doc/source/release/notes-towncrier.rst" |
| directory = "doc/release/upcoming_changes/" |
| issue_format = "`gh-{issue} <https://github.com/numpy/numpy/pull/{issue}>`__" |
| template = "doc/release/upcoming_changes/template.rst" |
| underlines = "~=" |
| all_bullets = false |
| |
| |
| [[tool.towncrier.type]] |
| directory = "highlight" |
| name = "Highlights" |
| showcontent = true |
| |
| [[tool.towncrier.type]] |
| directory = "new_function" |
| name = "New functions" |
| showcontent = true |
| |
| [[tool.towncrier.type]] |
| directory = "python_removal" |
| name = "NumPy 2.0 Python API removals" |
| showcontent = true |
| |
| [[tool.towncrier.type]] |
| directory = "deprecation" |
| name = "Deprecations" |
| showcontent = true |
| |
| [[tool.towncrier.type]] |
| directory = "future" |
| name = "Future Changes" |
| showcontent = true |
| |
| [[tool.towncrier.type]] |
| directory = "expired" |
| name = "Expired deprecations" |
| showcontent = true |
| |
| [[tool.towncrier.type]] |
| directory = "compatibility" |
| name = "Compatibility notes" |
| showcontent = true |
| |
| [[tool.towncrier.type]] |
| directory = "c_api" |
| name = "C API changes" |
| showcontent = true |
| |
| [[tool.towncrier.type]] |
| directory = "c_api_removal" |
| name = "NumPy 2.0 C API removals" |
| showcontent = true |
| |
| [[tool.towncrier.type]] |
| directory = "new_feature" |
| name = "New Features" |
| showcontent = true |
| |
| [[tool.towncrier.type]] |
| directory = "improvement" |
| name = "Improvements" |
| showcontent = true |
| |
| [[tool.towncrier.type]] |
| directory = "performance" |
| name = "Performance improvements and changes" |
| showcontent = true |
| |
| [[tool.towncrier.type]] |
| directory = "change" |
| name = "Changes" |
| showcontent = true |
| |
| |
| [tool.cibuildwheel] |
| # Note: the below skip command doesn't do much currently, the platforms to |
| # build wheels for in CI are controlled in `.github/workflows/wheels.yml`. |
| # universal2 wheels are not supported (see gh-21233), use `delocate-fuse` if you need them |
| skip = ["*_i686", "*_ppc64le", "*_s390x", "*_universal2"] |
| before-build = "bash {project}/tools/wheels/cibw_before_build.sh {project}" |
| before-test = "pip install -r {project}/requirements/test_requirements.txt" |
| test-command = "bash {project}/tools/wheels/cibw_test_command.sh {project}" |
| enable = ["cpython-freethreading", "pypy", "cpython-prerelease"] |
| |
| # The build will use openblas64 everywhere, except on arm64 macOS >=14.0 (uses Accelerate) |
| [tool.cibuildwheel.config-settings] |
| setup-args = ["-Duse-ilp64=true", "-Dallow-noblas=false"] |
| build-dir = "build" |
| |
| [tool.cibuildwheel.linux] |
| manylinux-x86_64-image = "manylinux_2_28" |
| manylinux-aarch64-image = "manylinux_2_28" |
| musllinux-x86_64-image = "musllinux_1_2" |
| musllinux-aarch64-image = "musllinux_1_2" |
| |
| [tool.cibuildwheel.linux.environment] |
| # RUNNER_OS is a GitHub Actions specific env var; define it here so it's |
| # defined when running cibuildwheel locally |
| RUNNER_OS="Linux" |
| # /project will be the $PWD equivalent inside the docker used to build the wheel |
| PKG_CONFIG_PATH="/project/.openblas" |
| |
| [tool.cibuildwheel.windows] |
| config-settings = {setup-args = ["--vsenv", "-Dallow-noblas=false"], build-dir="build"} |
| repair-wheel-command = "bash -el ./tools/wheels/repair_windows.sh {wheel} {dest_dir}" |
| |
| [[tool.cibuildwheel.overrides]] |
| select = ["*-win32"] |
| config-settings = {setup-args = ["--vsenv", "-Dallow-noblas=true"], build-dir="build"} |
| repair-wheel-command = "" |
| |
| [tool.cibuildwheel.pyodide] |
| before-test = "pip install -r {project}/requirements/emscripten_test_requirements.txt" |
| # Pyodide ensures that the wheels are already repaired by auditwheel-emscripten |
| repair-wheel-command = "" |
| test-command = "python -m pytest --pyargs numpy -m 'not slow'" |
| |
| [tool.cibuildwheel.pyodide.config-settings] |
| build-dir = "build" |
| setup-args = ["--cross-file=$PWD/tools/ci/emscripten/emscripten.meson.cross", "-Dblas=none", "-Dlapack=none"] |
| |
| |
| |
| [tool.meson-python] |
| meson = 'vendored-meson/meson/meson.py' |
| |
| [tool.meson-python.args] |
| install = ['--tags=runtime,python-runtime,tests,devel'] |
| |
| |
| [tool.spin] |
| package = 'numpy' |
| |
| [tool.spin.meson] |
| cli = 'vendored-meson/meson/meson.py' |
| |
| [tool.spin.commands] |
| "Build" = [ |
| ".spin/cmds.py:build", |
| ".spin/cmds.py:test", |
| ".spin/cmds.py:mypy", |
| ".spin/cmds.py:stubtest", |
| ".spin/cmds.py:config_openblas", |
| ".spin/cmds.py:lint", |
| ] |
| "Environments" = [ |
| "spin.cmds.meson.run", |
| ".spin/cmds.py:ipython", |
| ".spin/cmds.py:python", |
| "spin.cmds.meson.gdb", |
| "spin.cmds.meson.lldb" |
| ] |
| "Documentation" = [ |
| ".spin/cmds.py:docs", |
| ".spin/cmds.py:changelog", |
| ".spin/cmds.py:notes", |
| ".spin/cmds.py:check_docs", |
| ".spin/cmds.py:check_tutorials", |
| ] |
| "Metrics" = [".spin/cmds.py:bench"] |