Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .github/workflows/run-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ on:
pull_request:
workflow_dispatch:
push:
branches:
- main

jobs:
test:
Expand Down
21 changes: 8 additions & 13 deletions repositories.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,9 @@
from collections.abc import Iterator
from dataclasses import dataclass
from pathlib import Path
from tempfile import TemporaryDirectory

from docutils import core
from docutils.nodes import table, row
from git import Repo


def get_languages_and_repos(
Expand All @@ -15,10 +13,14 @@ def get_languages_and_repos(
translating = devguide_dir.joinpath(
'documentation/translations/translating.rst'
).read_text()
doctree = core.publish_doctree(translating)

for node in doctree.traverse(table):
for row_node in node.traverse(row)[1:]:
doctree = core.publish_doctree(
translating,
settings_overrides={'report_level': 5},
# docutils errors on Sphinx directives, but this does not matter for us
)

for node in doctree.findall(table):
for row_node in list(node.findall(row))[1:]:
language = row_node[0].astext()
repo = row_node[2].astext()
language_match = re.match(r'(.*) \((.*)\)', language)
Expand All @@ -39,10 +41,3 @@ def get_languages_and_repos(
class Language:
code: str
name: str


if __name__ == '__main__':
with TemporaryDirectory() as directory:
Repo.clone_from('https://github.com/python/devguide.git', directory, depth=1)
for item in get_languages_and_repos(Path(directory)):
print(item)
57 changes: 57 additions & 0 deletions tests/test_repositories.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
import unittest
import support
import tempfile
import shutil

from pathlib import Path
from git import Repo

with support.import_scripts():
import repositories
from repositories import Language


class testRepositories(unittest.TestCase):
@classmethod
def setUpClass(cls):
cls.tempdir = tempfile.mkdtemp()
cls.test_repo_path = Path(cls.tempdir) / 'devguide'
cls.test_repo = Repo.clone_from(
'https://github.com/python/devguide',
cls.test_repo_path,
branch='main',
depth=1,
)

@classmethod
def tearDownClass(cls):
shutil.rmtree(cls.tempdir)

def test_get_languages_and_repos(self):
result = list(repositories.get_languages_and_repos(self.test_repo_path))

for entry in result:
info, repo = entry
self.assertIsInstance(info, Language)

self.assertIn(
(Language(code='tr', name='Turkish'), 'python/python-docs-tr'), result
)
self.assertIn(
(Language(code='es', name='Spanish'), 'python/python-docs-es'), result
)
self.assertIn(
(Language(code='pl', name='Polish'), 'python/python-docs-pl'), result
)
self.assertIn(
(
Language(code='zh-tw', name='Traditional Chinese'),
'python/python-docs-zh-tw',
),
result,
)
self.assertIn(
(Language(code='it', name='Italian'), 'python/python-docs-it'), result
)

self.assertGreater(len(result), 23 - 1)
Loading