python-poetry/poetry · error · ValueError
You must pass the url. Example: poetry config repositories.f
Error message
You must pass the url. Example: poetry config repositories.foo https://bar.com
What it means
Raises ValueError in ConfigCommand.handle() when setting a repository but the number of values provided is not exactly 1. A repository needs a single URL argument; providing zero values (impossible due to earlier checks) or 2+ values triggers this. The check at line 255-267: if len(values) != 1, the error is raised after the len(values) == 1 success branch.
Source
Thrown at src/poetry/console/commands/config.py:264
# Unset a specific sub-property
config.config_source.remove_property(
["repositories", repo_name, m.group(2)]
)
else:
config.config_source.remove_property(["repositories", repo_name])
return 0
if len(values) == 1:
url = values[0]
config.config_source.add_property(
["repositories", repo_name, "url"], url
)
return 0
raise ValueError(
"You must pass the url. "
"Example: poetry config repositories.foo https://bar.com"
)
# handle auth
m = re.match(r"^(http-basic|pypi-token)\.(.+)", self.argument("key"))
if m:
from poetry.utils.password_manager import PasswordManager
password_manager = PasswordManager(config)
if self.option("unset"):
if m.group(1) == "http-basic":
password_manager.delete_http_password(m.group(2))
elif m.group(1) == "pypi-token":
password_manager.delete_pypi_token(m.group(2))
return 0
View on GitHub (pinned to 92b74dcfe3)
Solutions
- Provide exactly one URL: `poetry config repositories.myrepo https://example.com/simple/`.
Example fix
# before (error) poetry config repositories.myrepo https://a.com https://b.com # after poetry config repositories.myrepo https://example.com/simple/
Defensive patterns
Strategy: validation
Validate before calling
def validate_repo_url(values: list[str]) -> None:
if len(values) != 1:
raise ValueError(
f"Expected exactly 1 URL, got {len(values)}. "
"Example: poetry config repositories.foo https://bar.com"
) Type guard
def has_single_url(values: list[str]) -> bool:
return len(values) == 1 Prevention
- Pass exactly one URL argument when setting a repository.
- Avoid trailing stray arguments that get collected into the multiple value argument.
- Quote URLs containing special characters.
When it happens
Trigger: Running `poetry config repositories.myrepo https://a.com https://b.com` (two URLs) — len(values) is 2, not 1.
Common situations: User passes multiple URLs by mistake, or passes additional arguments that get collected into the multiple=True value argument.
Related errors
- You cannot remove the [repositories] section
- Expected one or two arguments (username, password), got {len
- Expected only one argument (token), got {len(values)}
- There is no {repo_name} repository defined
- You can only specify one package when using the --extras opt
AI-assisted analysis of python-poetry/poetry@92b74dcfe3 (2026-08-04).
Data as JSON: /data/errors/ba05e30aade76b1b.json.
Report an issue: GitHub.