Skip to content

Commit ee49998

Browse files
committed
feat(cli): support pep 735 on init and new
1 parent 335c5e7 commit ee49998

File tree

2 files changed

+52
-52
lines changed

2 files changed

+52
-52
lines changed

src/poetry/layouts/layout.py

+7-6
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,12 @@
3838
dependencies = [
3939
]
4040
41+
[dependency-groups]
42+
dev = [
43+
]
44+
4145
[tool.poetry]
4246
packages = []
43-
44-
[tool.poetry.group.dev.dependencies]
4547
"""
4648

4749
poetry_core_version = Version.parse(importlib.metadata.version("poetry-core"))
@@ -179,11 +181,10 @@ def generate_project_content(self) -> TOMLDocument:
179181

180182
if self._dev_dependencies:
181183
for dep_name, dep_constraint in self._dev_dependencies.items():
182-
poetry_content["group"]["dev"]["dependencies"][dep_name] = (
183-
dep_constraint
184-
)
184+
dependency = Factory.create_dependency(dep_name, dep_constraint)
185+
content["dependency-groups"]["dev"].append(dependency.to_pep_508())
185186
else:
186-
del poetry_content["group"]
187+
del content["dependency-groups"]
187188

188189
if not poetry_content:
189190
del content["tool"]["poetry"]

tests/console/commands/test_init.py

+45-46
Original file line numberDiff line numberDiff line change
@@ -153,10 +153,11 @@ def test_interactive_with_dependencies(
153153
"flask (>=2.0.0,<3.0.0)"
154154
]
155155
156-
[tool.poetry]
156+
[dependency-groups]
157+
dev = [
158+
"pytest (>=3.6.0,<4.0.0)"
159+
]
157160
158-
[tool.poetry.group.dev.dependencies]
159-
pytest = "^3.6.0"
160161
161162
[build-system]
162163
requires = ["poetry-core>=2.0.0,<3.0.0"]
@@ -278,10 +279,10 @@ def test_interactive_with_git_dependencies(
278279
"demo @ git+https://github.com/demo/demo.git"
279280
]
280281
281-
[tool.poetry]
282-
283-
[tool.poetry.group.dev.dependencies]
284-
pytest = "^3.6.0"
282+
[dependency-groups]
283+
dev = [
284+
"pytest (>=3.6.0,<4.0.0)"
285+
]
285286
"""
286287

287288
assert expected in tester.io.fetch_output()
@@ -374,10 +375,10 @@ def test_interactive_with_git_dependencies_with_reference(
374375
"demo @ git+https://github.com/demo/demo.git@develop"
375376
]
376377
377-
[tool.poetry]
378-
379-
[tool.poetry.group.dev.dependencies]
380-
pytest = "^3.6.0"
378+
[dependency-groups]
379+
dev = [
380+
"pytest (>=3.6.0,<4.0.0)"
381+
]
381382
"""
382383

383384
assert expected in tester.io.fetch_output()
@@ -423,10 +424,10 @@ def test_interactive_with_git_dependencies_and_other_name(
423424
"demo @ git+https://github.com/demo/pyproject-demo.git"
424425
]
425426
426-
[tool.poetry]
427-
428-
[tool.poetry.group.dev.dependencies]
429-
pytest = "^3.6.0"
427+
[dependency-groups]
428+
dev = [
429+
"pytest (>=3.6.0,<4.0.0)"
430+
]
430431
"""
431432

432433
assert expected in tester.io.fetch_output()
@@ -479,10 +480,10 @@ def test_interactive_with_directory_dependency(
479480
"demo @ {demo_uri}"
480481
]
481482
482-
[tool.poetry]
483-
484-
[tool.poetry.group.dev.dependencies]
485-
pytest = "^3.6.0"
483+
[dependency-groups]
484+
dev = [
485+
"pytest (>=3.6.0,<4.0.0)"
486+
]
486487
"""
487488
assert expected in tester.io.fetch_output()
488489

@@ -534,10 +535,10 @@ def test_interactive_with_directory_dependency_and_other_name(
534535
"demo @ {demo_uri}"
535536
]
536537
537-
[tool.poetry]
538-
539-
[tool.poetry.group.dev.dependencies]
540-
pytest = "^3.6.0"
538+
[dependency-groups]
539+
dev = [
540+
"pytest (>=3.6.0,<4.0.0)"
541+
]
541542
"""
542543

543544
assert expected in tester.io.fetch_output()
@@ -590,10 +591,10 @@ def test_interactive_with_file_dependency(
590591
"demo @ {demo_uri}"
591592
]
592593
593-
[tool.poetry]
594-
595-
[tool.poetry.group.dev.dependencies]
596-
pytest = "^3.6.0"
594+
[dependency-groups]
595+
dev = [
596+
"pytest (>=3.6.0,<4.0.0)"
597+
]
597598
"""
598599

599600
assert expected in tester.io.fetch_output()
@@ -639,10 +640,10 @@ def test_interactive_with_wrong_dependency_inputs(
639640
"pendulum (>=2.0.0,<3.0.0)"
640641
]
641642
642-
[tool.poetry]
643-
644-
[tool.poetry.group.dev.dependencies]
645-
pytest = "3.6.0"
643+
[dependency-groups]
644+
dev = [
645+
"pytest (==3.6.0)"
646+
]
646647
"""
647648

648649
assert expected in tester.io.fetch_output()
@@ -786,10 +787,10 @@ def test_predefined_dev_dependency(tester: CommandTester, repo: TestRepository)
786787
dependencies = [
787788
]
788789
789-
[tool.poetry]
790-
791-
[tool.poetry.group.dev.dependencies]
792-
pytest = "^3.6.0"
790+
[dependency-groups]
791+
dev = [
792+
"pytest (>=3.6.0,<4.0.0)"
793+
]
793794
"""
794795

795796
assert expected in tester.io.fetch_output()
@@ -833,17 +834,15 @@ def test_predefined_and_interactive_dev_dependencies(
833834
dependencies = [
834835
]
835836
836-
[tool.poetry]
837-
838-
[tool.poetry.group.dev.dependencies]
839-
pytest = "^3.6.0"
840-
pytest-requests = "^0.2.0"
837+
[dependency-groups]
838+
dev = [
839+
"pytest (>=3.6.0,<4.0.0)",
840+
"pytest-requests (>=0.2.0,<0.3.0)"
841+
]
841842
"""
842843

843844
output = tester.io.fetch_output()
844845
assert expected in output
845-
assert 'pytest-requests = "^0.2.0"' in output
846-
assert 'pytest = "^3.6.0"' in output
847846

848847

849848
def test_predefined_all_options(tester: CommandTester, repo: TestRepository) -> None:
@@ -884,10 +883,10 @@ def test_predefined_all_options(tester: CommandTester, repo: TestRepository) ->
884883
"pendulum (>=2.0.0,<3.0.0)"
885884
]
886885
887-
[tool.poetry]
888-
889-
[tool.poetry.group.dev.dependencies]
890-
pytest = "^3.6.0"
886+
[dependency-groups]
887+
dev = [
888+
"pytest (>=3.6.0,<4.0.0)"
889+
]
891890
"""
892891

893892
output = tester.io.fetch_output()

0 commit comments

Comments
 (0)