Skip to content

Commit f2a6c05

Browse files
committed
Improve type annotations for versions and languages
1 parent 8d0b9c3 commit f2a6c05

File tree

1 file changed

+18
-12
lines changed

1 file changed

+18
-12
lines changed

build_docs.py

+18-12
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"))
@@ -389,7 +395,7 @@ def edit(file: Path):
389395

390396

391397
def setup_switchers(
392-
versions: Sequence[Version], languages: Sequence[Language], html_root: Path
398+
versions: Versions, languages: Languages, html_root: Path
393399
):
394400
"""Setup cross-links between CPython versions:
395401
- Cross-link various languages in a language switcher
@@ -462,9 +468,9 @@ class DocBuilder:
462468
"""Builder for a CPython version and a language."""
463469

464470
version: Version
465-
versions: Sequence[Version]
471+
versions: Versions
466472
language: Language
467-
languages: Sequence[Language]
473+
languages: Languages
468474
cpython_repo: Repository
469475
build_root: Path
470476
www_root: Path
@@ -1070,7 +1076,7 @@ def build_docs(args) -> bool:
10701076
return all_built_successfully
10711077

10721078

1073-
def parse_versions_from_devguide(http: urllib3.PoolManager) -> list[Version]:
1079+
def parse_versions_from_devguide(http: urllib3.PoolManager) -> Versions:
10741080
releases = http.request(
10751081
"GET",
10761082
"https://raw.githubusercontent.com/"
@@ -1082,7 +1088,7 @@ def parse_versions_from_devguide(http: urllib3.PoolManager) -> list[Version]:
10821088
return versions
10831089

10841090

1085-
def parse_languages_from_config() -> list[Language]:
1091+
def parse_languages_from_config() -> Languages:
10861092
"""Read config.toml to discover languages to build."""
10871093
config = tomlkit.parse((HERE / "config.toml").read_text(encoding="UTF-8"))
10881094
defaults = config["defaults"]
@@ -1104,7 +1110,7 @@ def parse_languages_from_config() -> list[Language]:
11041110

11051111

11061112
def build_sitemap(
1107-
versions: Iterable[Version], languages: Iterable[Language], www_root: Path, group
1113+
versions: Versions, languages: Languages, www_root: Path, group
11081114
):
11091115
"""Build a sitemap with all live versions and translations."""
11101116
if not www_root.exists():
@@ -1155,10 +1161,10 @@ def copy_robots_txt(
11551161
def major_symlinks(
11561162
www_root: Path,
11571163
group: str,
1158-
versions: Iterable[Version],
1159-
languages: Iterable[Language],
1164+
versions: Versions,
1165+
languages: Languages,
11601166
skip_cache_invalidation: bool,
1161-
http: urllib3.PoolManager,
1167+
http: urllib3.PoolManager
11621168
) -> None:
11631169
"""Maintains the /2/ and /3/ symlinks for each language.
11641170

0 commit comments

Comments
 (0)