From 27d55e8232c5b72ab4ffe7bcedb860215924ab2d Mon Sep 17 00:00:00 2001 From: Erwann PENET <6771947+epenet@users.noreply.github.com> Date: Tue, 2 Jun 2020 14:31:50 +0200 Subject: [PATCH] Don't use singleton CredentialStore in requires_credentials decorator Fix for #10 --- src/pyze/api/credentials.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/pyze/api/credentials.py b/src/pyze/api/credentials.py index 1716907..0047a57 100644 --- a/src/pyze/api/credentials.py +++ b/src/pyze/api/credentials.py @@ -20,8 +20,13 @@ class MissingCredentialException(Exception): def requires_credentials(*names): def _requires_credentials(func): def inner(*args, **kwargs): + credentials = None + if args[0] and hasattr(args[0], '_credentials'): + credentials = args[0]._credentials + elif args[0] and hasattr(args[0], '_kamereon'): + credentials = args[0]._kamereon._credentials for name in names: - if name not in CredentialStore(): + if name not in credentials: raise MissingCredentialException(name) return func(*args, **kwargs) @@ -100,6 +105,11 @@ def _add_api_keys_from_env(self): if 'KAMEREON_API_KEY' in os.environ: self.store('kamereon-api-key', os.environ['KAMEREON_API_KEY'], None) + def requires(self, *names): + for name in names: + if name not in self._store: + raise MissingCredentialException(name) + Credential = namedtuple( 'Credential',