|
1 | 1 | import sys
|
2 |
| -from collections.abc import Sequence |
| 2 | +from collections.abc import Mapping, Sequence |
3 | 3 |
|
4 | 4 | __all__ = ["readmodule", "readmodule_ex", "Class", "Function"]
|
5 | 5 |
|
6 |
| -class Class: |
| 6 | +class _Object: |
7 | 7 | module: str
|
8 | 8 | name: str
|
9 |
| - super: list[Class | str] | None |
10 |
| - methods: dict[str, int] |
11 | 9 | file: int
|
12 | 10 | lineno: int
|
13 | 11 |
|
14 | 12 | if sys.version_info >= (3, 10):
|
15 | 13 | end_lineno: int | None
|
16 | 14 |
|
17 |
| - parent: Class | None |
| 15 | + parent: _Object | None |
| 16 | + |
| 17 | + # This is a dict at runtime, but we're typing it as Mapping to |
| 18 | + # avoid variance issues in the subclasses |
| 19 | + children: Mapping[str, _Object] |
| 20 | + |
| 21 | + if sys.version_info >= (3, 10): |
| 22 | + def __init__( |
| 23 | + self, module: str, name: str, file: str, lineno: int, end_lineno: int | None, parent: _Object | None |
| 24 | + ) -> None: ... |
| 25 | + else: |
| 26 | + def __init__(self, module: str, name: str, file: str, lineno: int, parent: _Object | None) -> None: ... |
| 27 | + |
| 28 | +class Function(_Object): |
| 29 | + if sys.version_info >= (3, 10): |
| 30 | + is_async: bool |
| 31 | + |
| 32 | + parent: Function | Class | None |
18 | 33 | children: dict[str, Class | Function]
|
19 | 34 |
|
20 | 35 | if sys.version_info >= (3, 10):
|
21 | 36 | def __init__(
|
22 | 37 | self,
|
23 | 38 | module: str,
|
24 | 39 | name: str,
|
25 |
| - super_: list[Class | str] | None, |
26 | 40 | file: str,
|
27 | 41 | lineno: int,
|
28 |
| - parent: Class | None = None, |
| 42 | + parent: Function | Class | None = None, |
| 43 | + is_async: bool = False, |
29 | 44 | *,
|
30 | 45 | end_lineno: int | None = None,
|
31 | 46 | ) -> None: ...
|
32 | 47 | else:
|
33 |
| - def __init__( |
34 |
| - self, module: str, name: str, super: list[Class | str] | None, file: str, lineno: int, parent: Class | None = None |
35 |
| - ) -> None: ... |
36 |
| - |
37 |
| -class Function: |
38 |
| - module: str |
39 |
| - name: str |
40 |
| - file: int |
41 |
| - lineno: int |
42 |
| - |
43 |
| - if sys.version_info >= (3, 10): |
44 |
| - end_lineno: int | None |
45 |
| - is_async: bool |
| 48 | + def __init__(self, module: str, name: str, file: str, lineno: int, parent: Function | Class | None = None) -> None: ... |
46 | 49 |
|
47 |
| - parent: Function | Class | None |
| 50 | +class Class(_Object): |
| 51 | + super: list[Class | str] | None |
| 52 | + methods: dict[str, int] |
| 53 | + parent: Class | None |
48 | 54 | children: dict[str, Class | Function]
|
49 | 55 |
|
50 | 56 | if sys.version_info >= (3, 10):
|
51 | 57 | def __init__(
|
52 | 58 | self,
|
53 | 59 | module: str,
|
54 | 60 | name: str,
|
| 61 | + super_: list[Class | str] | None, |
55 | 62 | file: str,
|
56 | 63 | lineno: int,
|
57 |
| - parent: Function | Class | None = None, |
58 |
| - is_async: bool = False, |
| 64 | + parent: Class | None = None, |
59 | 65 | *,
|
60 | 66 | end_lineno: int | None = None,
|
61 | 67 | ) -> None: ...
|
62 | 68 | else:
|
63 |
| - def __init__(self, module: str, name: str, file: str, lineno: int, parent: Function | Class | None = None) -> None: ... |
| 69 | + def __init__( |
| 70 | + self, module: str, name: str, super: list[Class | str] | None, file: str, lineno: int, parent: Class | None = None |
| 71 | + ) -> None: ... |
64 | 72 |
|
65 | 73 | def readmodule(module: str, path: Sequence[str] | None = None) -> dict[str, Class]: ...
|
66 | 74 | def readmodule_ex(module: str, path: Sequence[str] | None = None) -> dict[str, Class | Function | list[str]]: ...
|
0 commit comments