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]