Skip to content

ChainerBackend not deleting password from lower priority backend #697

@jim-easterbrook

Description

@jim-easterbrook

Describe the bug
Using kdewallet I can see old keyring passwords listed in "Secret Service". New keyring passwords are listed under the "system" passed to set_password. I assume this is because I previously did not have keyring.backends.kwallet.DBusKeyring installed.

$ python3.11 -m keyring --list-backends
keyring.backends.chainer.ChainerBackend (priority: 10)
keyring.backends.kwallet.DBusKeyring (priority: 5.1)
keyring.backends.SecretService.Keyring (priority: 5)
keyring.backends.fail.Keyring (priority: 0)

$ python3.11 -m keyring get system username correctly finds the old passwords. $ python3.11 -m keyring del system username fails as follows:

Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/home/jim/.local/lib/python3.11/site-packages/keyring/__main__.py", line 4, in <module>
    cli.main()
  File "/home/jim/.local/lib/python3.11/site-packages/keyring/cli.py", line 216, in main
    return cli.run(argv)
           ^^^^^^^^^^^^^
  File "/home/jim/.local/lib/python3.11/site-packages/keyring/cli.py", line 120, in run
    return method()
           ^^^^^^^^
  File "/home/jim/.local/lib/python3.11/site-packages/keyring/cli.py", line 157, in do_del
    delete_password(self.service, self.username)
  File "/home/jim/.local/lib/python3.11/site-packages/keyring/core.py", line 73, in delete_password
    get_keyring().delete_password(service_name, username)
  File "/home/jim/.local/lib/python3.11/site-packages/keyring/backends/chainer.py", line 63, in delete_password
    return keyring.delete_password(service, username)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/jim/.local/lib/python3.11/site-packages/keyring/backends/kwallet.py", line 150, in delete_password
    raise PasswordDeleteError("Password not found")
keyring.errors.PasswordDeleteError: Password not found

Expected behavior
I would expect to be able to delete any password that I can read.

Environment

  • OS: openSUSE 15.6
$ python3.11 -m pip list | grep keyring
keyring                       25.4.1

$ python3.11 -m keyring --list-backends
keyring.backends.chainer.ChainerBackend (priority: 10)
keyring.backends.kwallet.DBusKeyring (priority: 5.1)
keyring.backends.SecretService.Keyring (priority: 5)
keyring.backends.fail.Keyring (priority: 0)

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions