aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJustus Winter <[email protected]>2016-06-14 11:28:37 +0000
committerJustus Winter <[email protected]>2016-06-16 12:19:17 +0000
commit8997d88bf97d1784706becbf8e9dc74e4656e311 (patch)
tree4d7cc392dcfdfc1eed14115b7efd1530d2bd0655
parentpython: Make result objects more robust. (diff)
downloadgpgme-8997d88bf97d1784706becbf8e9dc74e4656e311.tar.gz
gpgme-8997d88bf97d1784706becbf8e9dc74e4656e311.zip
python: Improve autmatically generated docstrings.
* lang/python/gpgme.i: Add comment. * lang/python/pyme/core.py (__getattr__): Rewrite automatically generated doctrings for the wrapper methods. Signed-off-by: Justus Winter <[email protected]>
-rw-r--r--lang/python/gpgme.i14
-rw-r--r--lang/python/pyme/core.py19
2 files changed, 23 insertions, 10 deletions
diff --git a/lang/python/gpgme.i b/lang/python/gpgme.i
index c6ddbb40..8dbb0c2c 100644
--- a/lang/python/gpgme.i
+++ b/lang/python/gpgme.i
@@ -21,11 +21,21 @@
%include "cpointer.i"
%include "cstring.i"
-// Generate doc strings for all methods.
+/* Generate doc strings for all methods.
+
+ This will generate docstrings of the form
+
+ gpgme_op_encrypt(ctx, recp, flags, plain, cipher) -> gpgme_error_t
+
+ which we transform into
+
+ ctx.op_encrypt(recp, flags, plain, cipher) -> gpgme_error_t
+
+ for automagically wrapped functions. */
%feature("autodoc", "0");
-/* Allow use of Unicode objects, bytes, and None for strings. */
+/* Allow use of Unicode objects, bytes, and None for strings. */
%typemap(in) const char * {
if ($input == Py_None)
$1 = NULL;
diff --git a/lang/python/pyme/core.py b/lang/python/pyme/core.py
index c0903312..09f71a1a 100644
--- a/lang/python/pyme/core.py
+++ b/lang/python/pyme/core.py
@@ -24,6 +24,7 @@ and the 'Data' class describing buffers of data.
"""
+import re
import weakref
from . import pygpgme
from .errors import errorcheck, GPGMEError
@@ -107,6 +108,7 @@ class GpgmeWrapper(object):
else:
return get(self)
+ _munge_docstring = re.compile(r'gpgme_([^(]*)\(([^,]*), (.*\) -> .*)')
def __getattr__(self, key):
"""On-the-fly generation of wrapper methods and properties"""
if key[0] == '_' or self._cprefix == None:
@@ -119,27 +121,28 @@ class GpgmeWrapper(object):
func = getattr(pygpgme, name)
if self._errorcheck(name):
- def _funcwrap(slf, *args, **kwargs):
- result = func(slf.wrapped, *args, **kwargs)
+ def _funcwrap(slf, *args):
+ result = func(slf.wrapped, *args)
if slf._callback_excinfo:
pygpgme.pygpgme_raise_callback_exception(slf)
return errorcheck(result, "Invocation of " + name)
else:
- def _funcwrap(slf, *args, **kwargs):
- result = func(slf.wrapped, *args, **kwargs)
+ def _funcwrap(slf, *args):
+ result = func(slf.wrapped, *args)
if slf._callback_excinfo:
pygpgme.pygpgme_raise_callback_exception(slf)
return result
- _funcwrap.__doc__ = getattr(func, "__doc__")
+ doc = self._munge_docstring.sub(r'\2.\1(\3', getattr(func, "__doc__"))
+ _funcwrap.__doc__ = doc
# Monkey-patch the class.
setattr(self.__class__, key, _funcwrap)
# Bind the method to 'self'.
- def wrapper(*args, **kwargs):
- return _funcwrap(self, *args, **kwargs)
- _funcwrap.__doc__ = getattr(func, "__doc__")
+ def wrapper(*args):
+ return _funcwrap(self, *args)
+ wrapper.__doc__ = doc
return wrapper