Skip to content

Commit 630b069

Browse files
authored
Create _get_args_info_from_callable (#1592)
1 parent 6fa0695 commit 630b069

File tree

1 file changed

+20
-4
lines changed

1 file changed

+20
-4
lines changed

astroid/raw_building.py

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -183,15 +183,19 @@ def object_build_class(
183183
return _base_class_object_build(node, member, basenames, localname=localname)
184184

185185

186-
def object_build_function(
187-
node: nodes.Module | nodes.ClassDef, member: _FunctionTypes, localname: str
188-
) -> None:
189-
"""create astroid for a living function object"""
186+
def _get_args_info_from_callable(
187+
member: _FunctionTypes,
188+
) -> tuple[list[str], list[Any], list[str], list[str]]:
189+
"""Returns args, posonlyargs, defaults, kwonlyargs.
190+
191+
:note: currently ignores the return annotation.
192+
"""
190193
signature = inspect.signature(member)
191194
args: list[str] = []
192195
defaults: list[Any] = []
193196
posonlyargs: list[str] = []
194197
kwonlyargs: list[str] = []
198+
195199
for param_name, param in signature.parameters.items():
196200
if param.kind == inspect.Parameter.POSITIONAL_ONLY:
197201
posonlyargs.append(param_name)
@@ -205,13 +209,25 @@ def object_build_function(
205209
kwonlyargs.append(param_name)
206210
if param.default is not inspect._empty:
207211
defaults.append(param.default)
212+
213+
return args, posonlyargs, defaults, kwonlyargs
214+
215+
216+
def object_build_function(
217+
node: nodes.Module | nodes.ClassDef, member: _FunctionTypes, localname: str
218+
) -> None:
219+
"""create astroid for a living function object"""
220+
args, posonlyargs, defaults, kwonlyargs = _get_args_info_from_callable(member)
221+
208222
func = build_function(
209223
getattr(member, "__name__", None) or localname,
210224
args,
211225
posonlyargs,
212226
defaults,
213227
member.__doc__,
228+
kwonlyargs=kwonlyargs,
214229
)
230+
215231
node.add_local_node(func, localname)
216232

217233

0 commit comments

Comments
 (0)