From ccda1ad51564499e455c72f7f72253d31a780b56 Mon Sep 17 00:00:00 2001 From: Prodesire Date: Sun, 19 Nov 2017 10:53:35 +0800 Subject: [PATCH] add doc for inspect.get_func_full_args --- docs/inspect.rst | 10 ++++++++++ pydu/inspect.py | 5 ++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/docs/inspect.rst b/docs/inspect.rst index ecd3b43..09fbe99 100644 --- a/docs/inspect.rst +++ b/docs/inspect.rst @@ -22,6 +22,16 @@ Inspect .. py:function:: pydu.inspect.get_func_full_args(func) + Return a list of (argument name, default value) tuples. If the argument + does not have a default value, omit it in the tuple. Arguments such as + *args and **kwargs are also included. + + >>> from pydu.inspect import get_func_full_args + >>> def f(name, address='home', age=25, *args, **kwargs): + ... pass + ... + >>> get_func_full_args(f) + [('name',), ('address', 'home'), ('age', 25), ('*args',), ('**kwargs',)] .. py:function:: pydu.inspect.func_accepts_kwargs(func) diff --git a/pydu/inspect.py b/pydu/inspect.py index df538f3..e277aa1 100644 --- a/pydu/inspect.py +++ b/pydu/inspect.py @@ -27,7 +27,10 @@ if PY2: *args and **kwargs are also included. """ argspec = inspect.getargspec(func) - args = argspec.args[1:] # ignore 'self' + if inspect.ismethod(func): + args = argspec.args[1:] # ignore 'self' + else: + args = argspec.args defaults = argspec.defaults or [] # Split args into two lists depending on whether they have default value no_default = args[:len(args) - len(defaults)]