Skip to content

Commit 0f41e04

Browse files
committed
Get repos from devguide
1 parent e5b7dba commit 0f41e04

File tree

3 files changed

+45
-13
lines changed

3 files changed

+45
-13
lines changed

completion.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,19 +18,19 @@ def branches_from_devguide() -> list[str]:
1818
]
1919

2020

21-
def get_completion_and_branch(tmpdir: str, language: str) -> tuple[float, str]:
22-
clone_path = pathlib.Path(tmpdir, language)
23-
24-
for branch in branches_from_devguide():
21+
def get_completion_and_branch(tmpdir: str, repo: str) -> tuple[float, str]:
22+
clone_path = pathlib.Path(tmpdir, repo)
23+
completion = 0.
24+
for branch in branches_from_devguide() + ["master"]:
2525
try:
26-
git.Repo.clone_from(f'https://github.com/python/python-docs-{language}.git', clone_path, depth=1, branch=branch)
26+
git.Repo.clone_from(f'https://github.com/{repo}.git', clone_path, depth=1, branch=branch)
2727
except git.GitCommandError:
28-
print(f'failed to clone {language} {branch}')
28+
print(f'failed to clone {repo} {branch}')
2929
continue
3030
try:
3131
completion = potodo.scan_path(clone_path, no_cache=True, hide_reserved=False, api_url='').completion
3232
except OSError:
33-
print(f'failed to scan {language} {branch}')
33+
print(f'failed to scan {repo} {branch}')
3434
shutil.rmtree(clone_path)
3535
continue
3636
else:

generate.py

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
# "potodo",
55
# "jinja2",
66
# "requests",
7+
# "docutils",
78
# ]
89
# ///
910
from datetime import datetime, timezone
@@ -12,16 +13,20 @@
1213
from jinja2 import Template
1314

1415
import completion
16+
import repositories
1517
import visitors
1618

1719
completion_progress = []
1820
generation_time = datetime.now(timezone.utc)
1921

2022
with TemporaryDirectory() as tmpdir:
21-
for language in ('es', 'fr', 'id', 'it', 'ja', 'ko', 'pl', 'pt-br', 'tr', 'uk', 'zh-cn', 'zh-tw'):
22-
completion_number, branch = completion.get_completion_and_branch(tmpdir, language)
23-
visitors_number = visitors.get_number_of_visitors(language)
24-
completion_progress.append((language, completion_number, branch, visitors_number))
23+
for language, repo in source.get_languages_and_repos():
24+
if repo:
25+
completion_number, branch = completion.get_completion_and_branch(tmpdir, repo)
26+
visitors_number = visitors.get_number_of_visitors(language)
27+
else:
28+
completion_number, branch, visitors_number = 0., "", 0
29+
completion_progress.append((language, repo, completion_number, branch, visitors_number))
2530
print(completion_progress[-1])
2631

2732
template = Template("""
@@ -42,10 +47,11 @@
4247
</tr>
4348
</thead>
4449
<tbody>
45-
{% for language, completion, branch, visitors in completion_progress | sort(attribute=1) | reverse %}
50+
{% for language, repo, completion, branch, visitors in completion_progress | sort(attribute=2) | reverse %}
4651
<tr>
52+
{% if repo %}
4753
<td data-label="language">
48-
<a href="https://github.com/python/python-docs-{{ language }}" target="_blank">
54+
<a href="https://github.com/{{ repo }}" target="_blank">
4955
{{ language }}
5056
</a>
5157
</td>
@@ -54,6 +60,10 @@
5460
{{ '{:,}'.format(visitors) }}
5561
</a>
5662
</td>
63+
{% else %}
64+
<td data-label="language">{{ language }}</td>
65+
<td data-label="visitors">0</td>
66+
{% endif %}
5767
<td data-label="branch">{{ branch }}</td>
5868
<td data-label="completion">
5969
<div class="progress-bar" style="width: {{ completion | round(2) }}%;">{{ completion | round(2) }}%</div>

repositories.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import tempfile
2+
import pathlib
3+
import re
4+
from typing import Generator, Optional
5+
6+
import git
7+
from docutils import core
8+
from docutils.nodes import table, row
9+
10+
def get_languages_and_repos() -> Generator[tuple[str, Optional[str]], None, None]:
11+
with tempfile.TemporaryDirectory() as clone_path:
12+
git.Repo.clone_from(f'https://github.com/python/devguide.git', clone_path, depth=1)
13+
translating = pathlib.Path(clone_path, 'documentation/translating.rst').read_text()
14+
doctree = core.publish_doctree(translating)
15+
16+
for node in doctree.traverse(table):
17+
for row_node in node.traverse(row)[1:]:
18+
language = row_node[0].astext()
19+
repo = row_node[2].astext()
20+
language_code = re.match(r'.* \((.*)\)', language).group(1).lower().replace('_', '-')
21+
repo_match = re.match(':github:`GitHub <(.*)>`', repo)
22+
yield language_code, repo_match and repo_match.group(1)

0 commit comments

Comments
 (0)