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 <muelli@cryptobitch.de>
This commit is contained in:
parent
aa49be1ab8
commit
01d5c17587
@ -649,3 +649,30 @@ _gpg_unwrap_gpgme_ctx_t(PyObject *wrapped)
|
|||||||
/* ... but only the public definitions here. They will be exposed to
|
/* ... but only the public definitions here. They will be exposed to
|
||||||
the Python world, so let's be careful. */
|
the Python world, so let's be careful. */
|
||||||
%include "helpers.h"
|
%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)
|
||||||
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user