Skip to content

Commit ff0c8a0

Browse files
Publish JSON format (#54)
Co-authored-by: Stan Ulbrych <[email protected]>
1 parent f165f5d commit ff0c8a0

File tree

3 files changed

+13
-6
lines changed

3 files changed

+13
-6
lines changed

.github/workflows/update.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ jobs:
2020
- uses: actions/checkout@v4
2121
- run: sudo apt-get install -y gettext
2222
- run: uv run generate.py # generates "index.html"
23-
- run: mkdir -p build && cp index.html style.css build
23+
- run: mkdir -p build && cp index.* style.css build
2424
- name: Deploy 🚀
2525
if: github.event_name != 'pull_request'
2626
uses: JamesIves/github-pages-deploy-action@v4

completion.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ def branches_from_devguide(devguide_dir: Path) -> list[str]:
2020
]
2121

2222

23-
def get_completion(clones_dir: str, repo: str) -> tuple[float, 'TranslatorsData']:
23+
def get_completion(clones_dir: str, repo: str) -> tuple[float, 'TranslatorsData', str]:
2424
clone_path = Path(clones_dir, repo)
2525
for branch in branches_from_devguide(Path(clones_dir, 'devguide')) + ['master']:
2626
try:
@@ -44,7 +44,7 @@ def get_completion(clones_dir: str, repo: str) -> tuple[float, 'TranslatorsData'
4444
hide_reserved=False,
4545
api_url='',
4646
).completion
47-
return completion, translators_data
47+
return completion, translators_data, branch
4848

4949

5050
@dataclass(frozen=True)

generate.py

+10-3
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,13 @@
88
# "docutils",
99
# ]
1010
# ///
11+
import json
1112
import concurrent.futures
1213
import itertools
1314
import logging
1415
import subprocess
1516
from collections.abc import Iterator
16-
from dataclasses import dataclass
17+
from dataclasses import dataclass, asdict
1718
from datetime import datetime, timezone
1819
from pathlib import Path
1920
from tempfile import TemporaryDirectory
@@ -48,6 +49,7 @@ def get_completion_progress() -> Iterator['LanguageProjectData']:
4849
subprocess.run(['make', '-C', cpython_dir / 'Doc', 'venv'], check=True)
4950
subprocess.run(['make', '-C', cpython_dir / 'Doc', 'gettext'], check=True)
5051
languages_built = dict(build_status.get_languages(http := PoolManager()))
52+
5153
with concurrent.futures.ThreadPoolExecutor() as executor:
5254
return executor.map(
5355
get_project_data,
@@ -67,7 +69,7 @@ def get_project_data(
6769
) -> 'LanguageProjectData':
6870
built = language.code in languages_built
6971
if repo:
70-
completion, translators_data = get_completion(clones_dir, repo)
72+
completion, translators_data, branch = get_completion(clones_dir, repo)
7173
visitors_num = get_number_of_visitors(language.code, http) if built else 0
7274
else:
7375
completion = 0.0
@@ -76,6 +78,7 @@ def get_project_data(
7678
return LanguageProjectData(
7779
language,
7880
repo,
81+
branch,
7982
completion,
8083
translators_data,
8184
visitors_num,
@@ -90,6 +93,7 @@ def get_project_data(
9093
class LanguageProjectData:
9194
language: Language
9295
repository: str | None
96+
branch: str
9397
completion: float
9498
translators: TranslatorsData
9599
visitors: int
@@ -105,9 +109,12 @@ class LanguageProjectData:
105109
template = Template(Path('template.html.jinja').read_text())
106110

107111
output = template.render(
108-
completion_progress=list(get_completion_progress()),
112+
completion_progress=(completion_progress := list(get_completion_progress())),
109113
generation_time=generation_time,
110114
duration=(datetime.now(timezone.utc) - generation_time).seconds,
111115
)
112116

113117
Path('index.html').write_text(output)
118+
Path('index.json').write_text(
119+
json.dumps(completion_progress, indent=2, default=asdict)
120+
)

0 commit comments

Comments
 (0)