Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 55ed85e

Browse filesBrowse files
authored
gh-104050: Argument clinic: complete type annotations (#107399)
1 parent c0b81c4 commit 55ed85e
Copy full SHA for 55ed85e

File tree

Expand file treeCollapse file tree

2 files changed

+24
-18
lines changed
Filter options
Expand file treeCollapse file tree

2 files changed

+24
-18
lines changed

‎Tools/clinic/clinic.py

Copy file name to clipboardExpand all lines: Tools/clinic/clinic.py
+14-11Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2290,28 +2290,31 @@ def parse(self, input: str) -> str:
22902290

22912291
return printer.f.getvalue()
22922292

2293-
2294-
def _module_and_class(self, fields):
2293+
def _module_and_class(
2294+
self, fields: Iterable[str]
2295+
) -> tuple[Module | Clinic, Class | None]:
22952296
"""
22962297
fields should be an iterable of field names.
22972298
returns a tuple of (module, class).
22982299
the module object could actually be self (a clinic object).
22992300
this function is only ever used to find the parent of where
23002301
a new class/module should go.
23012302
"""
2302-
in_classes = False
2303+
parent: Clinic | Module | Class
2304+
child: Module | Class | None
2305+
module: Clinic | Module
2306+
cls: Class | None = None
2307+
so_far: list[str] = []
2308+
23032309
parent = module = self
2304-
cls = None
2305-
so_far = []
23062310

23072311
for field in fields:
23082312
so_far.append(field)
2309-
if not in_classes:
2313+
if not isinstance(parent, Class):
23102314
child = parent.modules.get(field)
23112315
if child:
23122316
parent = module = child
23132317
continue
2314-
in_classes = True
23152318
if not hasattr(parent, 'classes'):
23162319
return module, cls
23172320
child = parent.classes.get(field)
@@ -2379,7 +2382,7 @@ def parse(self, block: Block) -> None:
23792382
@dc.dataclass(repr=False)
23802383
class Module:
23812384
name: str
2382-
module: Module | None = None
2385+
module: Module | Clinic
23832386

23842387
def __post_init__(self) -> None:
23852388
self.parent = self.module
@@ -2394,7 +2397,7 @@ def __repr__(self) -> str:
23942397
@dc.dataclass(repr=False)
23952398
class Class:
23962399
name: str
2397-
module: Module
2400+
module: Module | Clinic
23982401
cls: Class | None
23992402
typedef: str
24002403
type_object: str
@@ -2522,7 +2525,7 @@ class Function:
25222525
parameters: ParamDict = dc.field(default_factory=dict)
25232526
_: dc.KW_ONLY
25242527
name: str
2525-
module: Module
2528+
module: Module | Clinic
25262529
cls: Class | None
25272530
c_basename: str | None
25282531
full_name: str
@@ -2538,7 +2541,7 @@ class Function:
25382541
docstring_only: bool = False
25392542

25402543
def __post_init__(self) -> None:
2541-
self.parent: Class | Module = self.cls or self.module
2544+
self.parent = self.cls or self.module
25422545
self.self_converter: self_converter | None = None
25432546
self.__render_parameters__: list[Parameter] | None = None
25442547

‎Tools/clinic/mypy.ini

Copy file name to clipboard
+10-7Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
[mypy]
2+
files = Tools/clinic/
3+
pretty = True
4+
25
# make sure clinic can still be run on Python 3.10
36
python_version = 3.10
4-
pretty = True
5-
enable_error_code = ignore-without-code
6-
disallow_any_generics = True
7+
8+
# be strict...
9+
strict = True
710
strict_concatenate = True
8-
warn_redundant_casts = True
9-
warn_unused_ignores = True
10-
warn_unused_configs = True
11+
enable_error_code = ignore-without-code,redundant-expr
1112
warn_unreachable = True
12-
files = Tools/clinic/
13+
14+
# ...except for one extra rule we can't enable just yet
15+
warn_return_any = False

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.