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@g10code.com>
This commit is contained in:
parent
a324d0cffe
commit
8997d88bf9
@ -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;
|
||||
|
@ -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
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user