diff options
Diffstat (limited to '')
| -rw-r--r-- | lang/python/src/results.py | 33 | 
1 files changed, 26 insertions, 7 deletions
| diff --git a/lang/python/src/results.py b/lang/python/src/results.py index bfd0f683..6b5f63c2 100644 --- a/lang/python/src/results.py +++ b/lang/python/src/results.py @@ -19,7 +19,6 @@  from __future__ import absolute_import, print_function, unicode_literals  del absolute_import, print_function, unicode_literals -  """Robust result objects  Results returned by the underlying library are fragile, i.e. they are @@ -30,23 +29,28 @@ therefore create deep copies of the results.  """ +  class Result(object):      """Result object      Describes the result of an operation.      """ -      """Convert to types"""      _type = {} -      """Map functions over list attributes"""      _map = {} -      """Automatically copy unless blacklisted"""      _blacklist = { -        'acquire', 'append', 'disown', 'next', 'own', 'this', 'thisown', +        'acquire', +        'append', +        'disown', +        'next', +        'own', +        'this', +        'thisown',      } +      def __init__(self, fragile):          for key, func in self._type.items():              if hasattr(fragile, key): @@ -67,52 +71,67 @@ class Result(object):      def __repr__(self):          return '{}({})'.format(              self.__class__.__name__, -            ', '.join('{}={!r}'.format(k, getattr(self, k)) -                      for k in dir(self) if not k.startswith('_'))) +            ', '.join('{}={!r}'.format(k, getattr(self, k)) for k in dir(self) +                      if not k.startswith('_'))) +  class InvalidKey(Result):      pass +  class EncryptResult(Result):      _map = dict(invalid_recipients=InvalidKey) +  class Recipient(Result):      pass +  class DecryptResult(Result):      _type = dict(wrong_key_usage=bool, is_de_vs=bool)      _map = dict(recipients=Recipient) +  class NewSignature(Result):      pass +  class SignResult(Result):      _map = dict(invalid_signers=InvalidKey, signatures=NewSignature) +  class Notation(Result):      pass +  class Signature(Result):      _type = dict(wrong_key_usage=bool, chain_model=bool, is_de_vs=bool)      _map = dict(notations=Notation) +  class VerifyResult(Result):      _map = dict(signatures=Signature) +  class ImportStatus(Result):      pass +  class ImportResult(Result):      _map = dict(imports=ImportStatus) +  class GenkeyResult(Result):      _type = dict(primary=bool, sub=bool) +  class KeylistResult(Result):      _type = dict(truncated=bool) +  class VFSMountResult(Result):      pass +  class EngineInfo(Result):      pass | 
