diff --git a/CHANGES.rst b/CHANGES.rst index 500626c4..a7b94d5b 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -2,6 +2,8 @@ v23.6.0 ------- * #575: Only require ``importlib_metadata`` on older Pythons. +* #579: Add ``.with_keychain`` method on macOS for easy reference + to alternate keychains. v23.5.1 ------- diff --git a/keyring/backends/macOS/__init__.py b/keyring/backends/macOS/__init__.py index ca91bc98..e69b6ae9 100644 --- a/keyring/backends/macOS/__init__.py +++ b/keyring/backends/macOS/__init__.py @@ -66,3 +66,8 @@ def delete_password(self, service, username): raise PasswordDeleteError( "Can't delete password in keychain: " "{}".format(e) ) + + def with_keychain(self, keychain): + alt = Keyring() + alt.keychain = keychain + return alt diff --git a/tests/backends/test_macOS.py b/tests/backends/test_macOS.py index 5cbbad6a..2965c478 100644 --- a/tests/backends/test_macOS.py +++ b/tests/backends/test_macOS.py @@ -12,3 +12,8 @@ class Test_macOSKeychain(BackendBasicTests): def init_keyring(self): return macOS.Keyring() + + def test_alternate_keychain(self): + alt = self.keyring.with_keychain('abcd') + assert alt.keychain == 'abcd' + assert self.keyring.keychain != 'abcd'