From d30839112e072254dbff22c741ea3658ff48c0a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98ystein=20Olsen?= Date: Sat, 16 Dec 2023 17:19:00 +0100 Subject: [PATCH 1/4] Allow path dependency that is missing build-system Missing [build-system] table should be allowed. Poetry handles this fine, except for this check. > Tools should not require the existence of the [build-system] table. https://packaging.python.org/en/latest/specifications/pyproject-toml/ --- src/poetry/core/packages/utils/utils.py | 2 +- src/poetry/core/pyproject/toml.py | 4 ++-- tests/fixtures/project_minimal/pyproject.toml | 3 +++ tests/packages/test_directory_dependency.py | 10 ++++++++++ 4 files changed, 16 insertions(+), 3 deletions(-) create mode 100644 tests/fixtures/project_minimal/pyproject.toml diff --git a/src/poetry/core/packages/utils/utils.py b/src/poetry/core/packages/utils/utils.py index 97229517b..f69be1109 100644 --- a/src/poetry/core/packages/utils/utils.py +++ b/src/poetry/core/packages/utils/utils.py @@ -131,7 +131,7 @@ def is_python_project(path: Path) -> bool: pyproject = PyProjectTOML(path / "pyproject.toml") - supports_pep517 = setuptools_project or pyproject.is_build_system_defined() + supports_pep517 = setuptools_project or pyproject.exists() supports_poetry = pyproject.is_poetry_project() return supports_pep517 or supports_poetry diff --git a/src/poetry/core/pyproject/toml.py b/src/poetry/core/pyproject/toml.py index 45a2d9d87..8d339156d 100644 --- a/src/poetry/core/pyproject/toml.py +++ b/src/poetry/core/pyproject/toml.py @@ -33,8 +33,8 @@ def data(self) -> dict[str, Any]: return self._data - def is_build_system_defined(self) -> bool: - return "build-system" in self.data + def exists(self) -> bool: + return self.path.exists() @property def build_system(self) -> BuildSystem: diff --git a/tests/fixtures/project_minimal/pyproject.toml b/tests/fixtures/project_minimal/pyproject.toml new file mode 100644 index 000000000..cb1731fc6 --- /dev/null +++ b/tests/fixtures/project_minimal/pyproject.toml @@ -0,0 +1,3 @@ +[project] +name = "minimal" +version = "1" diff --git a/tests/packages/test_directory_dependency.py b/tests/packages/test_directory_dependency.py index 3d3533633..90c0b9eac 100644 --- a/tests/packages/test_directory_dependency.py +++ b/tests/packages/test_directory_dependency.py @@ -66,6 +66,16 @@ def test_directory_dependency_is_not_a_python_project( dep.validate(raise_error=True) +def test_directory_dependency_minimal() -> None: + path = ( + Path(__file__).parent.parent + / "fixtures" + / "project_minimal" + ) + dep = DirectoryDependency("demo", path) + dep.validate(raise_error=True) + + def _test_directory_dependency_pep_508( name: str, path: Path, pep_508_input: str, pep_508_output: str | None = None ) -> None: From 0edc672830f2ceeb82938653dbbaa3c59df79654 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sat, 16 Dec 2023 17:55:36 +0000 Subject: [PATCH 2/4] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- tests/packages/test_directory_dependency.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/tests/packages/test_directory_dependency.py b/tests/packages/test_directory_dependency.py index 90c0b9eac..72d7ae65a 100644 --- a/tests/packages/test_directory_dependency.py +++ b/tests/packages/test_directory_dependency.py @@ -67,11 +67,7 @@ def test_directory_dependency_is_not_a_python_project( def test_directory_dependency_minimal() -> None: - path = ( - Path(__file__).parent.parent - / "fixtures" - / "project_minimal" - ) + path = Path(__file__).parent.parent / "fixtures" / "project_minimal" dep = DirectoryDependency("demo", path) dep.validate(raise_error=True) From 6d4bd2a4bf2ec68cd8e74e5ccd66e25d4f4b69f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98ystein=20Olsen?= Date: Sat, 16 Dec 2023 22:49:32 +0100 Subject: [PATCH 3/4] Remove incorrect reference to pep517 and simplify logic --- src/poetry/core/packages/utils/utils.py | 8 ++------ src/poetry/core/pyproject/toml.py | 3 --- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/src/poetry/core/packages/utils/utils.py b/src/poetry/core/packages/utils/utils.py index f69be1109..55e124912 100644 --- a/src/poetry/core/packages/utils/utils.py +++ b/src/poetry/core/packages/utils/utils.py @@ -18,7 +18,6 @@ from poetry.core.constraints.version import Version from poetry.core.constraints.version import VersionRange from poetry.core.constraints.version import parse_marker_version_constraint -from poetry.core.pyproject.toml import PyProjectTOML from poetry.core.version.markers import SingleMarker from poetry.core.version.markers import SingleMarkerLike from poetry.core.version.markers import dnf @@ -129,12 +128,9 @@ def is_python_project(path: Path) -> bool: setup_cfg = path / "setup.cfg" setuptools_project = setup_py.exists() or setup_cfg.exists() - pyproject = PyProjectTOML(path / "pyproject.toml") + pyproject = (path / "pyproject.toml").exists() - supports_pep517 = setuptools_project or pyproject.exists() - supports_poetry = pyproject.is_poetry_project() - - return supports_pep517 or supports_poetry + return pyproject or setuptools_project def is_archive_file(name: str) -> bool: diff --git a/src/poetry/core/pyproject/toml.py b/src/poetry/core/pyproject/toml.py index 8d339156d..bc10113b1 100644 --- a/src/poetry/core/pyproject/toml.py +++ b/src/poetry/core/pyproject/toml.py @@ -33,9 +33,6 @@ def data(self) -> dict[str, Any]: return self._data - def exists(self) -> bool: - return self.path.exists() - @property def build_system(self) -> BuildSystem: if self._build_system is None: From 18dc02ff1e8ea28b0934b94ce2498b45dde4775d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98ystein=20Olsen?= Date: Sun, 17 Dec 2023 16:55:13 +0100 Subject: [PATCH 4/4] Fix and simplify too specific error message --- src/poetry/core/packages/dependency.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/poetry/core/packages/dependency.py b/src/poetry/core/packages/dependency.py index f5f559a85..c9cca8cd5 100644 --- a/src/poetry/core/packages/dependency.py +++ b/src/poetry/core/packages/dependency.py @@ -406,8 +406,7 @@ def create_from_pep_508( if os.path.isdir(p) and (os.path.sep in name or name.startswith(".")): if not is_python_project(Path(name)): raise ValueError( - f"Directory {name!r} is not installable. File 'setup.[py|cfg]' " - "not found." + f"Directory {name!r} is not installable. Not a Python project." ) link = Link(path_to_url(p)) elif is_archive_file(p):