From 8a5b9e2d7234444cd8beb87bc3898421467c5e50 Mon Sep 17 00:00:00 2001 From: Michael Hanke Date: Sat, 18 Feb 2023 07:47:10 +0100 Subject: [PATCH] Annotate credentials with source backend label With this, we can now communicate to users what credentials are legacy and behave different from others. Closes #246 --- datalad_next/commands/credentials.py | 2 ++ datalad_next/credman/manager.py | 6 ++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/datalad_next/commands/credentials.py b/datalad_next/commands/credentials.py index 18eb9b97..1b4ebea1 100644 --- a/datalad_next/commands/credentials.py +++ b/datalad_next/commands/credentials.py @@ -384,6 +384,8 @@ def custom_result_renderer(res, **kwargs): '✓' if res.get('cred_secret') else '✗', ) + if res.pop('from_backend', None) == 'legacy': + res['type'] = 'legacy-credential' if 'message' not in res: # give the names of all properties # but avoid duplicating the type, hide the prefix, diff --git a/datalad_next/credman/manager.py b/datalad_next/credman/manager.py index efd8c77b..fc155492 100644 --- a/datalad_next/credman/manager.py +++ b/datalad_next/credman/manager.py @@ -500,15 +500,17 @@ def query_(self, **kwargs): done = set() known_credentials = set((n, None) for n in self._get_known_credential_names()) from itertools import chain - for name, type_hint in chain( + for name, legacy_type_hint in chain( _yield_legacy_credential_names(), known_credentials): if name in done: continue done.add(name) - cred = self.get(name, _prompt=None, _type_hint=type_hint) + cred = self.get(name, _prompt=None, _type_hint=legacy_type_hint) if not cred: continue + if legacy_type_hint is not None: + cred['_from_backend'] = 'legacy' if not kwargs: yield (name, cred) else: