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

Lines changed: 17 additions & 15 deletions
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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy