From 3b9d4f0b0c9d8fba058e77bb06e88292aebddc03 Mon Sep 17 00:00:00 2001 From: karimpwnz Date: Sat, 2 Jan 2021 17:44:16 +0200 Subject: [PATCH] Better keyring error handling --- jrnl/EncryptedJournal.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/jrnl/EncryptedJournal.py b/jrnl/EncryptedJournal.py index 519631e4..7354e7a2 100644 --- a/jrnl/EncryptedJournal.py +++ b/jrnl/EncryptedJournal.py @@ -176,7 +176,9 @@ def get_keychain(journal_name): try: return keyring.get_password("jrnl", journal_name) - except (keyring.errors.KeyringError, RuntimeError): + except keyring.errors.KeyringError as e: + if not isinstance(e, keyring.errors.NoKeyringError): + print("Failed to retrieve keyring", file=sys.stderr) return "" @@ -191,10 +193,11 @@ def set_keychain(journal_name, password): else: try: keyring.set_password("jrnl", journal_name, password) - except (keyring.errors.KeyringError): - pass - except (keyring.errors.NoKeyringError): - print( - "Keyring backend not found. Please install one of the supported backends by visiting: https://pypi.org/project/keyring/", - file=sys.stderr, - ) + except keyring.errors.KeyringError as e: + if isinstance(e, keyring.errors.NoKeyringError): + print( + "Keyring backend not found. Please install one of the supported backends by visiting: https://pypi.org/project/keyring/", + file=sys.stderr, + ) + else: + print("Failed to retrieve keyring", file=sys.stderr)