Wrappers to build Python packages using PEP 517 hooks
Project description
PEP 517 specifies a standard API for systems which build Python packages.
This package contains wrappers around the hooks specified by PEP 517. It provides:
A mechanism to call the hooks in a subprocess, so they are isolated from the current process.
Fallbacks for the optional hooks, so that frontends can call the hooks without checking which are defined.
Higher-level functions which install the build dependencies into a temporary environment and build a wheel/sdist using them.
Run the tests with py.test.
High level usage, with build requirements handled:
import os
from pep517.envbuild import build_wheel, build_sdist
src = 'path/to/source' # Folder containing 'pyproject.toml'
destination = 'also/a/folder'
whl_filename = build_wheel(src, destination)
assert os.path.isfile(os.path.join(destination, whl_filename))
targz_filename = build_sdist(src, destination)
assert os.path.isfile(os.path.join(destination, targz_filename))
Lower level usage—you are responsible for ensuring build requirements are available:
import os
import toml
from pep517.wrappers import Pep517HookCaller
src = 'path/to/source' # Folder containing 'pyproject.toml'
with open(os.path.join(src, 'pyproject.toml')) as f:
build_sys = toml.load(f)['build-system']
print(build_sys['requires']) # List of static requirements
hooks = Pep517HookCaller(
src,
build_backend=build_sys['build_backend'],
backend_path=build_sys.get('backend-path'),
)
config_options = {} # Optional parameters for backend
# List of dynamic requirements:
print(hooks.get_requires_for_build_wheel(config_options))
destination = 'also/a/folder'
whl_filename = hooks.build_wheel(destination, config_options)
assert os.path.isfile(os.path.join(destination, whl_filename))
To test the build backend for a project, run in a system shell:
python3 -m pep517.check path/to/source # source dir containing pyproject.toml
To build a backend into source and/or binary distributions, run in a shell:
python -m pep517.build path/to/source # source dir containing pyproject.toml
This ‘build’ module should be considered experimental while the PyPA decides on the best place for this functionality.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for pep517-0.7.0-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fac83aa4c3b73adc84cb2a295f1f5bd5b9a13946ebd1339ba3b33ce287165c88 |
|
MD5 | 95e2441230ce026e32a99b05771f5a9d |
|
BLAKE2b-256 | 2144ead783bf40d0e8242ef16ecd056a28fa177808ac6aece525663571a5c55c |