2017-11-19 03:41:42 +00:00
|
|
|
from pydu.inspect import (get_func_args, get_func_full_args, func_accepts_var_args,
|
2017-11-04 15:05:49 +00:00
|
|
|
func_accepts_kwargs)
|
|
|
|
|
|
|
|
|
|
|
|
class Person:
|
|
|
|
def no_arguments(self):
|
|
|
|
return None
|
|
|
|
|
|
|
|
def one_argument(self, something):
|
|
|
|
return something
|
|
|
|
|
|
|
|
def just_args(self, *args):
|
|
|
|
return args
|
|
|
|
|
|
|
|
def just_kwargs(self, **kwargs):
|
|
|
|
return kwargs
|
|
|
|
|
|
|
|
def all_kinds(self, name, address='home', age=25, *args, **kwargs):
|
|
|
|
return kwargs
|
|
|
|
|
|
|
|
|
2017-11-19 03:41:42 +00:00
|
|
|
def func_no_arguments():
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
|
|
def func_one_argument(something):
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
|
|
def func_just_args(*args):
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
|
|
def func_just_kwargs(**kwargs):
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
|
|
def func_all_kinds(name, address='home', age=25, *args, **kwargs):
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
|
|
def test_get_func_args():
|
|
|
|
arguments = ['name', 'address', 'age']
|
|
|
|
assert get_func_args(Person.all_kinds) == arguments
|
|
|
|
|
|
|
|
|
2017-11-04 15:05:49 +00:00
|
|
|
def test_get_func_full_args():
|
|
|
|
# no arguments
|
|
|
|
assert get_func_full_args(Person.no_arguments) == []
|
2017-11-19 03:41:42 +00:00
|
|
|
assert get_func_full_args(func_no_arguments) == []
|
2017-11-04 15:05:49 +00:00
|
|
|
# one argument
|
|
|
|
assert get_func_full_args(Person.one_argument) == [('something',)]
|
2017-11-19 03:41:42 +00:00
|
|
|
assert get_func_full_args(func_one_argument) == [('something',)]
|
2017-11-04 15:05:49 +00:00
|
|
|
# all_arguments
|
|
|
|
arguments = [('name',), ('address', 'home'), ('age', 25), ('*args',), ('**kwargs',)]
|
|
|
|
assert get_func_full_args(Person.all_kinds) == arguments
|
2017-11-19 03:41:42 +00:00
|
|
|
assert get_func_full_args(func_all_kinds) == arguments
|
2017-11-04 15:05:49 +00:00
|
|
|
|
|
|
|
|
|
|
|
def test_func_accepts_var_args():
|
|
|
|
# has args
|
|
|
|
assert func_accepts_var_args(Person.just_args)
|
2017-11-19 03:41:42 +00:00
|
|
|
assert func_accepts_var_args(func_just_args)
|
2017-11-04 15:05:49 +00:00
|
|
|
# no args
|
|
|
|
assert not func_accepts_var_args(Person.one_argument)
|
2017-11-19 03:41:42 +00:00
|
|
|
assert not func_accepts_var_args(func_one_argument)
|
2017-11-04 15:05:49 +00:00
|
|
|
|
|
|
|
|
|
|
|
def test_func_accepts_kwargs():
|
|
|
|
# has kwargs
|
|
|
|
assert func_accepts_kwargs(Person.just_kwargs)
|
2017-11-19 03:41:42 +00:00
|
|
|
assert func_accepts_kwargs(func_just_kwargs)
|
2017-11-04 15:05:49 +00:00
|
|
|
# no kwargs
|
|
|
|
assert not func_accepts_kwargs(Person.one_argument)
|
2017-11-19 03:41:42 +00:00
|
|
|
assert not func_accepts_kwargs(func_one_argument)
|