|
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