{"id":"61bb0735c7ad4a69","repo":"python-poetry/poetry","slug":"repositorypool-can-not-remove-unknown-repository","errorCode":null,"errorMessage":"RepositoryPool can not remove unknown repository '{name}'.","messagePattern":"RepositoryPool can not remove unknown repository '(.+?)'\\.","errorType":"exception","errorClass":"IndexError","httpStatus":null,"severity":"error","filePath":"src/poetry/repositories/repository_pool.py","lineNumber":149,"sourceCode":"        self, repository: Repository, *, priority: Priority = Priority.PRIMARY\n    ) -> RepositoryPool:\n        \"\"\"\n        Adds a repository to the pool.\n        \"\"\"\n        repository_name = repository.name.lower()\n        if self.has_repository(repository_name):\n            raise ValueError(\n                f\"A repository with name {repository_name} was already added.\"\n            )\n\n        self._repositories[repository_name] = PrioritizedRepository(\n            repository, priority\n        )\n        return self\n\n    def remove_repository(self, name: str) -> RepositoryPool:\n        if not self.has_repository(name):\n            raise IndexError(\n                f\"RepositoryPool can not remove unknown repository '{name}'.\"\n            )\n        del self._repositories[name.lower()]\n        return self\n\n    def package(\n        self, name: str, version: Version, repository_name: str | None = None\n    ) -> Package:\n        if repository_name:\n            return self.repository(repository_name).package(name, version)\n\n        for repo in self.repositories:\n            try:\n                return repo.package(name, version)\n            except PackageNotFoundError:\n                continue\n        raise PackageNotFoundError(f\"Package {name} ({version}) not found.\")\n","sourceCodeStart":131,"sourceCodeEnd":167,"githubUrl":"https://github.com/python-poetry/poetry/blob/92b74dcfe348d0e01e14d40d6c1fa47a4ee04a54/src/poetry/repositories/repository_pool.py#L131-L167","documentation":"Raised by RepositoryPool.remove_repository when the name is not present in the pool (repository_pool.py:147-152). It guards against silently no-oping on a typo'd removal.","triggerScenarios":"Calling pool.remove_repository('foo') when 'foo' was never added (or already removed).","commonSituations":"Programmatic pool manipulation that has lost track of registered names; double-removal; removal of a name that was never added due to a typo.","solutions":["Guard the call with pool.has_repository(name) before removing.","Verify the exact (case-insensitive) name you intend to remove.","Avoid double-removal by tracking lifecycle state in calling code."],"exampleFix":"// before\npool.remove_repository(\"myrepo\")   # may raise if absent\n// after\nif pool.has_repository(\"myrepo\"):\n    pool.remove_repository(\"myrepo\")","handlingStrategy":"validation","validationCode":"if pool.has_repository(name):\n    pool.remove_repository(name)\nelse:\n    log.debug(\"repository '%s' not in pool; nothing to remove\", name)","typeGuard":null,"tryCatchPattern":"try:\n    pool.remove_repository(name)\nexcept IndexError as e:\n    if \"unknown repository\" in str(e):\n        log.debug(\"%s already absent\", name)\n    else:\n        raise","preventionTips":["Guard removals with has_repository().","Track repository lifecycle in calling code to avoid double-removal.","Treat remove as idempotent in wrappers."],"tags":["repository-pool","lifecycle","validation"],"analyzedSha":"92b74dcfe348d0e01e14d40d6c1fa47a4ee04a54","analyzedAt":"2026-08-04T20:33:34.072Z","schemaVersion":2}