TYPE_CHECKING = False
if TYPE_CHECKING:
from collections.abc import Mapping, Sequence from typing import Any
USE_UV_EXECUTABLE = False
def warn_config_settings(config_settings: "Mapping[Any, Any] | None" = None) -> None:
import sys
if config_settings:
print("Warning: Config settings are not supported", file=sys.stderr)
def call(
args: "Sequence[str]", config_settings: "Mapping[Any, Any] | None" = None
) -> str:
import shutil
import subprocess
import sys
warn_config_settings(config_settings)
uv_bin_name = "uv" if USE_UV_EXECUTABLE else "uv-build"
uv_bin = shutil.which(uv_bin_name)
if uv_bin is None:
raise RuntimeError(f"{uv_bin_name} was not properly installed")
build_backend_args = ["build-backend"] if USE_UV_EXECUTABLE else []
result = subprocess.run(
[uv_bin, *build_backend_args, *args], stdout=subprocess.PIPE
)
if result.returncode != 0:
sys.exit(result.returncode)
stdout = result.stdout.decode("utf-8").strip().splitlines(keepends=True)
sys.stdout.writelines(stdout[:-1])
if not stdout:
print(
f"{uv_bin_name} subprocess did not return a filename on stdout",
file=sys.stderr,
)
sys.exit(1)
return stdout[-1].strip()
def build_sdist(
sdist_directory: str, config_settings: "Mapping[Any, Any] | None" = None
) -> str:
args = ["build-sdist", sdist_directory]
return call(args, config_settings)
def build_wheel(
wheel_directory: str,
config_settings: "Mapping[Any, Any] | None" = None,
metadata_directory: "str | None" = None,
) -> str:
args = ["build-wheel", wheel_directory]
if metadata_directory:
args.extend([metadata_directory])
return call(args, config_settings)
def get_requires_for_build_sdist(
config_settings: "Mapping[Any, Any] | None" = None,
) -> "Sequence[str]":
warn_config_settings(config_settings)
return []
def get_requires_for_build_wheel(
config_settings: "Mapping[Any, Any] | None" = None,
) -> "Sequence[str]":
warn_config_settings(config_settings)
return []
def prepare_metadata_for_build_wheel(
metadata_directory: str, config_settings: "Mapping[Any, Any] | None" = None
) -> str:
args = ["prepare-metadata-for-build-wheel", metadata_directory]
return call(args, config_settings)
def build_editable(
wheel_directory: str,
config_settings: "Mapping[Any, Any] | None" = None,
metadata_directory: "str | None" = None,
) -> str:
args = ["build-editable", wheel_directory]
if metadata_directory:
args.extend([metadata_directory])
return call(args, config_settings)
def get_requires_for_build_editable(
config_settings: "Mapping[Any, Any] | None" = None,
) -> "Sequence[str]":
warn_config_settings(config_settings)
return []
def prepare_metadata_for_build_editable(
metadata_directory: str, config_settings: "Mapping[Any, Any] | None" = None
) -> str:
args = ["prepare-metadata-for-build-editable", metadata_directory]
return call(args, config_settings)