From ef694691cc42fb87d47cfd1a5c03bbc5010ce35f Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Fri, 20 Sep 2024 12:33:28 -0400 Subject: [PATCH] Move class-specific behaviors into the classes. --- keyring/cli.py | 15 +++------------ keyring/credentials.py | 6 ++++++ 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/keyring/cli.py b/keyring/cli.py index 0b2a0f9f..2c0ba4d3 100644 --- a/keyring/cli.py +++ b/keyring/cli.py @@ -132,20 +132,11 @@ def do_get(self): getattr(self, f'_emit_{self.output_format}')(credential) def _emit_json(self, credential: credentials.Credential): - if isinstance(credential, credentials.AnonymousCredential): - print(json.dumps(dict(password=credential.password))) - return - print( - json.dumps(dict(username=credential.username, password=credential.password)) - ) + print(json.dumps(credential._vars())) def _emit_plain(self, credential: credentials.Credential): - if ( - not isinstance(credential, credentials.AnonymousCredential) - and credential.username - ): - print(credential.username) - print(credential.password) + for val in credential._vars().values(): + print(val) def _get_creds(self) -> credentials.Credential | None: return get_credential(self.service, self.username) diff --git a/keyring/credentials.py b/keyring/credentials.py index 4b28c6c7..6a2cecd8 100644 --- a/keyring/credentials.py +++ b/keyring/credentials.py @@ -13,6 +13,9 @@ def username(self) -> str: ... @abc.abstractproperty def password(self) -> str: ... + def _vars(self) -> dict[str, str]: + return dict(username=self.username, password=self.password) + class SimpleCredential(Credential): """Simple credentials implementation""" @@ -38,6 +41,9 @@ def __init__(self, password: str): def username(self) -> str: raise ValueError("Anonymous credential has no username") + def _vars(self) -> dict[str, str]: + return dict(password=self.password) + class EnvironCredential(Credential): """