|
15 | 15 | import types |
16 | 16 | import warnings |
17 | 17 | from collections.abc import Iterable |
| 18 | +from typing import Any, Union |
18 | 19 |
|
19 | 20 | from astroid import bases, nodes |
20 | 21 | from astroid.const import IS_PYPY |
21 | 22 | from astroid.manager import AstroidManager |
22 | 23 | from astroid.nodes import node_classes |
23 | 24 |
|
| 25 | +_FunctionTypes = Union[ |
| 26 | + types.FunctionType, |
| 27 | + types.MethodType, |
| 28 | + types.BuiltinFunctionType, |
| 29 | + types.WrapperDescriptorType, |
| 30 | + types.MethodDescriptorType, |
| 31 | + types.ClassMethodDescriptorType, |
| 32 | +] |
| 33 | + |
24 | 34 | # the keys of CONST_CLS eg python builtin types |
25 | 35 | _CONSTANTS = tuple(node_classes.CONST_CLS) |
26 | 36 | _BUILTINS = vars(builtins) |
@@ -105,10 +115,10 @@ def build_class( |
105 | 115 |
|
106 | 116 |
|
107 | 117 | def build_function( |
108 | | - name, |
| 118 | + name: str, |
109 | 119 | args: list[str] | None = None, |
110 | 120 | posonlyargs: list[str] | None = None, |
111 | | - defaults=None, |
| 121 | + defaults: list[Any] | None = None, |
112 | 122 | doc: str | None = None, |
113 | 123 | kwonlyargs: list[str] | None = None, |
114 | 124 | ) -> nodes.FunctionDef: |
@@ -173,13 +183,15 @@ def object_build_class( |
173 | 183 | return _base_class_object_build(node, member, basenames, localname=localname) |
174 | 184 |
|
175 | 185 |
|
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: |
177 | 189 | """create astroid for a living function object""" |
178 | 190 | 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] = [] |
183 | 195 | for param_name, param in signature.parameters.items(): |
184 | 196 | if param.kind == inspect.Parameter.POSITIONAL_ONLY: |
185 | 197 | posonlyargs.append(param_name) |
@@ -212,7 +224,7 @@ def object_build_datadescriptor( |
212 | 224 |
|
213 | 225 | def object_build_methoddescriptor( |
214 | 226 | node: nodes.Module | nodes.ClassDef, |
215 | | - member, |
| 227 | + member: _FunctionTypes, |
216 | 228 | localname: str, |
217 | 229 | ) -> None: |
218 | 230 | """create astroid for a living method descriptor object""" |
@@ -267,10 +279,15 @@ def _base_class_object_build( |
267 | 279 | return klass |
268 | 280 |
|
269 | 281 |
|
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: |
271 | 288 | # verify this is not an imported function |
272 | 289 | try: |
273 | | - code = member.__code__ |
| 290 | + code = member.__code__ # type: ignore[union-attr] |
274 | 291 | except AttributeError: |
275 | 292 | # Some implementations don't provide the code object, |
276 | 293 | # such as Jython. |
@@ -302,7 +319,7 @@ class InspectBuilder: |
302 | 319 | def __init__(self, manager_instance=None): |
303 | 320 | self._manager = manager_instance or AstroidManager() |
304 | 321 | self._done: dict[types.ModuleType | type, nodes.Module | nodes.ClassDef] = {} |
305 | | - self._module = None |
| 322 | + self._module: types.ModuleType |
306 | 323 |
|
307 | 324 | def inspect_build( |
308 | 325 | self, |
|
0 commit comments