Skip to content

Commit e096701

Browse files
authored
Improve type annotations for versions and languages (#253)
1 parent 8d0b9c3 commit e096701

File tree

1 file changed

+17
-15
lines changed

1 file changed

+17
-15
lines changed

build_docs.py

+17-15
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@
3333
import sys
3434
from argparse import ArgumentParser, Namespace
3535
from bisect import bisect_left as bisect
36-
from collections.abc import Iterable, Sequence
3736
from contextlib import contextmanager, suppress
3837
from dataclasses import dataclass
3938
from datetime import datetime as dt, timezone
@@ -42,14 +41,21 @@
4241
from pathlib import Path
4342
from string import Template
4443
from time import perf_counter, sleep
45-
from typing import Literal
4644
from urllib.parse import urljoin
4745

4846
import jinja2
4947
import tomlkit
5048
import urllib3
5149
import zc.lockfile
5250

51+
TYPE_CHECKING = False
52+
if TYPE_CHECKING:
53+
from collections.abc import Sequence
54+
from typing import Literal, TypeAlias
55+
56+
Versions: TypeAlias = Sequence["Version"]
57+
Languages: TypeAlias = Sequence["Language"]
58+
5359
try:
5460
from os import EX_OK, EX_SOFTWARE as EX_FAILURE
5561
except ImportError:
@@ -170,7 +176,7 @@ def picker_label(self):
170176
return f"pre ({self.name})"
171177
return self.name
172178

173-
def setup_indexsidebar(self, versions: Sequence[Version], dest_path: Path):
179+
def setup_indexsidebar(self, versions: Versions, dest_path: Path):
174180
"""Build indexsidebar.html for Sphinx."""
175181
template_path = HERE / "templates" / "indexsidebar.html"
176182
template = jinja2.Template(template_path.read_text(encoding="UTF-8"))
@@ -388,9 +394,7 @@ def edit(file: Path):
388394
temporary.rename(file)
389395

390396

391-
def setup_switchers(
392-
versions: Sequence[Version], languages: Sequence[Language], html_root: Path
393-
):
397+
def setup_switchers(versions: Versions, languages: Languages, html_root: Path):
394398
"""Setup cross-links between CPython versions:
395399
- Cross-link various languages in a language switcher
396400
- Cross-link various versions in a version switcher
@@ -462,9 +466,9 @@ class DocBuilder:
462466
"""Builder for a CPython version and a language."""
463467

464468
version: Version
465-
versions: Sequence[Version]
469+
versions: Versions
466470
language: Language
467-
languages: Sequence[Language]
471+
languages: Languages
468472
cpython_repo: Repository
469473
build_root: Path
470474
www_root: Path
@@ -1070,7 +1074,7 @@ def build_docs(args) -> bool:
10701074
return all_built_successfully
10711075

10721076

1073-
def parse_versions_from_devguide(http: urllib3.PoolManager) -> list[Version]:
1077+
def parse_versions_from_devguide(http: urllib3.PoolManager) -> Versions:
10741078
releases = http.request(
10751079
"GET",
10761080
"https://raw.githubusercontent.com/"
@@ -1082,7 +1086,7 @@ def parse_versions_from_devguide(http: urllib3.PoolManager) -> list[Version]:
10821086
return versions
10831087

10841088

1085-
def parse_languages_from_config() -> list[Language]:
1089+
def parse_languages_from_config() -> Languages:
10861090
"""Read config.toml to discover languages to build."""
10871091
config = tomlkit.parse((HERE / "config.toml").read_text(encoding="UTF-8"))
10881092
defaults = config["defaults"]
@@ -1103,9 +1107,7 @@ def parse_languages_from_config() -> list[Language]:
11031107
]
11041108

11051109

1106-
def build_sitemap(
1107-
versions: Iterable[Version], languages: Iterable[Language], www_root: Path, group
1108-
):
1110+
def build_sitemap(versions: Versions, languages: Languages, www_root: Path, group):
11091111
"""Build a sitemap with all live versions and translations."""
11101112
if not www_root.exists():
11111113
logging.info("Skipping sitemap generation (www root does not even exist).")
@@ -1155,8 +1157,8 @@ def copy_robots_txt(
11551157
def major_symlinks(
11561158
www_root: Path,
11571159
group: str,
1158-
versions: Iterable[Version],
1159-
languages: Iterable[Language],
1160+
versions: Versions,
1161+
languages: Languages,
11601162
skip_cache_invalidation: bool,
11611163
http: urllib3.PoolManager,
11621164
) -> None:

0 commit comments

Comments
 (0)