{"id":"0788389da16e8e24","repo":"pypa/pip","slug":"keyring-util-is-outdated-must-be-at-least-version","errorCode":null,"errorMessage":"Keyring util is outdated; must be at least version 25.2.1, please upgrade it","messagePattern":"Keyring util is outdated; must be at least version 25\\.2\\.1, please upgrade it","errorType":"exception","errorClass":"RuntimeError","httpStatus":null,"severity":"error","filePath":"src/pip/_internal/network/auth.py","lineNumber":154,"sourceCode":"        env = os.environ.copy()\n        env[\"PYTHONIOENCODING\"] = \"utf-8\"\n        res = subprocess.run(  # noqa: UP022\n            cmd,\n            stdin=subprocess.DEVNULL,\n            stdout=subprocess.PIPE,\n            stderr=subprocess.PIPE,\n            env=env,\n        )\n\n        # Detect if the user is running an outdated version of keyring without support\n        # for querying credentials without username\n        errs = res.stderr.decode(\"utf-8\")\n        if (\n            res.returncode == 2\n            and \"unrecognized arguments\" in errs\n            and \"--mode=creds\" in errs\n        ):\n            raise RuntimeError(\n                \"Keyring util is outdated; must be at least version 25.2.1, \"\n                \"please upgrade it\"\n            )\n\n        if res.returncode:\n            return None\n\n        data = json.loads(res.stdout.decode(\"utf-8\"))\n        return (data[\"username\"], data[\"password\"])\n\n    def _set_password(self, service_name: str, username: str, password: str) -> None:\n        \"\"\"Mirror the implementation of keyring.set_password using cli\"\"\"\n        if self.keyring is None:\n            return None\n        env = os.environ.copy()\n        env[\"PYTHONIOENCODING\"] = \"utf-8\"\n        subprocess.run(\n            [self.keyring, \"set\", service_name, username],","sourceCodeStart":136,"sourceCodeEnd":172,"githubUrl":"https://github.com/pypa/pip/blob/d7d0d0a39494e28ec1c407bd0680e4a4d1067791/src/pip/_internal/network/auth.py#L136-L172","documentation":"Error \"Keyring util is outdated; must be at least version 25.2.1, please upgrade it\" thrown in pypa/pip.","triggerScenarios":"Thrown at src/pip/_internal/network/auth.py:154 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"analyzedSha":"d7d0d0a39494e28ec1c407bd0680e4a4d1067791","analyzedAt":"2026-08-04T20:55:04.259Z","schemaVersion":2}