[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