diff --git a/build_status.py b/build_status.py new file mode 100644 index 000000000..14fad56d9 --- /dev/null +++ b/build_status.py @@ -0,0 +1,35 @@ +""" +Fetch build status of languages in the https://docs.python.org. + +Yield a tuple of language code and a Boolean indicating +whether it is in the language switcher. +""" + +import tomllib +from collections.abc import Iterator + +import requests + + +def get_languages() -> Iterator[tuple[str, bool]]: + data = requests.get( + 'https://raw.githubusercontent.com/' + 'python/docsbuild-scripts/refs/heads/main/config.toml', + timeout=10, + ).text + config = tomllib.loads(data) + for code, language in config['languages'].items(): + language_code = code.lower().replace('_', '-') + in_switcher = language.get('in_prod', config['defaults']['in_prod']) + yield language_code, in_switcher + + +def main() -> None: + languages = {language: in_switcher for language, in_switcher in get_languages()} + print(languages) + for code in ('en', 'pl', 'ar', 'zh-cn', 'id'): + print(f'{code}: {code in languages} {languages.get(code)}') + + +if __name__ == '__main__': + main() diff --git a/generate.py b/generate.py index a9b992012..82390a6ab 100644 --- a/generate.py +++ b/generate.py @@ -17,7 +17,7 @@ from jinja2 import Template import repositories -import switcher +import build_status import visitors from completion import branches_from_devguide, get_completion @@ -41,7 +41,7 @@ subprocess.run( ['make', '-C', Path(clones_dir, 'cpython/Doc'), 'gettext'], check=True ) - switcher_languages = list(switcher.get_languages()) + languages_built = dict(build_status.get_languages()) for language, repo in repositories.get_languages_and_repos(devguide_dir): if repo: completion_number, translators_number = get_completion(clones_dir, repo) @@ -55,7 +55,8 @@ completion_number, translators_number, visitors_number, - language in switcher_languages, + language in languages_built, # built on docs.python.org + languages_built.get(language), # in switcher ) ) print(completion_progress[-1]) @@ -80,7 +81,7 @@ -{% for language, repo, completion, translators, visitors, in_switcher in completion_progress | sort(attribute='2,3') | reverse %} +{% for language, repo, completion, translators, visitors, build, in_switcher in completion_progress | sort(attribute='2,3') | reverse %} {% if repo %} @@ -92,8 +93,8 @@ {{ language }} {% endif %} - {% if in_switcher %} - in switcher + {% if build %} + ✓{% if in_switcher %} in switcher{% endif %} {% else %} ✗ {% endif %} diff --git a/switcher.py b/switcher.py deleted file mode 100644 index 717a04748..000000000 --- a/switcher.py +++ /dev/null @@ -1,36 +0,0 @@ -""" -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 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()