From ffe77bf56dc99cb46ab3a2e3503a204c9c0b933a Mon Sep 17 00:00:00 2001 From: Dmytro Kazanzhy Date: Mon, 14 Nov 2022 01:46:38 +0200 Subject: [PATCH 1/6] Switch to Go Transifex CLI --- .github/scripts/manage_translation.py | 19 +++++++++---------- .github/workflows/update-and-build.yml | 7 ++++--- .gitignore | 3 ++- 3 files changed, 15 insertions(+), 14 deletions(-) diff --git a/.github/scripts/manage_translation.py b/.github/scripts/manage_translation.py index b78f76d32..35e3bd6f8 100755 --- a/.github/scripts/manage_translation.py +++ b/.github/scripts/manage_translation.py @@ -1,6 +1,6 @@ #!/usr/bin/env python # -# This python file contains utility scripts to manage Python docs Polish translation. +# This python file contains utility scripts to manage Python docs Ukrainian translation. # It has to be run inside the python-docs-uk git root directory. # # Inspired by django-docs-translations script by claudep. @@ -20,14 +20,18 @@ import sys LANGUAGE = 'uk' - +RESOURCE_NAME_MAP = {'glossary_': 'glossary'} +TX_ORGANISATION = 'python-doc' +TX_PROJECT = 'python-newest' +GH_ORGANISATION = 'python' +GH_PROJECT = 'python-docs-uk' def fetch(): """ Fetch translations from Transifex, remove source lines. """ if call("tx --version", shell=True) != 0: - sys.stderr.write("The Transifex client app is required (pip install transifex-client).\n") + sys.stderr.write("The Transifex client app is required (https://developers.transifex.com/docs/cli).\n") exit(1) lang = LANGUAGE pull_returncode = call(f'tx pull -l {lang} --minimum-perc=1 --force --skip', shell=True) @@ -41,11 +45,6 @@ def fetch(): call(f'msgcat --no-location -o {po_path} {po_path}', shell=True) -RESOURCE_NAME_MAP = {'glossary_': 'glossary'} -TX_ORGANISATION = 'python-doc' -TX_PROJECT = 'python-newest' -GH_ORGANISATION = 'python' - def recreate_tx_config(): """ Regenerate Transifex client config for all resources. @@ -144,13 +143,13 @@ def average(averages, weights): f'''\ Український переклад документації Python ======================================== -![build](https://github.com/{GH_ORGANISATION}/python-docs-uk/workflows/.github/workflows/update-and-build.yml/badge.svg) +![build](https://github.com/{GH_ORGANISATION}/{GH_PROJECT}/workflows/.github/workflows/update-and-build.yml/badge.svg) ![{language_switcher_status:.2f}% прогрес перекладу](https://img.shields.io/badge/прогрес_перекладу-{language_switcher_status:.2f}%25-0.svg) ![хід перекладу всієї документації](https://img.shields.io/badge/dynamic/json.svg?label=всього&query=$.{LANGUAGE}&url=http://gce.zhsj.me/python/newest) ![{number_of_translators} перекладачів](https://img.shields.io/badge/перекладачів-{number_of_translators}-0.svg) Якщо ви знайшли помилку або маєте пропозицію, -[додати issue](https://github.com/{GH_ORGANISATION}/python-docs-uk/issues) у цьому проекті або запропонуйте зміни: +[додати issue](https://github.com/{GH_ORGANISATION}/{GH_PROJECT}/issues) у цьому проекті або запропонуйте зміни: * Зареєструйтесь на платформі [Transifex](https://www.transifex.com/) * Перейдіть на сторінку [документації Python](https://www.transifex.com/{TX_ORGANISATION}/{TX_PROJECT}/). diff --git a/.github/workflows/update-and-build.yml b/.github/workflows/update-and-build.yml index 168488b67..f21afcb53 100644 --- a/.github/workflows/update-and-build.yml +++ b/.github/workflows/update-and-build.yml @@ -16,16 +16,17 @@ jobs: access_token: ${{ secrets.GITHUB_TOKEN }} - uses: actions/setup-python@master with: - python-version: '3.9' + python-version: 3 - run: sudo apt-get install -y gettext - - run: pip install 'transifex-client>=0.14' requests + - run: curl -o- https://raw.githubusercontent.com/transifex/cli/master/install.sh | bash + working-directory: /usr/local/bin + - run: pip install requests - uses: actions/checkout@master with: ref: ${{ matrix.version }} - run: .github/scripts/manage_translation.py recreate_tx_config env: TX_TOKEN: ${{ secrets.TX_TOKEN }} - - run: echo -e '[https://www.transifex.com]\napi_hostname = https://api.transifex.com\nhostname = https://www.transifex.com\nusername = api' > $HOME/.transifexrc - run: .github/scripts/manage_translation.py fetch env: TX_TOKEN: ${{ secrets.TX_TOKEN }} diff --git a/.gitignore b/.gitignore index 845bc5776..0ae62879e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ .idea/ - venv/ +tx +LICENSE From b5db58913ecf2b9515bc53b24be92991cc44a5fe Mon Sep 17 00:00:00 2001 From: Dmytro Kazanzhy Date: Wed, 12 Apr 2023 04:11:01 +0300 Subject: [PATCH 2/6] Use transifex-python lib with v3 API. Add stat files --- .github/scripts/manage_translation.py | 286 +++++--------- .github/workflows/update-and-build.yml | 18 +- .tx/config | 2 +- README.md | 22 +- RESOURCE.md | 503 +++++++++++++++++++++++++ TEAM.md | 45 +++ 6 files changed, 656 insertions(+), 220 deletions(-) create mode 100644 RESOURCE.md create mode 100644 TEAM.md diff --git a/.github/scripts/manage_translation.py b/.github/scripts/manage_translation.py index 35e3bd6f8..9bd60eb0a 100755 --- a/.github/scripts/manage_translation.py +++ b/.github/scripts/manage_translation.py @@ -2,215 +2,101 @@ # # This python file contains utility scripts to manage Python docs Ukrainian translation. # It has to be run inside the python-docs-uk git root directory. -# -# Inspired by django-docs-translations script by claudep. -# -# The following commands are available: -# -# * fetch: fetch translations from transifex.com and strip source lines from the -# files. -# * recreate_readme: recreate readme to update translation progress. -# * regenerate_tx_config: recreate configuration for all resources. -from argparse import ArgumentParser -from collections import Counter import os -from re import match -from subprocess import call, run -import sys +import re +from argparse import ArgumentParser +from pathlib import Path -LANGUAGE = 'uk' -RESOURCE_NAME_MAP = {'glossary_': 'glossary'} -TX_ORGANISATION = 'python-doc' -TX_PROJECT = 'python-newest' -GH_ORGANISATION = 'python' -GH_PROJECT = 'python-docs-uk' - -def fetch(): - """ - Fetch translations from Transifex, remove source lines. - """ - if call("tx --version", shell=True) != 0: - sys.stderr.write("The Transifex client app is required (https://developers.transifex.com/docs/cli).\n") - exit(1) - lang = LANGUAGE - pull_returncode = call(f'tx pull -l {lang} --minimum-perc=1 --force --skip', shell=True) - if pull_returncode != 0: - exit(pull_returncode) - for root, _, po_files in os.walk('../..'): - for po_file in po_files: - if not po_file.endswith(".po"): - continue - po_path = os.path.join(root, po_file) - call(f'msgcat --no-location -o {po_path} {po_path}', shell=True) - - -def recreate_tx_config(): - """ - Regenerate Transifex client config for all resources. - """ - resources = _get_resources() - with open('.tx/config', 'w') as config: - config.writelines(('[main]\n', 'host = https://www.transifex.com\n',)) - for resource in resources: - slug = resource['slug'] - name = RESOURCE_NAME_MAP.get(slug, slug) - if slug == '0': - continue - elif '--' in slug: - directory, file_name = name.split('--') - if match(r'\d+_\d+', file_name): - file_name = file_name.replace('_', '.') - config.writelines( - ( - '\n', - f'[{TX_PROJECT}.{slug}]\n', - f'trans.{LANGUAGE} = {directory}/{file_name}.po\n', - 'type = PO\n', - 'source_lang = en\n', - ) - ) - else: - config.writelines( - ( - '\n', - f'[{TX_PROJECT}.{slug}]\n', - f'trans.{LANGUAGE} = {name}.po\n', - 'type = PO\n', - 'source_lang = en\n', - ) - ) - - -def _get_resources(): - from requests import get - - resources = [] - offset = 0 - if os.path.exists('.tx/api-key'): - with open('.tx/api-key') as f: - transifex_api_key = f.read() - else: - transifex_api_key = os.getenv('TX_TOKEN') - while True: - response = get( - f'https://api.transifex.com/organizations/{TX_ORGANISATION}/projects/{TX_PROJECT}/resources/', - params={'language_code': LANGUAGE, 'offset': offset}, - auth=('api', transifex_api_key), - ) - response.raise_for_status() - response_list = response.json() - resources.extend(response_list) - if len(response_list) < 100: - break - offset += len(response_list) - return resources - - -def _get_unique_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) - return unique_translators - - -def recreate_readme(): - def language_switcher(entry): - return ( - entry['name'].startswith('bugs') - or entry['name'].startswith('tutorial') - or entry['name'].startswith('library--functions') - ) - - def average(averages, weights): - return sum([a * w for a, w in zip(averages, weights)]) / sum(weights) - - resources = _get_resources() - filtered = list(filter(language_switcher, resources)) - average_list = [e['stats']['translated']['percentage'] for e in filtered] - weights_list = [e['wordcount'] for e in filtered] - - language_switcher_status = average(average_list, weights=weights_list) * 100 - unique_translators = _get_unique_translators() - number_of_translators = len(unique_translators) - - with open('README.md', 'w') as file: - file.write( - f'''\ -Український переклад документації Python -======================================== -![build](https://github.com/{GH_ORGANISATION}/{GH_PROJECT}/workflows/.github/workflows/update-and-build.yml/badge.svg) -![{language_switcher_status:.2f}% прогрес перекладу](https://img.shields.io/badge/прогрес_перекладу-{language_switcher_status:.2f}%25-0.svg) -![хід перекладу всієї документації](https://img.shields.io/badge/dynamic/json.svg?label=всього&query=$.{LANGUAGE}&url=http://gce.zhsj.me/python/newest) -![{number_of_translators} перекладачів](https://img.shields.io/badge/перекладачів-{number_of_translators}-0.svg) - -Якщо ви знайшли помилку або маєте пропозицію, -[додати issue](https://github.com/{GH_ORGANISATION}/{GH_PROJECT}/issues) у цьому проекті або запропонуйте зміни: - -* Зареєструйтесь на платформі [Transifex](https://www.transifex.com/) -* Перейдіть на сторінку [документації Python](https://www.transifex.com/{TX_ORGANISATION}/{TX_PROJECT}/). -* Натисніть кнопку „Join Team”, оберіть українську (uk) мову та натисніть „Join” щоб приєднатися до команди. -* Приєднавшись до команди, виберіть ресурс, що хочете виправити/оновити. - -Додаткову інформацію про використання Transifex дивіться [в документації](https://docs.transifex.com/getting-started-1/translators). - -**Прогрес перекладу** - -![прогрес перекладу](language-switcher-progress.svg) - -Українська мова з’явиться в меню вибору мови docs.python.org, [коли будуть повністю перекладені](https://www.python.org/dev/peps/pep-0545/#add-translation-to-the-language-switcher): -* `bugs`, -* всі ресурси в каталозі `tutorial`, -* `library/functions`. - -**Як переглянути останню збірку документації?** - -Завантажте останню створену документацію зі списку артефактів в останній дії GitHub (вкладка Actions). -Переклади завантажуються з Transifex до цього репозиторію приблизно кожні півгодини. -Документація на python.org оновлюється приблизно раз на день. - -**Канали зв'язку** - -* [Telegram-чат перекладачів](https://t.me/+dXwqHZ0KPKYyNDc6) -* [Python translations working group](https://mail.python.org/mailman3/lists/translation.python.org/) -* [Python Documentation Special Interest Group](https://www.python.org/community/sigs/current/doc-sig/) - -**Ліцензія** - -Запрошуючи вас до спільного створення проекту на платформі Transifex, ми пропонуємо договір на передачу ваших перекладів -Python Software Foundation [по ліцензії CC0](https://creativecommons.org/publicdomain/zero/1.0/deed.uk). -Натомість ви побачите, що ви є перекладачем тієї частини, яку ви переклали. -Ви висловлюєте свою згоду з цією угодою, надаючи свою роботу для включення в документацію. - -**Оновлення локального перекладу** - -* `.github/scripts/manage_translation.py recreate_tx_config` -* `.github/scripts/manage_translation.py fetch` -* `.github/scripts/manage_translation.py recreate_readme` - -**Подяка** -* Maciej Olko - Polish team -* Julien Palard - French team -* Tomo Cocoa - Japanese team +from transifex.api import transifex_api -**Внесок спільноти** -| Перекладач | Кількість документів | -|:----------------|:--------------------:| -''' - ) +transifex_api.setup(auth=os.getenv('TX_TOKEN')) - file.writelines( - (f'|{t}|{c}|\n' for (t, c) in unique_translators.most_common()) - ) +RESOURCE_NAME_MAP = {'glossary_': 'glossary'} + +ORGANISATION_ID = 'o:python-doc' +PROJECT_ID = 'o:python-doc:p:python-newest' +LANGUAGE_ID = 'l:uk' +ORGANISATION = transifex_api.Organization.get(id=ORGANISATION_ID) +PROJECT = transifex_api.Project.get(id=PROJECT_ID) +LANGUAGE = transifex_api.Language.get(id=LANGUAGE_ID) + + +def _slug_to_file_path(slug: str) -> Path: + """Set of rules how to transform slug to translation file path""" + file_path = RESOURCE_NAME_MAP.get(slug, slug) # Legacy slug to file mapping + file_path = file_path.replace('--', '/') + if re.match(r'\d+_\d+', file_path): + file_path = file_path.replace('_', '.') + file_path = file_path + '.po' + return Path(file_path) + + +def recreate_config() -> None: + """Regenerate Transifex client config for all resources.""" + resources = transifex_api.Resource.filter(project=PROJECT).all() + with open('.tx/config', 'w') as fo: + fo.writelines(('[main]\n', 'host = https://api.transifex.com\n',)) + for resource in resources: + path = _slug_to_file_path(resource.slug) + fo.writelines(( + '\n', + f'[{resource.id}]\n', + f'file_filter = {path}\n', + 'type = PO\n', + 'source_lang = en\n', + )) + + +def recreate_resource_stats() -> None: + """Create resource stats.""" + stats = transifex_api.ResourceLanguageStats.filter(project=PROJECT, language=LANGUAGE).all() + with open('RESOURCE.md', 'w') as fo: + fo.writelines(('| Файл | Перекладено | Переглянуто | Вичитано |\n', '|:-----|:-----|:-----|:-----|\n')) + for stat in stats: + file_name = _slug_to_file_path(stat.id.split(':')[5]) + translated_pct = round(100 * stat.attributes['translated_words'] / stat.attributes['total_words'], 1) + reviewed_pct = round(100 * stat.attributes['reviewed_words'] / stat.attributes['total_words'], 1) + proofread_pct = round(100 * stat.attributes['proofread_words'] / stat.attributes['total_words'], 1) + fo.writelines(f'| {file_name} | {translated_pct} % | {reviewed_pct} % | {proofread_pct} % |\n') + + +def recreate_team_stats() -> None: + """Create contributor stats""" + members = transifex_api.TeamMembership.filter(organization=ORGANISATION, language=LANGUAGE).all() + + users = {member.user.id: member.attributes['role'] for member in members} + translators = dict.fromkeys(users.keys(), 0) + reviewers = dict.fromkeys(users.keys(), 0) + proofreaders = dict.fromkeys(users.keys(), 0) + + resources = transifex_api.Resource.filter(project=PROJECT).all() + for resource in resources: + translations = transifex_api.ResourceTranslation.filter(resource=resource, language=LANGUAGE).all() + for translation in translations: + if translation.relationships['translator']: + translators[translation.relationships['translator']['data']['id']] += 1 + if translation.relationships['reviewer']: + reviewers[translation.relationships['reviewer']['data']['id']] += 1 + if translation.relationships['proofreader']: + proofreaders[translation.relationships['proofreader']['data']['id']] += 1 + + with open('TEAM.md', 'w') as fo: + fo.writelines(('| | Роль | Переклав | Переглянув | Вичитав |\n', '|:---|:---|:---|:---|:---|\n',)) + for user, role in users.items(): + fo.writelines(f"| {user} | {role} | {translators[user]} | {reviewers[user]} | {proofreaders[user]} |\n") + + +def fetch_translations(): + """Fetch translations from Transifex, remove source lines.""" + pull_return_code = os.system(f'tx pull -l uk --force --skip') + if pull_return_code != 0: + exit(pull_return_code) if __name__ == "__main__": - RUNNABLE_SCRIPTS = ('fetch', 'recreate_tx_config', 'recreate_readme') + RUNNABLE_SCRIPTS = ('recreate_config', 'recreate_resource_stats', 'recreate_team_stats', 'fetch_translations') parser = ArgumentParser() parser.add_argument('cmd', nargs=1, choices=RUNNABLE_SCRIPTS) diff --git a/.github/workflows/update-and-build.yml b/.github/workflows/update-and-build.yml index f21afcb53..9d35f8d5f 100644 --- a/.github/workflows/update-and-build.yml +++ b/.github/workflows/update-and-build.yml @@ -1,8 +1,9 @@ on: schedule: - - cron: '0 0 * * *' + - cron: '0 6 * * *' push: branches: ['main'] + workflow_dispatch: jobs: update-translation: @@ -17,24 +18,19 @@ jobs: - uses: actions/setup-python@master with: python-version: 3 - - run: sudo apt-get install -y gettext - run: curl -o- https://raw.githubusercontent.com/transifex/cli/master/install.sh | bash working-directory: /usr/local/bin - - run: pip install requests + - run: pip install transifex-python - uses: actions/checkout@master with: ref: ${{ matrix.version }} - - run: .github/scripts/manage_translation.py recreate_tx_config + - run: .github/scripts/manage_translation.py recreate_config env: TX_TOKEN: ${{ secrets.TX_TOKEN }} - - run: .github/scripts/manage_translation.py fetch + - run: .github/scripts/manage_translation.py fetch_translations env: TX_TOKEN: ${{ secrets.TX_TOKEN }} - - run: .github/scripts/manage_translation.py recreate_readme - env: - TX_TOKEN: ${{ secrets.TX_TOKEN }} - - run: git config --local user.email 'dkazanzhy@gmail.com' - name: Run git config --local user.email '…' + - run: git config --local user.email github-actions@github.com - run: git config --local user.name "GitHub Action's update-translation job" - run: git add . - run: git commit -m 'Update translation from Transifex' || true @@ -56,7 +52,7 @@ jobs: steps: - uses: actions/setup-python@master with: - python-version: '3.10' + python-version: 3 - uses: actions/checkout@master with: repository: python/cpython diff --git a/.tx/config b/.tx/config index 7616e9ce7..67726d1e1 100644 --- a/.tx/config +++ b/.tx/config @@ -1,2 +1,2 @@ [main] -host = https://www.transifex.com +host = https://api.transifex.com diff --git a/README.md b/README.md index d82852b61..a24a51960 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,6 @@ Український переклад документації Python ======================================== ![build](https://github.com/python/python-docs-uk/workflows/.github/workflows/update-and-build.yml/badge.svg) -![97.03% прогрес перекладу](https://img.shields.io/badge/прогрес_перекладу-97.03%25-0.svg) -![хід перекладу всієї документації](https://img.shields.io/badge/dynamic/json.svg?label=всього&query=$.uk&url=http://gce.zhsj.me/python/newest) -![1 перекладачів](https://img.shields.io/badge/перекладачів-1-0.svg) Якщо ви знайшли помилку або маєте пропозицію, [додати issue](https://github.com/python/python-docs-uk/issues) у цьому проєкті або запропонуйте зміни: @@ -12,6 +9,7 @@ * Перейдіть на сторінку [документації Python](https://www.transifex.com/python-doc/python-newest/). * Натисніть кнопку „Join Team”, оберіть українську (uk) мову та натисніть „Join”, щоб приєднатися до команди. * Приєднавшись до команди, виберіть ресурс, що хочете виправити/оновити. +* Ваш прогрес буде відображатися у файлі [TEAM.md](TEAM.md). Додаткову інформацію про використання Transifex дивіться [в документації](https://docs.transifex.com/getting-started-1/translators). @@ -19,11 +17,12 @@ * `bugs`, * всі ресурси в каталозі `tutorial`, * `library/functions`. +Поточний прогрес у файлі [RESOURCE.md](RESOURCE.md) **Як переглянути останню збірку документації?** Завантажте останню створену документацію зі списку артефактів в останній дії GitHub (вкладка Actions). -Переклади завантажуються з Transifex до цього репозиторію приблизно кожні півгодини. +Переклади завантажуються з Transifex до цього репозиторію щодня. Документація на python.org оновлюється приблизно раз на день. **Канали зв'язку** @@ -39,13 +38,20 @@ Python Software Foundation [по ліцензії CC0](https://creativecommons.o Натомість ви побачите, що ви є перекладачем тієї частини, яку ви переклали. Ви висловлюєте свою згоду з цією угодою, надаючи свою роботу для включення в документацію. +**Налаштування** +* `pip install transifex-python` +* Згенерувати [ключ API](https://app.transifex.com/user/settings/api/) та зберегти локально +* `export TX_TOKEN=token_from_previous_step` + +**Оновлення статистики** +* `.github/scripts/manage_translation.py recreate_resource_stats` +* `.github/scripts/manage_translation.py recreate_team_stats` + **Оновлення локального перекладу** -* `.github/scripts/manage_translation.py recreate_tx_config` -* `.github/scripts/manage_translation.py fetch` -* `.github/scripts/manage_translation.py recreate_readme` +* `.github/scripts/manage_translation.py recreate_config` +* `.github/scripts/manage_translation.py fetch_translations` **Подяка** * Maciej Olko - Polish team * Julien Palard - French team * Tomo Cocoa - Japanese team - diff --git a/RESOURCE.md b/RESOURCE.md new file mode 100644 index 000000000..c91d2c6e8 --- /dev/null +++ b/RESOURCE.md @@ -0,0 +1,503 @@ +| Файл | Перекладено | Переглянуто | Вичитано | +|:-----|:-----|:-----|:-----| +| about.po | 93.4 % | 93.4 % | 0.0 % | +| bugs.po | 59.5 % | 59.5 % | 0.0 % | +| contents.po | 100.0 % | 100.0 % | 0.0 % | +| copyright.po | 82.0 % | 82.0 % | 0.0 % | +| glossary.po | 93.6 % | 28.9 % | 0.0 % | +| license.po | 89.1 % | 89.1 % | 0.0 % | +| sphinx.po | 95.2 % | 95.2 % | 0.0 % | +| c-api/abstract.po | 100.0 % | 48.3 % | 0.0 % | +| c-api/allocation.po | 100.0 % | 0.0 % | 0.0 % | +| c-api/apiabiversion.po | 77.2 % | 0.0 % | 0.0 % | +| c-api/arg.po | 64.4 % | 0.0 % | 0.0 % | +| c-api/bool.po | 100.0 % | 0.0 % | 0.0 % | +| c-api/buffer.po | 99.0 % | 0.0 % | 0.0 % | +| c-api/bytearray.po | 93.0 % | 0.0 % | 0.0 % | +| c-api/bytes.po | 98.3 % | 0.0 % | 0.0 % | +| c-api/call.po | 93.1 % | 0.0 % | 0.0 % | +| c-api/capsule.po | 82.0 % | 0.0 % | 0.0 % | +| c-api/cell.po | 100.0 % | 0.0 % | 0.0 % | +| c-api/code.po | 24.5 % | 17.9 % | 0.0 % | +| c-api/codec.po | 100.0 % | 0.0 % | 0.0 % | +| c-api/complex.po | 95.2 % | 0.0 % | 0.0 % | +| c-api/concrete.po | 100.0 % | 0.0 % | 0.0 % | +| c-api/contextvars.po | 100.0 % | 0.0 % | 0.0 % | +| c-api/conversion.po | 82.0 % | 7.0 % | 0.0 % | +| c-api/coro.po | 100.0 % | 0.0 % | 0.0 % | +| c-api/datetime.po | 98.6 % | 0.0 % | 0.0 % | +| c-api/descriptor.po | 100.0 % | 0.0 % | 0.0 % | +| c-api/dict.po | 77.0 % | 0.0 % | 0.0 % | +| c-api/exceptions.po | 84.5 % | 0.0 % | 0.0 % | +| c-api/file.po | 70.7 % | 0.0 % | 0.0 % | +| c-api/float.po | 17.3 % | 0.0 % | 0.0 % | +| c-api/function.po | 77.0 % | 0.0 % | 0.0 % | +| c-api/gcsupport.po | 100.0 % | 0.0 % | 0.0 % | +| c-api/gen.po | 100.0 % | 0.0 % | 0.0 % | +| c-api/import.po | 94.7 % | 0.0 % | 0.0 % | +| c-api/index.po | 100.0 % | 0.0 % | 0.0 % | +| c-api/init.po | 91.3 % | 0.0 % | 0.0 % | +| c-api/init.config.po | 77.9 % | 0.0 % | 0.0 % | +| c-api/intro.po | 86.9 % | 0.0 % | 0.0 % | +| c-api/iter.po | 100.0 % | 28.0 % | 0.0 % | +| c-api/iterator.po | 100.0 % | 0.0 % | 0.0 % | +| c-api/list.po | 97.2 % | 0.0 % | 0.0 % | +| c-api/long.po | 58.7 % | 0.0 % | 0.0 % | +| c-api/mapping.po | 100.0 % | 0.0 % | 0.0 % | +| c-api/marshal.po | 50.5 % | 0.0 % | 0.0 % | +| c-api/memory.po | 87.9 % | 0.0 % | 0.0 % | +| c-api/memoryview.po | 100.0 % | 0.0 % | 0.0 % | +| c-api/method.po | 100.0 % | 0.0 % | 0.0 % | +| c-api/module.po | 96.6 % | 0.0 % | 0.0 % | +| c-api/none.po | 100.0 % | 0.0 % | 0.0 % | +| c-api/number.po | 100.0 % | 0.0 % | 0.0 % | +| c-api/object.po | 85.9 % | 0.0 % | 0.0 % | +| c-api/objimpl.po | 100.0 % | 0.0 % | 0.0 % | +| c-api/refcounting.po | 100.0 % | 0.0 % | 0.0 % | +| c-api/reflection.po | 100.0 % | 0.0 % | 0.0 % | +| c-api/sequence.po | 100.0 % | 0.0 % | 0.0 % | +| c-api/set.po | 100.0 % | 3.0 % | 0.0 % | +| c-api/slice.po | 100.0 % | 0.0 % | 0.0 % | +| c-api/stable.po | 100.0 % | 0.0 % | 0.0 % | +| c-api/structures.po | 68.6 % | 0.0 % | 0.0 % | +| c-api/sys.po | 88.6 % | 0.0 % | 0.0 % | +| c-api/tuple.po | 89.4 % | 0.0 % | 0.0 % | +| c-api/type.po | 80.8 % | 0.0 % | 0.0 % | +| c-api/typehints.po | 37.4 % | 0.0 % | 0.0 % | +| c-api/typeobj.po | 92.3 % | 0.0 % | 0.0 % | +| c-api/unicode.po | 87.3 % | 0.0 % | 0.0 % | +| c-api/utilities.po | 100.0 % | 0.0 % | 0.0 % | +| c-api/veryhigh.po | 94.2 % | 0.0 % | 0.0 % | +| c-api/weakref.po | 36.8 % | 0.0 % | 0.0 % | +| distributing/index.po | 100.0 % | 0.0 % | 0.0 % | +| distutils/.setuptools.disclaimer.po | 100.0 % | 0.0 % | 0.0 % | +| distutils/apiref.po | 99.6 % | 0.0 % | 0.0 % | +| distutils/builtdist.po | 100.0 % | 0.0 % | 0.0 % | +| distutils/commandref.po | 100.0 % | 0.0 % | 0.0 % | +| distutils/configfile.po | 100.0 % | 0.0 % | 0.0 % | +| distutils/examples.po | 100.0 % | 0.0 % | 0.0 % | +| distutils/extending.po | 100.0 % | 0.0 % | 0.0 % | +| distutils/index.po | 100.0 % | 0.0 % | 0.0 % | +| distutils/introduction.po | 100.0 % | 0.0 % | 0.0 % | +| distutils/packageindex.po | 100.0 % | 0.0 % | 0.0 % | +| distutils/setupscript.po | 100.0 % | 0.0 % | 0.0 % | +| distutils/sourcedist.po | 98.9 % | 0.0 % | 0.0 % | +| distutils/uploading.po | 100.0 % | 0.0 % | 0.0 % | +| extending/building.po | 97.6 % | 0.0 % | 0.0 % | +| extending/embedding.po | 99.2 % | 0.0 % | 0.0 % | +| extending/extending.po | 93.5 % | 0.0 % | 0.0 % | +| extending/index.po | 86.4 % | 0.0 % | 0.0 % | +| extending/newtypes.po | 89.9 % | 0.0 % | 0.0 % | +| extending/newtypes.tutorial.po | 97.6 % | 0.0 % | 0.0 % | +| extending/windows.po | 100.0 % | 0.0 % | 0.0 % | +| faq/design.po | 96.6 % | 96.6 % | 0.0 % | +| faq/extending.po | 90.4 % | 90.4 % | 0.0 % | +| faq/general.po | 80.6 % | 80.6 % | 0.0 % | +| faq/gui.po | 90.3 % | 90.3 % | 0.0 % | +| faq/index.po | 100.0 % | 100.0 % | 0.0 % | +| faq/installed.po | 100.0 % | 100.0 % | 0.0 % | +| faq/library.po | 98.5 % | 0.0 % | 0.0 % | +| faq/programming.po | 81.8 % | 0.0 % | 0.0 % | +| faq/windows.po | 87.3 % | 0.0 % | 0.0 % | +| howto/annotations.po | 96.7 % | 0.0 % | 0.0 % | +| howto/argparse.po | 100.0 % | 0.0 % | 0.0 % | +| howto/clinic.po | 98.0 % | 0.0 % | 0.0 % | +| howto/cporting.po | 100.0 % | 0.0 % | 0.0 % | +| howto/curses.po | 97.4 % | 0.0 % | 0.0 % | +| howto/descriptor.po | 98.2 % | 0.0 % | 0.0 % | +| howto/enum.po | 77.8 % | 0.0 % | 0.0 % | +| howto/functional.po | 98.0 % | 0.0 % | 0.0 % | +| howto/index.po | 100.0 % | 0.0 % | 0.0 % | +| howto/instrumentation.po | 93.3 % | 0.0 % | 0.0 % | +| howto/ipaddress.po | 100.0 % | 0.0 % | 0.0 % | +| howto/logging-cookbook.po | 81.4 % | 0.0 % | 0.0 % | +| howto/logging.po | 96.6 % | 0.0 % | 0.0 % | +| howto/pyporting.po | 100.0 % | 0.0 % | 0.0 % | +| howto/regex.po | 96.2 % | 0.0 % | 0.0 % | +| howto/sockets.po | 100.0 % | 0.0 % | 0.0 % | +| howto/sorting.po | 83.3 % | 0.0 % | 0.0 % | +| howto/unicode.po | 98.0 % | 0.0 % | 0.0 % | +| howto/urllib2.po | 94.3 % | 0.0 % | 0.0 % | +| install/index.po | 97.7 % | 0.0 % | 0.0 % | +| installing/index.po | 99.2 % | 0.0 % | 0.0 % | +| library/2to3.po | 96.8 % | 0.0 % | 0.0 % | +| library/..future.po | 100.0 % | 0.0 % | 0.0 % | +| library/..main.po | 97.4 % | 0.0 % | 0.0 % | +| library/.thread.po | 91.1 % | 0.0 % | 0.0 % | +| library/abc.po | 95.6 % | 0.0 % | 0.0 % | +| library/aifc.po | 100.0 % | 0.0 % | 0.0 % | +| library/allos.po | 100.0 % | 0.0 % | 0.0 % | +| library/archiving.po | 100.0 % | 0.0 % | 0.0 % | +| library/argparse.po | 84.5 % | 0.0 % | 0.0 % | +| library/array.po | 88.5 % | 0.0 % | 0.0 % | +| library/ast.po | 93.9 % | 0.0 % | 0.0 % | +| library/asynchat.po | 89.8 % | 0.0 % | 0.0 % | +| library/asyncio-api-index.po | 80.2 % | 0.0 % | 0.0 % | +| library/asyncio-dev.po | 81.9 % | 0.0 % | 0.0 % | +| library/asyncio-eventloop.po | 85.8 % | 0.0 % | 0.0 % | +| library/asyncio-exceptions.po | 91.8 % | 0.0 % | 0.0 % | +| library/asyncio-future.po | 93.4 % | 0.0 % | 0.0 % | +| library/asyncio-llapi-index.po | 93.4 % | 0.0 % | 0.0 % | +| library/asyncio-platforms.po | 87.9 % | 0.0 % | 0.0 % | +| library/asyncio-policy.po | 86.4 % | 0.0 % | 0.0 % | +| library/asyncio-protocol.po | 97.5 % | 0.0 % | 0.0 % | +| library/asyncio-queue.po | 100.0 % | 0.0 % | 0.0 % | +| library/asyncio-stream.po | 79.3 % | 0.0 % | 0.0 % | +| library/asyncio-subprocess.po | 98.6 % | 0.0 % | 0.0 % | +| library/asyncio-sync.po | 74.6 % | 0.0 % | 0.0 % | +| library/asyncio-task.po | 57.9 % | 0.0 % | 0.0 % | +| library/asyncio.po | 81.0 % | 81.0 % | 0.0 % | +| library/asyncore.po | 97.2 % | 0.0 % | 0.0 % | +| library/atexit.po | 100.0 % | 0.0 % | 0.0 % | +| library/audioop.po | 100.0 % | 0.0 % | 0.0 % | +| library/audit.events.po | 100.0 % | 0.0 % | 0.0 % | +| library/base64.po | 90.8 % | 0.0 % | 0.0 % | +| library/bdb.po | 64.8 % | 0.0 % | 0.0 % | +| library/binary.po | 100.0 % | 0.0 % | 0.0 % | +| library/binascii.po | 86.0 % | 0.0 % | 0.0 % | +| library/binhex.po | 4.8 % | 0.0 % | 0.0 % | +| library/bisect.po | 97.8 % | 0.0 % | 0.0 % | +| library/builtins.po | 100.0 % | 0.0 % | 0.0 % | +| library/bz2.po | 94.0 % | 0.0 % | 0.0 % | +| library/calendar.po | 95.1 % | 0.0 % | 0.0 % | +| library/cgi.po | 93.4 % | 0.0 % | 0.0 % | +| library/cgitb.po | 100.0 % | 0.0 % | 0.0 % | +| library/chunk.po | 100.0 % | 0.0 % | 0.0 % | +| library/cmath.po | 68.3 % | 0.0 % | 0.0 % | +| library/cmd.po | 97.6 % | 0.0 % | 0.0 % | +| library/code.po | 100.0 % | 0.0 % | 0.0 % | +| library/codecs.po | 99.2 % | 0.0 % | 0.0 % | +| library/codeop.po | 57.0 % | 0.0 % | 0.0 % | +| library/collections.abc.po | 88.7 % | 0.0 % | 0.0 % | +| library/collections.po | 98.6 % | 0.0 % | 0.0 % | +| library/colorsys.po | 100.0 % | 0.0 % | 0.0 % | +| library/compileall.po | 96.4 % | 0.0 % | 0.0 % | +| library/concurrency.po | 100.0 % | 3.4 % | 0.0 % | +| library/concurrent.futures.po | 75.6 % | 0.0 % | 0.0 % | +| library/concurrent.po | 100.0 % | 0.0 % | 0.0 % | +| library/configparser.po | 97.7 % | 0.0 % | 0.0 % | +| library/constants.po | 100.0 % | 0.0 % | 0.0 % | +| library/contextlib.po | 95.0 % | 0.0 % | 0.0 % | +| library/contextvars.po | 91.6 % | 0.0 % | 0.0 % | +| library/copy.po | 100.0 % | 0.0 % | 0.0 % | +| library/copyreg.po | 54.8 % | 0.0 % | 0.0 % | +| library/crypt.po | 95.2 % | 0.0 % | 0.0 % | +| library/crypto.po | 100.0 % | 0.0 % | 0.0 % | +| library/csv.po | 97.1 % | 0.0 % | 0.0 % | +| library/ctypes.po | 87.8 % | 0.0 % | 0.0 % | +| library/curses.ascii.po | 99.5 % | 0.0 % | 0.0 % | +| library/curses.panel.po | 100.0 % | 0.0 % | 0.0 % | +| library/curses.po | 97.3 % | 0.0 % | 0.0 % | +| library/custominterp.po | 19.4 % | 0.0 % | 0.0 % | +| library/dataclasses.po | 80.1 % | 0.0 % | 0.0 % | +| library/datatypes.po | 100.0 % | 0.0 % | 0.0 % | +| library/datetime.po | 96.7 % | 0.0 % | 0.0 % | +| library/dbm.po | 99.2 % | 0.0 % | 0.0 % | +| library/debug.po | 100.0 % | 0.0 % | 0.0 % | +| library/decimal.po | 72.4 % | 0.0 % | 0.0 % | +| library/development.po | 100.0 % | 0.0 % | 0.0 % | +| library/devmode.po | 100.0 % | 0.0 % | 0.0 % | +| library/dialog.po | 100.0 % | 0.0 % | 0.0 % | +| library/difflib.po | 99.0 % | 0.0 % | 0.0 % | +| library/dis.po | 61.8 % | 0.0 % | 0.0 % | +| library/distribution.po | 100.0 % | 0.0 % | 0.0 % | +| library/distutils.po | 100.0 % | 0.0 % | 0.0 % | +| library/doctest.po | 98.7 % | 0.0 % | 0.0 % | +| library/email.charset.po | 88.7 % | 0.0 % | 0.0 % | +| library/email.compat32-message.po | 96.0 % | 0.0 % | 0.0 % | +| library/email.contentmanager.po | 100.0 % | 0.0 % | 0.0 % | +| library/email.encoders.po | 100.0 % | 0.0 % | 0.0 % | +| library/email.errors.po | 100.0 % | 0.0 % | 0.0 % | +| library/email.examples.po | 100.0 % | 0.0 % | 0.0 % | +| library/email.generator.po | 93.8 % | 0.0 % | 0.0 % | +| library/email.header.po | 100.0 % | 0.0 % | 0.0 % | +| library/email.headerregistry.po | 94.1 % | 0.0 % | 0.0 % | +| library/email.iterators.po | 100.0 % | 0.0 % | 0.0 % | +| library/email.message.po | 100.0 % | 0.0 % | 0.0 % | +| library/email.mime.po | 81.9 % | 0.0 % | 0.0 % | +| library/email.parser.po | 100.0 % | 0.0 % | 0.0 % | +| library/email.policy.po | 100.0 % | 0.0 % | 0.0 % | +| library/email.po | 100.0 % | 0.0 % | 0.0 % | +| library/email.utils.po | 100.0 % | 0.0 % | 0.0 % | +| library/ensurepip.po | 95.5 % | 0.0 % | 0.0 % | +| library/enum.po | 8.6 % | 0.0 % | 0.0 % | +| library/errno.po | 97.4 % | 0.0 % | 0.0 % | +| library/exceptions.po | 86.2 % | 0.0 % | 0.0 % | +| library/faulthandler.po | 95.3 % | 0.0 % | 0.0 % | +| library/fcntl.po | 95.4 % | 0.0 % | 0.0 % | +| library/filecmp.po | 100.0 % | 0.0 % | 0.0 % | +| library/fileformats.po | 100.0 % | 0.0 % | 0.0 % | +| library/fileinput.po | 91.7 % | 0.0 % | 0.0 % | +| library/filesys.po | 100.0 % | 0.0 % | 0.0 % | +| library/fnmatch.po | 91.1 % | 0.0 % | 0.0 % | +| library/fractions.po | 75.4 % | 0.0 % | 0.0 % | +| library/frameworks.po | 100.0 % | 0.0 % | 0.0 % | +| library/ftplib.po | 98.7 % | 0.0 % | 0.0 % | +| library/functional.po | 100.0 % | 0.0 % | 0.0 % | +| library/functions.po | 86.8 % | 3.4 % | 0.0 % | +| library/functools.po | 93.5 % | 0.0 % | 0.0 % | +| library/gc.po | 100.0 % | 0.0 % | 0.0 % | +| library/getopt.po | 100.0 % | 0.0 % | 0.0 % | +| library/getpass.po | 88.5 % | 0.0 % | 0.0 % | +| library/gettext.po | 96.2 % | 0.0 % | 0.0 % | +| library/glob.po | 80.1 % | 0.0 % | 0.0 % | +| library/graphlib.po | 96.4 % | 0.0 % | 0.0 % | +| library/grp.po | 86.7 % | 0.0 % | 0.0 % | +| library/gzip.po | 86.2 % | 0.0 % | 0.0 % | +| library/hashlib.po | 94.0 % | 0.0 % | 0.0 % | +| library/heapq.po | 100.0 % | 0.0 % | 0.0 % | +| library/hmac.po | 88.0 % | 0.0 % | 0.0 % | +| library/html.entities.po | 98.3 % | 0.0 % | 0.0 % | +| library/html.parser.po | 100.0 % | 0.0 % | 0.0 % | +| library/html.po | 100.0 % | 0.0 % | 0.0 % | +| library/http.client.po | 85.0 % | 0.0 % | 0.0 % | +| library/http.cookiejar.po | 95.2 % | 0.0 % | 0.0 % | +| library/http.cookies.po | 100.0 % | 0.0 % | 0.0 % | +| library/http.po | 85.3 % | 0.0 % | 0.0 % | +| library/http.server.po | 88.0 % | 0.0 % | 0.0 % | +| library/i18n.po | 100.0 % | 0.0 % | 0.0 % | +| library/idle.po | 91.9 % | 0.0 % | 0.0 % | +| library/imaplib.po | 98.9 % | 0.0 % | 0.0 % | +| library/imghdr.po | 100.0 % | 0.0 % | 0.0 % | +| library/imp.po | 100.0 % | 0.0 % | 0.0 % | +| library/importlib.metadata.po | 42.5 % | 0.0 % | 0.0 % | +| library/importlib.po | 81.3 % | 0.0 % | 0.0 % | +| library/index.po | 84.1 % | 0.0 % | 0.0 % | +| library/inspect.po | 84.7 % | 0.0 % | 0.0 % | +| library/internet.po | 100.0 % | 0.0 % | 0.0 % | +| library/intro.po | 56.8 % | 0.0 % | 0.0 % | +| library/io.po | 94.3 % | 0.2 % | 0.0 % | +| library/ipaddress.po | 100.0 % | 0.0 % | 0.0 % | +| library/ipc.po | 100.0 % | 0.0 % | 0.0 % | +| library/itertools.po | 71.7 % | 0.0 % | 0.0 % | +| library/json.po | 89.5 % | 0.0 % | 0.0 % | +| library/keyword.po | 100.0 % | 0.0 % | 0.0 % | +| library/language.po | 100.0 % | 0.0 % | 0.0 % | +| library/linecache.po | 100.0 % | 0.0 % | 0.0 % | +| library/locale.po | 88.7 % | 0.0 % | 0.0 % | +| library/logging.config.po | 89.6 % | 0.0 % | 0.0 % | +| library/logging.handlers.po | 93.1 % | 0.0 % | 0.0 % | +| library/logging.po | 92.9 % | 0.0 % | 0.0 % | +| library/lzma.po | 98.4 % | 0.0 % | 0.0 % | +| library/mailbox.po | 99.0 % | 0.0 % | 0.0 % | +| library/mailcap.po | 86.0 % | 0.0 % | 0.0 % | +| library/markup.po | 100.0 % | 0.0 % | 0.0 % | +| library/marshal.po | 100.0 % | 0.0 % | 0.0 % | +| library/math.po | 94.0 % | 0.0 % | 0.0 % | +| library/mimetypes.po | 100.0 % | 0.0 % | 0.0 % | +| library/mm.po | 100.0 % | 0.0 % | 0.0 % | +| library/mmap.po | 94.1 % | 94.1 % | 0.0 % | +| library/modulefinder.po | 100.0 % | 0.0 % | 0.0 % | +| library/modules.po | 100.0 % | 0.0 % | 0.0 % | +| library/msilib.po | 95.0 % | 0.0 % | 0.0 % | +| library/msvcrt.po | 100.0 % | 0.0 % | 0.0 % | +| library/multiprocessing.po | 96.7 % | 0.0 % | 0.0 % | +| library/multiprocessing.shared.memory.po | 1.5 % | 0.0 % | 0.0 % | +| library/netdata.po | 100.0 % | 0.0 % | 0.0 % | +| library/netrc.po | 85.3 % | 0.0 % | 0.0 % | +| library/nis.po | 87.9 % | 0.0 % | 0.0 % | +| library/nntplib.po | 98.9 % | 0.0 % | 0.0 % | +| library/numbers.po | 94.7 % | 0.0 % | 0.0 % | +| library/numeric.po | 100.0 % | 0.0 % | 0.0 % | +| library/operator.po | 97.3 % | 0.0 % | 0.0 % | +| library/optparse.po | 97.4 % | 0.0 % | 0.0 % | +| library/os.path.po | 88.0 % | 0.0 % | 0.0 % | +| library/os.po | 91.0 % | 0.0 % | 0.0 % | +| library/ossaudiodev.po | 100.0 % | 0.0 % | 0.0 % | +| library/othergui.po | 100.0 % | 0.0 % | 0.0 % | +| library/pathlib.po | 92.3 % | 0.0 % | 0.0 % | +| library/pdb.po | 78.0 % | 0.0 % | 0.0 % | +| library/persistence.po | 100.0 % | 0.0 % | 0.0 % | +| library/pickle.po | 96.4 % | 0.0 % | 0.0 % | +| library/pickletools.po | 100.0 % | 0.0 % | 0.0 % | +| library/pipes.po | 98.3 % | 0.0 % | 0.0 % | +| library/pkgutil.po | 100.0 % | 0.0 % | 0.0 % | +| library/platform.po | 100.0 % | 0.0 % | 0.0 % | +| library/plistlib.po | 100.0 % | 0.0 % | 0.0 % | +| library/poplib.po | 94.6 % | 0.0 % | 0.0 % | +| library/posix.po | 72.8 % | 0.0 % | 0.0 % | +| library/pprint.po | 85.1 % | 0.0 % | 0.0 % | +| library/profile.po | 98.5 % | 0.0 % | 0.0 % | +| library/pty.po | 100.0 % | 0.0 % | 0.0 % | +| library/pwd.po | 90.7 % | 0.0 % | 0.0 % | +| library/py.compile.po | 84.1 % | 0.0 % | 0.0 % | +| library/pyclbr.po | 100.0 % | 0.0 % | 0.0 % | +| library/pydoc.po | 74.9 % | 0.0 % | 0.0 % | +| library/pyexpat.po | 98.0 % | 0.0 % | 0.0 % | +| library/python.po | 100.0 % | 0.0 % | 0.0 % | +| library/queue.po | 68.8 % | 0.0 % | 0.0 % | +| library/quopri.po | 100.0 % | 0.0 % | 0.0 % | +| library/random.po | 89.2 % | 0.5 % | 0.0 % | +| library/re.po | 88.5 % | 0.0 % | 0.0 % | +| library/readline.po | 98.7 % | 0.0 % | 0.0 % | +| library/reprlib.po | 97.9 % | 0.0 % | 0.0 % | +| library/resource.po | 96.3 % | 0.0 % | 0.0 % | +| library/rlcompleter.po | 100.0 % | 0.0 % | 0.0 % | +| library/runpy.po | 100.0 % | 0.0 % | 0.0 % | +| library/sched.po | 100.0 % | 0.0 % | 0.0 % | +| library/secrets.po | 86.3 % | 0.0 % | 0.0 % | +| library/select.po | 85.2 % | 0.0 % | 0.0 % | +| library/selectors.po | 97.0 % | 0.0 % | 0.0 % | +| library/shelve.po | 99.4 % | 0.0 % | 0.0 % | +| library/shlex.po | 100.0 % | 0.0 % | 0.0 % | +| library/shutil.po | 96.2 % | 0.0 % | 0.0 % | +| library/signal.po | 91.5 % | 0.0 % | 0.0 % | +| library/site.po | 99.5 % | 0.0 % | 0.0 % | +| library/smtpd.po | 93.7 % | 0.0 % | 0.0 % | +| library/smtplib.po | 99.1 % | 0.0 % | 0.0 % | +| library/sndhdr.po | 81.3 % | 0.0 % | 0.0 % | +| library/socket.po | 91.1 % | 0.0 % | 0.0 % | +| library/socketserver.po | 95.1 % | 0.0 % | 0.0 % | +| library/spwd.po | 90.1 % | 0.0 % | 0.0 % | +| library/sqlite3.po | 16.0 % | 0.0 % | 0.0 % | +| library/ssl.po | 96.3 % | 0.0 % | 0.0 % | +| library/stat.po | 100.0 % | 0.0 % | 0.0 % | +| library/statistics.po | 91.8 % | 0.0 % | 0.0 % | +| library/stdtypes.po | 92.5 % | 0.0 % | 0.0 % | +| library/string.po | 96.1 % | 0.0 % | 0.0 % | +| library/stringprep.po | 100.0 % | 0.0 % | 0.0 % | +| library/struct.po | 55.0 % | 0.0 % | 0.0 % | +| library/subprocess.po | 85.2 % | 0.0 % | 0.0 % | +| library/sunau.po | 100.0 % | 0.0 % | 0.0 % | +| library/superseded.po | 100.0 % | 0.0 % | 0.0 % | +| library/symtable.po | 95.8 % | 0.0 % | 0.0 % | +| library/sys.po | 87.6 % | 0.0 % | 0.0 % | +| library/sysconfig.po | 90.7 % | 0.0 % | 0.0 % | +| library/syslog.po | 84.4 % | 0.0 % | 0.0 % | +| library/tabnanny.po | 100.0 % | 0.0 % | 0.0 % | +| library/tarfile.po | 96.0 % | 0.0 % | 0.0 % | +| library/telnetlib.po | 97.2 % | 0.0 % | 0.0 % | +| library/tempfile.po | 98.1 % | 0.0 % | 0.0 % | +| library/termios.po | 88.1 % | 0.0 % | 0.0 % | +| library/test.po | 98.3 % | 0.0 % | 0.0 % | +| library/text.po | 100.0 % | 0.0 % | 0.0 % | +| library/textwrap.po | 100.0 % | 0.0 % | 0.0 % | +| library/threading.po | 95.7 % | 0.0 % | 0.0 % | +| library/time.po | 88.1 % | 0.0 % | 0.0 % | +| library/timeit.po | 98.9 % | 0.0 % | 0.0 % | +| library/tk.po | 100.0 % | 0.0 % | 0.0 % | +| library/tkinter.colorchooser.po | 100.0 % | 0.0 % | 0.0 % | +| library/tkinter.dnd.po | 100.0 % | 0.0 % | 0.0 % | +| library/tkinter.font.po | 100.0 % | 0.0 % | 0.0 % | +| library/tkinter.messagebox.po | 100.0 % | 0.0 % | 0.0 % | +| library/tkinter.po | 98.5 % | 0.0 % | 0.0 % | +| library/tkinter.scrolledtext.po | 100.0 % | 0.0 % | 0.0 % | +| library/tkinter.tix.po | 46.4 % | 0.0 % | 0.0 % | +| library/tkinter.ttk.po | 97.2 % | 0.0 % | 0.0 % | +| library/token.po | 100.0 % | 0.0 % | 0.0 % | +| library/tokenize.po | 100.0 % | 0.0 % | 0.0 % | +| library/trace.po | 100.0 % | 0.0 % | 0.0 % | +| library/traceback.po | 91.0 % | 0.0 % | 0.0 % | +| library/tracemalloc.po | 100.0 % | 0.0 % | 0.0 % | +| library/tty.po | 100.0 % | 0.0 % | 0.0 % | +| library/turtle.po | 90.2 % | 0.0 % | 0.0 % | +| library/types.po | 95.1 % | 0.0 % | 0.0 % | +| library/typing.po | 65.5 % | 0.0 % | 0.0 % | +| library/undoc.po | 100.0 % | 0.0 % | 0.0 % | +| library/unicodedata.po | 94.7 % | 0.0 % | 0.0 % | +| library/unittest.mock-examples.po | 96.9 % | 0.0 % | 0.0 % | +| library/unittest.mock.po | 98.2 % | 0.0 % | 0.0 % | +| library/unittest.po | 95.7 % | 0.0 % | 0.0 % | +| library/unix.po | 100.0 % | 0.0 % | 0.0 % | +| library/urllib.error.po | 100.0 % | 0.0 % | 0.0 % | +| library/urllib.parse.po | 99.8 % | 0.0 % | 0.0 % | +| library/urllib.po | 100.0 % | 0.0 % | 0.0 % | +| library/urllib.request.po | 98.6 % | 0.0 % | 0.0 % | +| library/urllib.robotparser.po | 100.0 % | 0.0 % | 0.0 % | +| library/uu.po | 100.0 % | 0.0 % | 0.0 % | +| library/uuid.po | 98.4 % | 0.0 % | 0.0 % | +| library/venv.po | 54.2 % | 0.0 % | 0.0 % | +| library/warnings.po | 96.8 % | 0.0 % | 0.0 % | +| library/wave.po | 95.5 % | 0.0 % | 0.0 % | +| library/weakref.po | 90.3 % | 0.0 % | 0.0 % | +| library/webbrowser.po | 95.8 % | 0.0 % | 0.0 % | +| library/windows.po | 100.0 % | 0.0 % | 0.0 % | +| library/winreg.po | 96.7 % | 0.0 % | 0.0 % | +| library/winsound.po | 100.0 % | 0.0 % | 0.0 % | +| library/wsgiref.po | 86.8 % | 0.0 % | 0.0 % | +| library/xdrlib.po | 100.0 % | 0.0 % | 0.0 % | +| library/xml.dom.minidom.po | 92.0 % | 0.0 % | 0.0 % | +| library/xml.dom.po | 100.0 % | 0.0 % | 0.0 % | +| library/xml.dom.pulldom.po | 98.3 % | 0.0 % | 0.0 % | +| library/xml.etree.elementtree.po | 100.0 % | 0.0 % | 0.0 % | +| library/xml.po | 90.8 % | 0.0 % | 0.0 % | +| library/xml.sax.handler.po | 100.0 % | 0.0 % | 0.0 % | +| library/xml.sax.po | 100.0 % | 0.0 % | 0.0 % | +| library/xml.sax.reader.po | 100.0 % | 0.0 % | 0.0 % | +| library/xml.sax.utils.po | 100.0 % | 0.0 % | 0.0 % | +| library/xmlrpc.client.po | 89.1 % | 0.0 % | 0.0 % | +| library/xmlrpc.po | 100.0 % | 0.0 % | 0.0 % | +| library/xmlrpc.server.po | 97.0 % | 0.0 % | 0.0 % | +| library/zipapp.po | 97.0 % | 0.0 % | 0.0 % | +| library/zipfile.po | 81.5 % | 0.0 % | 0.0 % | +| library/zipimport.po | 100.0 % | 0.0 % | 0.0 % | +| library/zlib.po | 92.1 % | 0.0 % | 0.0 % | +| library/zoneinfo.po | 98.4 % | 0.0 % | 0.0 % | +| reference/compound.stmts.po | 81.6 % | 0.0 % | 0.0 % | +| reference/datamodel.po | 92.8 % | 0.0 % | 0.0 % | +| reference/executionmodel.po | 92.5 % | 0.0 % | 0.0 % | +| reference/expressions.po | 90.2 % | 0.0 % | 0.0 % | +| reference/grammar.po | 32.1 % | 0.0 % | 0.0 % | +| reference/import.po | 93.1 % | 0.0 % | 0.0 % | +| reference/index.po | 100.0 % | 0.0 % | 0.0 % | +| reference/introduction.po | 82.3 % | 0.0 % | 0.0 % | +| reference/lexical.analysis.po | 94.7 % | 0.0 % | 0.0 % | +| reference/simple.stmts.po | 96.3 % | 0.0 % | 0.0 % | +| reference/toplevel.components.po | 100.0 % | 0.0 % | 0.0 % | +| tutorial/appendix.po | 100.0 % | 74.2 % | 0.0 % | +| tutorial/appetite.po | 100.0 % | 76.1 % | 0.0 % | +| tutorial/classes.po | 96.6 % | 0.0 % | 0.0 % | +| tutorial/controlflow.po | 98.1 % | 0.0 % | 0.0 % | +| tutorial/datastructures.po | 97.2 % | 0.0 % | 0.0 % | +| tutorial/errors.po | 65.9 % | 33.6 % | 0.0 % | +| tutorial/floatingpoint.po | 95.3 % | 0.0 % | 0.0 % | +| tutorial/index.po | 100.0 % | 100.0 % | 0.0 % | +| tutorial/inputoutput.po | 92.0 % | 0.0 % | 0.0 % | +| tutorial/interactive.po | 100.0 % | 0.0 % | 0.0 % | +| tutorial/interpreter.po | 85.6 % | 0.0 % | 0.0 % | +| tutorial/introduction.po | 96.8 % | 0.0 % | 0.0 % | +| tutorial/modules.po | 88.5 % | 0.0 % | 0.0 % | +| tutorial/stdlib.po | 100.0 % | 0.0 % | 0.0 % | +| tutorial/stdlib2.po | 100.0 % | 0.0 % | 0.0 % | +| tutorial/venv.po | 76.1 % | 0.0 % | 0.0 % | +| tutorial/whatnow.po | 77.2 % | 77.2 % | 0.0 % | +| using/cmdline.po | 88.7 % | 0.0 % | 0.0 % | +| using/configure.po | 79.3 % | 0.0 % | 0.0 % | +| using/editors.po | 100.0 % | 0.0 % | 0.0 % | +| using/index.po | 100.0 % | 0.0 % | 0.0 % | +| using/mac.po | 81.7 % | 0.0 % | 0.0 % | +| using/unix.po | 83.9 % | 0.0 % | 0.0 % | +| using/windows.po | 80.2 % | 0.0 % | 0.0 % | +| whatsnew/2.0.po | 97.3 % | 0.0 % | 0.0 % | +| whatsnew/2.1.po | 98.8 % | 0.0 % | 0.0 % | +| whatsnew/2.2.po | 98.2 % | 0.0 % | 0.0 % | +| whatsnew/2.3.po | 97.6 % | 0.0 % | 0.0 % | +| whatsnew/2.4.po | 94.4 % | 0.0 % | 0.0 % | +| whatsnew/2.5.po | 94.0 % | 0.0 % | 0.0 % | +| whatsnew/2.6.po | 97.1 % | 0.0 % | 0.0 % | +| whatsnew/2.7.po | 97.2 % | 0.0 % | 0.0 % | +| whatsnew/3.0.po | 99.2 % | 0.0 % | 0.0 % | +| whatsnew/3.1.po | 94.1 % | 0.0 % | 0.0 % | +| whatsnew/3.10.po | 90.4 % | 0.0 % | 0.0 % | +| whatsnew/3.2.po | 96.4 % | 0.0 % | 0.0 % | +| whatsnew/3.3.po | 97.3 % | 0.0 % | 0.0 % | +| whatsnew/3.4.po | 98.8 % | 0.0 % | 0.0 % | +| whatsnew/3.5.po | 98.5 % | 0.0 % | 0.0 % | +| whatsnew/3.6.po | 98.0 % | 0.0 % | 0.0 % | +| whatsnew/3.7.po | 96.3 % | 0.0 % | 0.0 % | +| whatsnew/3.8.po | 98.9 % | 0.0 % | 0.0 % | +| whatsnew/3.9.po | 98.2 % | 0.0 % | 0.0 % | +| whatsnew/changelog.po | 100.0 % | 0.0 % | 0.0 % | +| whatsnew/index.po | 100.0 % | 0.0 % | 0.0 % | +| c-api/objbuffer.po | 100.0 % | 0.0 % | 0.0 % | +| library/security.warnings.po | 62.6 % | 0.0 % | 0.0 % | +| c-api/frame.po | 0.0 % | 0.0 % | 0.0 % | +| howto/isolating-extensions.po | 0.3 % | 0.0 % | 0.0 % | +| includes/wasm-notavail.po | 0.0 % | 0.0 % | 0.0 % | +| library/asyncio-extending.po | 0.0 % | 0.0 % | 0.0 % | +| library/asyncio-runner.po | 0.2 % | 0.0 % | 0.0 % | +| library/importlib.resources.po | 0.0 % | 0.0 % | 0.0 % | +| library/importlib.resources.abc.po | 85.0 % | 0.0 % | 0.0 % | +| library/sys.path.init.po | 0.3 % | 0.0 % | 0.0 % | +| library/tomllib.po | 6.5 % | 0.0 % | 0.0 % | +| whatsnew/3.11.po | 1.4 % | 0.0 % | 0.0 % | diff --git a/TEAM.md b/TEAM.md new file mode 100644 index 000000000..a2b3f0f63 --- /dev/null +++ b/TEAM.md @@ -0,0 +1,45 @@ +| | Роль | Переклав | Переглянув | Вичитав | +|:---|:---|:---|:---|:---| +| u:kazanzhy | coordinator | 48858 | 301 | 0 | +| u:cocoatomo | coordinator | 0 | 0 | 0 | +| u:szrubkowski | reviewer | 0 | 0 | 0 | +| u:serhii_pavlenko | reviewer | 13 | 1 | 0 | +| u:andriisoldatenko | reviewer | 0 | 0 | 0 | +| u:yolgaai | reviewer | 53 | 91 | 0 | +| u:orgkhnargh | reviewer | 0 | 0 | 0 | +| u:IamTetiana | reviewer | 0 | 0 | 0 | +| u:alex.solonenko | reviewer | 0 | 0 | 0 | +| u:arthurdnu | reviewer | 0 | 0 | 0 | +| u:byme8 | reviewer | 5 | 13 | 0 | +| u:OlegVMelnyk | reviewer | 0 | 0 | 0 | +| u:dmitriy.golub | reviewer | 0 | 0 | 0 | +| u:fedorov.mykhailo | reviewer | 0 | 0 | 0 | +| u:nazar_q | reviewer | 0 | 0 | 0 | +| u:nickolai.zt | reviewer | 0 | 0 | 0 | +| u:roykoand | reviewer | 0 | 0 | 0 | +| u:brabadu | reviewer | 0 | 0 | 0 | +| u:NadiiaGorash | reviewer | 6 | 74 | 0 | +| u:melnnnika | reviewer | 0 | 0 | 0 | +| u:andrii_the_wise | reviewer | 0 | 0 | 0 | +| u:kuzyo.taras | reviewer | 3 | 38 | 0 | +| u:serhiy.romanov | reviewer | 0 | 0 | 0 | +| u:kvrware | reviewer | 0 | 0 | 0 | +| u:hyzyla | reviewer | 0 | 4 | 0 | +| u:kari0space | reviewer | 0 | 0 | 0 | +| u:VKa5 | reviewer | 67 | 369 | 0 | +| u:ElonMaks | reviewer | 0 | 0 | 0 | +| u:danberg | reviewer | 0 | 0 | 0 | +| u:webknjaz | reviewer | 0 | 0 | 0 | +| u:healplease | reviewer | 0 | 0 | 0 | +| u:hellowfacey | reviewer | 16 | 0 | 0 | +| u:Meliowant | reviewer | 0 | 0 | 0 | +| u:chernyshov.eugene | reviewer | 0 | 0 | 0 | +| u:atymoshchuk | reviewer | 0 | 0 | 0 | +| u:CrispCrow | reviewer | 0 | 1 | 0 | +| u:rotbartsemen | reviewer | 0 | 0 | 0 | +| u:artemdwo | reviewer | 0 | 0 | 0 | +| u:odinneodin | reviewer | 0 | 0 | 0 | +| u:staaceyD | reviewer | 10 | 0 | 0 | +| u:vk777 | reviewer | 0 | 0 | 0 | +| u:selfkilla666 | reviewer | 0 | 0 | 0 | +| u:Sofiiia18 | reviewer | 0 | 0 | 0 | From fb0551bbd905a216ede92994d68e7f7b881f2f46 Mon Sep 17 00:00:00 2001 From: Dmytro Kazanzhy Date: Mon, 5 Jun 2023 18:31:38 +0300 Subject: [PATCH 3/6] Add v3.12 (#11) --- .github/workflows/update-and-build.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/update-and-build.yml b/.github/workflows/update-and-build.yml index 9d35f8d5f..45b0a8fd8 100644 --- a/.github/workflows/update-and-build.yml +++ b/.github/workflows/update-and-build.yml @@ -10,7 +10,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - version: ['3.8', '3.9', '3.10', '3.11'] + version: ['3.8', '3.9', '3.10', '3.11', '3.12'] steps: - uses: styfle/cancel-workflow-action@main with: @@ -46,7 +46,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - version: ['3.8', '3.9', '3.10', '3.11'] + version: ['3.8', '3.9', '3.10', '3.11', '3.12'] format: [html, latex] needs: ['update-translation'] steps: @@ -75,7 +75,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - version: ['3.8', '3.9', '3.10', '3.11'] + version: ['3.8', '3.9', '3.10', '3.11', '3.12'] needs: ['build-translation'] steps: - uses: actions/download-artifact@master From f0acfa96267ea8c8b2759796fcc4382d1bae184a Mon Sep 17 00:00:00 2001 From: Dmytro Kazanzhy Date: Tue, 4 Feb 2025 00:35:29 +0000 Subject: [PATCH 4/6] Fix missing dependency. Add version 3.13 (#21) Fix missing dependency. Add version 3.13 --- .github/workflows/update-and-build.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/update-and-build.yml b/.github/workflows/update-and-build.yml index 45b0a8fd8..eca7adcc0 100644 --- a/.github/workflows/update-and-build.yml +++ b/.github/workflows/update-and-build.yml @@ -10,7 +10,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - version: ['3.8', '3.9', '3.10', '3.11', '3.12'] + version: ['3.8', '3.9', '3.10', '3.11', '3.12', '3.13'] steps: - uses: styfle/cancel-workflow-action@main with: @@ -20,7 +20,7 @@ jobs: python-version: 3 - run: curl -o- https://raw.githubusercontent.com/transifex/cli/master/install.sh | bash working-directory: /usr/local/bin - - run: pip install transifex-python + - run: pip install requests cogapp polib transifex-python sphinx-intl blurb six - uses: actions/checkout@master with: ref: ${{ matrix.version }} @@ -46,7 +46,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - version: ['3.8', '3.9', '3.10', '3.11', '3.12'] + version: ['3.8', '3.9', '3.10', '3.11', '3.12', '3.13'] format: [html, latex] needs: ['update-translation'] steps: @@ -75,7 +75,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - version: ['3.8', '3.9', '3.10', '3.11', '3.12'] + version: ['3.8', '3.9', '3.10', '3.11', '3.12', '3.13'] needs: ['build-translation'] steps: - uses: actions/download-artifact@master From 7eb1de429166b0b8f8c6bf1cb36f61c749d41c76 Mon Sep 17 00:00:00 2001 From: Dmytro Kazanzhy Date: Sun, 6 Apr 2025 23:04:12 +0000 Subject: [PATCH 5/6] Update ci/cd (#25) --- .github/workflows/update-and-build.yml | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/.github/workflows/update-and-build.yml b/.github/workflows/update-and-build.yml index eca7adcc0..f7d7899a2 100644 --- a/.github/workflows/update-and-build.yml +++ b/.github/workflows/update-and-build.yml @@ -1,3 +1,5 @@ +name: Translation and Linting Workflow + on: schedule: - cron: '0 6 * * *' @@ -9,6 +11,7 @@ jobs: update-translation: runs-on: ubuntu-latest strategy: + fail-fast: false matrix: version: ['3.8', '3.9', '3.10', '3.11', '3.12', '3.13'] steps: @@ -18,9 +21,10 @@ jobs: - uses: actions/setup-python@master with: python-version: 3 + - run: sudo apt-get install -y gettext - run: curl -o- https://raw.githubusercontent.com/transifex/cli/master/install.sh | bash working-directory: /usr/local/bin - - run: pip install requests cogapp polib transifex-python sphinx-intl blurb six + - run: pip install requests cogapp polib transifex-python sphinx-lint sphinx-intl blurb six - uses: actions/checkout@master with: ref: ${{ matrix.version }} @@ -40,11 +44,16 @@ jobs: github_token: ${{ secrets.GITHUB_TOKEN }} - uses: peter-evans/repository-dispatch@main with: - token: ${{ secrets.GITHUB_TOKEN }} - event-type: translation-updated + python-version: 3 + - uses: actions/checkout@master + with: + ref: ${{ matrix.version }} + - uses: rffontenelle/sphinx-lint-problem-matcher@v1.0.0 + - run: sphinx-lint build-translation: runs-on: ubuntu-latest strategy: + fail-fast: false matrix: version: ['3.8', '3.9', '3.10', '3.11', '3.12', '3.13'] format: [html, latex] @@ -52,7 +61,7 @@ jobs: steps: - uses: actions/setup-python@master with: - python-version: 3 + python-version: 3.12 # pin for Sphinx 3.4.3 in 3.10 branch (see #63) - uses: actions/checkout@master with: repository: python/cpython @@ -65,7 +74,8 @@ jobs: path: Doc/locales/uk/LC_MESSAGES - run: git pull working-directory: ./Doc/locales/uk/LC_MESSAGES - - run: make -e SPHINXOPTS="-D language='uk' -D gettext_compact=0" SPHINXERRORHANDLING="" ${{ matrix.format }} + - uses: sphinx-doc/github-problem-matcher@v1.1 + - run: make -e SPHINXOPTS=" -D language='uk' -W --keep-going" ${{ matrix.format }} working-directory: ./Doc - uses: actions/upload-artifact@master with: @@ -74,6 +84,7 @@ jobs: output-pdf: runs-on: ubuntu-latest strategy: + fail-fast: false matrix: version: ['3.8', '3.9', '3.10', '3.11', '3.12', '3.13'] needs: ['build-translation'] From f4f7d735cc59b98181254eebb9494f2b690412a4 Mon Sep 17 00:00:00 2001 From: Dmytro Kazanzhy Date: Thu, 1 May 2025 20:59:48 +0000 Subject: [PATCH 6/6] Fix ci/cd (#26) --- .github/scripts/manage_translation.py | 17 +- .github/workflows/update-and-build.yml | 65 +- Makefile | 5 + README.md | 2 +- RESOURCE.md | 899 +++++++++++++------------ 5 files changed, 514 insertions(+), 474 deletions(-) diff --git a/.github/scripts/manage_translation.py b/.github/scripts/manage_translation.py index 9bd60eb0a..8bb2d0b3e 100755 --- a/.github/scripts/manage_translation.py +++ b/.github/scripts/manage_translation.py @@ -15,9 +15,11 @@ RESOURCE_NAME_MAP = {'glossary_': 'glossary'} +LANG = 'uk' + ORGANISATION_ID = 'o:python-doc' PROJECT_ID = 'o:python-doc:p:python-newest' -LANGUAGE_ID = 'l:uk' +LANGUAGE_ID = f'l:{LANG}' ORGANISATION = transifex_api.Organization.get(id=ORGANISATION_ID) PROJECT = transifex_api.Project.get(id=PROJECT_ID) LANGUAGE = transifex_api.Language.get(id=LANGUAGE_ID) @@ -46,6 +48,10 @@ def recreate_config() -> None: f'file_filter = {path}\n', 'type = PO\n', 'source_lang = en\n', + 'minimum_perc = 0\n', + f'trans.{LANG} = {path}\n', + f'source_file = {path}\n', + f'resource_name = {resource.name}\n' )) @@ -88,15 +94,8 @@ def recreate_team_stats() -> None: fo.writelines(f"| {user} | {role} | {translators[user]} | {reviewers[user]} | {proofreaders[user]} |\n") -def fetch_translations(): - """Fetch translations from Transifex, remove source lines.""" - pull_return_code = os.system(f'tx pull -l uk --force --skip') - if pull_return_code != 0: - exit(pull_return_code) - - if __name__ == "__main__": - RUNNABLE_SCRIPTS = ('recreate_config', 'recreate_resource_stats', 'recreate_team_stats', 'fetch_translations') + RUNNABLE_SCRIPTS = ('recreate_config', 'recreate_resource_stats', 'recreate_team_stats') parser = ArgumentParser() parser.add_argument('cmd', nargs=1, choices=RUNNABLE_SCRIPTS) diff --git a/.github/workflows/update-and-build.yml b/.github/workflows/update-and-build.yml index f7d7899a2..17a1c1d4c 100644 --- a/.github/workflows/update-and-build.yml +++ b/.github/workflows/update-and-build.yml @@ -5,13 +5,15 @@ on: - cron: '0 6 * * *' push: branches: ['main'] + pull_request: + branches: ['main'] workflow_dispatch: jobs: + update-translation: runs-on: ubuntu-latest strategy: - fail-fast: false matrix: version: ['3.8', '3.9', '3.10', '3.11', '3.12', '3.13'] steps: @@ -20,40 +22,66 @@ jobs: access_token: ${{ secrets.GITHUB_TOKEN }} - uses: actions/setup-python@master with: - python-version: 3 - - run: sudo apt-get install -y gettext + python-version: '3.12' + - run: sudo apt-get install -y gettext rsync + - run: pip install transifex-python six sphinx-intl blurb - run: curl -o- https://raw.githubusercontent.com/transifex/cli/master/install.sh | bash working-directory: /usr/local/bin - - run: pip install requests cogapp polib transifex-python sphinx-lint sphinx-intl blurb six - uses: actions/checkout@master with: - ref: ${{ matrix.version }} - - run: .github/scripts/manage_translation.py recreate_config + repository: python/cpython + ref: main + - run: make gettext + working-directory: ./Doc + - run: sphinx-intl create-txconfig + working-directory: ./Doc/build + - run: sphinx-intl update-txconfig-resources --transifex-organization-name python-doc --transifex-project-name python-newest -d . -p gettext + working-directory: ./Doc/build env: TX_TOKEN: ${{ secrets.TX_TOKEN }} - - run: .github/scripts/manage_translation.py fetch_translations + - run: tx pull -l uk --force --skip + working-directory: ./Doc/build env: TX_TOKEN: ${{ secrets.TX_TOKEN }} - - run: git config --local user.email github-actions@github.com - - run: git config --local user.name "GitHub Action's update-translation job" - - run: git add . - - run: git commit -m 'Update translation from Transifex' || true + - run: find -name "*.po" -exec msgcat --no-location -o {} {} \; + working-directory: ./Doc/build + - uses: actions/checkout@master + with: + ref: ${{ matrix.version }} + path: ./Doc/build/uk/LC_MESSAGES + - run: | + git config --local user.email github-actions@github.com + git config --local user.name "GitHub Action's update-translation job" + git add -f . + git commit -m 'Update translation from Transifex' || true + working-directory: ./Doc/build/uk/LC_MESSAGES - uses: ad-m/github-push-action@master with: branch: ${{ matrix.version }} github_token: ${{ secrets.GITHUB_TOKEN }} - - uses: peter-evans/repository-dispatch@main + directory: ./Doc/build/uk/LC_MESSAGES + + lint-translation: + runs-on: ubuntu-latest + strategy: + matrix: + version: ['3.8', '3.9', '3.10', '3.11', '3.12', '3.13'] + needs: ['update-translation'] + continue-on-error: true + steps: + - uses: actions/setup-python@master with: - python-version: 3 + python-version: '3.12' + - run: pip install sphinx-lint - uses: actions/checkout@master with: ref: ${{ matrix.version }} - uses: rffontenelle/sphinx-lint-problem-matcher@v1.0.0 - run: sphinx-lint + build-translation: runs-on: ubuntu-latest strategy: - fail-fast: false matrix: version: ['3.8', '3.9', '3.10', '3.11', '3.12', '3.13'] format: [html, latex] @@ -61,7 +89,7 @@ jobs: steps: - uses: actions/setup-python@master with: - python-version: 3.12 # pin for Sphinx 3.4.3 in 3.10 branch (see #63) + python-version: '3.12' - uses: actions/checkout@master with: repository: python/cpython @@ -75,16 +103,17 @@ jobs: - run: git pull working-directory: ./Doc/locales/uk/LC_MESSAGES - uses: sphinx-doc/github-problem-matcher@v1.1 - - run: make -e SPHINXOPTS=" -D language='uk' -W --keep-going" ${{ matrix.format }} + - run: make -e SPHINXOPTS="-D language='uk' -D gettext_compact=0 --keep-going --color" SPHINXERRORHANDLING="" ${{ matrix.format }} working-directory: ./Doc - uses: actions/upload-artifact@master + if: success() || failure() with: name: build-${{ matrix.version }}-${{ matrix.format }} path: Doc/build/${{ matrix.format }} + output-pdf: runs-on: ubuntu-latest strategy: - fail-fast: false matrix: version: ['3.8', '3.9', '3.10', '3.11', '3.12', '3.13'] needs: ['build-translation'] @@ -94,7 +123,7 @@ jobs: name: build-${{ matrix.version }}-latex - run: sudo apt-get update - run: sudo apt-get install -y latexmk texlive-xetex fonts-freefont-otf xindy - - run: make -i + - run: make - uses: actions/upload-artifact@master with: name: build-${{ matrix.version }}-pdf diff --git a/Makefile b/Makefile index d627ab1de..7944113e7 100644 --- a/Makefile +++ b/Makefile @@ -102,6 +102,11 @@ ensure_prerequisites: exit 1; \ fi +.PHONY: sphinx-lint +sphinx-lint: + @echo "Checking all files using sphinx-lint..." + @sphinx-lint --enable all --disable line-too-long **/*.po + .PHONY: serve serve: $(MAKE) -C $(CPYTHON_PATH)/Doc/ serve diff --git a/README.md b/README.md index a24a51960..0c12e9ee0 100644 --- a/README.md +++ b/README.md @@ -49,7 +49,7 @@ Python Software Foundation [по ліцензії CC0](https://creativecommons.o **Оновлення локального перекладу** * `.github/scripts/manage_translation.py recreate_config` -* `.github/scripts/manage_translation.py fetch_translations` +* `tx pull -l uk --force --skip` **Подяка** * Maciej Olko - Polish team diff --git a/RESOURCE.md b/RESOURCE.md index c91d2c6e8..27b446fd2 100644 --- a/RESOURCE.md +++ b/RESOURCE.md @@ -1,503 +1,510 @@ | Файл | Перекладено | Переглянуто | Вичитано | |:-----|:-----|:-----|:-----| -| about.po | 93.4 % | 93.4 % | 0.0 % | -| bugs.po | 59.5 % | 59.5 % | 0.0 % | +| about.po | 70.8 % | 70.8 % | 0.0 % | +| bugs.po | 100.0 % | 90.9 % | 0.0 % | | contents.po | 100.0 % | 100.0 % | 0.0 % | -| copyright.po | 82.0 % | 82.0 % | 0.0 % | -| glossary.po | 93.6 % | 28.9 % | 0.0 % | -| license.po | 89.1 % | 89.1 % | 0.0 % | -| sphinx.po | 95.2 % | 95.2 % | 0.0 % | -| c-api/abstract.po | 100.0 % | 48.3 % | 0.0 % | -| c-api/allocation.po | 100.0 % | 0.0 % | 0.0 % | -| c-api/apiabiversion.po | 77.2 % | 0.0 % | 0.0 % | -| c-api/arg.po | 64.4 % | 0.0 % | 0.0 % | -| c-api/bool.po | 100.0 % | 0.0 % | 0.0 % | -| c-api/buffer.po | 99.0 % | 0.0 % | 0.0 % | -| c-api/bytearray.po | 93.0 % | 0.0 % | 0.0 % | -| c-api/bytes.po | 98.3 % | 0.0 % | 0.0 % | -| c-api/call.po | 93.1 % | 0.0 % | 0.0 % | -| c-api/capsule.po | 82.0 % | 0.0 % | 0.0 % | -| c-api/cell.po | 100.0 % | 0.0 % | 0.0 % | -| c-api/code.po | 24.5 % | 17.9 % | 0.0 % | +| copyright.po | 100.0 % | 82.0 % | 0.0 % | +| glossary.po | 67.6 % | 18.4 % | 0.0 % | +| license.po | 4.2 % | 4.2 % | 0.0 % | +| sphinx.po | 17.4 % | 17.2 % | 0.0 % | +| c-api/abstract.po | 100.0 % | 100.0 % | 0.0 % | +| c-api/allocation.po | 60.7 % | 17.0 % | 0.0 % | +| c-api/apiabiversion.po | 100.0 % | 0.0 % | 0.0 % | +| c-api/arg.po | 52.0 % | 0.3 % | 0.0 % | +| c-api/bool.po | 11.6 % | 0.0 % | 0.0 % | +| c-api/buffer.po | 73.9 % | 0.0 % | 0.0 % | +| c-api/bytearray.po | 83.5 % | 0.0 % | 0.0 % | +| c-api/bytes.po | 79.7 % | 0.0 % | 0.0 % | +| c-api/call.po | 74.3 % | 0.0 % | 0.0 % | +| c-api/capsule.po | 71.0 % | 0.0 % | 0.0 % | +| c-api/cell.po | 73.6 % | 0.0 % | 0.0 % | +| c-api/code.po | 7.6 % | 0.0 % | 0.0 % | | c-api/codec.po | 100.0 % | 0.0 % | 0.0 % | -| c-api/complex.po | 95.2 % | 0.0 % | 0.0 % | +| c-api/complex.po | 41.9 % | 0.0 % | 0.0 % | | c-api/concrete.po | 100.0 % | 0.0 % | 0.0 % | | c-api/contextvars.po | 100.0 % | 0.0 % | 0.0 % | -| c-api/conversion.po | 82.0 % | 7.0 % | 0.0 % | +| c-api/conversion.po | 60.5 % | 6.9 % | 0.0 % | | c-api/coro.po | 100.0 % | 0.0 % | 0.0 % | -| c-api/datetime.po | 98.6 % | 0.0 % | 0.0 % | +| c-api/datetime.po | 47.1 % | 4.5 % | 0.0 % | | c-api/descriptor.po | 100.0 % | 0.0 % | 0.0 % | -| c-api/dict.po | 77.0 % | 0.0 % | 0.0 % | -| c-api/exceptions.po | 84.5 % | 0.0 % | 0.0 % | -| c-api/file.po | 70.7 % | 0.0 % | 0.0 % | -| c-api/float.po | 17.3 % | 0.0 % | 0.0 % | -| c-api/function.po | 77.0 % | 0.0 % | 0.0 % | -| c-api/gcsupport.po | 100.0 % | 0.0 % | 0.0 % | +| c-api/dict.po | 33.3 % | 0.0 % | 0.0 % | +| c-api/exceptions.po | 54.2 % | 0.0 % | 0.0 % | +| c-api/file.po | 62.0 % | 0.0 % | 0.0 % | +| c-api/float.po | 12.2 % | 0.0 % | 0.0 % | +| c-api/function.po | 30.4 % | 0.0 % | 0.0 % | +| c-api/gcsupport.po | 65.3 % | 0.0 % | 0.0 % | | c-api/gen.po | 100.0 % | 0.0 % | 0.0 % | -| c-api/import.po | 94.7 % | 0.0 % | 0.0 % | +| c-api/import.po | 47.5 % | 0.0 % | 0.0 % | | c-api/index.po | 100.0 % | 0.0 % | 0.0 % | -| c-api/init.po | 91.3 % | 0.0 % | 0.0 % | -| c-api/init.config.po | 77.9 % | 0.0 % | 0.0 % | -| c-api/intro.po | 86.9 % | 0.0 % | 0.0 % | -| c-api/iter.po | 100.0 % | 28.0 % | 0.0 % | +| c-api/init.po | 51.4 % | 0.0 % | 0.0 % | +| c-api/init_config.po | 60.1 % | 0.0 % | 0.0 % | +| c-api/intro.po | 54.2 % | 0.0 % | 0.0 % | +| c-api/iter.po | 75.7 % | 21.2 % | 0.0 % | | c-api/iterator.po | 100.0 % | 0.0 % | 0.0 % | -| c-api/list.po | 97.2 % | 0.0 % | 0.0 % | -| c-api/long.po | 58.7 % | 0.0 % | 0.0 % | -| c-api/mapping.po | 100.0 % | 0.0 % | 0.0 % | -| c-api/marshal.po | 50.5 % | 0.0 % | 0.0 % | -| c-api/memory.po | 87.9 % | 0.0 % | 0.0 % | -| c-api/memoryview.po | 100.0 % | 0.0 % | 0.0 % | -| c-api/method.po | 100.0 % | 0.0 % | 0.0 % | -| c-api/module.po | 96.6 % | 0.0 % | 0.0 % | -| c-api/none.po | 100.0 % | 0.0 % | 0.0 % | -| c-api/number.po | 100.0 % | 0.0 % | 0.0 % | -| c-api/object.po | 85.9 % | 0.0 % | 0.0 % | +| c-api/list.po | 64.1 % | 0.0 % | 0.0 % | +| c-api/long.po | 18.3 % | 0.0 % | 0.0 % | +| c-api/mapping.po | 27.5 % | 0.0 % | 0.0 % | +| c-api/marshal.po | 37.2 % | 0.0 % | 0.0 % | +| c-api/memory.po | 64.5 % | 0.0 % | 0.0 % | +| c-api/memoryview.po | 92.1 % | 0.0 % | 0.0 % | +| c-api/method.po | 87.0 % | 0.0 % | 0.0 % | +| c-api/module.po | 55.5 % | 0.0 % | 0.0 % | +| c-api/none.po | 7.5 % | 0.0 % | 0.0 % | +| c-api/number.po | 89.2 % | 0.0 % | 0.0 % | +| c-api/object.po | 43.6 % | 0.0 % | 0.0 % | | c-api/objimpl.po | 100.0 % | 0.0 % | 0.0 % | -| c-api/refcounting.po | 100.0 % | 0.0 % | 0.0 % | -| c-api/reflection.po | 100.0 % | 0.0 % | 0.0 % | -| c-api/sequence.po | 100.0 % | 0.0 % | 0.0 % | -| c-api/set.po | 100.0 % | 3.0 % | 0.0 % | -| c-api/slice.po | 100.0 % | 0.0 % | 0.0 % | -| c-api/stable.po | 100.0 % | 0.0 % | 0.0 % | -| c-api/structures.po | 68.6 % | 0.0 % | 0.0 % | -| c-api/sys.po | 88.6 % | 0.0 % | 0.0 % | -| c-api/tuple.po | 89.4 % | 0.0 % | 0.0 % | -| c-api/type.po | 80.8 % | 0.0 % | 0.0 % | -| c-api/typehints.po | 37.4 % | 0.0 % | 0.0 % | -| c-api/typeobj.po | 92.3 % | 0.0 % | 0.0 % | -| c-api/unicode.po | 87.3 % | 0.0 % | 0.0 % | +| c-api/refcounting.po | 16.8 % | 0.0 % | 0.0 % | +| c-api/reflection.po | 33.0 % | 0.0 % | 0.0 % | +| c-api/sequence.po | 93.6 % | 0.0 % | 0.0 % | +| c-api/set.po | 76.2 % | 2.9 % | 0.0 % | +| c-api/slice.po | 61.6 % | 0.0 % | 0.0 % | +| c-api/stable.po | 51.4 % | 0.0 % | 0.0 % | +| c-api/structures.po | 22.7 % | 0.0 % | 0.0 % | +| c-api/sys.po | 68.5 % | 0.0 % | 0.0 % | +| c-api/tuple.po | 54.9 % | 0.0 % | 0.0 % | +| c-api/type.po | 35.9 % | 0.0 % | 0.0 % | +| c-api/typehints.po | 30.6 % | 0.0 % | 0.0 % | +| c-api/typeobj.po | 51.0 % | 0.0 % | 0.0 % | +| c-api/unicode.po | 44.8 % | 0.0 % | 0.0 % | | c-api/utilities.po | 100.0 % | 0.0 % | 0.0 % | -| c-api/veryhigh.po | 94.2 % | 0.0 % | 0.0 % | -| c-api/weakref.po | 36.8 % | 0.0 % | 0.0 % | +| c-api/veryhigh.po | 80.1 % | 0.0 % | 0.0 % | +| c-api/weakref.po | 15.8 % | 0.0 % | 0.0 % | | distributing/index.po | 100.0 % | 0.0 % | 0.0 % | -| distutils/.setuptools.disclaimer.po | 100.0 % | 0.0 % | 0.0 % | -| distutils/apiref.po | 99.6 % | 0.0 % | 0.0 % | -| distutils/builtdist.po | 100.0 % | 0.0 % | 0.0 % | -| distutils/commandref.po | 100.0 % | 0.0 % | 0.0 % | -| distutils/configfile.po | 100.0 % | 0.0 % | 0.0 % | -| distutils/examples.po | 100.0 % | 0.0 % | 0.0 % | -| distutils/extending.po | 100.0 % | 0.0 % | 0.0 % | -| distutils/index.po | 100.0 % | 0.0 % | 0.0 % | -| distutils/introduction.po | 100.0 % | 0.0 % | 0.0 % | -| distutils/packageindex.po | 100.0 % | 0.0 % | 0.0 % | -| distutils/setupscript.po | 100.0 % | 0.0 % | 0.0 % | -| distutils/sourcedist.po | 98.9 % | 0.0 % | 0.0 % | -| distutils/uploading.po | 100.0 % | 0.0 % | 0.0 % | -| extending/building.po | 97.6 % | 0.0 % | 0.0 % | -| extending/embedding.po | 99.2 % | 0.0 % | 0.0 % | -| extending/extending.po | 93.5 % | 0.0 % | 0.0 % | +| extending/building.po | 57.1 % | 0.0 % | 0.0 % | +| extending/embedding.po | 66.4 % | 0.0 % | 0.0 % | +| extending/extending.po | 65.0 % | 0.0 % | 0.0 % | | extending/index.po | 86.4 % | 0.0 % | 0.0 % | -| extending/newtypes.po | 89.9 % | 0.0 % | 0.0 % | -| extending/newtypes.tutorial.po | 97.6 % | 0.0 % | 0.0 % | -| extending/windows.po | 100.0 % | 0.0 % | 0.0 % | -| faq/design.po | 96.6 % | 96.6 % | 0.0 % | -| faq/extending.po | 90.4 % | 90.4 % | 0.0 % | -| faq/general.po | 80.6 % | 80.6 % | 0.0 % | -| faq/gui.po | 90.3 % | 90.3 % | 0.0 % | +| extending/newtypes.po | 56.2 % | 0.0 % | 0.0 % | +| extending/newtypes_tutorial.po | 31.8 % | 0.0 % | 0.0 % | +| extending/windows.po | 86.0 % | 0.0 % | 0.0 % | +| faq/design.po | 69.1 % | 69.1 % | 0.0 % | +| faq/extending.po | 75.0 % | 75.0 % | 0.0 % | +| faq/general.po | 68.8 % | 68.0 % | 0.0 % | +| faq/gui.po | 63.4 % | 63.4 % | 0.0 % | | faq/index.po | 100.0 % | 100.0 % | 0.0 % | | faq/installed.po | 100.0 % | 100.0 % | 0.0 % | -| faq/library.po | 98.5 % | 0.0 % | 0.0 % | -| faq/programming.po | 81.8 % | 0.0 % | 0.0 % | -| faq/windows.po | 87.3 % | 0.0 % | 0.0 % | -| howto/annotations.po | 96.7 % | 0.0 % | 0.0 % | -| howto/argparse.po | 100.0 % | 0.0 % | 0.0 % | -| howto/clinic.po | 98.0 % | 0.0 % | 0.0 % | +| faq/library.po | 70.5 % | 0.0 % | 0.0 % | +| faq/programming.po | 64.3 % | 0.0 % | 0.0 % | +| faq/windows.po | 83.9 % | 0.0 % | 0.0 % | +| howto/annotations.po | 84.7 % | 0.0 % | 0.0 % | +| howto/argparse.po | 36.3 % | 0.0 % | 0.0 % | +| howto/clinic.po | 100.0 % | 0.0 % | 0.0 % | | howto/cporting.po | 100.0 % | 0.0 % | 0.0 % | -| howto/curses.po | 97.4 % | 0.0 % | 0.0 % | -| howto/descriptor.po | 98.2 % | 0.0 % | 0.0 % | -| howto/enum.po | 77.8 % | 0.0 % | 0.0 % | -| howto/functional.po | 98.0 % | 0.0 % | 0.0 % | -| howto/index.po | 100.0 % | 0.0 % | 0.0 % | -| howto/instrumentation.po | 93.3 % | 0.0 % | 0.0 % | -| howto/ipaddress.po | 100.0 % | 0.0 % | 0.0 % | -| howto/logging-cookbook.po | 81.4 % | 0.0 % | 0.0 % | -| howto/logging.po | 96.6 % | 0.0 % | 0.0 % | -| howto/pyporting.po | 100.0 % | 0.0 % | 0.0 % | -| howto/regex.po | 96.2 % | 0.0 % | 0.0 % | -| howto/sockets.po | 100.0 % | 0.0 % | 0.0 % | -| howto/sorting.po | 83.3 % | 0.0 % | 0.0 % | -| howto/unicode.po | 98.0 % | 0.0 % | 0.0 % | -| howto/urllib2.po | 94.3 % | 0.0 % | 0.0 % | -| install/index.po | 97.7 % | 0.0 % | 0.0 % | -| installing/index.po | 99.2 % | 0.0 % | 0.0 % | -| library/2to3.po | 96.8 % | 0.0 % | 0.0 % | -| library/..future.po | 100.0 % | 0.0 % | 0.0 % | -| library/..main.po | 97.4 % | 0.0 % | 0.0 % | -| library/.thread.po | 91.1 % | 0.0 % | 0.0 % | -| library/abc.po | 95.6 % | 0.0 % | 0.0 % | -| library/aifc.po | 100.0 % | 0.0 % | 0.0 % | +| howto/curses.po | 63.7 % | 0.0 % | 0.0 % | +| howto/descriptor.po | 37.0 % | 0.0 % | 0.0 % | +| howto/enum.po | 30.1 % | 0.0 % | 0.0 % | +| howto/functional.po | 79.5 % | 0.0 % | 0.0 % | +| howto/index.po | 4.6 % | 0.0 % | 0.0 % | +| howto/instrumentation.po | 51.8 % | 0.0 % | 0.0 % | +| howto/ipaddress.po | 81.7 % | 0.0 % | 0.0 % | +| howto/logging-cookbook.po | 38.7 % | 0.0 % | 0.0 % | +| howto/logging.po | 77.1 % | 0.0 % | 0.0 % | +| howto/pyporting.po | 15.9 % | 0.0 % | 0.0 % | +| howto/regex.po | 90.6 % | 90.3 % | 0.0 % | +| howto/sockets.po | 93.5 % | 0.0 % | 0.0 % | +| howto/sorting.po | 42.9 % | 0.3 % | 0.0 % | +| howto/unicode.po | 82.8 % | 0.0 % | 0.0 % | +| howto/urllib2.po | 59.4 % | 0.0 % | 0.0 % | +| installing/index.po | 83.9 % | 0.0 % | 0.0 % | +| library/__future__.po | 58.8 % | 0.0 % | 0.0 % | +| library/__main__.po | 65.9 % | 0.0 % | 0.0 % | +| library/_thread.po | 74.7 % | 0.0 % | 0.0 % | +| library/abc.po | 42.8 % | 0.0 % | 0.0 % | | library/allos.po | 100.0 % | 0.0 % | 0.0 % | | library/archiving.po | 100.0 % | 0.0 % | 0.0 % | -| library/argparse.po | 84.5 % | 0.0 % | 0.0 % | -| library/array.po | 88.5 % | 0.0 % | 0.0 % | -| library/ast.po | 93.9 % | 0.0 % | 0.0 % | -| library/asynchat.po | 89.8 % | 0.0 % | 0.0 % | +| library/argparse.po | 37.3 % | 0.0 % | 0.0 % | +| library/array.po | 53.7 % | 0.0 % | 0.0 % | +| library/ast.po | 48.2 % | 0.0 % | 0.0 % | | library/asyncio-api-index.po | 80.2 % | 0.0 % | 0.0 % | -| library/asyncio-dev.po | 81.9 % | 0.0 % | 0.0 % | -| library/asyncio-eventloop.po | 85.8 % | 0.0 % | 0.0 % | -| library/asyncio-exceptions.po | 91.8 % | 0.0 % | 0.0 % | -| library/asyncio-future.po | 93.4 % | 0.0 % | 0.0 % | -| library/asyncio-llapi-index.po | 93.4 % | 0.0 % | 0.0 % | -| library/asyncio-platforms.po | 87.9 % | 0.0 % | 0.0 % | -| library/asyncio-policy.po | 86.4 % | 0.0 % | 0.0 % | -| library/asyncio-protocol.po | 97.5 % | 0.0 % | 0.0 % | -| library/asyncio-queue.po | 100.0 % | 0.0 % | 0.0 % | -| library/asyncio-stream.po | 79.3 % | 0.0 % | 0.0 % | -| library/asyncio-subprocess.po | 98.6 % | 0.0 % | 0.0 % | -| library/asyncio-sync.po | 74.6 % | 0.0 % | 0.0 % | -| library/asyncio-task.po | 57.9 % | 0.0 % | 0.0 % | -| library/asyncio.po | 81.0 % | 81.0 % | 0.0 % | -| library/asyncore.po | 97.2 % | 0.0 % | 0.0 % | -| library/atexit.po | 100.0 % | 0.0 % | 0.0 % | -| library/audioop.po | 100.0 % | 0.0 % | 0.0 % | -| library/audit.events.po | 100.0 % | 0.0 % | 0.0 % | -| library/base64.po | 90.8 % | 0.0 % | 0.0 % | -| library/bdb.po | 64.8 % | 0.0 % | 0.0 % | +| library/asyncio-dev.po | 59.5 % | 0.0 % | 0.0 % | +| library/asyncio-eventloop.po | 66.4 % | 0.0 % | 0.0 % | +| library/asyncio-exceptions.po | 86.2 % | 0.0 % | 0.0 % | +| library/asyncio-future.po | 77.8 % | 0.0 % | 0.0 % | +| library/asyncio-llapi-index.po | 91.2 % | 0.0 % | 0.0 % | +| library/asyncio-platforms.po | 79.8 % | 0.0 % | 0.0 % | +| library/asyncio-policy.po | 74.5 % | 0.0 % | 0.0 % | +| library/asyncio-protocol.po | 76.2 % | 0.0 % | 0.0 % | +| library/asyncio-queue.po | 55.2 % | 0.0 % | 0.0 % | +| library/asyncio-stream.po | 59.4 % | 0.0 % | 0.0 % | +| library/asyncio-subprocess.po | 70.7 % | 0.0 % | 0.0 % | +| library/asyncio-sync.po | 57.7 % | 0.0 % | 0.0 % | +| library/asyncio-task.po | 34.8 % | 0.0 % | 0.0 % | +| library/asyncio.po | 54.2 % | 50.0 % | 0.0 % | +| library/atexit.po | 72.6 % | 0.0 % | 0.0 % | +| library/audit_events.po | 73.0 % | 0.0 % | 0.0 % | +| library/base64.po | 84.8 % | 0.0 % | 0.0 % | +| library/bdb.po | 48.7 % | 0.0 % | 0.0 % | | library/binary.po | 100.0 % | 0.0 % | 0.0 % | -| library/binascii.po | 86.0 % | 0.0 % | 0.0 % | -| library/binhex.po | 4.8 % | 0.0 % | 0.0 % | -| library/bisect.po | 97.8 % | 0.0 % | 0.0 % | -| library/builtins.po | 100.0 % | 0.0 % | 0.0 % | -| library/bz2.po | 94.0 % | 0.0 % | 0.0 % | -| library/calendar.po | 95.1 % | 0.0 % | 0.0 % | -| library/cgi.po | 93.4 % | 0.0 % | 0.0 % | -| library/cgitb.po | 100.0 % | 0.0 % | 0.0 % | -| library/chunk.po | 100.0 % | 0.0 % | 0.0 % | -| library/cmath.po | 68.3 % | 0.0 % | 0.0 % | -| library/cmd.po | 97.6 % | 0.0 % | 0.0 % | -| library/code.po | 100.0 % | 0.0 % | 0.0 % | -| library/codecs.po | 99.2 % | 0.0 % | 0.0 % | -| library/codeop.po | 57.0 % | 0.0 % | 0.0 % | -| library/collections.abc.po | 88.7 % | 0.0 % | 0.0 % | -| library/collections.po | 98.6 % | 0.0 % | 0.0 % | -| library/colorsys.po | 100.0 % | 0.0 % | 0.0 % | -| library/compileall.po | 96.4 % | 0.0 % | 0.0 % | +| library/binascii.po | 83.2 % | 0.0 % | 0.0 % | +| library/bisect.po | 22.8 % | 0.0 % | 0.0 % | +| library/builtins.po | 63.1 % | 0.0 % | 0.0 % | +| library/bz2.po | 82.4 % | 0.0 % | 0.0 % | +| library/calendar.po | 48.4 % | 0.0 % | 0.0 % | +| library/cmath.po | 27.1 % | 0.0 % | 0.0 % | +| library/cmd.po | 40.4 % | 0.0 % | 0.0 % | +| library/code.po | 67.8 % | 0.0 % | 0.0 % | +| library/codecs.po | 95.1 % | 0.0 % | 0.0 % | +| library/codeop.po | 44.8 % | 0.0 % | 0.0 % | +| library/collections_abc.po | 25.5 % | 0.0 % | 0.0 % | +| library/collections.po | 66.4 % | 0.0 % | 0.0 % | +| library/colorsys.po | 41.8 % | 0.0 % | 0.0 % | +| library/compileall.po | 88.0 % | 0.0 % | 0.0 % | | library/concurrency.po | 100.0 % | 3.4 % | 0.0 % | -| library/concurrent.futures.po | 75.6 % | 0.0 % | 0.0 % | -| library/concurrent.po | 100.0 % | 0.0 % | 0.0 % | -| library/configparser.po | 97.7 % | 0.0 % | 0.0 % | -| library/constants.po | 100.0 % | 0.0 % | 0.0 % | -| library/contextlib.po | 95.0 % | 0.0 % | 0.0 % | -| library/contextvars.po | 91.6 % | 0.0 % | 0.0 % | -| library/copy.po | 100.0 % | 0.0 % | 0.0 % | -| library/copyreg.po | 54.8 % | 0.0 % | 0.0 % | -| library/crypt.po | 95.2 % | 0.0 % | 0.0 % | -| library/crypto.po | 100.0 % | 0.0 % | 0.0 % | -| library/csv.po | 97.1 % | 0.0 % | 0.0 % | -| library/ctypes.po | 87.8 % | 0.0 % | 0.0 % | -| library/curses.ascii.po | 99.5 % | 0.0 % | 0.0 % | -| library/curses.panel.po | 100.0 % | 0.0 % | 0.0 % | -| library/curses.po | 97.3 % | 0.0 % | 0.0 % | +| library/concurrent_futures.po | 52.4 % | 0.0 % | 0.0 % | +| library/concurrent.po | 82.4 % | 0.0 % | 0.0 % | +| library/configparser.po | 64.5 % | 0.0 % | 0.0 % | +| library/constants.po | 49.5 % | 0.0 % | 0.0 % | +| library/contextlib.po | 58.0 % | 0.0 % | 0.0 % | +| library/contextvars.po | 48.2 % | 0.0 % | 0.0 % | +| library/copy.po | 66.8 % | 0.0 % | 0.0 % | +| library/copyreg.po | 51.4 % | 0.0 % | 0.0 % | +| library/crypto.po | 7.1 % | 0.0 % | 0.0 % | +| library/csv.po | 56.8 % | 0.0 % | 0.0 % | +| library/ctypes.po | 48.9 % | 0.0 % | 0.0 % | +| library/curses_ascii.po | 97.6 % | 0.0 % | 0.0 % | +| library/curses_panel.po | 97.5 % | 0.0 % | 0.0 % | +| library/curses.po | 92.5 % | 0.0 % | 0.0 % | | library/custominterp.po | 19.4 % | 0.0 % | 0.0 % | -| library/dataclasses.po | 80.1 % | 0.0 % | 0.0 % | +| library/dataclasses.po | 10.8 % | 0.0 % | 0.0 % | | library/datatypes.po | 100.0 % | 0.0 % | 0.0 % | -| library/datetime.po | 96.7 % | 0.0 % | 0.0 % | -| library/dbm.po | 99.2 % | 0.0 % | 0.0 % | +| library/datetime.po | 45.7 % | 1.3 % | 0.0 % | +| library/dbm.po | 18.4 % | 0.0 % | 0.0 % | | library/debug.po | 100.0 % | 0.0 % | 0.0 % | -| library/decimal.po | 72.4 % | 0.0 % | 0.0 % | +| library/decimal.po | 54.2 % | 0.0 % | 0.0 % | | library/development.po | 100.0 % | 0.0 % | 0.0 % | -| library/devmode.po | 100.0 % | 0.0 % | 0.0 % | +| library/devmode.po | 75.1 % | 0.0 % | 0.0 % | | library/dialog.po | 100.0 % | 0.0 % | 0.0 % | -| library/difflib.po | 99.0 % | 0.0 % | 0.0 % | -| library/dis.po | 61.8 % | 0.0 % | 0.0 % | +| library/difflib.po | 71.4 % | 0.0 % | 0.0 % | +| library/dis.po | 23.1 % | 0.0 % | 0.0 % | | library/distribution.po | 100.0 % | 0.0 % | 0.0 % | -| library/distutils.po | 100.0 % | 0.0 % | 0.0 % | -| library/doctest.po | 98.7 % | 0.0 % | 0.0 % | -| library/email.charset.po | 88.7 % | 0.0 % | 0.0 % | -| library/email.compat32-message.po | 96.0 % | 0.0 % | 0.0 % | -| library/email.contentmanager.po | 100.0 % | 0.0 % | 0.0 % | -| library/email.encoders.po | 100.0 % | 0.0 % | 0.0 % | -| library/email.errors.po | 100.0 % | 0.0 % | 0.0 % | -| library/email.examples.po | 100.0 % | 0.0 % | 0.0 % | -| library/email.generator.po | 93.8 % | 0.0 % | 0.0 % | -| library/email.header.po | 100.0 % | 0.0 % | 0.0 % | -| library/email.headerregistry.po | 94.1 % | 0.0 % | 0.0 % | -| library/email.iterators.po | 100.0 % | 0.0 % | 0.0 % | -| library/email.message.po | 100.0 % | 0.0 % | 0.0 % | -| library/email.mime.po | 81.9 % | 0.0 % | 0.0 % | -| library/email.parser.po | 100.0 % | 0.0 % | 0.0 % | -| library/email.policy.po | 100.0 % | 0.0 % | 0.0 % | -| library/email.po | 100.0 % | 0.0 % | 0.0 % | -| library/email.utils.po | 100.0 % | 0.0 % | 0.0 % | -| library/ensurepip.po | 95.5 % | 0.0 % | 0.0 % | -| library/enum.po | 8.6 % | 0.0 % | 0.0 % | -| library/errno.po | 97.4 % | 0.0 % | 0.0 % | -| library/exceptions.po | 86.2 % | 0.0 % | 0.0 % | -| library/faulthandler.po | 95.3 % | 0.0 % | 0.0 % | -| library/fcntl.po | 95.4 % | 0.0 % | 0.0 % | -| library/filecmp.po | 100.0 % | 0.0 % | 0.0 % | +| library/doctest.po | 74.4 % | 0.0 % | 0.0 % | +| library/email_charset.po | 86.8 % | 0.0 % | 0.0 % | +| library/email_compat32-message.po | 91.6 % | 0.0 % | 0.0 % | +| library/email_contentmanager.po | 86.5 % | 0.0 % | 0.0 % | +| library/email_encoders.po | 81.5 % | 0.0 % | 0.0 % | +| library/email_errors.po | 42.6 % | 0.0 % | 0.0 % | +| library/email_examples.po | 14.1 % | 0.0 % | 0.0 % | +| library/email_generator.po | 83.4 % | 0.0 % | 0.0 % | +| library/email_header.po | 90.7 % | 0.0 % | 0.0 % | +| library/email_headerregistry.po | 88.7 % | 0.0 % | 0.0 % | +| library/email_iterators.po | 91.1 % | 0.0 % | 0.0 % | +| library/email_message.po | 89.5 % | 0.0 % | 0.0 % | +| library/email_mime.po | 81.2 % | 0.0 % | 0.0 % | +| library/email_parser.po | 94.9 % | 0.0 % | 0.0 % | +| library/email_policy.po | 93.3 % | 0.0 % | 0.0 % | +| library/email.po | 91.2 % | 0.0 % | 0.0 % | +| library/email_utils.po | 84.4 % | 0.0 % | 0.0 % | +| library/ensurepip.po | 81.3 % | 0.0 % | 0.0 % | +| library/enum.po | 2.4 % | 0.0 % | 0.0 % | +| library/errno.po | 84.6 % | 0.0 % | 0.0 % | +| library/exceptions.po | 61.6 % | 0.0 % | 0.0 % | +| library/faulthandler.po | 61.0 % | 0.0 % | 0.0 % | +| library/fcntl.po | 22.9 % | 0.0 % | 0.0 % | +| library/filecmp.po | 80.4 % | 0.0 % | 0.0 % | | library/fileformats.po | 100.0 % | 0.0 % | 0.0 % | -| library/fileinput.po | 91.7 % | 0.0 % | 0.0 % | +| library/fileinput.po | 83.0 % | 0.0 % | 0.0 % | | library/filesys.po | 100.0 % | 0.0 % | 0.0 % | -| library/fnmatch.po | 91.1 % | 0.0 % | 0.0 % | -| library/fractions.po | 75.4 % | 0.0 % | 0.0 % | +| library/fnmatch.po | 46.6 % | 14.0 % | 0.0 % | +| library/fractions.po | 27.9 % | 0.0 % | 0.0 % | | library/frameworks.po | 100.0 % | 0.0 % | 0.0 % | -| library/ftplib.po | 98.7 % | 0.0 % | 0.0 % | +| library/ftplib.po | 52.5 % | 0.0 % | 0.0 % | | library/functional.po | 100.0 % | 0.0 % | 0.0 % | -| library/functions.po | 86.8 % | 3.4 % | 0.0 % | -| library/functools.po | 93.5 % | 0.0 % | 0.0 % | -| library/gc.po | 100.0 % | 0.0 % | 0.0 % | -| library/getopt.po | 100.0 % | 0.0 % | 0.0 % | -| library/getpass.po | 88.5 % | 0.0 % | 0.0 % | -| library/gettext.po | 96.2 % | 0.0 % | 0.0 % | -| library/glob.po | 80.1 % | 0.0 % | 0.0 % | -| library/graphlib.po | 96.4 % | 0.0 % | 0.0 % | -| library/grp.po | 86.7 % | 0.0 % | 0.0 % | -| library/gzip.po | 86.2 % | 0.0 % | 0.0 % | -| library/hashlib.po | 94.0 % | 0.0 % | 0.0 % | -| library/heapq.po | 100.0 % | 0.0 % | 0.0 % | -| library/hmac.po | 88.0 % | 0.0 % | 0.0 % | -| library/html.entities.po | 98.3 % | 0.0 % | 0.0 % | -| library/html.parser.po | 100.0 % | 0.0 % | 0.0 % | +| library/functions.po | 59.4 % | 2.7 % | 0.0 % | +| library/functools.po | 50.2 % | 0.0 % | 0.0 % | +| library/gc.po | 81.6 % | 0.0 % | 0.0 % | +| library/getopt.po | 30.9 % | 0.0 % | 0.0 % | +| library/getpass.po | 59.3 % | 0.0 % | 0.0 % | +| library/gettext.po | 63.3 % | 0.0 % | 0.0 % | +| library/glob.po | 52.8 % | 0.0 % | 0.0 % | +| library/graphlib.po | 70.8 % | 0.0 % | 0.0 % | +| library/grp.po | 93.2 % | 0.0 % | 0.0 % | +| library/gzip.po | 57.4 % | 0.0 % | 0.0 % | +| library/hashlib.po | 61.9 % | 0.0 % | 0.0 % | +| library/heapq.po | 79.8 % | 0.0 % | 0.0 % | +| library/hmac.po | 81.0 % | 0.0 % | 0.0 % | +| library/html_entities.po | 73.1 % | 0.0 % | 0.0 % | +| library/html_parser.po | 67.3 % | 0.0 % | 0.0 % | | library/html.po | 100.0 % | 0.0 % | 0.0 % | -| library/http.client.po | 85.0 % | 0.0 % | 0.0 % | -| library/http.cookiejar.po | 95.2 % | 0.0 % | 0.0 % | -| library/http.cookies.po | 100.0 % | 0.0 % | 0.0 % | -| library/http.po | 85.3 % | 0.0 % | 0.0 % | -| library/http.server.po | 88.0 % | 0.0 % | 0.0 % | +| library/http_client.po | 60.5 % | 0.0 % | 0.0 % | +| library/http_cookiejar.po | 92.1 % | 0.0 % | 0.0 % | +| library/http_cookies.po | 62.7 % | 0.0 % | 0.0 % | +| library/http.po | 42.8 % | 0.0 % | 0.0 % | +| library/http_server.po | 64.8 % | 0.0 % | 0.0 % | | library/i18n.po | 100.0 % | 0.0 % | 0.0 % | -| library/idle.po | 91.9 % | 0.0 % | 0.0 % | -| library/imaplib.po | 98.9 % | 0.0 % | 0.0 % | -| library/imghdr.po | 100.0 % | 0.0 % | 0.0 % | -| library/imp.po | 100.0 % | 0.0 % | 0.0 % | -| library/importlib.metadata.po | 42.5 % | 0.0 % | 0.0 % | -| library/importlib.po | 81.3 % | 0.0 % | 0.0 % | -| library/index.po | 84.1 % | 0.0 % | 0.0 % | -| library/inspect.po | 84.7 % | 0.0 % | 0.0 % | -| library/internet.po | 100.0 % | 0.0 % | 0.0 % | -| library/intro.po | 56.8 % | 0.0 % | 0.0 % | -| library/io.po | 94.3 % | 0.2 % | 0.0 % | -| library/ipaddress.po | 100.0 % | 0.0 % | 0.0 % | +| library/idle.po | 84.0 % | 0.0 % | 0.0 % | +| library/imaplib.po | 78.3 % | 0.0 % | 0.0 % | +| library/importlib_metadata.po | 11.6 % | 0.0 % | 0.0 % | +| library/importlib.po | 58.5 % | 0.0 % | 0.0 % | +| library/index.po | 100.0 % | 0.0 % | 0.0 % | +| library/inspect.po | 58.7 % | 0.0 % | 0.0 % | +| library/internet.po | 90.9 % | 0.0 % | 0.0 % | +| library/intro.po | 38.0 % | 0.0 % | 0.0 % | +| library/io.po | 72.2 % | 0.1 % | 0.0 % | +| library/ipaddress.po | 89.3 % | 0.0 % | 0.0 % | | library/ipc.po | 100.0 % | 0.0 % | 0.0 % | -| library/itertools.po | 71.7 % | 0.0 % | 0.0 % | -| library/json.po | 89.5 % | 0.0 % | 0.0 % | +| library/itertools.po | 20.5 % | 1.4 % | 0.0 % | +| library/json.po | 49.0 % | 0.0 % | 0.0 % | | library/keyword.po | 100.0 % | 0.0 % | 0.0 % | | library/language.po | 100.0 % | 0.0 % | 0.0 % | -| library/linecache.po | 100.0 % | 0.0 % | 0.0 % | -| library/locale.po | 88.7 % | 0.0 % | 0.0 % | -| library/logging.config.po | 89.6 % | 0.0 % | 0.0 % | -| library/logging.handlers.po | 93.1 % | 0.0 % | 0.0 % | -| library/logging.po | 92.9 % | 0.0 % | 0.0 % | -| library/lzma.po | 98.4 % | 0.0 % | 0.0 % | -| library/mailbox.po | 99.0 % | 0.0 % | 0.0 % | -| library/mailcap.po | 86.0 % | 0.0 % | 0.0 % | +| library/linecache.po | 94.5 % | 0.0 % | 0.0 % | +| library/locale.po | 68.3 % | 0.0 % | 0.0 % | +| library/logging_config.po | 70.5 % | 0.0 % | 0.0 % | +| library/logging_handlers.po | 87.8 % | 0.0 % | 0.0 % | +| library/logging.po | 70.1 % | 0.0 % | 0.0 % | +| library/lzma.po | 90.1 % | 0.0 % | 0.0 % | +| library/mailbox.po | 53.4 % | 0.0 % | 0.0 % | | library/markup.po | 100.0 % | 0.0 % | 0.0 % | -| library/marshal.po | 100.0 % | 0.0 % | 0.0 % | -| library/math.po | 94.0 % | 0.0 % | 0.0 % | -| library/mimetypes.po | 100.0 % | 0.0 % | 0.0 % | +| library/marshal.po | 32.8 % | 0.0 % | 0.0 % | +| library/math.po | 56.2 % | 0.0 % | 0.0 % | +| library/mimetypes.po | 81.9 % | 0.0 % | 0.0 % | | library/mm.po | 100.0 % | 0.0 % | 0.0 % | -| library/mmap.po | 94.1 % | 94.1 % | 0.0 % | -| library/modulefinder.po | 100.0 % | 0.0 % | 0.0 % | +| library/mmap.po | 70.1 % | 69.4 % | 0.0 % | +| library/modulefinder.po | 75.9 % | 0.0 % | 0.0 % | | library/modules.po | 100.0 % | 0.0 % | 0.0 % | -| library/msilib.po | 95.0 % | 0.0 % | 0.0 % | -| library/msvcrt.po | 100.0 % | 0.0 % | 0.0 % | -| library/multiprocessing.po | 96.7 % | 0.0 % | 0.0 % | -| library/multiprocessing.shared.memory.po | 1.5 % | 0.0 % | 0.0 % | +| library/msvcrt.po | 25.2 % | 0.0 % | 0.0 % | +| library/multiprocessing.po | 70.0 % | 0.0 % | 0.0 % | +| library/multiprocessing_shared_memory.po | 3.9 % | 2.8 % | 0.0 % | | library/netdata.po | 100.0 % | 0.0 % | 0.0 % | -| library/netrc.po | 85.3 % | 0.0 % | 0.0 % | -| library/nis.po | 87.9 % | 0.0 % | 0.0 % | -| library/nntplib.po | 98.9 % | 0.0 % | 0.0 % | -| library/numbers.po | 94.7 % | 0.0 % | 0.0 % | +| library/netrc.po | 73.1 % | 0.0 % | 0.0 % | +| library/numbers.po | 42.1 % | 0.0 % | 0.0 % | | library/numeric.po | 100.0 % | 0.0 % | 0.0 % | -| library/operator.po | 97.3 % | 0.0 % | 0.0 % | -| library/optparse.po | 97.4 % | 0.0 % | 0.0 % | -| library/os.path.po | 88.0 % | 0.0 % | 0.0 % | -| library/os.po | 91.0 % | 0.0 % | 0.0 % | -| library/ossaudiodev.po | 100.0 % | 0.0 % | 0.0 % | -| library/othergui.po | 100.0 % | 0.0 % | 0.0 % | -| library/pathlib.po | 92.3 % | 0.0 % | 0.0 % | -| library/pdb.po | 78.0 % | 0.0 % | 0.0 % | +| library/operator.po | 84.5 % | 0.0 % | 0.0 % | +| library/optparse.po | 69.8 % | 0.0 % | 0.0 % | +| library/os_path.po | 59.2 % | 0.0 % | 0.0 % | +| library/os.po | 68.1 % | 0.0 % | 0.0 % | +| library/pathlib.po | 29.5 % | 0.0 % | 0.0 % | +| library/pdb.po | 50.1 % | 0.0 % | 0.0 % | | library/persistence.po | 100.0 % | 0.0 % | 0.0 % | -| library/pickle.po | 96.4 % | 0.0 % | 0.0 % | -| library/pickletools.po | 100.0 % | 0.0 % | 0.0 % | -| library/pipes.po | 98.3 % | 0.0 % | 0.0 % | -| library/pkgutil.po | 100.0 % | 0.0 % | 0.0 % | -| library/platform.po | 100.0 % | 0.0 % | 0.0 % | -| library/plistlib.po | 100.0 % | 0.0 % | 0.0 % | -| library/poplib.po | 94.6 % | 0.0 % | 0.0 % | -| library/posix.po | 72.8 % | 0.0 % | 0.0 % | -| library/pprint.po | 85.1 % | 0.0 % | 0.0 % | -| library/profile.po | 98.5 % | 0.0 % | 0.0 % | -| library/pty.po | 100.0 % | 0.0 % | 0.0 % | -| library/pwd.po | 90.7 % | 0.0 % | 0.0 % | -| library/py.compile.po | 84.1 % | 0.0 % | 0.0 % | -| library/pyclbr.po | 100.0 % | 0.0 % | 0.0 % | -| library/pydoc.po | 74.9 % | 0.0 % | 0.0 % | -| library/pyexpat.po | 98.0 % | 0.0 % | 0.0 % | +| library/pickle.po | 66.1 % | 0.0 % | 0.0 % | +| library/pickletools.po | 88.9 % | 0.0 % | 0.0 % | +| library/pkgutil.po | 83.4 % | 0.0 % | 0.0 % | +| library/platform.po | 70.4 % | 0.0 % | 0.0 % | +| library/plistlib.po | 64.3 % | 0.0 % | 0.0 % | +| library/poplib.po | 86.8 % | 0.0 % | 0.0 % | +| library/posix.po | 68.0 % | 0.0 % | 0.0 % | +| library/pprint.po | 31.7 % | 0.0 % | 0.0 % | +| library/profile.po | 86.5 % | 0.0 % | 0.0 % | +| library/pty.po | 79.7 % | 0.0 % | 0.0 % | +| library/pwd.po | 68.3 % | 0.0 % | 0.0 % | +| library/py_compile.po | 77.4 % | 0.0 % | 0.0 % | +| library/pyclbr.po | 71.0 % | 0.0 % | 0.0 % | +| library/pydoc.po | 31.5 % | 0.0 % | 0.0 % | +| library/pyexpat.po | 85.3 % | 0.0 % | 0.0 % | | library/python.po | 100.0 % | 0.0 % | 0.0 % | -| library/queue.po | 68.8 % | 0.0 % | 0.0 % | -| library/quopri.po | 100.0 % | 0.0 % | 0.0 % | -| library/random.po | 89.2 % | 0.5 % | 0.0 % | -| library/re.po | 88.5 % | 0.0 % | 0.0 % | -| library/readline.po | 98.7 % | 0.0 % | 0.0 % | -| library/reprlib.po | 97.9 % | 0.0 % | 0.0 % | -| library/resource.po | 96.3 % | 0.0 % | 0.0 % | -| library/rlcompleter.po | 100.0 % | 0.0 % | 0.0 % | -| library/runpy.po | 100.0 % | 0.0 % | 0.0 % | -| library/sched.po | 100.0 % | 0.0 % | 0.0 % | -| library/secrets.po | 86.3 % | 0.0 % | 0.0 % | -| library/select.po | 85.2 % | 0.0 % | 0.0 % | -| library/selectors.po | 97.0 % | 0.0 % | 0.0 % | -| library/shelve.po | 99.4 % | 0.0 % | 0.0 % | -| library/shlex.po | 100.0 % | 0.0 % | 0.0 % | -| library/shutil.po | 96.2 % | 0.0 % | 0.0 % | -| library/signal.po | 91.5 % | 0.0 % | 0.0 % | -| library/site.po | 99.5 % | 0.0 % | 0.0 % | -| library/smtpd.po | 93.7 % | 0.0 % | 0.0 % | -| library/smtplib.po | 99.1 % | 0.0 % | 0.0 % | -| library/sndhdr.po | 81.3 % | 0.0 % | 0.0 % | -| library/socket.po | 91.1 % | 0.0 % | 0.0 % | -| library/socketserver.po | 95.1 % | 0.0 % | 0.0 % | -| library/spwd.po | 90.1 % | 0.0 % | 0.0 % | -| library/sqlite3.po | 16.0 % | 0.0 % | 0.0 % | -| library/ssl.po | 96.3 % | 0.0 % | 0.0 % | -| library/stat.po | 100.0 % | 0.0 % | 0.0 % | -| library/statistics.po | 91.8 % | 0.0 % | 0.0 % | -| library/stdtypes.po | 92.5 % | 0.0 % | 0.0 % | -| library/string.po | 96.1 % | 0.0 % | 0.0 % | -| library/stringprep.po | 100.0 % | 0.0 % | 0.0 % | -| library/struct.po | 55.0 % | 0.0 % | 0.0 % | -| library/subprocess.po | 85.2 % | 0.0 % | 0.0 % | -| library/sunau.po | 100.0 % | 0.0 % | 0.0 % | -| library/superseded.po | 100.0 % | 0.0 % | 0.0 % | -| library/symtable.po | 95.8 % | 0.0 % | 0.0 % | -| library/sys.po | 87.6 % | 0.0 % | 0.0 % | -| library/sysconfig.po | 90.7 % | 0.0 % | 0.0 % | -| library/syslog.po | 84.4 % | 0.0 % | 0.0 % | +| library/queue.po | 57.8 % | 0.0 % | 0.0 % | +| library/quopri.po | 95.8 % | 0.0 % | 0.0 % | +| library/random.po | 46.8 % | 0.4 % | 0.0 % | +| library/re.po | 49.5 % | 0.0 % | 0.0 % | +| library/readline.po | 27.1 % | 0.0 % | 0.0 % | +| library/reprlib.po | 48.5 % | 0.0 % | 0.0 % | +| library/resource.po | 86.1 % | 0.0 % | 0.0 % | +| library/rlcompleter.po | 21.4 % | 0.0 % | 0.0 % | +| library/runpy.po | 34.3 % | 0.0 % | 0.0 % | +| library/sched.po | 76.3 % | 0.0 % | 0.0 % | +| library/secrets.po | 66.9 % | 0.0 % | 0.0 % | +| library/select.po | 62.4 % | 0.0 % | 0.0 % | +| library/selectors.po | 81.4 % | 0.0 % | 0.0 % | +| library/shelve.po | 65.8 % | 0.0 % | 0.0 % | +| library/shlex.po | 93.8 % | 0.0 % | 0.0 % | +| library/shutil.po | 61.0 % | 0.0 % | 0.0 % | +| library/signal.po | 80.4 % | 0.0 % | 0.0 % | +| library/site.po | 61.1 % | 0.0 % | 0.0 % | +| library/smtplib.po | 80.1 % | 0.0 % | 0.0 % | +| library/socket.po | 62.1 % | 0.0 % | 0.0 % | +| library/socketserver.po | 59.8 % | 0.0 % | 0.0 % | +| library/sqlite3.po | 9.7 % | 0.0 % | 0.0 % | +| library/ssl.po | 72.9 % | 0.0 % | 0.0 % | +| library/stat.po | 76.1 % | 0.0 % | 0.0 % | +| library/statistics.po | 54.5 % | 0.0 % | 0.0 % | +| library/stdtypes.po | 73.6 % | 0.0 % | 0.0 % | +| library/string.po | 63.2 % | 0.0 % | 0.0 % | +| library/stringprep.po | 90.1 % | 0.0 % | 0.0 % | +| library/struct.po | 47.8 % | 0.0 % | 0.0 % | +| library/subprocess.po | 64.9 % | 0.0 % | 0.0 % | +| library/superseded.po | 1.4 % | 0.0 % | 0.0 % | +| library/symtable.po | 47.1 % | 0.0 % | 0.0 % | +| library/sys.po | 64.6 % | 0.0 % | 0.0 % | +| library/sysconfig.po | 59.3 % | 0.0 % | 0.0 % | +| library/syslog.po | 61.6 % | 0.0 % | 0.0 % | | library/tabnanny.po | 100.0 % | 0.0 % | 0.0 % | -| library/tarfile.po | 96.0 % | 0.0 % | 0.0 % | -| library/telnetlib.po | 97.2 % | 0.0 % | 0.0 % | -| library/tempfile.po | 98.1 % | 0.0 % | 0.0 % | -| library/termios.po | 88.1 % | 0.0 % | 0.0 % | -| library/test.po | 98.3 % | 0.0 % | 0.0 % | +| library/tarfile.po | 54.3 % | 0.0 % | 0.0 % | +| library/tempfile.po | 54.0 % | 0.0 % | 0.0 % | +| library/termios.po | 69.7 % | 0.0 % | 0.0 % | +| library/test.po | 86.3 % | 0.0 % | 0.0 % | | library/text.po | 100.0 % | 0.0 % | 0.0 % | -| library/textwrap.po | 100.0 % | 0.0 % | 0.0 % | -| library/threading.po | 95.7 % | 0.0 % | 0.0 % | -| library/time.po | 88.1 % | 0.0 % | 0.0 % | -| library/timeit.po | 98.9 % | 0.0 % | 0.0 % | -| library/tk.po | 100.0 % | 0.0 % | 0.0 % | -| library/tkinter.colorchooser.po | 100.0 % | 0.0 % | 0.0 % | -| library/tkinter.dnd.po | 100.0 % | 0.0 % | 0.0 % | -| library/tkinter.font.po | 100.0 % | 0.0 % | 0.0 % | -| library/tkinter.messagebox.po | 100.0 % | 0.0 % | 0.0 % | -| library/tkinter.po | 98.5 % | 0.0 % | 0.0 % | -| library/tkinter.scrolledtext.po | 100.0 % | 0.0 % | 0.0 % | -| library/tkinter.tix.po | 46.4 % | 0.0 % | 0.0 % | -| library/tkinter.ttk.po | 97.2 % | 0.0 % | 0.0 % | -| library/token.po | 100.0 % | 0.0 % | 0.0 % | -| library/tokenize.po | 100.0 % | 0.0 % | 0.0 % | -| library/trace.po | 100.0 % | 0.0 % | 0.0 % | -| library/traceback.po | 91.0 % | 0.0 % | 0.0 % | -| library/tracemalloc.po | 100.0 % | 0.0 % | 0.0 % | -| library/tty.po | 100.0 % | 0.0 % | 0.0 % | -| library/turtle.po | 90.2 % | 0.0 % | 0.0 % | -| library/types.po | 95.1 % | 0.0 % | 0.0 % | -| library/typing.po | 65.5 % | 0.0 % | 0.0 % | -| library/undoc.po | 100.0 % | 0.0 % | 0.0 % | -| library/unicodedata.po | 94.7 % | 0.0 % | 0.0 % | -| library/unittest.mock-examples.po | 96.9 % | 0.0 % | 0.0 % | -| library/unittest.mock.po | 98.2 % | 0.0 % | 0.0 % | -| library/unittest.po | 95.7 % | 0.0 % | 0.0 % | +| library/textwrap.po | 77.9 % | 0.0 % | 0.0 % | +| library/threading.po | 80.0 % | 0.0 % | 0.0 % | +| library/time.po | 73.0 % | 0.0 % | 0.0 % | +| library/timeit.po | 66.0 % | 0.0 % | 0.0 % | +| library/tk.po | 77.3 % | 0.0 % | 0.0 % | +| library/tkinter_colorchooser.po | 100.0 % | 0.0 % | 0.0 % | +| library/tkinter_dnd.po | 86.9 % | 0.0 % | 0.0 % | +| library/tkinter_font.po | 100.0 % | 0.0 % | 0.0 % | +| library/tkinter_messagebox.po | 2.1 % | 0.0 % | 0.0 % | +| library/tkinter.po | 91.2 % | 0.0 % | 0.0 % | +| library/tkinter_scrolledtext.po | 100.0 % | 0.0 % | 0.0 % | +| library/tkinter_ttk.po | 86.8 % | 0.0 % | 0.0 % | +| library/token.po | 21.0 % | 0.0 % | 0.0 % | +| library/tokenize.po | 64.8 % | 0.0 % | 0.0 % | +| library/trace.po | 87.8 % | 0.0 % | 0.0 % | +| library/traceback.po | 20.3 % | 0.0 % | 0.0 % | +| library/tracemalloc.po | 74.2 % | 0.0 % | 0.0 % | +| library/tty.po | 14.6 % | 0.0 % | 0.0 % | +| library/turtle.po | 59.8 % | 0.0 % | 0.0 % | +| library/types.po | 64.7 % | 0.0 % | 0.0 % | +| library/typing.po | 16.1 % | 0.0 % | 0.0 % | +| library/unicodedata.po | 93.8 % | 0.0 % | 0.0 % | +| library/unittest_mock-examples.po | 78.8 % | 0.0 % | 0.0 % | +| library/unittest_mock.po | 70.3 % | 0.0 % | 0.0 % | +| library/unittest.po | 83.3 % | 0.0 % | 0.0 % | | library/unix.po | 100.0 % | 0.0 % | 0.0 % | -| library/urllib.error.po | 100.0 % | 0.0 % | 0.0 % | -| library/urllib.parse.po | 99.8 % | 0.0 % | 0.0 % | +| library/urllib_error.po | 54.0 % | 0.0 % | 0.0 % | +| library/urllib_parse.po | 78.4 % | 0.0 % | 0.0 % | | library/urllib.po | 100.0 % | 0.0 % | 0.0 % | -| library/urllib.request.po | 98.6 % | 0.0 % | 0.0 % | -| library/urllib.robotparser.po | 100.0 % | 0.0 % | 0.0 % | -| library/uu.po | 100.0 % | 0.0 % | 0.0 % | -| library/uuid.po | 98.4 % | 0.0 % | 0.0 % | -| library/venv.po | 54.2 % | 0.0 % | 0.0 % | -| library/warnings.po | 96.8 % | 0.0 % | 0.0 % | -| library/wave.po | 95.5 % | 0.0 % | 0.0 % | -| library/weakref.po | 90.3 % | 0.0 % | 0.0 % | -| library/webbrowser.po | 95.8 % | 0.0 % | 0.0 % | +| library/urllib_request.po | 75.6 % | 0.0 % | 0.0 % | +| library/urllib_robotparser.po | 86.4 % | 0.0 % | 0.0 % | +| library/uuid.po | 60.3 % | 0.0 % | 0.0 % | +| library/venv.po | 19.2 % | 0.3 % | 0.0 % | +| library/warnings.po | 77.3 % | 0.0 % | 0.0 % | +| library/wave.po | 61.7 % | 0.0 % | 0.0 % | +| library/weakref.po | 72.3 % | 0.0 % | 0.0 % | +| library/webbrowser.po | 66.9 % | 0.0 % | 0.0 % | | library/windows.po | 100.0 % | 0.0 % | 0.0 % | -| library/winreg.po | 96.7 % | 0.0 % | 0.0 % | -| library/winsound.po | 100.0 % | 0.0 % | 0.0 % | -| library/wsgiref.po | 86.8 % | 0.0 % | 0.0 % | -| library/xdrlib.po | 100.0 % | 0.0 % | 0.0 % | -| library/xml.dom.minidom.po | 92.0 % | 0.0 % | 0.0 % | -| library/xml.dom.po | 100.0 % | 0.0 % | 0.0 % | -| library/xml.dom.pulldom.po | 98.3 % | 0.0 % | 0.0 % | -| library/xml.etree.elementtree.po | 100.0 % | 0.0 % | 0.0 % | -| library/xml.po | 90.8 % | 0.0 % | 0.0 % | -| library/xml.sax.handler.po | 100.0 % | 0.0 % | 0.0 % | -| library/xml.sax.po | 100.0 % | 0.0 % | 0.0 % | -| library/xml.sax.reader.po | 100.0 % | 0.0 % | 0.0 % | -| library/xml.sax.utils.po | 100.0 % | 0.0 % | 0.0 % | -| library/xmlrpc.client.po | 89.1 % | 0.0 % | 0.0 % | -| library/xmlrpc.po | 100.0 % | 0.0 % | 0.0 % | -| library/xmlrpc.server.po | 97.0 % | 0.0 % | 0.0 % | -| library/zipapp.po | 97.0 % | 0.0 % | 0.0 % | -| library/zipfile.po | 81.5 % | 0.0 % | 0.0 % | -| library/zipimport.po | 100.0 % | 0.0 % | 0.0 % | -| library/zlib.po | 92.1 % | 0.0 % | 0.0 % | -| library/zoneinfo.po | 98.4 % | 0.0 % | 0.0 % | -| reference/compound.stmts.po | 81.6 % | 0.0 % | 0.0 % | -| reference/datamodel.po | 92.8 % | 0.0 % | 0.0 % | -| reference/executionmodel.po | 92.5 % | 0.0 % | 0.0 % | -| reference/expressions.po | 90.2 % | 0.0 % | 0.0 % | -| reference/grammar.po | 32.1 % | 0.0 % | 0.0 % | -| reference/import.po | 93.1 % | 0.0 % | 0.0 % | +| library/winreg.po | 91.4 % | 0.0 % | 0.0 % | +| library/winsound.po | 58.7 % | 0.0 % | 0.0 % | +| library/wsgiref.po | 72.3 % | 0.0 % | 0.0 % | +| library/xml_dom_minidom.po | 80.6 % | 0.0 % | 0.0 % | +| library/xml_dom.po | 98.9 % | 0.0 % | 0.0 % | +| library/xml_dom_pulldom.po | 78.7 % | 0.0 % | 0.0 % | +| library/xml_etree_elementtree.po | 77.5 % | 0.0 % | 0.0 % | +| library/xml.po | 62.1 % | 0.0 % | 0.0 % | +| library/xml_sax_handler.po | 95.2 % | 0.0 % | 0.0 % | +| library/xml_sax.po | 99.3 % | 0.0 % | 0.0 % | +| library/xml_sax_reader.po | 99.5 % | 0.0 % | 0.0 % | +| library/xml_sax_utils.po | 79.1 % | 0.0 % | 0.0 % | +| library/xmlrpc_client.po | 69.2 % | 0.0 % | 0.0 % | +| library/xmlrpc.po | 89.2 % | 0.0 % | 0.0 % | +| library/xmlrpc_server.po | 72.6 % | 0.0 % | 0.0 % | +| library/zipapp.po | 88.4 % | 0.0 % | 0.0 % | +| library/zipfile.po | 75.0 % | 0.0 % | 0.0 % | +| library/zipimport.po | 89.2 % | 0.0 % | 0.0 % | +| library/zlib.po | 90.7 % | 0.0 % | 0.0 % | +| library/zoneinfo.po | 82.2 % | 0.0 % | 0.0 % | +| reference/compound_stmts.po | 58.1 % | 0.0 % | 0.0 % | +| reference/datamodel.po | 49.6 % | 0.0 % | 0.0 % | +| reference/executionmodel.po | 50.1 % | 0.0 % | 0.0 % | +| reference/expressions.po | 63.6 % | 0.0 % | 0.0 % | +| reference/grammar.po | 0.5 % | 0.0 % | 0.0 % | +| reference/import.po | 83.4 % | 0.0 % | 0.0 % | | reference/index.po | 100.0 % | 0.0 % | 0.0 % | -| reference/introduction.po | 82.3 % | 0.0 % | 0.0 % | -| reference/lexical.analysis.po | 94.7 % | 0.0 % | 0.0 % | -| reference/simple.stmts.po | 96.3 % | 0.0 % | 0.0 % | -| reference/toplevel.components.po | 100.0 % | 0.0 % | 0.0 % | -| tutorial/appendix.po | 100.0 % | 74.2 % | 0.0 % | -| tutorial/appetite.po | 100.0 % | 76.1 % | 0.0 % | -| tutorial/classes.po | 96.6 % | 0.0 % | 0.0 % | -| tutorial/controlflow.po | 98.1 % | 0.0 % | 0.0 % | -| tutorial/datastructures.po | 97.2 % | 0.0 % | 0.0 % | -| tutorial/errors.po | 65.9 % | 33.6 % | 0.0 % | -| tutorial/floatingpoint.po | 95.3 % | 0.0 % | 0.0 % | +| reference/introduction.po | 79.2 % | 0.0 % | 0.0 % | +| reference/lexical_analysis.po | 65.1 % | 0.0 % | 0.0 % | +| reference/simple_stmts.po | 65.9 % | 0.0 % | 0.0 % | +| reference/toplevel_components.po | 96.8 % | 0.0 % | 0.0 % | +| tutorial/appendix.po | 58.4 % | 39.9 % | 0.0 % | +| tutorial/appetite.po | 100.0 % | 100.0 % | 0.0 % | +| tutorial/classes.po | 63.8 % | 0.0 % | 0.0 % | +| tutorial/controlflow.po | 60.1 % | 0.0 % | 0.0 % | +| tutorial/datastructures.po | 54.6 % | 0.6 % | 0.0 % | +| tutorial/errors.po | 36.0 % | 17.4 % | 0.0 % | +| tutorial/floatingpoint.po | 33.7 % | 0.0 % | 0.0 % | | tutorial/index.po | 100.0 % | 100.0 % | 0.0 % | -| tutorial/inputoutput.po | 92.0 % | 0.0 % | 0.0 % | -| tutorial/interactive.po | 100.0 % | 0.0 % | 0.0 % | -| tutorial/interpreter.po | 85.6 % | 0.0 % | 0.0 % | -| tutorial/introduction.po | 96.8 % | 0.0 % | 0.0 % | -| tutorial/modules.po | 88.5 % | 0.0 % | 0.0 % | -| tutorial/stdlib.po | 100.0 % | 0.0 % | 0.0 % | -| tutorial/stdlib2.po | 100.0 % | 0.0 % | 0.0 % | -| tutorial/venv.po | 76.1 % | 0.0 % | 0.0 % | -| tutorial/whatnow.po | 77.2 % | 77.2 % | 0.0 % | -| using/cmdline.po | 88.7 % | 0.0 % | 0.0 % | -| using/configure.po | 79.3 % | 0.0 % | 0.0 % | -| using/editors.po | 100.0 % | 0.0 % | 0.0 % | +| tutorial/inputoutput.po | 61.1 % | 0.0 % | 0.0 % | +| tutorial/interactive.po | 77.2 % | 0.0 % | 0.0 % | +| tutorial/interpreter.po | 79.9 % | 0.0 % | 0.0 % | +| tutorial/introduction.po | 51.8 % | 0.0 % | 0.0 % | +| tutorial/modules.po | 56.1 % | 0.0 % | 0.0 % | +| tutorial/stdlib.po | 59.7 % | 0.0 % | 0.0 % | +| tutorial/stdlib2.po | 54.4 % | 0.0 % | 0.0 % | +| tutorial/venv.po | 50.5 % | 0.0 % | 0.0 % | +| tutorial/whatnow.po | 100.0 % | 77.2 % | 0.0 % | +| using/cmdline.po | 59.8 % | 0.0 % | 0.0 % | +| using/configure.po | 31.8 % | 0.0 % | 0.0 % | +| using/editors.po | 25.0 % | 0.0 % | 0.0 % | | using/index.po | 100.0 % | 0.0 % | 0.0 % | -| using/mac.po | 81.7 % | 0.0 % | 0.0 % | -| using/unix.po | 83.9 % | 0.0 % | 0.0 % | -| using/windows.po | 80.2 % | 0.0 % | 0.0 % | -| whatsnew/2.0.po | 97.3 % | 0.0 % | 0.0 % | -| whatsnew/2.1.po | 98.8 % | 0.0 % | 0.0 % | -| whatsnew/2.2.po | 98.2 % | 0.0 % | 0.0 % | -| whatsnew/2.3.po | 97.6 % | 0.0 % | 0.0 % | -| whatsnew/2.4.po | 94.4 % | 0.0 % | 0.0 % | -| whatsnew/2.5.po | 94.0 % | 0.0 % | 0.0 % | -| whatsnew/2.6.po | 97.1 % | 0.0 % | 0.0 % | -| whatsnew/2.7.po | 97.2 % | 0.0 % | 0.0 % | -| whatsnew/3.0.po | 99.2 % | 0.0 % | 0.0 % | -| whatsnew/3.1.po | 94.1 % | 0.0 % | 0.0 % | -| whatsnew/3.10.po | 90.4 % | 0.0 % | 0.0 % | -| whatsnew/3.2.po | 96.4 % | 0.0 % | 0.0 % | -| whatsnew/3.3.po | 97.3 % | 0.0 % | 0.0 % | -| whatsnew/3.4.po | 98.8 % | 0.0 % | 0.0 % | -| whatsnew/3.5.po | 98.5 % | 0.0 % | 0.0 % | -| whatsnew/3.6.po | 98.0 % | 0.0 % | 0.0 % | -| whatsnew/3.7.po | 96.3 % | 0.0 % | 0.0 % | -| whatsnew/3.8.po | 98.9 % | 0.0 % | 0.0 % | -| whatsnew/3.9.po | 98.2 % | 0.0 % | 0.0 % | -| whatsnew/changelog.po | 100.0 % | 0.0 % | 0.0 % | +| using/mac.po | 1.3 % | 0.0 % | 0.0 % | +| using/unix.po | 53.4 % | 0.0 % | 0.0 % | +| using/windows.po | 67.3 % | 0.0 % | 0.0 % | +| whatsnew/2_0.po | 61.1 % | 0.0 % | 0.0 % | +| whatsnew/2_1.po | 62.3 % | 0.0 % | 0.0 % | +| whatsnew/2_2.po | 57.2 % | 0.0 % | 0.0 % | +| whatsnew/2_3.po | 49.5 % | 0.0 % | 0.0 % | +| whatsnew/2_4.po | 73.1 % | 0.0 % | 0.0 % | +| whatsnew/2_5.po | 74.2 % | 0.0 % | 0.0 % | +| whatsnew/2_6.po | 71.9 % | 0.0 % | 0.0 % | +| whatsnew/2_7.po | 64.4 % | 0.0 % | 0.0 % | +| whatsnew/3_0.po | 65.0 % | 0.0 % | 0.0 % | +| whatsnew/3_1.po | 62.8 % | 0.0 % | 0.0 % | +| whatsnew/3_10.po | 65.9 % | 0.0 % | 0.0 % | +| whatsnew/3_2.po | 63.9 % | 0.0 % | 0.0 % | +| whatsnew/3_3.po | 82.1 % | 0.0 % | 0.0 % | +| whatsnew/3_4.po | 86.0 % | 0.0 % | 0.0 % | +| whatsnew/3_5.po | 83.1 % | 0.2 % | 0.0 % | +| whatsnew/3_6.po | 80.8 % | 0.0 % | 0.0 % | +| whatsnew/3_7.po | 86.3 % | 0.0 % | 0.0 % | +| whatsnew/3_8.po | 77.1 % | 0.0 % | 0.0 % | +| whatsnew/3_9.po | 69.0 % | 0.0 % | 0.0 % | +| whatsnew/changelog.po | 0.1 % | 0.0 % | 0.0 % | | whatsnew/index.po | 100.0 % | 0.0 % | 0.0 % | -| c-api/objbuffer.po | 100.0 % | 0.0 % | 0.0 % | -| library/security.warnings.po | 62.6 % | 0.0 % | 0.0 % | +| library/security_warnings.po | 60.9 % | 0.0 % | 0.0 % | | c-api/frame.po | 0.0 % | 0.0 % | 0.0 % | -| howto/isolating-extensions.po | 0.3 % | 0.0 % | 0.0 % | -| includes/wasm-notavail.po | 0.0 % | 0.0 % | 0.0 % | +| howto/isolating-extensions.po | 0.2 % | 0.0 % | 0.0 % | | library/asyncio-extending.po | 0.0 % | 0.0 % | 0.0 % | | library/asyncio-runner.po | 0.2 % | 0.0 % | 0.0 % | -| library/importlib.resources.po | 0.0 % | 0.0 % | 0.0 % | -| library/importlib.resources.abc.po | 85.0 % | 0.0 % | 0.0 % | -| library/sys.path.init.po | 0.3 % | 0.0 % | 0.0 % | -| library/tomllib.po | 6.5 % | 0.0 % | 0.0 % | -| whatsnew/3.11.po | 1.4 % | 0.0 % | 0.0 % | +| library/importlib_resources.po | 0.2 % | 0.0 % | 0.0 % | +| library/importlib_resources_abc.po | 56.6 % | 0.0 % | 0.0 % | +| library/sys_path_init.po | 0.3 % | 0.0 % | 0.0 % | +| library/tomllib.po | 5.8 % | 0.0 % | 0.0 % | +| whatsnew/3_11.po | 1.2 % | 0.0 % | 0.0 % | +| c-api/perfmaps.po | 0.0 % | 0.0 % | 0.0 % | +| howto/perf_profiling.po | 0.1 % | 0.0 % | 0.0 % | +| whatsnew/3_12.po | 3.4 % | 0.0 % | 0.0 % | +| library/sys_monitoring.po | 0.0 % | 0.0 % | 0.0 % | +| library/cmdline.po | 0.0 % | 0.0 % | 0.0 % | +| c-api/hash.po | 0.0 % | 0.0 % | 0.0 % | +| howto/gdb_helpers.po | 0.1 % | 0.0 % | 0.0 % | +| howto/mro.po | 0.1 % | 0.0 % | 0.0 % | +| c-api/monitoring.po | 0.2 % | 0.0 % | 0.0 % | +| c-api/time.po | 0.3 % | 0.0 % | 0.0 % | +| howto/timerfd.po | 0.2 % | 0.0 % | 0.0 % | +| using/ios.po | 0.0 % | 0.0 % | 0.0 % | +| whatsnew/3_13.po | 4.3 % | 0.0 % | 0.0 % | +| howto/free-threading-extensions.po | 0.1 % | 0.0 % | 0.0 % | +| deprecations/pending-removal-in-3_14.po | 0.0 % | 0.0 % | 0.0 % | +| deprecations/pending-removal-in-3_15.po | 0.0 % | 0.0 % | 0.0 % | +| deprecations/pending-removal-in-3_16.po | 0.0 % | 0.0 % | 0.0 % | +| deprecations/pending-removal-in-future.po | 0.0 % | 0.0 % | 0.0 % | +| deprecations/pending-removal-in-3_13.po | 0.0 % | 0.0 % | 0.0 % | +| deprecations/index.po | 0.0 % | 0.0 % | 0.0 % | +| deprecations/c-api-pending-removal-in-3_14.po | 0.0 % | 0.0 % | 0.0 % | +| deprecations/c-api-pending-removal-in-3_15.po | 0.0 % | 0.0 % | 0.0 % | +| deprecations/c-api-pending-removal-in-future.po | 0.0 % | 0.0 % | 0.0 % | +| using/android.po | 0.0 % | 0.0 % | 0.0 % | +| howto/free-threading-python.po | 0.4 % | 0.0 % | 0.0 % | +| howto/argparse-optparse.po | 52.8 % | 0.0 % | 0.0 % | +| library/aifc.po | 0.0 % | 0.0 % | 0.0 % | +| library/asynchat.po | 0.0 % | 0.0 % | 0.0 % | +| library/asyncore.po | 0.0 % | 0.0 % | 0.0 % | +| library/audioop.po | 0.0 % | 0.0 % | 0.0 % | +| library/cgi.po | 0.0 % | 0.0 % | 0.0 % | +| library/cgitb.po | 0.0 % | 0.0 % | 0.0 % | +| library/chunk.po | 0.0 % | 0.0 % | 0.0 % | +| library/crypt.po | 0.0 % | 0.0 % | 0.0 % | +| library/distutils.po | 0.0 % | 0.0 % | 0.0 % | +| library/imghdr.po | 0.0 % | 0.0 % | 0.0 % | +| library/imp.po | 0.0 % | 0.0 % | 0.0 % | +| library/mailcap.po | 0.0 % | 0.0 % | 0.0 % | +| library/msilib.po | 0.0 % | 0.0 % | 0.0 % | +| library/nntplib.po | 0.0 % | 0.0 % | 0.0 % | +| library/nis.po | 0.0 % | 0.0 % | 0.0 % | +| library/ossaudiodev.po | 0.0 % | 0.0 % | 0.0 % | +| library/pipes.po | 0.0 % | 0.0 % | 0.0 % | +| library/removed.po | 0.0 % | 0.0 % | 0.0 % | +| library/smtpd.po | 0.0 % | 0.0 % | 0.0 % | +| library/sndhdr.po | 0.0 % | 0.0 % | 0.0 % | +| library/spwd.po | 0.0 % | 0.0 % | 0.0 % | +| library/sunau.po | 0.0 % | 0.0 % | 0.0 % | +| library/telnetlib.po | 0.0 % | 0.0 % | 0.0 % | +| library/uu.po | 0.0 % | 0.0 % | 0.0 % | +| library/xdrlib.po | 0.0 % | 0.0 % | 0.0 % | +| library/cmdlinelibs.po | 0.0 % | 0.0 % | 0.0 % |