def add_overload_entry(self, func: ast.FunctionDef) -> None: # avoid circular import problem from sphinx.util.inspect import signature_from_ast qualname = self.get_qualname_for(func.name) if qualname: overloads = self.overloads.setdefault(".".join(qualname), []) overloads.append(signature_from_ast(func))
def test_signature_from_ast(): signature = 'def func(a, b, *args, c=0, d="blah", **kwargs): pass' tree = ast.parse(signature) sig = inspect.signature_from_ast(tree.body[0]) assert list( sig.parameters.keys()) == ['a', 'b', 'args', 'c', 'd', 'kwargs'] assert sig.parameters['a'].name == 'a' assert sig.parameters['a'].kind == Parameter.POSITIONAL_OR_KEYWORD assert sig.parameters['a'].default == Parameter.empty assert sig.parameters['a'].annotation == Parameter.empty assert sig.parameters['b'].name == 'b' assert sig.parameters['b'].kind == Parameter.POSITIONAL_OR_KEYWORD assert sig.parameters['b'].default == Parameter.empty assert sig.parameters['b'].annotation == Parameter.empty assert sig.parameters['args'].name == 'args' assert sig.parameters['args'].kind == Parameter.VAR_POSITIONAL assert sig.parameters['args'].default == Parameter.empty assert sig.parameters['args'].annotation == Parameter.empty assert sig.parameters['c'].name == 'c' assert sig.parameters['c'].kind == Parameter.KEYWORD_ONLY assert sig.parameters['c'].default == '0' assert sig.parameters['c'].annotation == Parameter.empty assert sig.parameters['d'].name == 'd' assert sig.parameters['d'].kind == Parameter.KEYWORD_ONLY assert sig.parameters['d'].default == "'blah'" assert sig.parameters['d'].annotation == Parameter.empty assert sig.parameters['kwargs'].name == 'kwargs' assert sig.parameters['kwargs'].kind == Parameter.VAR_KEYWORD assert sig.parameters['kwargs'].default == Parameter.empty assert sig.parameters['kwargs'].annotation == Parameter.empty assert sig.return_annotation == Parameter.empty
def add_overload_entry(self, func: ast.FunctionDef) -> None: qualname = self.get_qualname_for(func.name) if qualname: overloads = self.overloads.setdefault(".".join(qualname), []) overloads.append(signature_from_ast(func))