Skip to content

Commit

Permalink
fix: remove the fallback backend for editable build error (#3159)
Browse files Browse the repository at this point in the history
  • Loading branch information
frostming committed Sep 18, 2024
1 parent 0ed53b6 commit ff9e871
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 26 deletions.
1 change: 1 addition & 0 deletions news/3159.removal.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
PDM no longer falls back to `setuptools-pep660` when the build backend doesn't support PEP 660.
32 changes: 6 additions & 26 deletions src/pdm/builders/editable.py
Original file line number Diff line number Diff line change
@@ -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)

0 comments on commit ff9e871

Please sign in to comment.