{"id":"4f0952adb37450d8","repo":"python-poetry/poetry","slug":"there-is-no-repo-name-repository-defined","errorCode":null,"errorMessage":"There is no {repo_name} repository defined","messagePattern":"There is no (.+?) repository defined","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"src/poetry/console/commands/config.py","lineNumber":200,"sourceCode":"                    key = f\"installer.build-config-settings.{package_name}\"\n\n                    if value := config.get(key):\n                        self.line(json.dumps(value))\n                    else:\n                        self.line(\n                            f\"No build config settings configured for <c1>{package_name}</>.\"\n                        )\n                return 0\n            elif m := re.match(repo_regex, self.argument(\"key\")):\n                if not m.group(1):\n                    value = {}\n                    if config.get(\"repositories\") is not None:\n                        value = config.get(\"repositories\")\n                else:\n                    repo_name = m.group(1)\n                    repo = config.get([\"repositories\", repo_name])\n                    if repo is None:\n                        raise ValueError(f\"There is no {repo_name} repository defined\")\n\n                    value = repo.get(sub_key, \"\") if (sub_key := m.group(2)) else repo\n\n                self.line(str(value))\n            else:\n                if setting_key not in self.unique_config_values:\n                    raise ValueError(f\"There is no {setting_key} setting.\")\n\n                value = config.get(setting_key)\n\n                if not isinstance(value, str):\n                    value = json.dumps(value)\n\n                self.line(value)\n\n            return 0\n\n        values: list[str] = self.argument(\"value\")","sourceCodeStart":182,"sourceCodeEnd":218,"githubUrl":"https://github.com/python-poetry/poetry/blob/92b74dcfe348d0e01e14d40d6c1fa47a4ee04a54/src/poetry/console/commands/config.py#L182-L218","documentation":"Raises ValueError in ConfigCommand.handle() when the user reads a repository by name (matching the repo_regex with a group) but config.get(['repositories', repo_name]) returns None — meaning the repository was never defined. The check at line 198-200 fires during the read (no-value) path of the config command.","triggerScenarios":"Running `poetry config repositories.myrepo` when no repository named 'myrepo' exists in the configuration. The repo_regex matches and group(1) is 'myrepo', but the config lookup returns None.","commonSituations":"Typo in the repository name, querying before adding it, or the repository was previously removed.","solutions":["List all repositories first: `poetry config repositories` to see defined names.","Add the repository: `poetry config repositories.myrepo https://example.com/simple/`."],"exampleFix":"# before (error)\npoetry config repositories.myrepo\n# after (add it first)\npoetry config repositories.myrepo https://example.com/simple/\npoetry config repositories.myrepo","handlingStrategy":"validation","validationCode":"def validate_repo_exists(config, repo_name: str) -> None:\n    if config.get([\"repositories\", repo_name]) is None:\n        raise ValueError(f\"Repository '{repo_name}' is not defined\")","typeGuard":"def repo_exists(config, repo_name: str) -> bool:\n    return config.get([\"repositories\", repo_name]) is not None","tryCatchPattern":null,"preventionTips":["Run 'poetry config repositories' to list defined repository names before querying a specific one.","Add the repository first with 'poetry config repositories.NAME URL' before reading it.","Watch for typos and case sensitivity in repository names."],"tags":["config-command","valueerror","repositories","not-found"],"analyzedSha":"92b74dcfe348d0e01e14d40d6c1fa47a4ee04a54","analyzedAt":"2026-08-04T20:33:34.072Z","schemaVersion":2}