pyproject-api
#
pyproject-api
aims to abstract away interaction with pyproject.toml
style projects in a flexible way.
API#
- pyproject_api.__version__ = '0.1.2.dev15+gf5fff98'#
semantic version of the project
Frontend#
- class pyproject_api.Frontend(root, backend_paths, backend_module, backend_obj, requires, reuse_backend=True)[source]#
Bases:
ABC
Abstract base class for a pyproject frontend.
Create a new frontend.
- Parameters:
root (
Path
) – the root path of the projectbackend_paths (
tuple
[Path
,...
]) – paths to provision as available to import from for the build backendbackend_module (
str
) – the module where the backend livesbackend_obj (
Optional
[str
]) – the backend object key (will be lookup up within the backend module)requires (
tuple
[Requirement
,...
]) – build requirements for the backendreuse_backend (
bool
) – a flag indicating if the communication channel should be kept alive between messages
- LEGACY_BUILD_BACKEND = 'setuptools.build_meta:__legacy__'#
backend key when the
pyproject.toml
does not specify it
- LEGACY_REQUIRES = (<Requirement('setuptools>=40.8.0')>, <Requirement('wheel')>)#
backend requirements when the
pyproject.toml
does not specify it
- classmethod create_args_from_folder(folder)[source]#
Frontend creation arguments from a python project folder (thould have a
pypyproject.toml
file per PEP-518).- Parameters:
folder (
Path
) – the python project folder- Return type:
tuple
[Path
,tuple
[Path
,...
],str
,Optional
[str
],tuple
[Requirement
,...
],bool
]- Returns:
the frontend creation args
E.g., to create a frontend from a python project folder:
frontend = Frontend(*Frontend.create_args_from_folder(project_folder))
- get_requires_for_build_sdist(config_settings=None)[source]#
Get build requirements for a source distribution (per PEP-517).
- Parameters:
- Return type:
- Returns:
outcome
- get_requires_for_build_wheel(config_settings=None)[source]#
Get build requirements for a wheel (per PEP-517).
- Parameters:
- Return type:
- Returns:
outcome
- prepare_metadata_for_build_wheel(metadata_directory, config_settings=None)[source]#
Build wheel metadata (per PEP-517).
- build_sdist(sdist_directory, config_settings=None)[source]#
Build a source distribution (per PEP-517).
Exceptions#
Backend failed#
- class pyproject_api.BackendFailed(result, out, err)[source]#
Bases:
RuntimeError
An error of the build backend.
- out#
standard output collected while running the command
- err#
standard error collected while running the command
- code#
exit code of the command
- exc_type#
the type of exception thrown
- exc_msg#
the string representation of the exception thrown
Results#
Build source distribution requires#
- class pyproject_api.RequiresBuildSdistResult(requires, out, err)[source]#
Bases:
NamedTuple
Information collected while acquiring the source distribution build dependencies
Create new instance of RequiresBuildSdistResult(requires, out, err)
- requires#
wheel build dependencies
- out#
backend standard output while acquiring the source distribution build dependencies
- err#
backend standard output while acquiring the source distribution build dependencies
Build wheel requires#
- class pyproject_api.RequiresBuildWheelResult(requires, out, err)[source]#
Bases:
NamedTuple
Information collected while acquiring the wheel build dependencies
Create new instance of RequiresBuildWheelResult(requires, out, err)
- requires#
wheel build dependencies
- out#
backend standard output while acquiring the wheel build dependencies
- err#
backend standard error while acquiring the wheel build dependencies
Wheel metadata#
- class pyproject_api.MetadataForBuildWheelResult(metadata, out, err)[source]#
Bases:
NamedTuple
Information collected while acquiring the wheel metadata
Create new instance of MetadataForBuildWheelResult(metadata, out, err)
- metadata#
path to the wheel metadata
- out#
backend standard output while generating the wheel metadata
- err#
backend standard output while generating the wheel metadata
Source distribution#
- class pyproject_api.SdistResult(sdist, out, err)[source]#
Bases:
NamedTuple
Information collected while building a source distribution
Create new instance of SdistResult(sdist, out, err)
- sdist#
path to the built source distribution
- out#
backend standard output while building the source distribution
- err#
backend standard output while building the source distribution
Wheel#
- class pyproject_api.WheelResult(wheel, out, err)[source]#
Bases:
NamedTuple
Information collected while building a wheel
Create new instance of WheelResult(wheel, out, err)
- wheel#
path to the built wheel artifact
- out#
backend standard output while building the wheel
- err#
backend standard error while building the wheel
Fresh subprocess frontend#
- class pyproject_api.SubprocessFrontend(root, backend_paths, backend_module, backend_obj, requires)[source]#
Bases:
Frontend
A frontend that creates fresh subprocess at every call to communicate with the backend.
- Parameters:
root (
Path
) – the root path to the built projectbackend_paths (
tuple
[Path
,...
]) – paths that are available on the python path for the backendbackend_module (
str
) – module where the backend is locatedbackend_obj (
Optional
[str
]) – object within the backend module identifying the backendrequires (
tuple
[Requirement
,...
]) – seed requirements for the backend