aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTobias Mueller <[email protected]>2016-12-20 17:02:36 +0000
committerJustus Winter <[email protected]>2017-02-14 10:19:50 +0000
commit01d5c17587578c729bbbb60f8a65635975e35592 (patch)
tree392609c38a1c2ef1dd07683f68e3d91b6622cca6
parentpython: Remove the -builtin flag for SWIG. (diff)
downloadgpgme-01d5c17587578c729bbbb60f8a65635975e35592.tar.gz
gpgme-01d5c17587578c729bbbb60f8a65635975e35592.zip
python: Extend SWIG gpgme_{sub,}key with a __repr__ method.
* lang/python/gpgme.i: Added a genericrepr macro and use it for gpgme_key, gpgme_subkey, and gpgme_key_sig. -- To look nicer in Python's REPL. We define a generic __repr__ as a SWIG macro and use that to extend some defined SWIG objects. The alternative would have been to write a custom __repr__ function for each class but that would need to be changed everytime the object's structure changes. The bindings should be easy to maintain, I guess. This comes at the expense that the reprs are now relatively long and contain, for example, both keyid and fingerprint. Signed-off-by: Tobias Mueller <[email protected]>
-rw-r--r--lang/python/gpgme.i27
1 files changed, 27 insertions, 0 deletions
diff --git a/lang/python/gpgme.i b/lang/python/gpgme.i
index e21aa6c9..c0993eed 100644
--- a/lang/python/gpgme.i
+++ b/lang/python/gpgme.i
@@ -649,3 +649,30 @@ _gpg_unwrap_gpgme_ctx_t(PyObject *wrapped)
/* ... but only the public definitions here. They will be exposed to
the Python world, so let's be careful. */
%include "helpers.h"
+
+
+%define genericrepr(cls)
+%pythoncode %{
+ def __repr__(self):
+ names = [name for name in dir(self)
+ if not name.startswith("_") and name != "this"]
+ props = ", ".join(("{}={!r}".format(name, getattr(self, name))
+ for name in names)
+ )
+ return "cls({})".format(props)
+%}
+
+%enddef
+
+%extend _gpgme_key {
+ genericrepr(Key)
+};
+
+
+%extend _gpgme_subkey {
+ genericrepr(SubKey)
+};
+
+%extend _gpgme_key_sig {
+ genericrepr(KeySig)
+};