aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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)
+};