diff --git a/generate.py b/generate.py index c38bffde2..cf875048d 100644 --- a/generate.py +++ b/generate.py @@ -1,4 +1,5 @@ # /// script +# requires-python = ">=3.11" # dependencies = [ # "gitpython", # "potodo", @@ -16,6 +17,7 @@ from jinja2 import Template import repositories +import switcher import visitors from completion import branches_from_devguide, get_completion @@ -30,13 +32,23 @@ ) subprocess.run(['make', '-C', Path(clones_dir, 'cpython/Doc'), 'venv'], check=True) subprocess.run(['make', '-C', Path(clones_dir, 'cpython/Doc'), 'gettext'], check=True) + switcher_languages = list(switcher.get_languages()) for language, repo in repositories.get_languages_and_repos(devguide_dir): if repo: completion_number, translators_number = get_completion(clones_dir, repo) visitors_number = visitors.get_number_of_visitors(language) else: completion_number, visitors_number = 0.0, 0 - completion_progress.append((language, repo, completion_number, translators_number, visitors_number)) + completion_progress.append( + ( + language, + repo, + completion_number, + translators_number, + visitors_number, + language in switcher_languages, + ) + ) print(completion_progress[-1]) template = Template( @@ -52,19 +64,27 @@ language + build visitors translators completion -{% for language, repo, completion, translators, visitors in completion_progress | sort(attribute=2) | reverse %} +{% for language, repo, completion, translators, visitors, in_switcher in completion_progress | sort(attribute=2) | reverse %} {% if repo %} {{ language }} + + + {% if in_switcher %} + in switcher + {% else %} + ✗ + {% endif %} diff --git a/style.css b/style.css index 7270d08bb..a92e7514b 100644 --- a/style.css +++ b/style.css @@ -25,10 +25,10 @@ th { min-width: 50px; box-sizing: border-box; } -td:nth-child(2) { +td[data-label="visitors"] { text-align: right; } -td:last-child { +td[data-label="completion"] { width: 100%; } @media screen and (max-width: 600px) { @@ -56,7 +56,7 @@ td:last-child { left: 10px; position: absolute; } - td:last-child { + td[data-label="completion"] { width: inherit; } .progress-bar { diff --git a/switcher.py b/switcher.py new file mode 100644 index 000000000..301b54812 --- /dev/null +++ b/switcher.py @@ -0,0 +1,37 @@ +""" +Fetch languages in the https://docs.python.org language switcher. + +Return a defaultdict mapping language codes to a Boolean indicating +whether it is in the language switcher. +""" + +import tomllib +from collections import defaultdict +from typing import Generator + +import requests + + +def get_languages() -> Generator[str, None, None]: + data = requests.get( + "https://raw.githubusercontent.com/" + "python/docsbuild-scripts/refs/heads/main/config.toml", + timeout=10, + ).text + config = tomllib.loads(data) + languages = config["languages"] + defaults = config["defaults"] + for code, language in languages.items(): + if language.get("in_prod", defaults["in_prod"]): + yield code.lower().replace("_", "-") + + +def main() -> None: + languages = list(get_languages()) + print(languages) + for code in ("en", "pl", "ar", "zh-cn"): + print(f"{code}: {code in languages}") + + +if __name__ == "__main__": + main()