From e95200a5e00b6ef53e34368bce8111569c23c3a5 Mon Sep 17 00:00:00 2001 From: Charles Tapley Hoyt Date: Mon, 13 Jan 2025 01:25:08 +0100 Subject: [PATCH 1/4] Update build backend type annoations This PR makes the dictionary type annotations more generic with the `typing.Mapping` abstract class. Suggested in https://github.com/astral-sh/uv/pull/10434#issuecomment-2584357031 --- python/uv/_build_backend.py | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/python/uv/_build_backend.py b/python/uv/_build_backend.py index 127342d8eea8..45b3e6a8509d 100644 --- a/python/uv/_build_backend.py +++ b/python/uv/_build_backend.py @@ -18,17 +18,17 @@ TYPE_CHECKING = False if TYPE_CHECKING: - from typing import Any # noqa:I001 + from typing import Any, Mapping # noqa:I001 -def warn_config_settings(config_settings: "dict[Any, Any] | None" = None) -> None: +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: "list[str]", config_settings: "dict[Any, Any] | None" = None) -> str: +def call(args: "list[str]", config_settings: "Mapping[Any, Any] | None" = None) -> str: """Invoke a uv subprocess and return the filename from stdout.""" import shutil import subprocess @@ -54,7 +54,7 @@ def call(args: "list[str]", config_settings: "dict[Any, Any] | None" = None) -> def build_sdist( - sdist_directory: str, config_settings: "dict[Any, Any] | None" = None + sdist_directory: str, config_settings: "Mapping[Any, Any] | None" = None ) -> str: """PEP 517 hook `build_sdist`.""" args = ["build-backend", "build-sdist", sdist_directory] @@ -63,7 +63,7 @@ def build_sdist( def build_wheel( wheel_directory: str, - config_settings: "dict[Any, Any] | None" = None, + config_settings: "Mapping[Any, Any] | None" = None, metadata_directory: "str | None" = None, ) -> str: """PEP 517 hook `build_wheel`.""" @@ -74,7 +74,7 @@ def build_wheel( def get_requires_for_build_sdist( - config_settings: "dict[Any, Any] | None" = None, + config_settings: "Mapping[Any, Any] | None" = None, ) -> "list[str]": """PEP 517 hook `get_requires_for_build_sdist`.""" warn_config_settings(config_settings) @@ -82,7 +82,7 @@ def get_requires_for_build_sdist( def get_requires_for_build_wheel( - config_settings: "dict[Any, Any] | None" = None, + config_settings: "Mapping[Any, Any] | None" = None, ) -> "list[str]": """PEP 517 hook `get_requires_for_build_wheel`.""" warn_config_settings(config_settings) @@ -90,7 +90,7 @@ def get_requires_for_build_wheel( def prepare_metadata_for_build_wheel( - metadata_directory: str, config_settings: "dict[Any, Any] | None" = None + metadata_directory: str, config_settings: "Mapping[Any, Any] | None" = None ) -> str: """PEP 517 hook `prepare_metadata_for_build_wheel`.""" args = ["build-backend", "prepare-metadata-for-build-wheel", metadata_directory] @@ -99,7 +99,7 @@ def prepare_metadata_for_build_wheel( def build_editable( wheel_directory: str, - config_settings: "dict[Any, Any] | None" = None, + config_settings: "Mapping[Any, Any] | None" = None, metadata_directory: "str | None" = None, ) -> str: """PEP 660 hook `build_editable`.""" @@ -110,7 +110,7 @@ def build_editable( def get_requires_for_build_editable( - config_settings: "dict[Any, Any] | None" = None, + config_settings: "Mapping[Any, Any] | None" = None, ) -> "list[str]": """PEP 660 hook `get_requires_for_build_editable`.""" warn_config_settings(config_settings) @@ -118,7 +118,7 @@ def get_requires_for_build_editable( def prepare_metadata_for_build_editable( - metadata_directory: str, config_settings: "dict[Any, Any] | None" = None + metadata_directory: str, config_settings: "Mapping[Any, Any] | None" = None ) -> str: """PEP 660 hook `prepare_metadata_for_build_editable`.""" args = ["build-backend", "prepare-metadata-for-build-editable", metadata_directory] From 7250bdbbd14b4d212f8ee0f0392ed598fea870f8 Mon Sep 17 00:00:00 2001 From: Charles Tapley Hoyt Date: Mon, 13 Jan 2025 13:24:43 +0100 Subject: [PATCH 2/4] Update _build_backend.py --- python/uv/_build_backend.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/python/uv/_build_backend.py b/python/uv/_build_backend.py index 45b3e6a8509d..ad326687f166 100644 --- a/python/uv/_build_backend.py +++ b/python/uv/_build_backend.py @@ -18,7 +18,7 @@ TYPE_CHECKING = False if TYPE_CHECKING: - from typing import Any, Mapping # noqa:I001 + from typing import Any, Mapping, Sequence # noqa:I001 def warn_config_settings(config_settings: "Mapping[Any, Any] | None" = None) -> None: @@ -28,7 +28,9 @@ def warn_config_settings(config_settings: "Mapping[Any, Any] | None" = None) -> print("Warning: Config settings are not supported", file=sys.stderr) -def call(args: "list[str]", config_settings: "Mapping[Any, Any] | None" = None) -> str: +def call( + args: "Sequence[str]", config_settings: "Mapping[Any, Any] | None" = None +) -> str: """Invoke a uv subprocess and return the filename from stdout.""" import shutil import subprocess @@ -40,7 +42,7 @@ def call(args: "list[str]", config_settings: "Mapping[Any, Any] | None" = None) if uv_bin is None: raise RuntimeError("uv was not properly installed") # Forward stderr, capture stdout for the filename - result = subprocess.run([uv_bin] + args, stdout=subprocess.PIPE) + result = subprocess.run([uv_bin, *args], stdout=subprocess.PIPE) if result.returncode != 0: sys.exit(result.returncode) # If there was extra stdout, forward it (there should not be extra stdout) @@ -75,7 +77,7 @@ def build_wheel( def get_requires_for_build_sdist( config_settings: "Mapping[Any, Any] | None" = None, -) -> "list[str]": +) -> "Sequence[str]": """PEP 517 hook `get_requires_for_build_sdist`.""" warn_config_settings(config_settings) return [] @@ -83,7 +85,7 @@ def get_requires_for_build_sdist( def get_requires_for_build_wheel( config_settings: "Mapping[Any, Any] | None" = None, -) -> "list[str]": +) -> "Sequence[str]": """PEP 517 hook `get_requires_for_build_wheel`.""" warn_config_settings(config_settings) return [] @@ -111,7 +113,7 @@ def build_editable( def get_requires_for_build_editable( config_settings: "Mapping[Any, Any] | None" = None, -) -> "list[str]": +) -> "Sequence[str]": """PEP 660 hook `get_requires_for_build_editable`.""" warn_config_settings(config_settings) return [] From 808eb2d8dfc75f52be9fb02baa4faeb3709c9a16 Mon Sep 17 00:00:00 2001 From: Charles Tapley Hoyt Date: Mon, 13 Jan 2025 13:26:39 +0100 Subject: [PATCH 3/4] Update _build_backend.py --- python/uv/_build_backend.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/python/uv/_build_backend.py b/python/uv/_build_backend.py index ad326687f166..2af2f2506ea8 100644 --- a/python/uv/_build_backend.py +++ b/python/uv/_build_backend.py @@ -18,7 +18,8 @@ TYPE_CHECKING = False if TYPE_CHECKING: - from typing import Any, Mapping, Sequence # noqa:I001 + from collections.abc import Mapping # noqa:I001 + from typing import Any, Sequence # noqa:I001 def warn_config_settings(config_settings: "Mapping[Any, Any] | None" = None) -> None: From bfef5dd62645b5d1ede14fdd89be0e3ec6d10e0b Mon Sep 17 00:00:00 2001 From: Charles Tapley Hoyt Date: Mon, 13 Jan 2025 13:35:45 +0100 Subject: [PATCH 4/4] Update _build_backend.py --- python/uv/_build_backend.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/python/uv/_build_backend.py b/python/uv/_build_backend.py index 2af2f2506ea8..03fffd6d12f2 100644 --- a/python/uv/_build_backend.py +++ b/python/uv/_build_backend.py @@ -18,8 +18,8 @@ TYPE_CHECKING = False if TYPE_CHECKING: - from collections.abc import Mapping # noqa:I001 - from typing import Any, Sequence # noqa:I001 + from collections.abc import Mapping, Sequence # noqa:I001 + from typing import Any # noqa:I001 def warn_config_settings(config_settings: "Mapping[Any, Any] | None" = None) -> None: