@@ -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