[Pkg-gnupg-commit] [gpgme] 178/412: python: Improve autmatically generated docstrings.
Daniel Kahn Gillmor
dkg at fifthhorseman.net
Thu Sep 22 21:26:42 UTC 2016
This is an automated email from the git hooks/post-receive script.
dkg pushed a commit to branch master
in repository gpgme.
commit 8997d88bf97d1784706becbf8e9dc74e4656e311
Author: Justus Winter <justus at g10code.com>
Date: Tue Jun 14 13:28:37 2016 +0200
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 <justus at g10code.com>
---
lang/python/gpgme.i | 14 ++++++++++++--
lang/python/pyme/core.py | 19 +++++++++++--------
2 files changed, 23 insertions(+), 10 deletions(-)
diff --git a/lang/python/gpgme.i b/lang/python/gpgme.i
index c6ddbb4..8dbb0c2 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 c090331..09f71a1 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
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-gnupg/gpgme.git
More information about the Pkg-gnupg-commit
mailing list