From a03c8783a1b27f5ec7374c22ce83d068201bcbc2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Randy=20D=C3=B6ring?= <30527984+radoering@users.noreply.github.com> Date: Sat, 31 Aug 2024 13:10:06 +0200 Subject: [PATCH] deprecate `tool.poetry.dev-dependencies` in favor of `tool.poetry.group.dev.dependencies` --- src/poetry/core/factory.py | 10 ++++++++++ tests/fixtures/complete.toml | 2 +- .../project_with_build_system_requires/pyproject.toml | 2 +- .../project_with_invalid_dev_deps/pyproject.toml | 2 +- .../pyproject.toml | 2 +- tests/json/test_poetry_schema.py | 5 ++--- .../fixtures/case_sensitive_exclusions/pyproject.toml | 2 +- .../builders/fixtures/comma_file/pyproject.toml | 2 +- .../masonry/builders/fixtures/complete/pyproject.toml | 2 +- .../default_src_with_excluded_data/pyproject.toml | 2 +- .../fixtures/default_with_excluded_data/pyproject.toml | 2 +- .../default_with_excluded_data_toml/pyproject.toml | 2 +- .../builders/fixtures/disable_setup_py/pyproject.toml | 2 +- .../fixtures/exclude_nested_data_toml/pyproject.toml | 2 +- .../fixtures/excluded_subpackage/pyproject.toml | 2 +- .../fixtures/include_excluded_code/pyproject.toml | 2 +- .../invalid_case_sensitive_exclusions/pyproject.toml | 2 +- .../fixtures/licenses_and_copying/pyproject.toml | 2 +- .../script_callable_legacy_string/pyproject.toml | 2 +- .../fixtures/script_reference_console/pyproject.toml | 2 +- .../fixtures/script_reference_file/pyproject.toml | 2 +- .../pyproject.toml | 2 +- .../script_reference_file_missing/pyproject.toml | 2 +- .../builders/fixtures/with-include/pyproject.toml | 2 +- .../fixtures/with_bad_path_dev_dep/pyproject.toml | 2 +- .../fixtures/with_include_inline_table/pyproject.toml | 2 +- tests/test_factory.py | 9 ++++++++- 27 files changed, 44 insertions(+), 28 deletions(-) diff --git a/src/poetry/core/factory.py b/src/poetry/core/factory.py index 5e74991e3..4524b5769 100644 --- a/src/poetry/core/factory.py +++ b/src/poetry/core/factory.py @@ -56,6 +56,9 @@ def create_poetry( raise RuntimeError("The Poetry configuration is invalid:\n" + message) + for warning in check_result["warnings"]: + logger.warning(warning) + # Load package # If name or version were missing in package mode, we would have already # raised an error, so we can safely assume they might only be missing @@ -403,6 +406,13 @@ def validate( result["errors"] += validation_errors + if "dev-dependencies" in config: + result["warnings"].append( + 'The "poetry.dev-dependencies" section is deprecated' + " and will be removed in a future version." + ' Use "poetry.group.dev.dependencies" instead.' + ) + if strict: # If strict, check the file more thoroughly if "dependencies" in config: diff --git a/tests/fixtures/complete.toml b/tests/fixtures/complete.toml index 8d45ac0c2..99422c9a9 100644 --- a/tests/fixtures/complete.toml +++ b/tests/fixtures/complete.toml @@ -32,7 +32,7 @@ pendulum = { version = "^1.4", optional = true } [tool.poetry.extras] time = [ "pendulum" ] -[tool.poetry.dev-dependencies] +[tool.poetry.group.dev.dependencies] pytest = "^3.0" pytest-cov = "^2.4" diff --git a/tests/fixtures/project_with_build_system_requires/pyproject.toml b/tests/fixtures/project_with_build_system_requires/pyproject.toml index 3485c429c..1264acb19 100644 --- a/tests/fixtures/project_with_build_system_requires/pyproject.toml +++ b/tests/fixtures/project_with_build_system_requires/pyproject.toml @@ -19,4 +19,4 @@ script = "build.py" [tool.poetry.dependencies] python = "^3.7" -[tool.poetry.dev-dependencies] +[tool.poetry.group.dev.dependencies] diff --git a/tests/fixtures/project_with_invalid_dev_deps/pyproject.toml b/tests/fixtures/project_with_invalid_dev_deps/pyproject.toml index 1d0b5a846..cebb6272f 100644 --- a/tests/fixtures/project_with_invalid_dev_deps/pyproject.toml +++ b/tests/fixtures/project_with_invalid_dev_deps/pyproject.toml @@ -9,5 +9,5 @@ license = "MIT" [tool.poetry.extras] -[tool.poetry.dev-dependencies] +[tool.poetry.group.dev.dependencies] mylib = { path = "../mylib", develop = true} diff --git a/tests/fixtures/project_with_multi_constraints_dependency/pyproject.toml b/tests/fixtures/project_with_multi_constraints_dependency/pyproject.toml index 69462a6ab..4d609342c 100644 --- a/tests/fixtures/project_with_multi_constraints_dependency/pyproject.toml +++ b/tests/fixtures/project_with_multi_constraints_dependency/pyproject.toml @@ -16,4 +16,4 @@ pendulum = [ { version = "^2.0", python = "^3.4" } ] -[tool.poetry.dev-dependencies] +[tool.poetry.group.dev.dependencies] diff --git a/tests/json/test_poetry_schema.py b/tests/json/test_poetry_schema.py index 5348f097b..4f598a05c 100644 --- a/tests/json/test_poetry_schema.py +++ b/tests/json/test_poetry_schema.py @@ -15,7 +15,7 @@ def base_object() -> dict[str, Any]: "description": "Some description.", "authors": ["Your Name "], "dependencies": {"python": "^3.6"}, - "dev-dependencies": {}, + "group": {"dev": {"dependencies": {}}}, } @@ -35,7 +35,6 @@ def multi_url_object() -> dict[str, Any]: {"path": "../foo", "platform": "darwin"}, ] }, - "dev-dependencies": {}, } @@ -70,7 +69,7 @@ def test_invalid_mode() -> None: def test_path_dependencies(base_object: dict[str, Any]) -> None: base_object["dependencies"].update({"foo": {"path": "../foo"}}) - base_object["dev-dependencies"].update({"foo": {"path": "../foo"}}) + base_object["group"]["dev"]["dependencies"].update({"foo": {"path": "../foo"}}) assert len(validate_object(base_object, "poetry-schema")) == 0 diff --git a/tests/masonry/builders/fixtures/case_sensitive_exclusions/pyproject.toml b/tests/masonry/builders/fixtures/case_sensitive_exclusions/pyproject.toml index 3bf793edc..1bacf06f6 100644 --- a/tests/masonry/builders/fixtures/case_sensitive_exclusions/pyproject.toml +++ b/tests/masonry/builders/fixtures/case_sensitive_exclusions/pyproject.toml @@ -37,7 +37,7 @@ cachy = { version = "^0.2.0", extras = ["msgpack"] } pendulum = { version = "^1.4", optional = true } -[tool.poetry.dev-dependencies] +[tool.poetry.group.dev.dependencies] pytest = "~3.4" [tool.poetry.extras] diff --git a/tests/masonry/builders/fixtures/comma_file/pyproject.toml b/tests/masonry/builders/fixtures/comma_file/pyproject.toml index 110845e3f..d1e51375e 100644 --- a/tests/masonry/builders/fixtures/comma_file/pyproject.toml +++ b/tests/masonry/builders/fixtures/comma_file/pyproject.toml @@ -8,5 +8,5 @@ authors = [ [tool.poetry.dependencies] python = "^3.6" -[tool.poetry.dev-dependencies] +[tool.poetry.group.dev.dependencies] diff --git a/tests/masonry/builders/fixtures/complete/pyproject.toml b/tests/masonry/builders/fixtures/complete/pyproject.toml index 8b7d2c6b6..938cbb810 100644 --- a/tests/masonry/builders/fixtures/complete/pyproject.toml +++ b/tests/masonry/builders/fixtures/complete/pyproject.toml @@ -39,7 +39,7 @@ version = "^1.4" markers = 'python_version ~= "2.7" and sys_platform == "win32" or python_version in "3.4 3.5"' optional = true -[tool.poetry.dev-dependencies] +[tool.poetry.group.dev.dependencies] pytest = "~3.4" [tool.poetry.extras] diff --git a/tests/masonry/builders/fixtures/default_src_with_excluded_data/pyproject.toml b/tests/masonry/builders/fixtures/default_src_with_excluded_data/pyproject.toml index 80e86166a..0c66c72d2 100644 --- a/tests/masonry/builders/fixtures/default_src_with_excluded_data/pyproject.toml +++ b/tests/masonry/builders/fixtures/default_src_with_excluded_data/pyproject.toml @@ -28,7 +28,7 @@ cachy = { version = "^0.2.0", extras = ["msgpack"] } pendulum = { version = "^1.4", optional = true } -[tool.poetry.dev-dependencies] +[tool.poetry.group.dev.dependencies] pytest = "~3.4" [tool.poetry.extras] diff --git a/tests/masonry/builders/fixtures/default_with_excluded_data/pyproject.toml b/tests/masonry/builders/fixtures/default_with_excluded_data/pyproject.toml index 80e86166a..0c66c72d2 100644 --- a/tests/masonry/builders/fixtures/default_with_excluded_data/pyproject.toml +++ b/tests/masonry/builders/fixtures/default_with_excluded_data/pyproject.toml @@ -28,7 +28,7 @@ cachy = { version = "^0.2.0", extras = ["msgpack"] } pendulum = { version = "^1.4", optional = true } -[tool.poetry.dev-dependencies] +[tool.poetry.group.dev.dependencies] pytest = "~3.4" [tool.poetry.extras] diff --git a/tests/masonry/builders/fixtures/default_with_excluded_data_toml/pyproject.toml b/tests/masonry/builders/fixtures/default_with_excluded_data_toml/pyproject.toml index fcd31fa20..0f1e025e0 100644 --- a/tests/masonry/builders/fixtures/default_with_excluded_data_toml/pyproject.toml +++ b/tests/masonry/builders/fixtures/default_with_excluded_data_toml/pyproject.toml @@ -30,7 +30,7 @@ cachy = { version = "^0.2.0", extras = ["msgpack"] } pendulum = { version = "^1.4", optional = true } -[tool.poetry.dev-dependencies] +[tool.poetry.group.dev.dependencies] pytest = "~3.4" [tool.poetry.extras] diff --git a/tests/masonry/builders/fixtures/disable_setup_py/pyproject.toml b/tests/masonry/builders/fixtures/disable_setup_py/pyproject.toml index 372501ff9..e85ad01a8 100644 --- a/tests/masonry/builders/fixtures/disable_setup_py/pyproject.toml +++ b/tests/masonry/builders/fixtures/disable_setup_py/pyproject.toml @@ -29,7 +29,7 @@ python = "~2.7 || ^3.6" [tool.poetry.extras] -[tool.poetry.dev-dependencies] +[tool.poetry.group.dev.dependencies] [tool.poetry.scripts] my-script = "my_package:main" diff --git a/tests/masonry/builders/fixtures/exclude_nested_data_toml/pyproject.toml b/tests/masonry/builders/fixtures/exclude_nested_data_toml/pyproject.toml index 28cff3c54..0747ae636 100644 --- a/tests/masonry/builders/fixtures/exclude_nested_data_toml/pyproject.toml +++ b/tests/masonry/builders/fixtures/exclude_nested_data_toml/pyproject.toml @@ -31,7 +31,7 @@ cachy = { version = "^0.2.0", extras = ["msgpack"] } pendulum = { version = "^1.4", optional = true } -[tool.poetry.dev-dependencies] +[tool.poetry.group.dev.dependencies] pytest = "~3.4" [tool.poetry.extras] diff --git a/tests/masonry/builders/fixtures/excluded_subpackage/pyproject.toml b/tests/masonry/builders/fixtures/excluded_subpackage/pyproject.toml index 3852bb831..0c6018291 100644 --- a/tests/masonry/builders/fixtures/excluded_subpackage/pyproject.toml +++ b/tests/masonry/builders/fixtures/excluded_subpackage/pyproject.toml @@ -10,7 +10,7 @@ exclude = [ [tool.poetry.dependencies] python = "^3.6" -[tool.poetry.dev-dependencies] +[tool.poetry.group.dev.dependencies] pytest = "^3.0" [build-system] diff --git a/tests/masonry/builders/fixtures/include_excluded_code/pyproject.toml b/tests/masonry/builders/fixtures/include_excluded_code/pyproject.toml index 379b7dbc1..a69ea1808 100644 --- a/tests/masonry/builders/fixtures/include_excluded_code/pyproject.toml +++ b/tests/masonry/builders/fixtures/include_excluded_code/pyproject.toml @@ -13,7 +13,7 @@ include = ['lib/my_package/generated.py'] [tool.poetry.dependencies] python = "^3.8" -[tool.poetry.dev-dependencies] +[tool.poetry.group.dev.dependencies] [build-system] requires = ["poetry-core>=1.0.0"] diff --git a/tests/masonry/builders/fixtures/invalid_case_sensitive_exclusions/pyproject.toml b/tests/masonry/builders/fixtures/invalid_case_sensitive_exclusions/pyproject.toml index 44e226ccc..a9c26ec3e 100644 --- a/tests/masonry/builders/fixtures/invalid_case_sensitive_exclusions/pyproject.toml +++ b/tests/masonry/builders/fixtures/invalid_case_sensitive_exclusions/pyproject.toml @@ -32,7 +32,7 @@ cachy = { version = "^0.2.0", extras = ["msgpack"] } pendulum = { version = "^1.4", optional = true } -[tool.poetry.dev-dependencies] +[tool.poetry.group.dev.dependencies] pytest = "~3.4" [tool.poetry.extras] diff --git a/tests/masonry/builders/fixtures/licenses_and_copying/pyproject.toml b/tests/masonry/builders/fixtures/licenses_and_copying/pyproject.toml index bb1e5f528..6b4625e03 100644 --- a/tests/masonry/builders/fixtures/licenses_and_copying/pyproject.toml +++ b/tests/masonry/builders/fixtures/licenses_and_copying/pyproject.toml @@ -34,7 +34,7 @@ version = "^1.4" markers= 'python_version ~= "2.7" and sys_platform == "win32" or python_version in "3.4 3.5"' optional = true -[tool.poetry.dev-dependencies] +[tool.poetry.group.dev.dependencies] pytest = "~3.4" [tool.poetry.extras] diff --git a/tests/masonry/builders/fixtures/script_callable_legacy_string/pyproject.toml b/tests/masonry/builders/fixtures/script_callable_legacy_string/pyproject.toml index 2c949a9d5..4ac99e645 100644 --- a/tests/masonry/builders/fixtures/script_callable_legacy_string/pyproject.toml +++ b/tests/masonry/builders/fixtures/script_callable_legacy_string/pyproject.toml @@ -11,7 +11,7 @@ readme = "README.rst" [tool.poetry.dependencies] python = "^3.6" -[tool.poetry.dev-dependencies] +[tool.poetry.group.dev.dependencies] [tool.poetry.extras] diff --git a/tests/masonry/builders/fixtures/script_reference_console/pyproject.toml b/tests/masonry/builders/fixtures/script_reference_console/pyproject.toml index a55800b67..2d1c25a19 100644 --- a/tests/masonry/builders/fixtures/script_reference_console/pyproject.toml +++ b/tests/masonry/builders/fixtures/script_reference_console/pyproject.toml @@ -11,7 +11,7 @@ readme = "README.rst" [tool.poetry.dependencies] python = "^3.6" -[tool.poetry.dev-dependencies] +[tool.poetry.group.dev.dependencies] [tool.poetry.extras] time = [] diff --git a/tests/masonry/builders/fixtures/script_reference_file/pyproject.toml b/tests/masonry/builders/fixtures/script_reference_file/pyproject.toml index 973a94c14..1f24c5954 100644 --- a/tests/masonry/builders/fixtures/script_reference_file/pyproject.toml +++ b/tests/masonry/builders/fixtures/script_reference_file/pyproject.toml @@ -11,7 +11,7 @@ readme = "README.rst" [tool.poetry.dependencies] python = "^3.6" -[tool.poetry.dev-dependencies] +[tool.poetry.group.dev.dependencies] [tool.poetry.extras] diff --git a/tests/masonry/builders/fixtures/script_reference_file_invalid_definition/pyproject.toml b/tests/masonry/builders/fixtures/script_reference_file_invalid_definition/pyproject.toml index 7c6aa5627..937b14071 100644 --- a/tests/masonry/builders/fixtures/script_reference_file_invalid_definition/pyproject.toml +++ b/tests/masonry/builders/fixtures/script_reference_file_invalid_definition/pyproject.toml @@ -11,7 +11,7 @@ readme = "README.rst" [tool.poetry.dependencies] python = "^3.6" -[tool.poetry.dev-dependencies] +[tool.poetry.group.dev.dependencies] [tool.poetry.extras] diff --git a/tests/masonry/builders/fixtures/script_reference_file_missing/pyproject.toml b/tests/masonry/builders/fixtures/script_reference_file_missing/pyproject.toml index 973a94c14..1f24c5954 100644 --- a/tests/masonry/builders/fixtures/script_reference_file_missing/pyproject.toml +++ b/tests/masonry/builders/fixtures/script_reference_file_missing/pyproject.toml @@ -11,7 +11,7 @@ readme = "README.rst" [tool.poetry.dependencies] python = "^3.6" -[tool.poetry.dev-dependencies] +[tool.poetry.group.dev.dependencies] [tool.poetry.extras] diff --git a/tests/masonry/builders/fixtures/with-include/pyproject.toml b/tests/masonry/builders/fixtures/with-include/pyproject.toml index ea2a19430..c220bffa1 100644 --- a/tests/masonry/builders/fixtures/with-include/pyproject.toml +++ b/tests/masonry/builders/fixtures/with-include/pyproject.toml @@ -46,7 +46,7 @@ cachy = { version = "^0.2.0", extras = ["msgpack"] } pendulum = { version = "^1.4", optional = true } -[tool.poetry.dev-dependencies] +[tool.poetry.group.dev.dependencies] pytest = "~3.4" [tool.poetry.extras] diff --git a/tests/masonry/builders/fixtures/with_bad_path_dev_dep/pyproject.toml b/tests/masonry/builders/fixtures/with_bad_path_dev_dep/pyproject.toml index 921d93af5..dab7bb20f 100644 --- a/tests/masonry/builders/fixtures/with_bad_path_dev_dep/pyproject.toml +++ b/tests/masonry/builders/fixtures/with_bad_path_dev_dep/pyproject.toml @@ -7,5 +7,5 @@ authors = ["Awesome Hacker "] [tool.poetry.dependencies] python = "^3.6" -[tool.poetry.dev-dependencies] +[tool.poetry.group.dev.dependencies] bogus = { path = "../only/in/dev", develop = true } diff --git a/tests/masonry/builders/fixtures/with_include_inline_table/pyproject.toml b/tests/masonry/builders/fixtures/with_include_inline_table/pyproject.toml index 5309992f1..991b0e8cf 100644 --- a/tests/masonry/builders/fixtures/with_include_inline_table/pyproject.toml +++ b/tests/masonry/builders/fixtures/with_include_inline_table/pyproject.toml @@ -37,7 +37,7 @@ cachy = { version = "^0.2.0", extras = ["msgpack"] } pendulum = { version = "^1.4", optional = true } -[tool.poetry.dev-dependencies] +[tool.poetry.group.dev.dependencies] pytest = "~3.4" [tool.poetry.extras] diff --git a/tests/test_factory.py b/tests/test_factory.py index 3d34787e2..c0496a8a9 100644 --- a/tests/test_factory.py +++ b/tests/test_factory.py @@ -411,11 +411,18 @@ def test_create_poetry_with_invalid_dev_dependencies(caplog: LogCaptureFixture) assert any("dev" in r.groups for r in poetry.package.all_requires) -def test_create_poetry_with_groups_and_legacy_dev() -> None: +def test_create_poetry_with_groups_and_legacy_dev(caplog: LogCaptureFixture) -> None: + assert not caplog.records + poetry = Factory().create_poetry( fixtures_dir / "project_with_groups_and_legacy_dev" ) + assert len(caplog.records) == 1 + record = caplog.records[0] + assert record.levelname == "WARNING" + assert '"poetry.dev-dependencies" section is deprecated' in record.message + package = poetry.package dependencies = package.all_requires