From 3f8e1c31e882403adce0eaa0727d422a5f6cf3f6 Mon Sep 17 00:00:00 2001 From: Stan Ulbrych Date: Sat, 30 Aug 2025 18:02:36 +0100 Subject: [PATCH 1/3] Commit --- generate.py | 2 +- repositories.py | 21 ++++++-------- tests/test_repositories.py | 57 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 66 insertions(+), 14 deletions(-) create mode 100644 tests/test_repositories.py diff --git a/generate.py b/generate.py index 9b162125e..c8bb52c1d 100644 --- a/generate.py +++ b/generate.py @@ -96,7 +96,7 @@ class LanguageProjectData: logging.info(f'starting at {generation_time}') Path('build').mkdir(parents=True, exist_ok=True) - completion_progress = list(get_completion_progress()) + from data import completion_progress env = Environment(loader=FileSystemLoader('templates')) index = env.get_template('index.html.jinja').render( diff --git a/repositories.py b/repositories.py index 5590771c2..d45cdde70 100644 --- a/repositories.py +++ b/repositories.py @@ -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( @@ -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) @@ -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) diff --git a/tests/test_repositories.py b/tests/test_repositories.py new file mode 100644 index 000000000..a95ebe816 --- /dev/null +++ b/tests/test_repositories.py @@ -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) From b58dc914238eb3af890aeb633a66daaaec41e843 Mon Sep 17 00:00:00 2001 From: Stan Ulbrych Date: Sat, 30 Aug 2025 18:10:31 +0100 Subject: [PATCH 2/3] Commit --- generate.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generate.py b/generate.py index c8bb52c1d..9b162125e 100644 --- a/generate.py +++ b/generate.py @@ -96,7 +96,7 @@ class LanguageProjectData: logging.info(f'starting at {generation_time}') Path('build').mkdir(parents=True, exist_ok=True) - from data import completion_progress + completion_progress = list(get_completion_progress()) env = Environment(loader=FileSystemLoader('templates')) index = env.get_template('index.html.jinja').render( From 8cfe9463605a3d58e7c21795dce924d54bc3c25b Mon Sep 17 00:00:00 2001 From: Stan Ulbrych Date: Sat, 30 Aug 2025 18:13:01 +0100 Subject: [PATCH 3/3] Commit --- .github/workflows/run-tests.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml index 0c968d339..826c25038 100644 --- a/.github/workflows/run-tests.yml +++ b/.github/workflows/run-tests.yml @@ -3,6 +3,8 @@ on: pull_request: workflow_dispatch: push: + branches: + - main jobs: test: