From ff9e871af1ee6ff55267342e1f6f3889ab55278b Mon Sep 17 00:00:00 2001 From: Frost Ming Date: Wed, 18 Sep 2024 08:23:34 +0800 Subject: [PATCH] fix: remove the fallback backend for editable build error (#3159) --- news/3159.removal.md | 1 + src/pdm/builders/editable.py | 32 ++++++-------------------------- 2 files changed, 7 insertions(+), 26 deletions(-) create mode 100644 news/3159.removal.md diff --git a/news/3159.removal.md b/news/3159.removal.md new file mode 100644 index 0000000000..d71e7e6df3 --- /dev/null +++ b/news/3159.removal.md @@ -0,0 +1 @@ +PDM no longer falls back to `setuptools-pep660` when the build backend doesn't support PEP 660. diff --git a/src/pdm/builders/editable.py b/src/pdm/builders/editable.py index 618bc61a8c..29f6098048 100644 --- a/src/pdm/builders/editable.py +++ b/src/pdm/builders/editable.py @@ -1,47 +1,27 @@ from __future__ import annotations import os -from typing import Any, ClassVar - -from pyproject_hooks import HookMissing from pdm.builders.base import EnvBuilder, wrap_error -from pdm.termui import logger class EditableBuilder(EnvBuilder): """Build egg-info in isolated env with managed Python.""" - FALLBACK_BACKEND: ClassVar[dict[str, Any]] = { - "build-backend": "setuptools_pep660", - "requires": ["setuptools_pep660"], - } - @wrap_error def prepare_metadata(self, out_dir: str) -> str: if self.isolated: self.install(self._requires, shared=True) - try: - if self.isolated: - requires = self._hook.get_requires_for_build_editable(self.config_settings) - self.install(requires) - filename = self._hook.prepare_metadata_for_build_editable(out_dir, self.config_settings) - except HookMissing: - self.init_build_system(self.FALLBACK_BACKEND) - return self.prepare_metadata(out_dir) + requires = self._hook.get_requires_for_build_editable(self.config_settings) + self.install(requires) + filename = self._hook.prepare_metadata_for_build_editable(out_dir, self.config_settings) return os.path.join(out_dir, filename) @wrap_error def build(self, out_dir: str, metadata_directory: str | None = None) -> str: if self.isolated: self.install(self._requires, shared=True) - try: - if self.isolated: - requires = self._hook.get_requires_for_build_editable(self.config_settings) - self.install(requires) - filename = self._hook.build_editable(out_dir, self.config_settings, metadata_directory) - except HookMissing: - logger.warning("The build backend doesn't support PEP 660, falling back to setuptools-pep660") - self.init_build_system(self.FALLBACK_BACKEND) - return self.build(out_dir, metadata_directory=metadata_directory) + requires = self._hook.get_requires_for_build_editable(self.config_settings) + self.install(requires) + filename = self._hook.build_editable(out_dir, self.config_settings, metadata_directory) return os.path.join(out_dir, filename)