Skip to content

Commit 768cf5e

Browse files
danieleadesdaniel.eades
andauthored
[lint] run mypy on the utils/ directory (#12090)
Co-authored-by: daniel.eades <[email protected]>
1 parent 7bd9c59 commit 768cf5e

File tree

3 files changed

+46
-30
lines changed

3 files changed

+46
-30
lines changed

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ exclude = [
131131
]
132132

133133
[tool.mypy]
134-
files = ["sphinx"]
134+
files = ["sphinx", "utils"]
135135
check_untyped_defs = true
136136
disallow_incomplete_defs = true
137137
python_version = "3.9"

utils/babel_runner.py

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -233,16 +233,16 @@ def _get_logger():
233233

234234
os.chdir(ROOT)
235235
if action == "extract":
236-
raise SystemExit(run_extract())
237-
if action == "update":
238-
raise SystemExit(run_update())
239-
if action == "compile":
240-
raise SystemExit(run_compile())
241-
if action == "all":
242-
exit_code = run_extract()
243-
if exit_code:
244-
raise SystemExit(exit_code)
245-
exit_code = run_update()
246-
if exit_code:
247-
raise SystemExit(exit_code)
248-
raise SystemExit(run_compile())
236+
run_extract()
237+
elif action == "update":
238+
run_update()
239+
elif action == "compile":
240+
run_compile()
241+
elif action == "all":
242+
run_extract()
243+
run_update()
244+
run_compile()
245+
else:
246+
msg = f"invalid action: '{action}'"
247+
raise ValueError(msg)
248+
raise SystemExit

utils/bump_version.py

Lines changed: 32 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,41 @@
11
#!/usr/bin/env python3
22

3+
from __future__ import annotations
4+
35
import argparse
4-
import os
56
import re
67
import sys
78
import time
89
from contextlib import contextmanager
10+
from pathlib import Path
11+
from typing import TYPE_CHECKING, Sequence
12+
13+
from typing_extensions import TypeAlias
914

10-
script_dir = os.path.dirname(__file__)
11-
package_dir = os.path.abspath(os.path.join(script_dir, '..'))
15+
if TYPE_CHECKING:
16+
from collections.abc import Iterator
17+
18+
script_dir = Path(__file__).parent
19+
package_dir = script_dir.parent
1220

1321
RELEASE_TYPE = {'a': 'alpha', 'b': 'beta'}
1422

23+
VersionInfo: TypeAlias = tuple[int, int, int, str, int]
24+
1525

16-
def stringify_version(version_info, in_develop=True):
26+
def stringify_version(
27+
version_info: VersionInfo, in_develop: bool = True,
28+
) -> str:
1729
version = '.'.join(str(v) for v in version_info[:3])
1830
if not in_develop and version_info[3] != 'final':
1931
version += version_info[3][0] + str(version_info[4])
2032

2133
return version
2234

2335

24-
def bump_version(path, version_info, in_develop=True) -> None:
36+
def bump_version(
37+
path: Path, version_info: VersionInfo, in_develop: bool = True,
38+
) -> None:
2539
version = stringify_version(version_info, in_develop)
2640

2741
with open(path, encoding='utf-8') as f:
@@ -42,7 +56,7 @@ def bump_version(path, version_info, in_develop=True) -> None:
4256
f.write('\n'.join(lines) + '\n')
4357

4458

45-
def parse_version(version):
59+
def parse_version(version: str) -> VersionInfo:
4660
matched = re.search(r'^(\d+)\.(\d+)$', version)
4761
if matched:
4862
major, minor = matched.groups()
@@ -73,7 +87,7 @@ class Skip(Exception):
7387

7488

7589
@contextmanager
76-
def processing(message):
90+
def processing(message: str) -> Iterator[None]:
7791
try:
7892
print(message + ' ... ', end='')
7993
yield
@@ -87,7 +101,7 @@ def processing(message):
87101

88102

89103
class Changes:
90-
def __init__(self, path):
104+
def __init__(self, path: Path) -> None:
91105
self.path = path
92106
self.fetch_version()
93107

@@ -120,16 +134,18 @@ def finalize_release_date(self) -> None:
120134
f.write('=' * len(heading) + '\n')
121135
f.write(self.filter_empty_sections(body))
122136

123-
def add_release(self, version_info) -> None:
137+
def add_release(self, version_info: VersionInfo) -> None:
124138
if version_info[-2:] in (('beta', 0), ('final', 0)):
125139
version = stringify_version(version_info)
126140
else:
127141
reltype = version_info[3]
128-
version = (f'{stringify_version(version_info)} '
129-
f'{RELEASE_TYPE.get(reltype, reltype)}{version_info[4] or ""}')
142+
version = (
143+
f'{stringify_version(version_info)} '
144+
f'{RELEASE_TYPE.get(reltype, reltype)}{version_info[4] or ""}'
145+
)
130146
heading = 'Release %s (in development)' % version
131147

132-
with open(os.path.join(script_dir, 'CHANGES_template.rst'), encoding='utf-8') as f:
148+
with open(script_dir / 'CHANGES_template.rst', encoding='utf-8') as f:
133149
f.readline() # skip first two lines
134150
f.readline()
135151
tmpl = f.read()
@@ -145,11 +161,11 @@ def add_release(self, version_info) -> None:
145161
f.write('\n')
146162
f.write(body)
147163

148-
def filter_empty_sections(self, body):
164+
def filter_empty_sections(self, body: str) -> str:
149165
return re.sub('^\n.+\n-{3,}\n+(?=\n.+\n[-=]{3,}\n)', '', body, flags=re.MULTILINE)
150166

151167

152-
def parse_options(argv):
168+
def parse_options(argv: Sequence[str]) -> argparse.Namespace:
153169
parser = argparse.ArgumentParser()
154170
parser.add_argument('version', help='A version number (cf. 1.6b0)')
155171
parser.add_argument('--in-develop', action='store_true')
@@ -162,11 +178,11 @@ def main() -> None:
162178
options = parse_options(sys.argv[1:])
163179

164180
with processing("Rewriting sphinx/__init__.py"):
165-
bump_version(os.path.join(package_dir, 'sphinx/__init__.py'),
181+
bump_version(package_dir / 'sphinx' / '__init__.py',
166182
options.version, options.in_develop)
167183

168184
with processing('Rewriting CHANGES'):
169-
changes = Changes(os.path.join(package_dir, 'CHANGES.rst'))
185+
changes = Changes(package_dir / 'CHANGES.rst')
170186
if changes.version_info == options.version:
171187
if changes.in_development:
172188
changes.finalize_release_date()

0 commit comments

Comments
 (0)