Skip to main content

Meson Python build backend (PEP 517)

Project description

mesonpy PyPI version

pre-commit.ci status checks tests codecov

Python build backend (PEP 517) for Meson projects.

Usage

Enabling the build backend

To use this build backend, you must specify it in your pyproject.toml file.

[build-system]
build-backend = 'mesonpy'
requires = [
  'meson-python',
]

If you have any other build dependencies, you must also add them to the requires list.

Specifying the project metadata

mesonpy supports specifying Python package metadata in the project table in pyproject.toml (PEP 621).

To do so, you just need to add a project section with the details you want to specify (see PEP 621 for the specification of the format).

...

[project]
name = 'orion'
version = '1.2.3'
description = 'The Orion constellation!'
readme = 'README.md'
license = { file = 'LICENSE' }
keyword = ['constellation', 'stars', 'sky']
authors = [
  { name = 'Filipe Laíns', email = 'lains@riseup.net' },
]
classifiers = [
  'Development Status :: 4 - Beta',
  'Programming Language :: Python',
]

requires-python = '>=3.7'
dependencies = [
  'stars >= 1.0.0',
  'location < 3',
]

[project.optional-dependencies]
test = [
  'pytest >= 3',
  'telescope',
]

[project.urls]
homepage = 'https://constellations.example.com/orion'
repository = 'https://constellations.example.com/orion/repo'
documentation = 'https://constellations.example.com/orion/docs'
changelog = 'https://constellations.example.com/orion/docs/changelog.html'

In case you want mesonpy to detect the version automatically from Meson, you can omit the version field and add it to project.dynamic.

[project]
name = 'orion'
dynamic = [
  'version',
]
...

Automatic metadata

If no other metadata is specified, mesonpy will fetch the project name and version from Meson. In which case, you don't need to add anything else to your pyproject.toml file.

This is not recommended. Please consider specifying the Python package metadata.

Status

  • Pure Python modules :+1:
  • Native modules
    • Don't link aginst anything :+1:
    • Link aginst external libraries :+1:
    • Link aginst libraries from the Meson project :+1:
    • Detect the ABI :+1:
  • Scripts (executables in Meson)
    • Don't link aginst anything :+1:
    • Link against external libraries :+1:
    • Link against libraries from the Meson project :hammer:

Platform Support

  • Linux :+1:
  • Windows :soon:
  • MacOS :soon:
  • Other UNIX-like :warning:
    • Most platforms should work, but currently that is not tested or guaranteed

Limitations

No data

Data (install_data) is not supported by the wheel standard. Project should install data as Python source instead (Python source does not have to be only Python files!) and use importlib.resources (or the importlib_resources backport) to access the data. If you really need the data to be installed where it was previously (eg. /usr/data), you can do so at runtime.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

meson_python-0.2.0.tar.gz (26.6 kB view hashes)

Uploaded Source

Built Distribution

meson_python-0.2.0-py3-none-any.whl (15.1 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page