{"id":"a470447c68d93d59","repo":"python-poetry/poetry","slug":"unable-to-retrieve-the-password-for-name-from-th","errorCode":null,"errorMessage":"Unable to retrieve the password for {name} from the key ring {e}","messagePattern":"Unable to retrieve the password for (.+?) from the key ring (.+?)","errorType":"exception","errorClass":"PoetryKeyringError","httpStatus":null,"severity":"error","filePath":"src/poetry/utils/password_manager.py","lineNumber":107,"sourceCode":"                logger.debug(\"Accessing keyring %s failed\", name, exc_info=True)\n\n            if credential:\n                return HTTPAuthCredential(\n                    username=credential.username, password=credential.password\n                )\n\n        return HTTPAuthCredential(username=username, password=None)\n\n    def get_password(self, name: str, username: str) -> str | None:\n        import keyring\n        import keyring.errors\n\n        name = self.get_entry_name(name)\n\n        try:\n            return keyring.get_password(name, username or self._EMPTY_USERNAME_KEY)\n        except (RuntimeError, keyring.errors.KeyringError) as e:\n            raise PoetryKeyringError(\n                f\"Unable to retrieve the password for {name} from the key ring {e}\"\n            )\n\n    def set_password(self, name: str, username: str, password: str) -> None:\n        import keyring\n        import keyring.errors\n\n        name = self.get_entry_name(name)\n\n        try:\n            keyring.set_password(name, username or self._EMPTY_USERNAME_KEY, password)\n        except (RuntimeError, keyring.errors.KeyringError) as e:\n            raise PoetryKeyringError(\n                f\"Unable to store the password for {name} in the key ring: {e}\"\n            )\n\n    def delete_password(self, name: str, username: str) -> None:\n        import keyring.errors","sourceCodeStart":89,"sourceCodeEnd":125,"githubUrl":"https://github.com/python-poetry/poetry/blob/92b74dcfe348d0e01e14d40d6c1fa47a4ee04a54/src/poetry/utils/password_manager.py#L89-L125","documentation":"PoetryKeyring.get_password wraps keyring.get_password(name, username) and, on RuntimeError or keyring.errors.KeyringError, raises PoetryKeyringError carrying the underlying exception text. It means the OS/secret-service keyring rejected or failed the read of a stored credential.","triggerScenarios":"PasswordManager.get_password / get_http_credentials for a configured source when the keyring backend errors: GNOME Keyring locked, Secret Service/D-Bus unavailable, macOS Keychain locked, or a backend crash.","commonSituations":"Running over SSH without a D-Bus session; headless CI where the keyring is locked or absent; SELinux/AppArmor blocking keyring access; keyring daemon crashed.","solutions":["Unlock the OS keyring/keychain and ensure the Secret Service / D-Bus session is available.","On headless/CI hosts, disable the keyring (`poetry config keyring.enabled false`) and pass credentials via env vars or config.","Retry after restarting the keyring daemon.","Confirm PoetryKeyring.is_available() returns true in that environment before relying on it."],"exampleFix":"# before - relying on keyring in CI\npoetry config http-basic.acme $USER $TOKEN   # tries keyring, fails\n# after - disable keyring, use env / config in CI\npoetry config keyring.enabled false\npoetry config http-basic.acme \"$USER\" \"$TOKEN\"","handlingStrategy":"try-catch","validationCode":"from poetry.utils.password_manager import PoetryKeyring\n\n# only attempt keyring reads when a backend is usable\nif not PoetryKeyring.is_available():\n    raise RuntimeError('keyring unavailable; use env/config credentials')","typeGuard":null,"tryCatchPattern":"from poetry.utils.password_manager import PoetryKeyringError\ntry:\n    pw = manager.get_password(name, username)\nexcept PoetryKeyringError:\n    # fall back to env var / config\n    import os\n    pw = os.environ.get('POETRY_HTTP_BASIC_<REPO>_PASSWORD')","preventionTips":["Run PoetryKeyring.preflight_check / is_available() before relying on keyring.","Prefer env vars for credentials in CI/headless environments.","Keep the OS keyring unlocked in interactive sessions."],"tags":["keyring","credentials","authentication","os-integration"],"analyzedSha":"92b74dcfe348d0e01e14d40d6c1fa47a4ee04a54","analyzedAt":"2026-08-04T20:33:34.072Z","schemaVersion":2}