diff options
author | Lars Wirzenius <liw@liw.fi> | 2011-03-27 13:35:46 +0100 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2011-03-27 13:35:46 +0100 |
commit | d9b973b371b347fc655ff40200cecf9da02c72b6 (patch) | |
tree | 02105dfe84dda6fdb24b1f7e2e550083c405d54a /obnamlib/encryption.py | |
parent | 3215d90e59b2a99f53a11e4f6b9614d6a63c2326 (diff) | |
download | obnam-d9b973b371b347fc655ff40200cecf9da02c72b6.tar.gz |
Optimize by caching Keyring.keyids() when possible.
Diffstat (limited to 'obnamlib/encryption.py')
-rw-r--r-- | obnamlib/encryption.py | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/obnamlib/encryption.py b/obnamlib/encryption.py index 8adc26de..488fbaa1 100644 --- a/obnamlib/encryption.py +++ b/obnamlib/encryption.py @@ -128,6 +128,7 @@ class Keyring(object): def __init__(self, encoded=''): self._encoded = encoded self._gpghome = None + self._keyids = None def _setup(self): self._gpghome = tempfile.mkdtemp() @@ -143,7 +144,7 @@ class Keyring(object): def _pubring(self): return os.path.join(self._gpghome, 'pubring.gpg') - def keyids(self): + def _real_keyids(self): self._setup() output = _gpg(['--list-keys', '--with-colons'], gpghome=self._gpghome) self._cleanup() @@ -155,6 +156,11 @@ class Keyring(object): keyids.append(fields[4]) return keyids + def keyids(self): + if self._keyids is None: + self._keyids = self._real_keyids() + return self._keyids + def __str__(self): return self._encoded @@ -165,6 +171,7 @@ class Keyring(object): f = open(self._pubring, 'rb') self._encoded = f.read() f.close() + self._keyids = None def add(self, key): self._setup() |