diff --git a/src/pymdgen/__init__.py b/src/pymdgen/__init__.py index 184a0de..847ed58 100644 --- a/src/pymdgen/__init__.py +++ b/src/pymdgen/__init__.py @@ -36,8 +36,16 @@ def getargspec(func): decorated functions """ if hasattr(func, "__wrapped__"): - return inspect.getfullargspec(func.__wrapped__) - return inspect.getfullargspec(func) + func = func.__wrapped__ + + sig = inspect.signature(func) + return [ + list(sig.parameters), + None, + None, + [param.default for param in sig.parameters.values() if param.default != inspect.Parameter.empty], + ] + def doc_func(name, func, section_level=4): diff --git a/src/pymdgen/test_getargspec.py b/src/pymdgen/test_getargspec.py new file mode 100644 index 0000000..278f2a8 --- /dev/null +++ b/src/pymdgen/test_getargspec.py @@ -0,0 +1,45 @@ +import inspect +from functools import wraps +from pymdgen import getargspec # Import your __init__.py module + + +def test_getargspec_simple_function(): + def my_function(a, b, c=10): + pass + expected_result = [ + ['a', 'b', 'c'], + None, + None, + [10,], + ] + assert getargspec(my_function) == expected_result + +def test_getargspec_args_kwargs(): + def my_function(a, b, *args, **kwargs): + pass + expected_result = [ + ['a', 'b', 'args', 'kwargs'], + None, + None, + [], + ] + assert getargspec(my_function) == expected_result + +def test_getargspec_decorated_function(): + def my_decorator(func): + @wraps(func) + def wrapper(*args, **kwargs): + return func(*args, **kwargs) + return wrapper + + @my_decorator + def my_function(a, b, c=20): + pass + + expected_result = [ + ['a', 'b', 'c'], + None, + None, + [20,], + ] + assert getargspec(my_function) == expected_result \ No newline at end of file