From ffec6d5e73e7006e47a3007a7f55074d060a35a7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Pablo=20Em=C3=ADdio=20S=2ES?=
Date: Sat, 4 Mar 2023 02:56:54 -0300
Subject: [PATCH] Fix: Misconfiguration in ask dependency interactive (#7569)
(cherry picked from commit a58a0e8fb68f50d0885df6da9349be15ed1b4f97)
---
src/poetry/console/commands/init.py | 9 +++++++--
src/poetry/utils/dependency_specification.py | 2 +-
tests/console/commands/test_init.py | 8 ++------
3 files changed, 10 insertions(+), 9 deletions(-)
diff --git a/src/poetry/console/commands/init.py b/src/poetry/console/commands/init.py
index 0393351c1d5..fdf48832ce7 100644
--- a/src/poetry/console/commands/init.py
+++ b/src/poetry/console/commands/init.py
@@ -292,6 +292,11 @@ def _determine_requirements(
)
question.set_validator(self._validate_package)
+ follow_up_question = self.create_question(
+ "\nAdd a package (leave blank to skip):"
+ )
+ follow_up_question.set_validator(self._validate_package)
+
package = self.ask(question)
while package:
constraint = self._parse_requirements([package])[0]
@@ -303,7 +308,7 @@ def _determine_requirements(
):
self.line(f"Adding {package}")
result.append(constraint)
- package = self.ask("\nAdd a package (leave blank to skip):")
+ package = self.ask(follow_up_question)
continue
canonicalized_name = canonicalize_name(constraint["name"])
@@ -371,7 +376,7 @@ def _determine_requirements(
result.append(constraint)
if self.io.is_interactive():
- package = self.ask("\nAdd a package (leave blank to skip):")
+ package = self.ask(follow_up_question)
return result
diff --git a/src/poetry/utils/dependency_specification.py b/src/poetry/utils/dependency_specification.py
index e80a2b97019..adcfd3d55ab 100644
--- a/src/poetry/utils/dependency_specification.py
+++ b/src/poetry/utils/dependency_specification.py
@@ -114,7 +114,7 @@ def _parse_dependency_specification_simple(
require: DependencySpec = {}
if " " in pair:
- name, version = pair.split(" ", 2)
+ name, version = pair.split(" ", 1)
extras_m = re.search(r"\[([\w\d,-_]+)\]$", name)
if extras_m:
extras = [e.strip() for e in extras_m.group(1).split(",")]
diff --git a/tests/console/commands/test_init.py b/tests/console/commands/test_init.py
index c4d0171f43a..90b50b5f3cc 100644
--- a/tests/console/commands/test_init.py
+++ b/tests/console/commands/test_init.py
@@ -595,9 +595,6 @@ def test_interactive_with_file_dependency(
def test_interactive_with_wrong_dependency_inputs(
tester: CommandTester, repo: TestRepository
):
- repo.add_package(get_package("pendulum", "2.0.0"))
- repo.add_package(get_package("pytest", "3.6.0"))
-
inputs = [
"my-package", # Package name
"1.2.3", # Version
@@ -606,10 +603,8 @@ def test_interactive_with_wrong_dependency_inputs(
"MIT", # License
"^3.8", # Python
"", # Interactive packages
+ "foo 1.19.2",
"pendulum 2.0.0 foo", # Package name and constraint (invalid)
- "pendulum 2.0.0", # Package name and constraint (invalid)
- "pendulum 2.0.0", # Package name and constraint (invalid)
- "pendulum 2.0.0", # Package name and constraint (invalid)
"pendulum@^2.0.0", # Package name and constraint (valid)
"", # End package selection
"", # Interactive dev packages
@@ -633,6 +628,7 @@ def test_interactive_with_wrong_dependency_inputs(
[tool.poetry.dependencies]
python = "^3.8"
+foo = "1.19.2"
pendulum = "^2.0.0"
[tool.poetry.group.dev.dependencies]