From ed0ce84fbd2904bf59ac66ae7422716db3624efa Mon Sep 17 00:00:00 2001 From: Justus Winter Date: Thu, 12 May 2016 14:57:42 +0200 Subject: [PATCH] python: Cache generated wrapper functions. * lang/python/util.py (GpgmeWrap.__getattr__): Cache generated wrapper functions. Signed-off-by: Justus Winter --- lang/python/pyme/util.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/lang/python/pyme/util.py b/lang/python/pyme/util.py index 19bbb7f6..a8560992 100644 --- a/lang/python/pyme/util.py +++ b/lang/python/pyme/util.py @@ -69,11 +69,11 @@ class GpgmeWrapper(object): returning gpgme_error_t.""" raise NotImplementedError() - def __getattr__(self, name): + def __getattr__(self, key): """On-the-fly function generation.""" - if name[0] == '_' or self._getnameprepend() == None: + if key[0] == '_' or self._getnameprepend() == None: return None - name = self._getnameprepend() + name + name = self._getnameprepend() + key if self._errorcheck(name): def _funcwrap(*args, **kwargs): args = [self.wrapped] + list(args) @@ -85,5 +85,8 @@ class GpgmeWrapper(object): return getattr(pygpgme, name)(*args, **kwargs) _funcwrap.__doc__ = getattr(getattr(pygpgme, name), "__doc__") + + # Cache the wrapper function. + setattr(self, key, _funcwrap) return _funcwrap