From dfd0db8366301087bcb1b596e0344cd0450448e5 Mon Sep 17 00:00:00 2001 From: William D'Onofrio <16698591+wdonofrio@users.noreply.github.com> Date: Tue, 1 Aug 2023 10:08:20 -0600 Subject: [PATCH] Remove package pyproject line if package is module (#8218) This change only ensures that projects whose name needs to be normalized (e.g. projects with a dash) behave the same way as projects whose name is a valid Python module name. --- src/poetry/layouts/layout.py | 2 +- tests/console/commands/test_init.py | 23 ++++------------------- tests/console/commands/test_new.py | 5 ++++- 3 files changed, 9 insertions(+), 21 deletions(-) diff --git a/src/poetry/layouts/layout.py b/src/poetry/layouts/layout.py index 85733a7bef6..8225ec74a0d 100644 --- a/src/poetry/layouts/layout.py +++ b/src/poetry/layouts/layout.py @@ -96,7 +96,7 @@ def get_package_include(self) -> InlineTable | None: if self.basedir != Path(): package.append("from", self.basedir.as_posix()) else: - if include == self._project: + if module_name(self._project) == include: # package include and package name are the same, # packages table is redundant here. return None diff --git a/tests/console/commands/test_init.py b/tests/console/commands/test_init.py index 3352387246c..2a0a9bcaa25 100644 --- a/tests/console/commands/test_init.py +++ b/tests/console/commands/test_init.py @@ -13,6 +13,7 @@ from cleo.testers.command_tester import CommandTester from packaging.utils import canonicalize_name +from poetry.core.utils.helpers import module_name from poetry.console.application import Application from poetry.console.commands.init import InitCommand @@ -86,7 +87,6 @@ def init_basic_toml() -> str: authors = ["Your Name "] license = "MIT" readme = "README.md" -packages = [{include = "my_package"}] [tool.poetry.dependencies] python = "~2.7 || ^3.6" @@ -169,7 +169,6 @@ def test_interactive_with_dependencies( authors = ["Your Name "] license = "MIT" readme = "README.md" -packages = [{include = "my_package"}] [tool.poetry.dependencies] python = "~2.7 || ^3.6" @@ -218,7 +217,6 @@ def test_interactive_with_dependencies_and_no_selection( authors = ["Your Name "] license = "MIT" readme = "README.md" -packages = [{include = "my_package"}] [tool.poetry.dependencies] python = "~2.7 || ^3.6" @@ -249,7 +247,6 @@ def test_empty_license(tester: CommandTester) -> None: description = "" authors = ["Your Name "] readme = "README.md" -packages = [{{include = "my_package"}}] [tool.poetry.dependencies] python = "^{python}" @@ -290,7 +287,6 @@ def test_interactive_with_git_dependencies( authors = ["Your Name "] license = "MIT" readme = "README.md" -packages = [{include = "my_package"}] [tool.poetry.dependencies] python = "~2.7 || ^3.6" @@ -383,7 +379,6 @@ def test_interactive_with_git_dependencies_with_reference( authors = ["Your Name "] license = "MIT" readme = "README.md" -packages = [{include = "my_package"}] [tool.poetry.dependencies] python = "~2.7 || ^3.6" @@ -429,7 +424,6 @@ def test_interactive_with_git_dependencies_and_other_name( authors = ["Your Name "] license = "MIT" readme = "README.md" -packages = [{include = "my_package"}] [tool.poetry.dependencies] python = "~2.7 || ^3.6" @@ -481,7 +475,6 @@ def test_interactive_with_directory_dependency( authors = ["Your Name "] license = "MIT" readme = "README.md" -packages = [{include = "my_package"}] [tool.poetry.dependencies] python = "~2.7 || ^3.6" @@ -532,7 +525,6 @@ def test_interactive_with_directory_dependency_and_other_name( authors = ["Your Name "] license = "MIT" readme = "README.md" -packages = [{include = "my_package"}] [tool.poetry.dependencies] python = "~2.7 || ^3.6" @@ -584,7 +576,6 @@ def test_interactive_with_file_dependency( authors = ["Your Name "] license = "MIT" readme = "README.md" -packages = [{include = "my_package"}] [tool.poetry.dependencies] python = "~2.7 || ^3.6" @@ -629,7 +620,6 @@ def test_interactive_with_wrong_dependency_inputs( authors = ["Your Name "] license = "MIT" readme = "README.md" -packages = [{include = "my_package"}] [tool.poetry.dependencies] python = "^3.8" @@ -664,7 +654,6 @@ def test_python_option(tester: CommandTester) -> None: authors = ["Your Name "] license = "MIT" readme = "README.md" -packages = [{include = "my_package"}] [tool.poetry.dependencies] python = "~2.7 || ^3.6" @@ -697,7 +686,6 @@ def test_predefined_dependency(tester: CommandTester, repo: TestRepository) -> N authors = ["Your Name "] license = "MIT" readme = "README.md" -packages = [{include = "my_package"}] [tool.poetry.dependencies] python = "~2.7 || ^3.6" @@ -739,7 +727,6 @@ def test_predefined_and_interactive_dependencies( authors = ["Your Name "] license = "MIT" readme = "README.md" -packages = [{include = "my_package"}] [tool.poetry.dependencies] python = "~2.7 || ^3.6" @@ -775,7 +762,6 @@ def test_predefined_dev_dependency(tester: CommandTester, repo: TestRepository) authors = ["Your Name "] license = "MIT" readme = "README.md" -packages = [{include = "my_package"}] [tool.poetry.dependencies] python = "~2.7 || ^3.6" @@ -819,7 +805,6 @@ def test_predefined_and_interactive_dev_dependencies( authors = ["Your Name "] license = "MIT" readme = "README.md" -packages = [{include = "my_package"}] [tool.poetry.dependencies] python = "~2.7 || ^3.6" @@ -866,7 +851,6 @@ def test_predefined_all_options(tester: CommandTester, repo: TestRepository) -> authors = ["Foo Bar "] license = "MIT" readme = "README.md" -packages = [{include = "my_package"}] [tool.poetry.dependencies] python = "^3.8" @@ -959,7 +943,6 @@ def test_init_non_interactive_existing_pyproject_add_dependency( description = "" authors = ["Your Name "] readme = "README.md" -packages = [{include = "my_package"}] [tool.poetry.dependencies] python = "^3.6" @@ -1043,7 +1026,9 @@ def test_package_include( ), ) - packages = "" if include is None else f'packages = [{{include = "{include}"}}]\n' + packages = "" + if include and module_name(package_name) != include: + packages = f'packages = [{{include = "{include}"}}]\n' expected = ( f"[tool.poetry]\n" diff --git a/tests/console/commands/test_new.py b/tests/console/commands/test_new.py index d36d9b0f671..9bbef7fff17 100644 --- a/tests/console/commands/test_new.py +++ b/tests/console/commands/test_new.py @@ -9,6 +9,8 @@ import pytest +from poetry.core.utils.helpers import module_name + from poetry.factory import Factory @@ -55,10 +57,11 @@ def verify_project_directory( else: package_include = {"include": package_path.parts[0]} + name = poetry.local_config.get("name", "") packages = poetry.local_config.get("packages") if not packages: - assert poetry.local_config.get("name") == package_include.get("include") + assert module_name(name) == package_include.get("include") else: assert len(packages) == 1 assert packages[0] == package_include