piptools.build module#

class piptools.build.ProjectMetadata(extras: 'tuple[str, ...]', requirements: 'tuple[InstallRequirement, ...]', build_requirements: 'tuple[InstallRequirement, ...]')#

Bases: object

build_requirements: tuple[InstallRequirement, ...]#
extras: tuple[str, ...]#
requirements: tuple[InstallRequirement, ...]#
class piptools.build.StaticProjectMetadata(extras: 'tuple[str, ...]', requirements: 'tuple[InstallRequirement, ...]')#

Bases: object

extras: tuple[str, ...]#
requirements: tuple[InstallRequirement, ...]#
piptools.build._build_project_wheel_metadata(builder: ProjectBuilder) PackageMetadata#
piptools.build._create_project_builder(src_dir: Path, *, upgrade_packages: tuple[str, ...] | None = None, isolated: bool, quiet: bool) Iterator[ProjectBuilder]#
piptools.build._env_var(env_var_name: str, env_var_value: str, /) Iterator[None]#
piptools.build._get_name(metadata: PackageMetadata) str#
piptools.build._prepare_build_requirements(builder: ProjectBuilder, src_file: Path, build_targets: tuple[str, ...], package_name: str) Iterator[InstallRequirement]#
piptools.build._prepare_requirements(metadata: PackageMetadata, src_file: Path) Iterator[InstallRequirement]#
piptools.build._temporary_constraints_file_set_for_pip(upgrade_packages: tuple[str, ...]) Iterator[None]#
piptools.build.build_project_metadata(src_file: Path, build_targets: tuple[str, ...], *, upgrade_packages: tuple[str, ...] | None = None, attempt_static_parse: bool, isolated: bool, quiet: bool) ProjectMetadata | StaticProjectMetadata#

Return the metadata for a project.

First, optionally attempt to determine the metadata statically from the pyproject.toml file. This will not work if build_targets are specified, since we cannot determine build requirements statically.

Uses the prepare_metadata_for_build_wheel hook for the wheel metadata if available, otherwise build_wheel.

Uses the prepare_metadata_for_build_{target} hook for each build_targets if available.

Parameters:
  • src_file – Project source file

  • build_targets – A tuple of build targets to get the dependencies of (sdist or wheel or editable).

  • attempt_static_parse – Whether to attempt to statically parse the project metadata from pyproject.toml. Cannot be used with build_targets.

  • isolated – Whether to run invoke the backend in the current environment or to create an isolated one and invoke it there.

  • quiet – Whether to suppress the output of subprocesses.

piptools.build.maybe_statically_parse_project_metadata(src_file: Path) StaticProjectMetadata | None#

Return the metadata for a project, if it can be statically parsed from pyproject.toml.

This function is typically significantly faster than invoking a build backend. Returns None if the project metadata cannot be statically parsed.