Skip to content

Add new uv-keyring crate that vendors the keyring-rs crate#14725

Merged
jtfmumm merged 12 commits intomainfrom
jtfm/vendor-keyring
Aug 15, 2025
Merged

Add new uv-keyring crate that vendors the keyring-rs crate#14725
jtfmumm merged 12 commits intomainfrom
jtfm/vendor-keyring

Conversation

@jtfmumm
Copy link
Contributor

@jtfmumm jtfmumm commented Jul 18, 2025

This PR is a first step toward support for storing credentials in the system keyring. The keyring-rs crate is the best option for system keyring integration, but the latest version (v4) requires either that Linux users have libdbus installed or that it is built with libdbus vendored in. This is because v4 depends on dbus-secret-service, which was created as an alternative to secret-service so that users are not required to use an async runtime. Since uv does use an async runtime, this is not a good tradeoff for uv.

This PR:

  • Vendors keyring-rs crate into a new uv-keyring workspace crate
  • Moves to the async secret-service crate that does not require clients on Linux to have libdbus on their machines. This includes updating CredentialsAPI trait (and implementations) to use async methods.
  • Adds uv-keyring tests to cargo test jobs. For cargo test | ubuntu, this meant setting up secret service and priming gnome-keyring as an earlier step.
  • Removes iOS code paths
  • Patches in @oconnor663 's changes from his keyring-rs PR
  • Applies many clippy-driven updates

@jtfmumm jtfmumm added the internal A refactor or improvement that is not user-facing label Jul 18, 2025
@jtfmumm jtfmumm temporarily deployed to uv-test-registries July 18, 2025 13:58 — with GitHub Actions Inactive
@jtfmumm jtfmumm force-pushed the jtfm/vendor-keyring branch from c362c0f to f824432 Compare July 18, 2025 13:59
@jtfmumm jtfmumm had a problem deploying to uv-test-registries July 18, 2025 14:03 — with GitHub Actions Error
@jtfmumm jtfmumm force-pushed the jtfm/vendor-keyring branch from f824432 to dd52955 Compare July 18, 2025 14:03
@jtfmumm jtfmumm temporarily deployed to uv-test-registries July 18, 2025 14:06 — with GitHub Actions Inactive
@jtfmumm jtfmumm force-pushed the jtfm/vendor-keyring branch from dd52955 to cd35a4e Compare July 21, 2025 12:18
@jtfmumm jtfmumm temporarily deployed to uv-test-registries July 21, 2025 12:21 — with GitHub Actions Inactive
@jtfmumm jtfmumm temporarily deployed to uv-test-publish July 21, 2025 12:21 — with GitHub Actions Inactive
@jtfmumm jtfmumm temporarily deployed to uv-test-registries July 21, 2025 12:36 — with GitHub Actions Inactive
@jtfmumm jtfmumm force-pushed the jtfm/vendor-keyring branch from 6f13007 to 077a583 Compare July 21, 2025 12:39
@jtfmumm jtfmumm temporarily deployed to uv-test-registries July 21, 2025 12:42 — with GitHub Actions Inactive
@jtfmumm jtfmumm temporarily deployed to uv-test-publish July 21, 2025 12:43 — with GitHub Actions Inactive
@jtfmumm jtfmumm force-pushed the jtfm/vendor-keyring branch from 077a583 to 0150bf9 Compare July 21, 2025 13:12
@jtfmumm jtfmumm temporarily deployed to uv-test-registries July 21, 2025 13:16 — with GitHub Actions Inactive
@jtfmumm jtfmumm temporarily deployed to uv-test-publish July 21, 2025 13:16 — with GitHub Actions Inactive
@jtfmumm jtfmumm force-pushed the jtfm/vendor-keyring branch from e023955 to d1ca7d6 Compare July 21, 2025 13:28
@jtfmumm jtfmumm temporarily deployed to uv-test-registries July 21, 2025 13:31 — with GitHub Actions Inactive
@jtfmumm jtfmumm temporarily deployed to uv-test-publish July 21, 2025 13:42 — with GitHub Actions Inactive
@jtfmumm jtfmumm force-pushed the jtfm/vendor-keyring branch from d1ca7d6 to 8b2dd13 Compare July 24, 2025 14:18
@jtfmumm jtfmumm temporarily deployed to uv-test-registries July 24, 2025 14:21 — with GitHub Actions Inactive
@jtfmumm jtfmumm temporarily deployed to uv-test-publish July 24, 2025 14:21 — with GitHub Actions Inactive
@jtfmumm jtfmumm force-pushed the jtfm/vendor-keyring branch from 8b2dd13 to 56ea26a Compare July 24, 2025 14:30
@jtfmumm jtfmumm temporarily deployed to uv-test-registries July 24, 2025 14:32 — with GitHub Actions Inactive
@jtfmumm jtfmumm temporarily deployed to uv-test-publish July 24, 2025 14:32 — with GitHub Actions Inactive
@jtfmumm jtfmumm force-pushed the jtfm/vendor-keyring branch 2 times, most recently from 43ef62f to d7e90bc Compare August 6, 2025 11:04
@jtfmumm jtfmumm temporarily deployed to uv-test-registries August 6, 2025 11:06 — with GitHub Actions Inactive
@jtfmumm jtfmumm force-pushed the jtfm/vendor-keyring branch from 6741d9d to 7fb78c7 Compare August 13, 2025 09:41
@jtfmumm jtfmumm temporarily deployed to uv-test-registries August 13, 2025 09:43 — with GitHub Actions Inactive
@jtfmumm jtfmumm temporarily deployed to uv-test-publish August 13, 2025 09:43 — with GitHub Actions Inactive
@jtfmumm jtfmumm force-pushed the jtfm/vendor-keyring branch from 7fb78c7 to 326508f Compare August 13, 2025 09:59
@jtfmumm jtfmumm temporarily deployed to uv-test-registries August 13, 2025 10:01 — with GitHub Actions Inactive
@jtfmumm jtfmumm temporarily deployed to uv-test-publish August 13, 2025 10:01 — with GitHub Actions Inactive
@jtfmumm jtfmumm force-pushed the jtfm/vendor-keyring branch 2 times, most recently from b14d7df to bf40b18 Compare August 13, 2025 10:08
@jtfmumm jtfmumm temporarily deployed to uv-test-registries August 13, 2025 10:10 — with GitHub Actions Inactive
@jtfmumm jtfmumm force-pushed the jtfm/vendor-keyring branch from bf40b18 to b6711c7 Compare August 13, 2025 10:14
@jtfmumm jtfmumm temporarily deployed to uv-test-registries August 13, 2025 10:17 — with GitHub Actions Inactive
@jtfmumm jtfmumm temporarily deployed to uv-test-publish August 13, 2025 10:18 — with GitHub Actions Inactive
@jtfmumm jtfmumm force-pushed the jtfm/vendor-keyring branch from b6711c7 to ec77be3 Compare August 13, 2025 12:29
@jtfmumm jtfmumm temporarily deployed to uv-test-registries August 13, 2025 12:31 — with GitHub Actions Inactive
@jtfmumm jtfmumm temporarily deployed to uv-test-publish August 13, 2025 12:32 — with GitHub Actions Inactive
Copy link
Contributor

@oconnor663 oconnor663 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM with a couple comments

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

internal A refactor or improvement that is not user-facing

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants