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()
|