From 297e2706f733640af305450b12f5062006b24a00 Mon Sep 17 00:00:00 2001 From: Maciej Olko Date: Fri, 17 Mar 2023 01:23:02 +0100 Subject: [PATCH 1/4] Use polib to get number of translators It's roughly 60 times slower, but more readable? Fix number, now we are matching my email if available --- README.md | 2 +- manage_translation.py | 41 +++++++++++++++++++++++++---------------- 2 files changed, 26 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index d7caa83862..7cc98922b8 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ f'''![build](https://github.com/python/python-docs-pl/workflows/.github/workflow ![build](https://github.com/python/python-docs-pl/workflows/.github/workflows/update-and-build.yml/badge.svg) ![48.18% przełącznika języków](https://img.shields.io/badge/przełącznik_języków-48.18%25-0.svg) ![postęp tłumaczenia całości dokumentacji](https://img.shields.io/badge/całość-3.50%25-0.svg) -![19 tłumaczy](https://img.shields.io/badge/tłumaczy-19-0.svg) +![18 tłumaczy](https://img.shields.io/badge/tłumaczy-18-0.svg) Jeśli znalazłeś(-aś) błąd lub masz sugestię, diff --git a/manage_translation.py b/manage_translation.py index 11ad8a2a27..c3a140dbf8 100755 --- a/manage_translation.py +++ b/manage_translation.py @@ -12,15 +12,19 @@ # * regenerate_tx_config: recreate configuration for all resources. from argparse import ArgumentParser -from collections import Counter import os +from collections import Counter from dataclasses import dataclass +from pathlib import Path from re import match from subprocess import call, run import sys +from timeit import timeit from typing import Self, Callable from urllib.parse import urlparse, parse_qs +from polib import pofile + LANGUAGE = 'pl' @@ -168,14 +172,16 @@ def progress_from_resources(resources: list[ResourceLanguageStatistics], filter_ def get_number_of_translators(): - process = run( - ['grep', '-ohP', r'(?<=^# )(.+)(?=, \d+$)', '-r', '.'], - capture_output=True, - text=True, - ) - translators = [match('(.*)( <.*>)?', t).group(1) for t in process.stdout.splitlines()] - unique_translators = Counter(translators).keys() - return len(unique_translators) + translators = set() + for file in Path().rglob('*.po'): + header = pofile(file).header.splitlines() + for translator_record in header[header.index('Translators:') + 1:]: + translator, _ = translator_record.split(', ') + if (email_match := match('.* <(.*)>', translator)): + translators.add(email_match.group(1)) + else: + translators.add(translator) + return len(translators) def language_switcher(entry: ResourceLanguageStatistics) -> bool: @@ -184,10 +190,13 @@ def language_switcher(entry: ResourceLanguageStatistics) -> bool: if __name__ == "__main__": - RUNNABLE_SCRIPTS = ('fetch', 'recreate_tx_config') - - parser = ArgumentParser() - parser.add_argument('cmd', choices=RUNNABLE_SCRIPTS) - options = parser.parse_args() - - eval(options.cmd)() + # RUNNABLE_SCRIPTS = ('fetch', 'recreate_tx_config') + # + # parser = ArgumentParser() + # parser.add_argument('cmd', choices=RUNNABLE_SCRIPTS) + # options = parser.parse_args() + # + # eval(options.cmd)() + print(timeit(get_number_of_translators, number=10)) + + print(timeit(get_number_of_translators_old, number=10)) From 45d8718eafd1df474868f740a3657cb237fd0387 Mon Sep 17 00:00:00 2001 From: Maciej Olko Date: Fri, 17 Mar 2023 01:24:03 +0100 Subject: [PATCH 2/4] Install polib in CI --- .github/workflows/update-lint-and-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update-lint-and-build.yml b/.github/workflows/update-lint-and-build.yml index e5915c7afa..03b066e3b9 100644 --- a/.github/workflows/update-lint-and-build.yml +++ b/.github/workflows/update-lint-and-build.yml @@ -19,7 +19,7 @@ jobs: with: python-version: 3 - run: sudo apt-get install -y gettext - - run: pip install requests cogapp + - run: pip install requests cogapp polib - uses: actions/checkout@master with: ref: ${{ matrix.version }} From 694f5c9d8c787739c54324e63f9f25c55adace8b Mon Sep 17 00:00:00 2001 From: Maciej Olko Date: Fri, 17 Mar 2023 01:25:24 +0100 Subject: [PATCH 3/4] Revert gibberish changes, remove unused imports --- manage_translation.py | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/manage_translation.py b/manage_translation.py index c3a140dbf8..bf10d7d45b 100755 --- a/manage_translation.py +++ b/manage_translation.py @@ -11,15 +11,13 @@ # files. # * regenerate_tx_config: recreate configuration for all resources. -from argparse import ArgumentParser import os -from collections import Counter +from argparse import ArgumentParser from dataclasses import dataclass from pathlib import Path from re import match -from subprocess import call, run +from subprocess import call import sys -from timeit import timeit from typing import Self, Callable from urllib.parse import urlparse, parse_qs @@ -190,13 +188,10 @@ def language_switcher(entry: ResourceLanguageStatistics) -> bool: if __name__ == "__main__": - # RUNNABLE_SCRIPTS = ('fetch', 'recreate_tx_config') - # - # parser = ArgumentParser() - # parser.add_argument('cmd', choices=RUNNABLE_SCRIPTS) - # options = parser.parse_args() - # - # eval(options.cmd)() - print(timeit(get_number_of_translators, number=10)) - - print(timeit(get_number_of_translators_old, number=10)) + RUNNABLE_SCRIPTS = ('fetch', 'recreate_tx_config') + + parser = ArgumentParser() + parser.add_argument('cmd', choices=RUNNABLE_SCRIPTS) + options = parser.parse_args() + + eval(options.cmd)() From cd3a5e2260c5ba9a68e8a17d55ea0e6e5db0ffd3 Mon Sep 17 00:00:00 2001 From: Maciej Olko Date: Fri, 17 Mar 2023 01:28:14 +0100 Subject: [PATCH 4/4] Reorder import --- manage_translation.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manage_translation.py b/manage_translation.py index bf10d7d45b..c83607da10 100755 --- a/manage_translation.py +++ b/manage_translation.py @@ -11,8 +11,8 @@ # files. # * regenerate_tx_config: recreate configuration for all resources. -import os from argparse import ArgumentParser +import os from dataclasses import dataclass from pathlib import Path from re import match