Skip to content

Commit 6fa0695

Browse files
authored
Add typing to function in raw_building (#1591)
1 parent 12ead82 commit 6fa0695

File tree

1 file changed

+28
-11
lines changed

1 file changed

+28
-11
lines changed

astroid/raw_building.py

Lines changed: 28 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,22 @@
1515
import types
1616
import warnings
1717
from collections.abc import Iterable
18+
from typing import Any, Union
1819

1920
from astroid import bases, nodes
2021
from astroid.const import IS_PYPY
2122
from astroid.manager import AstroidManager
2223
from astroid.nodes import node_classes
2324

25+
_FunctionTypes = Union[
26+
types.FunctionType,
27+
types.MethodType,
28+
types.BuiltinFunctionType,
29+
types.WrapperDescriptorType,
30+
types.MethodDescriptorType,
31+
types.ClassMethodDescriptorType,
32+
]
33+
2434
# the keys of CONST_CLS eg python builtin types
2535
_CONSTANTS = tuple(node_classes.CONST_CLS)
2636
_BUILTINS = vars(builtins)
@@ -105,10 +115,10 @@ def build_class(
105115

106116

107117
def build_function(
108-
name,
118+
name: str,
109119
args: list[str] | None = None,
110120
posonlyargs: list[str] | None = None,
111-
defaults=None,
121+
defaults: list[Any] | None = None,
112122
doc: str | None = None,
113123
kwonlyargs: list[str] | None = None,
114124
) -> nodes.FunctionDef:
@@ -173,13 +183,15 @@ def object_build_class(
173183
return _base_class_object_build(node, member, basenames, localname=localname)
174184

175185

176-
def object_build_function(node, member, localname):
186+
def object_build_function(
187+
node: nodes.Module | nodes.ClassDef, member: _FunctionTypes, localname: str
188+
) -> None:
177189
"""create astroid for a living function object"""
178190
signature = inspect.signature(member)
179-
args = []
180-
defaults = []
181-
posonlyargs = []
182-
kwonlyargs = []
191+
args: list[str] = []
192+
defaults: list[Any] = []
193+
posonlyargs: list[str] = []
194+
kwonlyargs: list[str] = []
183195
for param_name, param in signature.parameters.items():
184196
if param.kind == inspect.Parameter.POSITIONAL_ONLY:
185197
posonlyargs.append(param_name)
@@ -212,7 +224,7 @@ def object_build_datadescriptor(
212224

213225
def object_build_methoddescriptor(
214226
node: nodes.Module | nodes.ClassDef,
215-
member,
227+
member: _FunctionTypes,
216228
localname: str,
217229
) -> None:
218230
"""create astroid for a living method descriptor object"""
@@ -267,10 +279,15 @@ def _base_class_object_build(
267279
return klass
268280

269281

270-
def _build_from_function(node, name, member, module):
282+
def _build_from_function(
283+
node: nodes.Module | nodes.ClassDef,
284+
name: str,
285+
member: _FunctionTypes,
286+
module: types.ModuleType,
287+
) -> None:
271288
# verify this is not an imported function
272289
try:
273-
code = member.__code__
290+
code = member.__code__ # type: ignore[union-attr]
274291
except AttributeError:
275292
# Some implementations don't provide the code object,
276293
# such as Jython.
@@ -302,7 +319,7 @@ class InspectBuilder:
302319
def __init__(self, manager_instance=None):
303320
self._manager = manager_instance or AstroidManager()
304321
self._done: dict[types.ModuleType | type, nodes.Module | nodes.ClassDef] = {}
305-
self._module = None
322+
self._module: types.ModuleType
306323

307324
def inspect_build(
308325
self,

0 commit comments

Comments
 (0)