diff --git a/.env b/.env new file mode 100644 index 000000000..b3b641174 --- /dev/null +++ b/.env @@ -0,0 +1,60 @@ +# Language code as supported by Sphinx: +# https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language +LANGUAGE ?= pt_BR + +# Branch used in the project and in CPython +BRANCH := 3.11 + +############################ +# Environment variables for 'merge' target +############################ +# +# Version(s) that still receive(s) bug fixes, not only security-related fixes. +# Versions in this variable will have their translation replaced with changes +# in currently active version being translated. These will have pomerge's +# --overwrite flag set. +BUGFIXBRANCH ?= 3.10 + +# Version(s) that are considered security fixes or EOL. Let's make them more +# stable, with more predictable state. These versions will not have translated +# strings replaced with translations update. These will have pomerge's +# --no-overwrite flag set. +OLDERBRANCHES ?= 3.9 3.8 3.7 3.6 2.7 +# +############################ + + +############################ +# Environment variables for 'build' target +############################ +# +# If set to -W, warnings will be considered as errors. +# Set to "" keep warnings as is. +SPHINXERRORHANDLING := "-W" +# +############################ + +########################### +# Environment variables for 'tx-install' target +########################### +# +# Specific Transifex CLI Client version to install. +# If unset, latest version will be used. +TX_CLI_VERSION ?= '1.6.7' + +# Install directory of TX_CLI_DIR. Consider using a directory already +# in the PATH environment variable because install script will add this +# directory to PATH in your ~/.bashrc. +TX_CLI_DIR ?= $(shell realpath ~/.local/bin) + +############################ +# Paths and URLs +############################ +# +PYTHON ?= $(shell which python3) +CPYTHON_DIR := cpython +LOCALE_DIR := Doc/locales +LOGS_DIR := logs +VENV_DIR := .venv +# +####### diff --git a/.github/prepmsg.sh b/.github/prepmsg.sh new file mode 100755 index 000000000..2111ab29a --- /dev/null +++ b/.github/prepmsg.sh @@ -0,0 +1,38 @@ +#!/bin/bash +# Prepare message for Telegram notification +set -ex + +die() { echo "$0: error: $*" >&2; exit 1; } + +[ $# -ne 2 ] && die "Expected 1 input and 1 output files, got $#" +[ ! -f "$1" ] && die "Input file $1 not found, skipping." +[ -z "${GITHUB_REPOSITORY}" ] && die "GITHUB_REPOSITORY is empty." +[ -z "${GITHUB_RUN_ID}" ] && die "GITHUB_RUN_ID is empty." +[ -z "${GITHUB_JOB}" ] && die "GITHUB_JOB is empty." + +URL="https://github.com/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID}" + +input="$1" +output="$2" + +touch aux +if [[ "${GITHUB_JOB}" == "build" ]]; then + grep 'cpython/Doc/.*WARNING:' "$input" | \ + sed 's|.*/cpython/Doc/||' | \ + uniq | \ + sed 's|^|```\n|;s|$|\n```\n|' \ + > aux +elif [[ "${GITHUB_JOB}" == "lint" ]]; then + grep -P '^.*\.po:\d+:\s+.*\(.*\)$' "$input" | \ + sort -u | \ + sed 's|^|```\n|;s|$|\n```\n|' \ + > aux +else + die "Unexpected job name ${GITHUB_JOB}" +fi + +[[ $(cat aux) == "" ]] && die "Unexpected empty output message." + +echo "❌ *${GITHUB_JOB}* (ID [${GITHUB_RUN_ID}]($URL)):" > "$output"; +{ echo ""; cat aux; echo ""; } >> "$output" +rm aux diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml deleted file mode 100644 index d8267cca0..000000000 --- a/.github/workflows/build.yml +++ /dev/null @@ -1,95 +0,0 @@ -# Build translated docs and notify in case of errors - -name: Build - -on: - workflow_dispatch: - workflow_call: - inputs: - was-called: - required: true - type: string - default: 'no' - secrets: - TELEGRAM_TO: - required: true - TELEGRAM_TOKEN: - required: true - push: - paths: - - '.github/workflows/build.yml' - - 'scripts/build.sh' - - 'scripts/prepmsg.sh' - - '*.po' - - '**/*.po' - -env: - CPYTHON_BRANCH: '3.11' - LANGUAGE: 'pt_BR' - -jobs: - build: - runs-on: ubuntu-latest - steps: - - name: Check out ${{ github.repository }} - uses: actions/checkout@v3 - with: - persist-credentials: false - - run: echo ${{ inputs.was-called }} - - if: ${{ inputs.was-called }} == 'yes' - run: | - git pull --rebase - - name: Check out CPython - uses: actions/checkout@v3 - with: - repository: python/cpython - persist-credentials: false - ref: ${{ env.CPYTHON_BRANCH }} - path: cpython - - name: Set up Python 3.9 - uses: actions/setup-python@v4 - with: - python-version: '3.9' - cache: 'pip' - cache-dependency-path: '**/requirements*.txt' - - name: Install dependencies - run: | - sudo apt update -y && sudo apt install gettext -y - pip3 install --upgrade pip - pip3 install -r requirements.txt -r cpython/Doc/requirements.txt - - name: Build docs - run: | - mkdir logs - echo "::add-matcher::.github/problem-matchers/sphinx.json" - sh scripts/build.sh 2> >(tee -a logs/error.log >&2) - env: - LANGUAGE: ${{ env.LANGUAGE }} - - name: Prepare notification on error - if: failure() - run: | - sh scripts/prepmsg.sh logs/error.log logs/notify.log - env: - GITHUB_JOB: ${{ github.job }} - GITHUB_RUN_ID: ${{ github.run_id }} - GITHUB_REPOSITORY: ${{ github.repository }} - - name: Notify via Telegram on build errors if any - if: failure() - uses: appleboy/telegram-action@master - with: - to: ${{ secrets.TELEGRAM_TO }} - token: ${{ secrets.TELEGRAM_TOKEN }} - format: markdown - disable_web_page_preview: true - message_file: logs/notify.log - - name: Upload artifact - docs - if: always() - uses: actions/upload-artifact@v2 - with: - name: docs - path: cpython/Doc/build/html - - name: Upload artifact - logs - if: always() - uses: actions/upload-artifact@v3 - with: - name: build-logs - path: logs/ diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml new file mode 100644 index 000000000..41cbb26e8 --- /dev/null +++ b/.github/workflows/check.yml @@ -0,0 +1,206 @@ +# Run some tests in the Python Doc translations + +name: Check + +on: + workflow_dispatch: + workflow_call: + inputs: + called: + description: This tells it was called + required: false + type: boolean + default: true + push: + paths: + - '.github/workflows/check.yml' + - '.github/prepmsg.sh' + - 'Makefile' + - '*.po' + - '**/*.po' + +permissions: + contents: read + +jobs: + # Build documentation handling warnings as errors. Always store logs. + # If success, make built docs artifact. If failure, notify telegram. + build: + name: Build translated docs + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + persist-credentials: false + + - name: Download PO files (if called) + if: github.event.inputs.called == true + uses: actions/download-artifact@v3 + with: + name: translations + + - name: Set up Python 3 + uses: actions/setup-python@v4 + with: + python-version: '3' + + - name: Build docs + continue-on-error: true + id: build + run: | + echo "::add-matcher::.github/problem-matchers/sphinx.json" + make build + + - name: Upload artifact - docs + if: steps.build.outcome == 'success' + uses: actions/upload-artifact@v3 + with: + name: docs + path: cpython/Doc/build/html + + - name: Upload artifact - log files + if: always() + uses: actions/upload-artifact@v3 + with: + name: build-logs + path: logs/* + + - name: Prepare notification (only on error) + if: steps.build.outcome == 'failure' + id: prepare + run: .github/prepmsg.sh logs/build/err*.txt logs/notify.txt + env: + GITHUB_JOB: ${{ github.job }} + GITHUB_RUN_ID: ${{ github.run_id }} + GITHUB_REPOSITORY: ${{ github.repository }} + + - name: Notify via Telegram + if: steps.prepare.outcome == 'success' + uses: appleboy/telegram-action@master + with: + to: ${{ secrets.TELEGRAM_TO }} + token: ${{ secrets.TELEGRAM_TOKEN }} + format: markdown + disable_web_page_preview: true + message_file: logs/notify.txt + + + # Run sphinx-lint to find wrong reST syntax in PO files. Always store logs. + lint: + name: Lint translations + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + persist-credentials: false + + - name: Download PO files (if called) + if: github.event.inputs.called == true + uses: actions/download-artifact@v3 + with: + name: translations + + - name: Set up Python 3 + uses: actions/setup-python@v4 + with: + python-version: '3' + + - name: Run sphinx-lint + continue-on-error: true + id: lint + run: | + make lint + + - name: Upload artifact - log files + uses: actions/upload-artifact@v3 + with: + name: lint-logs + path: logs/* + + #- name: Prepare notification (only on error) + # if: step.lint.outcome == 'failure' + # id: prepare + # run: scripts/prepmsg.sh logs/build/err*.txt logs/notify.txt + # env: + # GITHUB_JOB: ${{ github.job }} + # GITHUB_RUN_ID: ${{ github.run_id }} + # GITHUB_REPOSITORY: ${{ github.repository }} + # + #- name: Notify via Telegram + # if: step.prepare.outcome == 'success' + # uses: appleboy/telegram-action@master + # with: + # to: ${{ secrets.TELEGRAM_TO }} + # token: ${{ secrets.TELEGRAM_TOKEN }} + # format: markdown + # disable_web_page_preview: true + # message_file: logs/notify.txt + + + # Spell check the PO files, and store them in logs/ directory + pospell: + name: Spell check translations + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + persist-credentials: false + + - name: Download PO files (if called) + if: github.event.inputs.called == true + uses: actions/download-artifact@v3 + with: + name: translations + + - name: Set up Python 3 + uses: actions/setup-python@v4 + with: + python-version: '3' + + - name: Run pospell + continue-on-error: true + id: pospell + run: make spell + + - name: Upload artifact - log files + uses: actions/upload-artifact@v3 + with: + name: pospell-logs + path: logs/* + + + # Gather all strings in a single PO file, useful for Translation Memory + compendium: + runs-on: ubuntu-latest + steps: + - name: Check out ${{ github.repository }} + uses: actions/checkout@v3 + with: + persist-credentials: false + + - name: Download PO files (if called) + if: github.event.inputs.called == true + uses: actions/download-artifact@v3 + with: + name: translations + + - name: Set up Python 3 + uses: actions/setup-python@v4 + with: + python-version: '3' + + - name: Install dependencies + run: | + sudo apt update -y && sudo apt install gettext -y + pip3 install --upgrade pip + pip3 install translate-toolkit + + - name: Generate compendium from PO files + run: | + pocompendium --correct compendium.po *.po **/*.po + + - name: Upload artifact + uses: actions/upload-artifact@v3 + with: + name: compendium + path: compendium.po diff --git a/.github/workflows/compendium.yml b/.github/workflows/compendium.yml deleted file mode 100644 index 35675300f..000000000 --- a/.github/workflows/compendium.yml +++ /dev/null @@ -1,39 +0,0 @@ -name: Generate compendium - -on: - workflow_dispatch: - workflow_call: - push: - paths: - - '.github/workflows/compendium.yml' - - '*.po' - - '**/*.po' - -jobs: - compendium: - runs-on: ubuntu-latest - steps: - - name: Check out ${{ github.repository }} - uses: actions/checkout@v3 - with: - persist-credentials: false - - if: github.event_name == 'workflow_call' - run: | - git pull --rebase - - name: Set up Python 3.10 - uses: actions/setup-python@v4 - with: - python-version: '3.10' - - name: Install dependencies - run: | - sudo apt update -y && sudo apt install gettext -y - pip3 install --upgrade pip - pip3 install translate-toolkit - - name: Generate compendium from PO files - run: | - pocompendium --correct compendium.po *.po **/*.po - - name: Upload artifact - uses: actions/upload-artifact@v3 - with: - name: compendium - path: compendium.po diff --git a/.github/workflows/linkcheck.yml b/.github/workflows/linkcheck.yml deleted file mode 100644 index 365ccbe39..000000000 --- a/.github/workflows/linkcheck.yml +++ /dev/null @@ -1,42 +0,0 @@ -# Run sphinx's linkcheck to pop up -# broken and redirected links. - -name: Linkcheck - -on: - workflow_dispatch: - -permissions: - contents: read - -jobs: - linkcheck: - runs-on: ubuntu-latest - steps: - - name: Check out CPython - uses: actions/checkout@v3 - with: - repository: python/cpython - persist-credentials: false - - - name: Set up Python 3.9 - uses: actions/setup-python@v4 - with: - python-version: '3.9' - cache: 'pip' - cache-dependency-path: 'Doc/requirements.txt' - - - name: Make virtual environment - run: | - make -C Doc venv - - - name: Run linkcheck - run: | - make -C Doc linkcheck \ - SPHINXOPTS="--keep-going" - - - name: Upload output as artifact - uses: actions/upload-artifact@v3 - with: - name: linkcheck-output - path: Doc/build/linkcheck/output.txt diff --git a/.github/workflows/pythonpackage.yml b/.github/workflows/pythonpackage.yml deleted file mode 100644 index 4a655c037..000000000 --- a/.github/workflows/pythonpackage.yml +++ /dev/null @@ -1,156 +0,0 @@ -name: Build and update documentation - -# Daily at 23 pm, or manually -on: - workflow_dispatch: - schedule: - - cron: '0 23 * * *' - -# Branch where translation takes place -env: - BRANCH: '3.10' - -jobs: - - # Job to pull, build and push translations from Transifex to the repository - update: - if: (github.event_name == 'schedule' && github.repository == 'python/python-docs-pt-br') || (github.event_name != 'schedule') - runs-on: ubuntu-latest - strategy: - max-parallel: 4 - steps: - - uses: actions/checkout@v2 - with: - ref: ${{ env.BRANCH }} - - uses: actions/setup-python@v2 - with: - python-version: 3.8 - - run: sudo apt update - - run: sudo apt install -y gettext - - run: make tx-config - - name: Run make pull - run: | - if [[ -n "$TRANSIFEX_APIKEY" ]]; then - echo -e "[https://www.transifex.com]\n" \ - "api_hostname = https://api.transifex.com\n" \ - "hostname = https://www.transifex.com\n" \ - "password = $TRANSIFEX_APIKEY\n" \ - "username = api" \ - > ~/.transifexrc - fi - make pull - git status --short - env: - TRANSIFEX_APIKEY: ${{ secrets.TRANSIFEX_APIKEY }} - - run: make build CPYTHON_PATH=/tmp/cpython/ SPHINXERRORHANDLING='' - - name: Run make push - run: | - git config user.email "github-actions[bot]@users.noreply.github.com" - git config user.name "github-actions[bot]" - make push - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - uses: appleboy/telegram-action@master - if: ${{ failure() }} - with: - to: ${{ secrets.TELEGRAM_TO }} - token: ${{ secrets.TELEGRAM_TOKEN }} - format: markdown - args: "❌ Falha na execução do workflow, job *${{ github.job }}* (ID *${{ github.run_id }}*). [Saiba mais sobre o erro...](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }})" - - # Job to check spelling of translations - spellcheck: - if: (github.event_name == 'schedule' && github.repository == 'python/python-docs-pt-br') || (github.event_name != 'schedule') - needs: update - runs-on: ubuntu-latest - strategy: - max-parallel: 4 - steps: - - uses: actions/checkout@v2 - with: - ref: ${{ env.BRANCH }} - - uses: actions/setup-python@v2 - - run: sudo apt update - - run: sudo apt install -y gettext hunspell hunspell-pt-br - - name: Run make spell - run: | - make spell - cd .pospell/ - tar -czf ../pospell-out.tar.gz *.txt **/*.txt - - name: Update artifact spellchecking-output - uses: actions/upload-artifact@v2 - with: - name: spellchecking-output - path: pospell-out.tar.gz - - # Job to create a compendium to ease searching translated strings - compendium: - if: (github.event_name == 'schedule' && github.repository == 'python/python-docs-pt-br') || (github.event_name != 'schedule') - needs: update - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - with: - ref: ${{ env.BRANCH }} - - uses: actions/setup-python@v2 - - run: pip install translate-toolkit powrap - - run: sudo apt update - - run: sudo apt install -y gettext - - run: pocompendium --correct compendium.po *.po **/*.po - - run: powrap --no-wrap compendium.po - - run: tar -czf compendium.tar.gz compendium.po - - name: Update artifact spellchecking-output - uses: actions/upload-artifact@v2 - with: - name: compendium - path: compendium.tar.gz - - # Job to merge translation from current BRANCH to older ones - merge: - if: (github.event_name == 'schedule' && github.repository == 'python/python-docs-pt-br') || (github.event_name != 'schedule') - needs: update - runs-on: ubuntu-latest - strategy: - max-parallel: 4 - steps: - - uses: actions/checkout@v2 - with: - ref: ${{ env.BRANCH }} - - run: git fetch --no-tags --prune --depth=1 origin +refs/heads/*:refs/remotes/origin/* - - uses: actions/setup-python@v2 - - run: sudo apt update - - run: sudo apt install -y gettext - - name: Run make push - run: | - git config user.email "github-actions[bot]@users.noreply.github.com" - git config user.name "github-actions[bot]" - make merge - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - # Job to build translated documentation treating warnings as errors - build-warn-as-err: - if: (github.event_name == 'schedule' && github.repository == 'python/python-docs-pt-br') || (github.event_name != 'schedule') - needs: update - runs-on: ubuntu-latest - strategy: - max-parallel: 4 - steps: - - uses: actions/checkout@v2 - with: - ref: ${{ env.BRANCH }} - - uses: actions/setup-python@v2 - - run: make build CPYTHON_PATH=/tmp/cpython/ 2> >(tee -a build-log.txt >&2) - - name: Update artifact build-output - if: ${{ failure() }} - uses: actions/upload-artifact@v2 - with: - name: build-output - path: build-log.txt - - uses: appleboy/telegram-action@master - if: ${{ failure() }} && github.event_name == 'schedule' - with: - to: ${{ secrets.TELEGRAM_TO }} - token: ${{ secrets.TELEGRAM_TOKEN }} - format: markdown - args: "❌ Falha na execução do workflow, job *${{ github.job }}* (ID *${{ github.run_id }}*). [Saiba mais sobre o erro...](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }})" diff --git a/.github/workflows/update.yml b/.github/workflows/update.yml index 35fb17a80..0e5ca13ea 100644 --- a/.github/workflows/update.yml +++ b/.github/workflows/update.yml @@ -1,144 +1,193 @@ -name: Update translations +name: Update on: workflow_dispatch: + inputs: + BRANCH: + description: CPython branch to use + required: false + type: string + default: '3.11' push: paths: - '.github/workflows/update.yml' - - 'scripts/update.sh' + - 'Makefile' branches: - - '3.7' - - '3.8' - - '3.9' - - '3.10' - '3.11' + - '3.10' + - '3.9' + - '3.8' + - '3.7' schedule: - cron: '0 23 * * *' -env: - CPYTHON_BRANCH: '3.11' - LANGUAGE: 'pt_BR' +permissions: + contents: read jobs: - update: - # Job to pull translation from Transifex platform, and commit & push changes + # Download translations from Transifex, keep PO and Logs artifacts + pull: + name: Pull from Transifex runs-on: ubuntu-latest steps: - name: Check out ${{ github.repository }} uses: actions/checkout@v3 + with: + persist-credentials: false + + - name: Extract branch name + if: github.event != 'workflow_dispatch' + shell: bash + run: echo "BRANCH=$(echo ${GITHUB_REF#refs/heads/})" >>$GITHUB_ENV + + - name: ... or set branch name if manually run + if: github.event == 'workflow_dispatch' + run: echo "BRANCH=${{ github.event.inputs.BRANCH }}" >> $GITHUB_ENV + - name: Check out CPython uses: actions/checkout@v3 with: repository: python/cpython - persist-credentials: false - ref: ${{ env.CPYTHON_BRANCH }} + ref: ${{ env.BRANCH }} path: cpython - - name: Set up Python 3.9 + + - name: Set up Python 3 uses: actions/setup-python@v4 with: - python-version: '3.9' + python-version: '3' cache: 'pip' - cache-dependency-path: '**/requirements*.txt' - - name: Install Transifex CLI - run: | - curl -o- https://raw.githubusercontent.com/transifex/cli/master/install.sh | bash - working-directory: /usr/local/bin + cache-dependency-path: | + 'requirements.txt' + '${{ env.CPYTHON_DIR }}/requirements.txt' + - name: Install dependencies - run: | - sudo apt update -y && sudo apt install gettext -y - pip3 install --upgrade pip - pip3 install -r requirements.txt -r cpython/Doc/requirements.txt - - name: Update translations - run: | - sh scripts/update.sh + run: sudo apt update -y && sudo apt install gettext tree -y + + - name: Pull translations + run: make pull TX_CLI_DIR=/usr/local/bin env: TX_TOKEN: ${{ secrets.TX_TOKEN }} - LANGUAGE: ${{ env.LANGUAGE }} - - name: Wrap catalog message files - run: | - powrap --modified + + - name: Upload artifact - po files + uses: actions/upload-artifact@v3 + with: + name: translations + path: | + *.po + **/*.po + .tx/ + + - name: Upload artifact - log files + if: always() + uses: actions/upload-artifact@v3 + with: + name: pull-logs + path: logs/* + + + # Job for getting po files downloaded and storing this repository + push: + if: github.repository == 'python/python-docs-pt-br' + name: Push to repo + needs: [pull] + runs-on: ubuntu-latest + permissions: + contents: write + steps: + - name: Check out ${{ github.repository }} + uses: actions/checkout@v3 + + - name: Download PO files + uses: actions/download-artifact@v3 + with: + name: translations + + - name: Changed files + run: git status + - name: Commit and push changes - if: github.repository == 'python/python-docs-pt-br' run: | git config user.name github-actions git config user.email github-actions@github.com - git status - git add -A - git diff-index --quiet HEAD || ( git commit -m "Update translations from Transifex" && git push ) + make push + + # Merge translations previously updated into older branches to make sure + # older versions of Python Docs gets translated as well. + # 'overwrite=true' means strings previously translated will get overwritten; + # other branches will preserve translated strings, only filling in new + # translations. merge: - # Merge translations previously updated into older branches to make sure - # older versions of Python Docs gets translated as well. - # 'overwrite=true' means strings previously translated will get overwritten; - # other branches will preserve translated strings, only filling in new - # translations. - name: merge into ${{ matrix.branch }} - needs: [update] + name: Merge into ${{ matrix.branch }} + needs: [push] + runs-on: ubuntu-latest + permissions: + contents: write strategy: + fail-fast: false + max-parallel: 3 matrix: - branch: [ '3.10', '3.9', '3.8', '3.7' ] + branch: ['3.10', '3.9', '3.8', '3.7', '3.6', '2.7'] include: - branch: 3.10 overwrite: true - runs-on: ubuntu-latest steps: - name: Get current branch name shell: bash run: echo "CURRENT_BRANCH=$(echo ${GITHUB_REF#refs/heads/} | tr / -)" >> $GITHUB_ENV + - name: Check out source branch (${{ env.CURRENT_BRANCH }}) uses: actions/checkout@v3 with: path: ${{ env.CURRENT_BRANCH }} persist-credentials: false + - name: Check out target branch (${{ matrix.branch }}) uses: actions/checkout@v3 with: ref: ${{ matrix.branch }} path: ${{ matrix.branch }} - - name: Set up Python 3.10 + + - name: Set up Python 3 uses: actions/setup-python@v4 with: - python-version: '3.10' + python-version: '3' + cache: 'pip' + cache-dependency-path: "${{ env.CURRENT_BRANCH }}/requirements.txt" + - name: Install dependencies run: | sudo apt update -y && sudo apt install gettext -y pip3 install pomerge powrap + - name: Merge overwriting on stable release branch if: ${{ matrix.overwrite == true }} run: | pomerge --from ${{ env.CURRENT_BRANCH }}/**/*.po --to ${{ matrix.branch }}/**/*.po + - name: Merge without overwriting on EOL or security-fix release branch if: ${{ matrix.overwrite != true }} run: | pomerge --no-overwrite --from ${{ env.CURRENT_BRANCH }}/**/*.po --to ${{ matrix.branch }}/**/*.po + - name: Wrap catalog message files run: | powrap --modified -C ${{ matrix.branch }} + - name: Commit and push changes - if: | - github.repository == 'python/python-docs-pt-br' + if: github.repository == 'python/python-docs-pt-br' run: | - cd ${{ matrix.branch }} git config user.name github-actions git config user.email github-actions@github.com - git status - git add -A - git diff-index --quiet HEAD || ( git commit -m "Merge ${{ env.CURRENT_BRANCH }} into ${{ matrix.branch }}" && git push ) + make push MSG="Merge ${{ env.CURRENT_BRANCH }} into ${{ matrix.branch }}" + working-directory: ${{ matrix.branch }} + + # Call the check.yml workflow after updating to run some tests call-build: - # Call the build workflow after updating name: call - needs: [update] - uses: ./.github/workflows/build.yml - with: - was-called: yes - secrets: - TELEGRAM_TO: ${{ secrets.TELEGRAM_TO }} - TELEGRAM_TOKEN: ${{ secrets.TELEGRAM_TOKEN }} + needs: pull + uses: ./.github/workflows/check.yml + secrets: inherit - call-compendium: - # Call the compendium workflow after updating - name: call - needs: [update] - uses: ./.github/workflows/compendium.yml diff --git a/.gitignore b/.gitignore index ca97b739f..f5f9bf4ef 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,13 @@ +# we want only the PO files *.mo -.tx/**/*.po +*.po~ + +# we don't want venv directories venv/ -.pospell/ +.venv/ + +# cpython checkout shouldn't be added cpython/ + +# No need to keep logs +logs/ diff --git a/.tx/config b/.tx/config index fa748feb0..309b4c39c 100644 --- a/.tx/config +++ b/.tx/config @@ -1,2442 +1,3482 @@ [main] host = https://www.transifex.com -[python-newest.about] -trans.pt_BR = about.po -source_lang = en -type = PO - -[python-newest.bugs] -trans.pt_BR = bugs.po -source_lang = en -type = PO - -[python-newest.contents] -trans.pt_BR = contents.po -source_lang = en -type = PO - -[python-newest.copyright] -trans.pt_BR = copyright.po -source_lang = en -type = PO - -[python-newest.glossary_] -trans.pt_BR = glossary.po -source_lang = en -type = PO - -[python-newest.license] -trans.pt_BR = license.po -source_lang = en -type = PO - -[python-newest.sphinx] -trans.pt_BR = sphinx.po -source_lang = en -type = PO - -[python-newest.c-api--abstract] -trans.pt_BR = c-api/abstract.po -source_lang = en -type = PO - -[python-newest.c-api--allocation] -trans.pt_BR = c-api/allocation.po -source_lang = en -type = PO - -[python-newest.c-api--apiabiversion] -trans.pt_BR = c-api/apiabiversion.po -source_lang = en -type = PO - -[python-newest.c-api--arg] -trans.pt_BR = c-api/arg.po -source_lang = en -type = PO - -[python-newest.c-api--bool] -trans.pt_BR = c-api/bool.po -source_lang = en -type = PO - -[python-newest.c-api--buffer] -trans.pt_BR = c-api/buffer.po -source_lang = en -type = PO - -[python-newest.c-api--bytearray] -trans.pt_BR = c-api/bytearray.po -source_lang = en -type = PO - -[python-newest.c-api--bytes] -trans.pt_BR = c-api/bytes.po -source_lang = en -type = PO - -[python-newest.c-api--call] -trans.pt_BR = c-api/call.po -source_lang = en -type = PO - -[python-newest.c-api--capsule] -trans.pt_BR = c-api/capsule.po -source_lang = en -type = PO - -[python-newest.c-api--cell] -trans.pt_BR = c-api/cell.po -source_lang = en -type = PO - -[python-newest.c-api--code] -trans.pt_BR = c-api/code.po -source_lang = en -type = PO - -[python-newest.c-api--codec] -trans.pt_BR = c-api/codec.po -source_lang = en -type = PO - -[python-newest.c-api--complex] -trans.pt_BR = c-api/complex.po -source_lang = en -type = PO - -[python-newest.c-api--concrete] -trans.pt_BR = c-api/concrete.po -source_lang = en -type = PO - -[python-newest.c-api--contextvars] -trans.pt_BR = c-api/contextvars.po -source_lang = en -type = PO - -[python-newest.c-api--conversion] -trans.pt_BR = c-api/conversion.po -source_lang = en -type = PO - -[python-newest.c-api--coro] -trans.pt_BR = c-api/coro.po -source_lang = en -type = PO - -[python-newest.c-api--datetime] -trans.pt_BR = c-api/datetime.po -source_lang = en -type = PO - -[python-newest.c-api--descriptor] -trans.pt_BR = c-api/descriptor.po -source_lang = en -type = PO - -[python-newest.c-api--dict] -trans.pt_BR = c-api/dict.po -source_lang = en -type = PO - -[python-newest.c-api--exceptions] -trans.pt_BR = c-api/exceptions.po -source_lang = en -type = PO - -[python-newest.c-api--file] -trans.pt_BR = c-api/file.po -source_lang = en -type = PO - -[python-newest.c-api--float] -trans.pt_BR = c-api/float.po -source_lang = en -type = PO - -[python-newest.c-api--function] -trans.pt_BR = c-api/function.po -source_lang = en -type = PO - -[python-newest.c-api--gcsupport] -trans.pt_BR = c-api/gcsupport.po -source_lang = en -type = PO - -[python-newest.c-api--gen] -trans.pt_BR = c-api/gen.po -source_lang = en -type = PO - -[python-newest.c-api--import] -trans.pt_BR = c-api/import.po -source_lang = en -type = PO - -[python-newest.c-api--index] -trans.pt_BR = c-api/index.po -source_lang = en -type = PO - -[python-newest.c-api--init] -trans.pt_BR = c-api/init.po -source_lang = en -type = PO - -[python-newest.c-api--init_config] -trans.pt_BR = c-api/init_config.po -source_lang = en -type = PO - -[python-newest.c-api--intro] -trans.pt_BR = c-api/intro.po -source_lang = en -type = PO - -[python-newest.c-api--iter] -trans.pt_BR = c-api/iter.po -source_lang = en -type = PO - -[python-newest.c-api--iterator] -trans.pt_BR = c-api/iterator.po -source_lang = en -type = PO - -[python-newest.c-api--list] -trans.pt_BR = c-api/list.po -source_lang = en -type = PO - -[python-newest.c-api--long] -trans.pt_BR = c-api/long.po -source_lang = en -type = PO - -[python-newest.c-api--mapping] -trans.pt_BR = c-api/mapping.po -source_lang = en -type = PO - -[python-newest.c-api--marshal] -trans.pt_BR = c-api/marshal.po -source_lang = en -type = PO - -[python-newest.c-api--memory] -trans.pt_BR = c-api/memory.po -source_lang = en -type = PO - -[python-newest.c-api--memoryview] -trans.pt_BR = c-api/memoryview.po -source_lang = en -type = PO - -[python-newest.c-api--method] -trans.pt_BR = c-api/method.po -source_lang = en -type = PO - -[python-newest.c-api--module] -trans.pt_BR = c-api/module.po -source_lang = en -type = PO - -[python-newest.c-api--none] -trans.pt_BR = c-api/none.po -source_lang = en -type = PO - -[python-newest.c-api--number] -trans.pt_BR = c-api/number.po -source_lang = en -type = PO - -[python-newest.c-api--objbuffer] -trans.pt_BR = c-api/objbuffer.po -source_lang = en -type = PO - -[python-newest.c-api--object] -trans.pt_BR = c-api/object.po -source_lang = en -type = PO - -[python-newest.c-api--objimpl] -trans.pt_BR = c-api/objimpl.po -source_lang = en -type = PO - -[python-newest.c-api--refcounting] -trans.pt_BR = c-api/refcounting.po -source_lang = en -type = PO - -[python-newest.c-api--reflection] -trans.pt_BR = c-api/reflection.po -source_lang = en -type = PO - -[python-newest.c-api--sequence] -trans.pt_BR = c-api/sequence.po -source_lang = en -type = PO - -[python-newest.c-api--set] -trans.pt_BR = c-api/set.po -source_lang = en -type = PO - -[python-newest.c-api--slice] -trans.pt_BR = c-api/slice.po -source_lang = en -type = PO - -[python-newest.c-api--stable] -trans.pt_BR = c-api/stable.po -source_lang = en -type = PO - -[python-newest.c-api--structures] -trans.pt_BR = c-api/structures.po -source_lang = en -type = PO - -[python-newest.c-api--sys] -trans.pt_BR = c-api/sys.po -source_lang = en -type = PO - -[python-newest.c-api--tuple] -trans.pt_BR = c-api/tuple.po -source_lang = en -type = PO - -[python-newest.c-api--type] -trans.pt_BR = c-api/type.po -source_lang = en -type = PO - -[python-newest.c-api--typehints] -trans.pt_BR = c-api/typehints.po -source_lang = en -type = PO - -[python-newest.c-api--typeobj] -trans.pt_BR = c-api/typeobj.po -source_lang = en -type = PO - -[python-newest.c-api--unicode] -trans.pt_BR = c-api/unicode.po -source_lang = en -type = PO - -[python-newest.c-api--utilities] -trans.pt_BR = c-api/utilities.po -source_lang = en -type = PO - -[python-newest.c-api--veryhigh] -trans.pt_BR = c-api/veryhigh.po -source_lang = en -type = PO - -[python-newest.c-api--weakref] -trans.pt_BR = c-api/weakref.po -source_lang = en -type = PO - -[python-newest.distributing--index] -trans.pt_BR = distributing/index.po -source_lang = en -type = PO - -[python-newest.distutils--_setuptools_disclaimer] -trans.pt_BR = distutils/_setuptools_disclaimer.po -source_lang = en -type = PO - -[python-newest.distutils--apiref] -trans.pt_BR = distutils/apiref.po -source_lang = en -type = PO - -[python-newest.distutils--builtdist] -trans.pt_BR = distutils/builtdist.po -source_lang = en -type = PO - -[python-newest.distutils--commandref] -trans.pt_BR = distutils/commandref.po -source_lang = en -type = PO - -[python-newest.distutils--configfile] -trans.pt_BR = distutils/configfile.po -source_lang = en -type = PO - -[python-newest.distutils--examples] -trans.pt_BR = distutils/examples.po -source_lang = en -type = PO - -[python-newest.distutils--extending] -trans.pt_BR = distutils/extending.po -source_lang = en -type = PO - -[python-newest.distutils--index] -trans.pt_BR = distutils/index.po -source_lang = en -type = PO - -[python-newest.distutils--introduction] -trans.pt_BR = distutils/introduction.po -source_lang = en -type = PO - -[python-newest.distutils--packageindex] -trans.pt_BR = distutils/packageindex.po -source_lang = en -type = PO - -[python-newest.distutils--setupscript] -trans.pt_BR = distutils/setupscript.po -source_lang = en -type = PO - -[python-newest.distutils--sourcedist] -trans.pt_BR = distutils/sourcedist.po -source_lang = en -type = PO - -[python-newest.distutils--uploading] -trans.pt_BR = distutils/uploading.po -source_lang = en -type = PO - -[python-newest.extending--building] -trans.pt_BR = extending/building.po -source_lang = en -type = PO - -[python-newest.extending--embedding] -trans.pt_BR = extending/embedding.po -source_lang = en -type = PO - -[python-newest.extending--extending] -trans.pt_BR = extending/extending.po -source_lang = en -type = PO - -[python-newest.extending--index] -trans.pt_BR = extending/index.po -source_lang = en -type = PO - -[python-newest.extending--newtypes] -trans.pt_BR = extending/newtypes.po -source_lang = en -type = PO - -[python-newest.extending--newtypes_tutorial] -trans.pt_BR = extending/newtypes_tutorial.po -source_lang = en -type = PO - -[python-newest.extending--windows] -trans.pt_BR = extending/windows.po -source_lang = en -type = PO - -[python-newest.faq--design] -trans.pt_BR = faq/design.po -source_lang = en -type = PO - -[python-newest.faq--extending] -trans.pt_BR = faq/extending.po -source_lang = en -type = PO - -[python-newest.faq--general] -trans.pt_BR = faq/general.po -source_lang = en -type = PO - -[python-newest.faq--gui] -trans.pt_BR = faq/gui.po -source_lang = en -type = PO - -[python-newest.faq--index] -trans.pt_BR = faq/index.po -source_lang = en -type = PO - -[python-newest.faq--installed] -trans.pt_BR = faq/installed.po -source_lang = en -type = PO - -[python-newest.faq--library] -trans.pt_BR = faq/library.po -source_lang = en -type = PO - -[python-newest.faq--programming] -trans.pt_BR = faq/programming.po -source_lang = en -type = PO - -[python-newest.faq--windows] -trans.pt_BR = faq/windows.po -source_lang = en -type = PO - -[python-newest.howto--annotations] -trans.pt_BR = howto/annotations.po -source_lang = en -type = PO - -[python-newest.howto--argparse] -trans.pt_BR = howto/argparse.po -source_lang = en -type = PO - -[python-newest.howto--clinic] -trans.pt_BR = howto/clinic.po -source_lang = en -type = PO - -[python-newest.howto--cporting] -trans.pt_BR = howto/cporting.po -source_lang = en -type = PO - -[python-newest.howto--curses] -trans.pt_BR = howto/curses.po -source_lang = en -type = PO - -[python-newest.howto--descriptor] -trans.pt_BR = howto/descriptor.po -source_lang = en -type = PO - -[python-newest.howto--functional] -trans.pt_BR = howto/functional.po -source_lang = en -type = PO - -[python-newest.howto--index] -trans.pt_BR = howto/index.po -source_lang = en -type = PO - -[python-newest.howto--instrumentation] -trans.pt_BR = howto/instrumentation.po -source_lang = en -type = PO - -[python-newest.howto--ipaddress] -trans.pt_BR = howto/ipaddress.po -source_lang = en -type = PO - -[python-newest.howto--logging-cookbook] -trans.pt_BR = howto/logging-cookbook.po -source_lang = en -type = PO - -[python-newest.howto--logging] -trans.pt_BR = howto/logging.po -source_lang = en -type = PO - -[python-newest.howto--pyporting] -trans.pt_BR = howto/pyporting.po -source_lang = en -type = PO - -[python-newest.howto--regex] -trans.pt_BR = howto/regex.po -source_lang = en -type = PO - -[python-newest.howto--sockets] -trans.pt_BR = howto/sockets.po -source_lang = en -type = PO - -[python-newest.howto--sorting] -trans.pt_BR = howto/sorting.po -source_lang = en -type = PO - -[python-newest.howto--unicode] -trans.pt_BR = howto/unicode.po -source_lang = en -type = PO - -[python-newest.howto--urllib2] -trans.pt_BR = howto/urllib2.po -source_lang = en -type = PO - -[python-newest.install--index] -trans.pt_BR = install/index.po -source_lang = en -type = PO - -[python-newest.installing--index] -trans.pt_BR = installing/index.po -source_lang = en -type = PO - -[python-newest.library--2to3] -trans.pt_BR = library/2to3.po -source_lang = en -type = PO - -[python-newest.library--__future__] -trans.pt_BR = library/__future__.po -source_lang = en -type = PO - -[python-newest.library--__main__] -trans.pt_BR = library/__main__.po -source_lang = en -type = PO - -[python-newest.library--_thread] -trans.pt_BR = library/_thread.po -source_lang = en -type = PO - -[python-newest.library--abc] -trans.pt_BR = library/abc.po -source_lang = en -type = PO - -[python-newest.library--aifc] -trans.pt_BR = library/aifc.po -source_lang = en -type = PO - -[python-newest.library--allos] -trans.pt_BR = library/allos.po -source_lang = en -type = PO - -[python-newest.library--archiving] -trans.pt_BR = library/archiving.po -source_lang = en -type = PO - -[python-newest.library--argparse] -trans.pt_BR = library/argparse.po -source_lang = en -type = PO - -[python-newest.library--array] -trans.pt_BR = library/array.po -source_lang = en -type = PO - -[python-newest.library--ast] -trans.pt_BR = library/ast.po -source_lang = en -type = PO - -[python-newest.library--asynchat] -trans.pt_BR = library/asynchat.po -source_lang = en -type = PO - -[python-newest.library--asyncio-api-index] -trans.pt_BR = library/asyncio-api-index.po -source_lang = en -type = PO - -[python-newest.library--asyncio-dev] -trans.pt_BR = library/asyncio-dev.po -source_lang = en -type = PO - -[python-newest.library--asyncio-eventloop] -trans.pt_BR = library/asyncio-eventloop.po -source_lang = en -type = PO - -[python-newest.library--asyncio-exceptions] -trans.pt_BR = library/asyncio-exceptions.po -source_lang = en -type = PO - -[python-newest.library--asyncio-future] -trans.pt_BR = library/asyncio-future.po -source_lang = en -type = PO - -[python-newest.library--asyncio-llapi-index] -trans.pt_BR = library/asyncio-llapi-index.po -source_lang = en -type = PO - -[python-newest.library--asyncio-platforms] -trans.pt_BR = library/asyncio-platforms.po -source_lang = en -type = PO - -[python-newest.library--asyncio-policy] -trans.pt_BR = library/asyncio-policy.po -source_lang = en -type = PO - -[python-newest.library--asyncio-protocol] -trans.pt_BR = library/asyncio-protocol.po -source_lang = en -type = PO - -[python-newest.library--asyncio-queue] -trans.pt_BR = library/asyncio-queue.po -source_lang = en -type = PO - -[python-newest.library--asyncio-stream] -trans.pt_BR = library/asyncio-stream.po -source_lang = en -type = PO - -[python-newest.library--asyncio-subprocess] -trans.pt_BR = library/asyncio-subprocess.po -source_lang = en -type = PO - -[python-newest.library--asyncio-sync] -trans.pt_BR = library/asyncio-sync.po -source_lang = en -type = PO - -[python-newest.library--asyncio-task] -trans.pt_BR = library/asyncio-task.po -source_lang = en -type = PO - -[python-newest.library--asyncio] -trans.pt_BR = library/asyncio.po -source_lang = en -type = PO - -[python-newest.library--asyncore] -trans.pt_BR = library/asyncore.po -source_lang = en -type = PO - -[python-newest.library--atexit] -trans.pt_BR = library/atexit.po -source_lang = en -type = PO - -[python-newest.library--audioop] -trans.pt_BR = library/audioop.po -source_lang = en -type = PO - -[python-newest.library--audit_events] -trans.pt_BR = library/audit_events.po -source_lang = en -type = PO - -[python-newest.library--base64] -trans.pt_BR = library/base64.po -source_lang = en -type = PO - -[python-newest.library--bdb] -trans.pt_BR = library/bdb.po -source_lang = en -type = PO - -[python-newest.library--binary] -trans.pt_BR = library/binary.po -source_lang = en -type = PO - -[python-newest.library--binascii] -trans.pt_BR = library/binascii.po -source_lang = en -type = PO - -[python-newest.library--binhex] -trans.pt_BR = library/binhex.po -source_lang = en -type = PO - -[python-newest.library--bisect] -trans.pt_BR = library/bisect.po -source_lang = en -type = PO - -[python-newest.library--builtins] -trans.pt_BR = library/builtins.po -source_lang = en -type = PO - -[python-newest.library--bz2] -trans.pt_BR = library/bz2.po -source_lang = en -type = PO - -[python-newest.library--calendar] -trans.pt_BR = library/calendar.po -source_lang = en -type = PO - -[python-newest.library--cgi] -trans.pt_BR = library/cgi.po -source_lang = en -type = PO - -[python-newest.library--cgitb] -trans.pt_BR = library/cgitb.po -source_lang = en -type = PO - -[python-newest.library--chunk] -trans.pt_BR = library/chunk.po -source_lang = en -type = PO - -[python-newest.library--cmath] -trans.pt_BR = library/cmath.po -source_lang = en -type = PO - -[python-newest.library--cmd] -trans.pt_BR = library/cmd.po -source_lang = en -type = PO - -[python-newest.library--code] -trans.pt_BR = library/code.po -source_lang = en -type = PO - -[python-newest.library--codecs] -trans.pt_BR = library/codecs.po -source_lang = en -type = PO - -[python-newest.library--codeop] -trans.pt_BR = library/codeop.po -source_lang = en -type = PO - -[python-newest.library--collections_abc] -trans.pt_BR = library/collections.abc.po -source_lang = en -type = PO - -[python-newest.library--collections] -trans.pt_BR = library/collections.po -source_lang = en -type = PO - -[python-newest.library--colorsys] -trans.pt_BR = library/colorsys.po -source_lang = en -type = PO - -[python-newest.library--compileall] -trans.pt_BR = library/compileall.po -source_lang = en -type = PO - -[python-newest.library--concurrency] -trans.pt_BR = library/concurrency.po -source_lang = en -type = PO - -[python-newest.library--concurrent_futures] -trans.pt_BR = library/concurrent.futures.po -source_lang = en -type = PO - -[python-newest.library--concurrent] -trans.pt_BR = library/concurrent.po -source_lang = en -type = PO - -[python-newest.library--configparser] -trans.pt_BR = library/configparser.po -source_lang = en -type = PO - -[python-newest.library--constants] -trans.pt_BR = library/constants.po -source_lang = en -type = PO - -[python-newest.library--contextlib] -trans.pt_BR = library/contextlib.po -source_lang = en -type = PO - -[python-newest.library--contextvars] -trans.pt_BR = library/contextvars.po -source_lang = en -type = PO - -[python-newest.library--copy] -trans.pt_BR = library/copy.po -source_lang = en -type = PO - -[python-newest.library--copyreg] -trans.pt_BR = library/copyreg.po -source_lang = en -type = PO - -[python-newest.library--crypt] -trans.pt_BR = library/crypt.po -source_lang = en -type = PO - -[python-newest.library--crypto] -trans.pt_BR = library/crypto.po -source_lang = en -type = PO - -[python-newest.library--csv] -trans.pt_BR = library/csv.po -source_lang = en -type = PO - -[python-newest.library--ctypes] -trans.pt_BR = library/ctypes.po -source_lang = en -type = PO - -[python-newest.library--curses_ascii] -trans.pt_BR = library/curses.ascii.po -source_lang = en -type = PO - -[python-newest.library--curses_panel] -trans.pt_BR = library/curses.panel.po -source_lang = en -type = PO - -[python-newest.library--curses] -trans.pt_BR = library/curses.po -source_lang = en -type = PO - -[python-newest.library--custominterp] -trans.pt_BR = library/custominterp.po -source_lang = en -type = PO - -[python-newest.library--dataclasses] -trans.pt_BR = library/dataclasses.po -source_lang = en -type = PO - -[python-newest.library--datatypes] -trans.pt_BR = library/datatypes.po -source_lang = en -type = PO - -[python-newest.library--datetime] -trans.pt_BR = library/datetime.po -source_lang = en -type = PO - -[python-newest.library--dbm] -trans.pt_BR = library/dbm.po -source_lang = en -type = PO - -[python-newest.library--debug] -trans.pt_BR = library/debug.po -source_lang = en -type = PO - -[python-newest.library--decimal] -trans.pt_BR = library/decimal.po -source_lang = en -type = PO - -[python-newest.library--development] -trans.pt_BR = library/development.po -source_lang = en -type = PO - -[python-newest.library--devmode] -trans.pt_BR = library/devmode.po -source_lang = en -type = PO - -[python-newest.library--dialog] -trans.pt_BR = library/dialog.po -source_lang = en -type = PO - -[python-newest.library--difflib] -trans.pt_BR = library/difflib.po -source_lang = en -type = PO - -[python-newest.library--dis] -trans.pt_BR = library/dis.po -source_lang = en -type = PO - -[python-newest.library--distribution] -trans.pt_BR = library/distribution.po -source_lang = en -type = PO - -[python-newest.library--distutils] -trans.pt_BR = library/distutils.po -source_lang = en -type = PO - -[python-newest.library--doctest] -trans.pt_BR = library/doctest.po -source_lang = en -type = PO - -[python-newest.library--email_charset] -trans.pt_BR = library/email.charset.po -source_lang = en -type = PO - -[python-newest.library--email_compat32-message] -trans.pt_BR = library/email.compat32-message.po -source_lang = en -type = PO - -[python-newest.library--email_contentmanager] -trans.pt_BR = library/email.contentmanager.po -source_lang = en -type = PO - -[python-newest.library--email_encoders] -trans.pt_BR = library/email.encoders.po -source_lang = en -type = PO - -[python-newest.library--email_errors] -trans.pt_BR = library/email.errors.po -source_lang = en -type = PO - -[python-newest.library--email_examples] -trans.pt_BR = library/email.examples.po -source_lang = en -type = PO - -[python-newest.library--email_generator] -trans.pt_BR = library/email.generator.po -source_lang = en -type = PO - -[python-newest.library--email_header] -trans.pt_BR = library/email.header.po -source_lang = en -type = PO - -[python-newest.library--email_headerregistry] -trans.pt_BR = library/email.headerregistry.po -source_lang = en -type = PO - -[python-newest.library--email_iterators] -trans.pt_BR = library/email.iterators.po -source_lang = en -type = PO - -[python-newest.library--email_message] -trans.pt_BR = library/email.message.po -source_lang = en -type = PO - -[python-newest.library--email_mime] -trans.pt_BR = library/email.mime.po -source_lang = en -type = PO - -[python-newest.library--email_parser] -trans.pt_BR = library/email.parser.po -source_lang = en -type = PO - -[python-newest.library--email_policy] -trans.pt_BR = library/email.policy.po -source_lang = en -type = PO - -[python-newest.library--email] -trans.pt_BR = library/email.po -source_lang = en -type = PO - -[python-newest.library--email_utils] -trans.pt_BR = library/email.utils.po -source_lang = en -type = PO - -[python-newest.library--ensurepip] -trans.pt_BR = library/ensurepip.po -source_lang = en -type = PO - -[python-newest.library--enum] -trans.pt_BR = library/enum.po -source_lang = en -type = PO - -[python-newest.library--errno] -trans.pt_BR = library/errno.po -source_lang = en -type = PO - -[python-newest.library--exceptions] -trans.pt_BR = library/exceptions.po -source_lang = en -type = PO - -[python-newest.library--faulthandler] -trans.pt_BR = library/faulthandler.po -source_lang = en -type = PO - -[python-newest.library--fcntl] -trans.pt_BR = library/fcntl.po -source_lang = en -type = PO - -[python-newest.library--filecmp] -trans.pt_BR = library/filecmp.po -source_lang = en -type = PO - -[python-newest.library--fileformats] -trans.pt_BR = library/fileformats.po -source_lang = en -type = PO - -[python-newest.library--fileinput] -trans.pt_BR = library/fileinput.po -source_lang = en -type = PO - -[python-newest.library--filesys] -trans.pt_BR = library/filesys.po -source_lang = en -type = PO - -[python-newest.library--fnmatch] -trans.pt_BR = library/fnmatch.po -source_lang = en -type = PO - -[python-newest.library--fractions] -trans.pt_BR = library/fractions.po -source_lang = en -type = PO - -[python-newest.library--frameworks] -trans.pt_BR = library/frameworks.po -source_lang = en -type = PO - -[python-newest.library--ftplib] -trans.pt_BR = library/ftplib.po -source_lang = en -type = PO - -[python-newest.library--functional] -trans.pt_BR = library/functional.po -source_lang = en -type = PO - -[python-newest.library--functions] -trans.pt_BR = library/functions.po -source_lang = en -type = PO - -[python-newest.library--functools] -trans.pt_BR = library/functools.po -source_lang = en -type = PO - -[python-newest.library--gc] -trans.pt_BR = library/gc.po -source_lang = en -type = PO - -[python-newest.library--getopt] -trans.pt_BR = library/getopt.po -source_lang = en -type = PO - -[python-newest.library--getpass] -trans.pt_BR = library/getpass.po -source_lang = en -type = PO - -[python-newest.library--gettext] -trans.pt_BR = library/gettext.po -source_lang = en -type = PO - -[python-newest.library--glob] -trans.pt_BR = library/glob.po -source_lang = en -type = PO - -[python-newest.library--graphlib] -trans.pt_BR = library/graphlib.po -source_lang = en -type = PO - -[python-newest.library--grp] -trans.pt_BR = library/grp.po -source_lang = en -type = PO - -[python-newest.library--gzip] -trans.pt_BR = library/gzip.po -source_lang = en -type = PO - -[python-newest.library--hashlib] -trans.pt_BR = library/hashlib.po -source_lang = en -type = PO - -[python-newest.library--heapq] -trans.pt_BR = library/heapq.po -source_lang = en -type = PO - -[python-newest.library--hmac] -trans.pt_BR = library/hmac.po -source_lang = en -type = PO - -[python-newest.library--html_entities] -trans.pt_BR = library/html.entities.po -source_lang = en -type = PO - -[python-newest.library--html_parser] -trans.pt_BR = library/html.parser.po -source_lang = en -type = PO - -[python-newest.library--html] -trans.pt_BR = library/html.po -source_lang = en -type = PO - -[python-newest.library--http_client] -trans.pt_BR = library/http.client.po -source_lang = en -type = PO - -[python-newest.library--http_cookiejar] -trans.pt_BR = library/http.cookiejar.po -source_lang = en -type = PO - -[python-newest.library--http_cookies] -trans.pt_BR = library/http.cookies.po -source_lang = en -type = PO - -[python-newest.library--http] -trans.pt_BR = library/http.po -source_lang = en -type = PO - -[python-newest.library--http_server] -trans.pt_BR = library/http.server.po -source_lang = en -type = PO - -[python-newest.library--i18n] -trans.pt_BR = library/i18n.po -source_lang = en -type = PO - -[python-newest.library--idle] -trans.pt_BR = library/idle.po -source_lang = en -type = PO - -[python-newest.library--imaplib] -trans.pt_BR = library/imaplib.po -source_lang = en -type = PO - -[python-newest.library--imghdr] -trans.pt_BR = library/imghdr.po -source_lang = en -type = PO - -[python-newest.library--imp] -trans.pt_BR = library/imp.po -source_lang = en -type = PO - -[python-newest.library--importlib_metadata] -trans.pt_BR = library/importlib.metadata.po -source_lang = en -type = PO - -[python-newest.library--importlib] -trans.pt_BR = library/importlib.po -source_lang = en -type = PO - -[python-newest.library--index] -trans.pt_BR = library/index.po -source_lang = en -type = PO - -[python-newest.library--inspect] -trans.pt_BR = library/inspect.po -source_lang = en -type = PO - -[python-newest.library--internet] -trans.pt_BR = library/internet.po -source_lang = en -type = PO - -[python-newest.library--intro] -trans.pt_BR = library/intro.po -source_lang = en -type = PO - -[python-newest.library--io] -trans.pt_BR = library/io.po -source_lang = en -type = PO - -[python-newest.library--ipaddress] -trans.pt_BR = library/ipaddress.po -source_lang = en -type = PO - -[python-newest.library--ipc] -trans.pt_BR = library/ipc.po -source_lang = en -type = PO - -[python-newest.library--itertools] -trans.pt_BR = library/itertools.po -source_lang = en -type = PO - -[python-newest.library--json] -trans.pt_BR = library/json.po -source_lang = en -type = PO - -[python-newest.library--keyword] -trans.pt_BR = library/keyword.po -source_lang = en -type = PO - -[python-newest.library--language] -trans.pt_BR = library/language.po -source_lang = en -type = PO - -[python-newest.library--linecache] -trans.pt_BR = library/linecache.po -source_lang = en -type = PO - -[python-newest.library--locale] -trans.pt_BR = library/locale.po -source_lang = en -type = PO - -[python-newest.library--logging_config] -trans.pt_BR = library/logging.config.po -source_lang = en -type = PO - -[python-newest.library--logging_handlers] -trans.pt_BR = library/logging.handlers.po -source_lang = en -type = PO - -[python-newest.library--logging] -trans.pt_BR = library/logging.po -source_lang = en -type = PO - -[python-newest.library--lzma] -trans.pt_BR = library/lzma.po -source_lang = en -type = PO - -[python-newest.library--mailbox] -trans.pt_BR = library/mailbox.po -source_lang = en -type = PO - -[python-newest.library--mailcap] -trans.pt_BR = library/mailcap.po -source_lang = en -type = PO - -[python-newest.library--markup] -trans.pt_BR = library/markup.po -source_lang = en -type = PO - -[python-newest.library--marshal] -trans.pt_BR = library/marshal.po -source_lang = en -type = PO - -[python-newest.library--math] -trans.pt_BR = library/math.po -source_lang = en -type = PO - -[python-newest.library--mimetypes] -trans.pt_BR = library/mimetypes.po -source_lang = en -type = PO - -[python-newest.library--mm] -trans.pt_BR = library/mm.po -source_lang = en -type = PO - -[python-newest.library--mmap] -trans.pt_BR = library/mmap.po -source_lang = en -type = PO - -[python-newest.library--modulefinder] -trans.pt_BR = library/modulefinder.po -source_lang = en -type = PO - -[python-newest.library--modules] -trans.pt_BR = library/modules.po -source_lang = en -type = PO - -[python-newest.library--msilib] -trans.pt_BR = library/msilib.po -source_lang = en -type = PO - -[python-newest.library--msvcrt] -trans.pt_BR = library/msvcrt.po -source_lang = en -type = PO - -[python-newest.library--multiprocessing] -trans.pt_BR = library/multiprocessing.po -source_lang = en -type = PO - -[python-newest.library--multiprocessing_shared_memory] -trans.pt_BR = library/multiprocessing.shared_memory.po -source_lang = en -type = PO - -[python-newest.library--netdata] -trans.pt_BR = library/netdata.po -source_lang = en -type = PO - -[python-newest.library--netrc] -trans.pt_BR = library/netrc.po -source_lang = en -type = PO - -[python-newest.library--nis] -trans.pt_BR = library/nis.po -source_lang = en -type = PO - -[python-newest.library--nntplib] -trans.pt_BR = library/nntplib.po -source_lang = en -type = PO - -[python-newest.library--numbers] -trans.pt_BR = library/numbers.po -source_lang = en -type = PO - -[python-newest.library--numeric] -trans.pt_BR = library/numeric.po -source_lang = en -type = PO - -[python-newest.library--operator] -trans.pt_BR = library/operator.po -source_lang = en -type = PO - -[python-newest.library--optparse] -trans.pt_BR = library/optparse.po -source_lang = en -type = PO - -[python-newest.library--os_path] -trans.pt_BR = library/os.path.po -source_lang = en -type = PO - -[python-newest.library--os] -trans.pt_BR = library/os.po -source_lang = en -type = PO - -[python-newest.library--ossaudiodev] -trans.pt_BR = library/ossaudiodev.po -source_lang = en -type = PO - -[python-newest.library--pathlib] -trans.pt_BR = library/pathlib.po -source_lang = en -type = PO - -[python-newest.library--pdb] -trans.pt_BR = library/pdb.po -source_lang = en -type = PO - -[python-newest.library--persistence] -trans.pt_BR = library/persistence.po -source_lang = en -type = PO - -[python-newest.library--pickle] -trans.pt_BR = library/pickle.po -source_lang = en -type = PO - -[python-newest.library--pickletools] -trans.pt_BR = library/pickletools.po -source_lang = en -type = PO - -[python-newest.library--pipes] -trans.pt_BR = library/pipes.po -source_lang = en -type = PO - -[python-newest.library--pkgutil] -trans.pt_BR = library/pkgutil.po -source_lang = en -type = PO - -[python-newest.library--platform] -trans.pt_BR = library/platform.po -source_lang = en -type = PO - -[python-newest.library--plistlib] -trans.pt_BR = library/plistlib.po -source_lang = en -type = PO - -[python-newest.library--poplib] -trans.pt_BR = library/poplib.po -source_lang = en -type = PO - -[python-newest.library--posix] -trans.pt_BR = library/posix.po -source_lang = en -type = PO - -[python-newest.library--pprint] -trans.pt_BR = library/pprint.po -source_lang = en -type = PO - -[python-newest.library--profile] -trans.pt_BR = library/profile.po -source_lang = en -type = PO - -[python-newest.library--pty] -trans.pt_BR = library/pty.po -source_lang = en -type = PO - -[python-newest.library--pwd] -trans.pt_BR = library/pwd.po -source_lang = en -type = PO - -[python-newest.library--py_compile] -trans.pt_BR = library/py_compile.po -source_lang = en -type = PO - -[python-newest.library--pyclbr] -trans.pt_BR = library/pyclbr.po -source_lang = en -type = PO - -[python-newest.library--pydoc] -trans.pt_BR = library/pydoc.po -source_lang = en -type = PO - -[python-newest.library--pyexpat] -trans.pt_BR = library/pyexpat.po -source_lang = en -type = PO - -[python-newest.library--python] -trans.pt_BR = library/python.po -source_lang = en -type = PO - -[python-newest.library--queue] -trans.pt_BR = library/queue.po -source_lang = en -type = PO - -[python-newest.library--quopri] -trans.pt_BR = library/quopri.po -source_lang = en -type = PO - -[python-newest.library--random] -trans.pt_BR = library/random.po -source_lang = en -type = PO - -[python-newest.library--re] -trans.pt_BR = library/re.po -source_lang = en -type = PO - -[python-newest.library--readline] -trans.pt_BR = library/readline.po -source_lang = en -type = PO - -[python-newest.library--reprlib] -trans.pt_BR = library/reprlib.po -source_lang = en -type = PO - -[python-newest.library--resource] -trans.pt_BR = library/resource.po -source_lang = en -type = PO - -[python-newest.library--rlcompleter] -trans.pt_BR = library/rlcompleter.po -source_lang = en -type = PO - -[python-newest.library--runpy] -trans.pt_BR = library/runpy.po -source_lang = en -type = PO - -[python-newest.library--sched] -trans.pt_BR = library/sched.po -source_lang = en -type = PO - -[python-newest.library--secrets] -trans.pt_BR = library/secrets.po -source_lang = en -type = PO - -[python-newest.library--security_warnings] -trans.pt_BR = library/security_warnings.po -source_lang = en -type = PO - -[python-newest.library--select] -trans.pt_BR = library/select.po -source_lang = en -type = PO - -[python-newest.library--selectors] -trans.pt_BR = library/selectors.po -source_lang = en -type = PO - -[python-newest.library--shelve] -trans.pt_BR = library/shelve.po -source_lang = en -type = PO - -[python-newest.library--shlex] -trans.pt_BR = library/shlex.po -source_lang = en -type = PO - -[python-newest.library--shutil] -trans.pt_BR = library/shutil.po -source_lang = en -type = PO - -[python-newest.library--signal] -trans.pt_BR = library/signal.po -source_lang = en -type = PO - -[python-newest.library--site] -trans.pt_BR = library/site.po -source_lang = en -type = PO - -[python-newest.library--smtpd] -trans.pt_BR = library/smtpd.po -source_lang = en -type = PO - -[python-newest.library--smtplib] -trans.pt_BR = library/smtplib.po -source_lang = en -type = PO - -[python-newest.library--sndhdr] -trans.pt_BR = library/sndhdr.po -source_lang = en -type = PO - -[python-newest.library--socket] -trans.pt_BR = library/socket.po -source_lang = en -type = PO - -[python-newest.library--socketserver] -trans.pt_BR = library/socketserver.po -source_lang = en -type = PO - -[python-newest.library--spwd] -trans.pt_BR = library/spwd.po -source_lang = en -type = PO - -[python-newest.library--sqlite3] -trans.pt_BR = library/sqlite3.po -source_lang = en -type = PO - -[python-newest.library--ssl] -trans.pt_BR = library/ssl.po -source_lang = en -type = PO - -[python-newest.library--stat] -trans.pt_BR = library/stat.po -source_lang = en -type = PO - -[python-newest.library--statistics] -trans.pt_BR = library/statistics.po -source_lang = en -type = PO - -[python-newest.library--stdtypes] -trans.pt_BR = library/stdtypes.po -source_lang = en -type = PO - -[python-newest.library--string] -trans.pt_BR = library/string.po -source_lang = en -type = PO - -[python-newest.library--stringprep] -trans.pt_BR = library/stringprep.po -source_lang = en -type = PO - -[python-newest.library--struct] -trans.pt_BR = library/struct.po -source_lang = en -type = PO - -[python-newest.library--subprocess] -trans.pt_BR = library/subprocess.po -source_lang = en -type = PO - -[python-newest.library--sunau] -trans.pt_BR = library/sunau.po -source_lang = en -type = PO - -[python-newest.library--superseded] -trans.pt_BR = library/superseded.po -source_lang = en -type = PO - -[python-newest.library--symtable] -trans.pt_BR = library/symtable.po -source_lang = en -type = PO - -[python-newest.library--sys] -trans.pt_BR = library/sys.po -source_lang = en -type = PO - -[python-newest.library--sysconfig] -trans.pt_BR = library/sysconfig.po -source_lang = en -type = PO - -[python-newest.library--syslog] -trans.pt_BR = library/syslog.po -source_lang = en -type = PO - -[python-newest.library--tabnanny] -trans.pt_BR = library/tabnanny.po -source_lang = en -type = PO - -[python-newest.library--tarfile] -trans.pt_BR = library/tarfile.po -source_lang = en -type = PO - -[python-newest.library--telnetlib] -trans.pt_BR = library/telnetlib.po -source_lang = en -type = PO - -[python-newest.library--tempfile] -trans.pt_BR = library/tempfile.po -source_lang = en -type = PO - -[python-newest.library--termios] -trans.pt_BR = library/termios.po -source_lang = en -type = PO - -[python-newest.library--test] -trans.pt_BR = library/test.po -source_lang = en -type = PO - -[python-newest.library--text] -trans.pt_BR = library/text.po -source_lang = en -type = PO - -[python-newest.library--textwrap] -trans.pt_BR = library/textwrap.po -source_lang = en -type = PO - -[python-newest.library--threading] -trans.pt_BR = library/threading.po -source_lang = en -type = PO - -[python-newest.library--time] -trans.pt_BR = library/time.po -source_lang = en -type = PO - -[python-newest.library--timeit] -trans.pt_BR = library/timeit.po -source_lang = en -type = PO - -[python-newest.library--tk] -trans.pt_BR = library/tk.po -source_lang = en -type = PO - -[python-newest.library--tkinter_colorchooser] -trans.pt_BR = library/tkinter.colorchooser.po -source_lang = en -type = PO - -[python-newest.library--tkinter_dnd] -trans.pt_BR = library/tkinter.dnd.po -source_lang = en -type = PO - -[python-newest.library--tkinter_font] -trans.pt_BR = library/tkinter.font.po -source_lang = en -type = PO - -[python-newest.library--tkinter_messagebox] -trans.pt_BR = library/tkinter.messagebox.po -source_lang = en -type = PO - -[python-newest.library--tkinter] -trans.pt_BR = library/tkinter.po -source_lang = en -type = PO - -[python-newest.library--tkinter_scrolledtext] -trans.pt_BR = library/tkinter.scrolledtext.po -source_lang = en -type = PO - -[python-newest.library--tkinter_tix] -trans.pt_BR = library/tkinter.tix.po -source_lang = en -type = PO - -[python-newest.library--tkinter_ttk] -trans.pt_BR = library/tkinter.ttk.po -source_lang = en -type = PO - -[python-newest.library--token] -trans.pt_BR = library/token.po -source_lang = en -type = PO - -[python-newest.library--tokenize] -trans.pt_BR = library/tokenize.po -source_lang = en -type = PO - -[python-newest.library--trace] -trans.pt_BR = library/trace.po -source_lang = en -type = PO - -[python-newest.library--traceback] -trans.pt_BR = library/traceback.po -source_lang = en -type = PO - -[python-newest.library--tracemalloc] -trans.pt_BR = library/tracemalloc.po -source_lang = en -type = PO - -[python-newest.library--tty] -trans.pt_BR = library/tty.po -source_lang = en -type = PO - -[python-newest.library--turtle] -trans.pt_BR = library/turtle.po -source_lang = en -type = PO - -[python-newest.library--types] -trans.pt_BR = library/types.po -source_lang = en -type = PO - -[python-newest.library--typing] -trans.pt_BR = library/typing.po -source_lang = en -type = PO - -[python-newest.library--unicodedata] -trans.pt_BR = library/unicodedata.po -source_lang = en -type = PO - -[python-newest.library--unittest_mock-examples] -trans.pt_BR = library/unittest.mock-examples.po -source_lang = en -type = PO - -[python-newest.library--unittest_mock] -trans.pt_BR = library/unittest.mock.po -source_lang = en -type = PO - -[python-newest.library--unittest] -trans.pt_BR = library/unittest.po -source_lang = en -type = PO - -[python-newest.library--unix] -trans.pt_BR = library/unix.po -source_lang = en -type = PO - -[python-newest.library--urllib_error] -trans.pt_BR = library/urllib.error.po -source_lang = en -type = PO - -[python-newest.library--urllib_parse] -trans.pt_BR = library/urllib.parse.po -source_lang = en -type = PO - -[python-newest.library--urllib] -trans.pt_BR = library/urllib.po -source_lang = en -type = PO - -[python-newest.library--urllib_request] -trans.pt_BR = library/urllib.request.po -source_lang = en -type = PO - -[python-newest.library--urllib_robotparser] -trans.pt_BR = library/urllib.robotparser.po -source_lang = en -type = PO - -[python-newest.library--uu] -trans.pt_BR = library/uu.po -source_lang = en -type = PO - -[python-newest.library--uuid] -trans.pt_BR = library/uuid.po -source_lang = en -type = PO - -[python-newest.library--venv] -trans.pt_BR = library/venv.po -source_lang = en -type = PO - -[python-newest.library--warnings] -trans.pt_BR = library/warnings.po -source_lang = en -type = PO - -[python-newest.library--wave] -trans.pt_BR = library/wave.po -source_lang = en -type = PO - -[python-newest.library--weakref] -trans.pt_BR = library/weakref.po -source_lang = en -type = PO - -[python-newest.library--webbrowser] -trans.pt_BR = library/webbrowser.po -source_lang = en -type = PO - -[python-newest.library--windows] -trans.pt_BR = library/windows.po -source_lang = en -type = PO - -[python-newest.library--winreg] -trans.pt_BR = library/winreg.po -source_lang = en -type = PO - -[python-newest.library--winsound] -trans.pt_BR = library/winsound.po -source_lang = en -type = PO - -[python-newest.library--wsgiref] -trans.pt_BR = library/wsgiref.po -source_lang = en -type = PO - -[python-newest.library--xdrlib] -trans.pt_BR = library/xdrlib.po -source_lang = en -type = PO - -[python-newest.library--xml_dom_minidom] -trans.pt_BR = library/xml.dom.minidom.po -source_lang = en -type = PO - -[python-newest.library--xml_dom] -trans.pt_BR = library/xml.dom.po -source_lang = en -type = PO - -[python-newest.library--xml_dom_pulldom] -trans.pt_BR = library/xml.dom.pulldom.po -source_lang = en -type = PO - -[python-newest.library--xml_etree_elementtree] -trans.pt_BR = library/xml.etree.elementtree.po -source_lang = en -type = PO - -[python-newest.library--xml] -trans.pt_BR = library/xml.po -source_lang = en -type = PO - -[python-newest.library--xml_sax_handler] -trans.pt_BR = library/xml.sax.handler.po -source_lang = en -type = PO - -[python-newest.library--xml_sax] -trans.pt_BR = library/xml.sax.po -source_lang = en -type = PO - -[python-newest.library--xml_sax_reader] -trans.pt_BR = library/xml.sax.reader.po -source_lang = en -type = PO - -[python-newest.library--xml_sax_utils] -trans.pt_BR = library/xml.sax.utils.po -source_lang = en -type = PO - -[python-newest.library--xmlrpc_client] -trans.pt_BR = library/xmlrpc.client.po -source_lang = en -type = PO - -[python-newest.library--xmlrpc] -trans.pt_BR = library/xmlrpc.po -source_lang = en -type = PO - -[python-newest.library--xmlrpc_server] -trans.pt_BR = library/xmlrpc.server.po -source_lang = en -type = PO - -[python-newest.library--zipapp] -trans.pt_BR = library/zipapp.po -source_lang = en -type = PO - -[python-newest.library--zipfile] -trans.pt_BR = library/zipfile.po -source_lang = en -type = PO - -[python-newest.library--zipimport] -trans.pt_BR = library/zipimport.po -source_lang = en -type = PO - -[python-newest.library--zlib] -trans.pt_BR = library/zlib.po -source_lang = en -type = PO - -[python-newest.library--zoneinfo] -trans.pt_BR = library/zoneinfo.po -source_lang = en -type = PO - -[python-newest.reference--compound_stmts] -trans.pt_BR = reference/compound_stmts.po -source_lang = en -type = PO - -[python-newest.reference--datamodel] -trans.pt_BR = reference/datamodel.po -source_lang = en -type = PO - -[python-newest.reference--executionmodel] -trans.pt_BR = reference/executionmodel.po -source_lang = en -type = PO - -[python-newest.reference--expressions] -trans.pt_BR = reference/expressions.po -source_lang = en -type = PO - -[python-newest.reference--grammar] -trans.pt_BR = reference/grammar.po -source_lang = en -type = PO - -[python-newest.reference--import] -trans.pt_BR = reference/import.po -source_lang = en -type = PO - -[python-newest.reference--index] -trans.pt_BR = reference/index.po -source_lang = en -type = PO - -[python-newest.reference--introduction] -trans.pt_BR = reference/introduction.po -source_lang = en -type = PO - -[python-newest.reference--lexical_analysis] -trans.pt_BR = reference/lexical_analysis.po -source_lang = en -type = PO - -[python-newest.reference--simple_stmts] -trans.pt_BR = reference/simple_stmts.po -source_lang = en -type = PO - -[python-newest.reference--toplevel_components] -trans.pt_BR = reference/toplevel_components.po -source_lang = en -type = PO - -[python-newest.tutorial--appendix] -trans.pt_BR = tutorial/appendix.po -source_lang = en -type = PO - -[python-newest.tutorial--appetite] -trans.pt_BR = tutorial/appetite.po -source_lang = en -type = PO - -[python-newest.tutorial--classes] -trans.pt_BR = tutorial/classes.po -source_lang = en -type = PO - -[python-newest.tutorial--controlflow] -trans.pt_BR = tutorial/controlflow.po -source_lang = en -type = PO - -[python-newest.tutorial--datastructures] -trans.pt_BR = tutorial/datastructures.po -source_lang = en -type = PO - -[python-newest.tutorial--errors] -trans.pt_BR = tutorial/errors.po -source_lang = en -type = PO - -[python-newest.tutorial--floatingpoint] -trans.pt_BR = tutorial/floatingpoint.po -source_lang = en -type = PO - -[python-newest.tutorial--index] -trans.pt_BR = tutorial/index.po -source_lang = en -type = PO - -[python-newest.tutorial--inputoutput] -trans.pt_BR = tutorial/inputoutput.po -source_lang = en -type = PO - -[python-newest.tutorial--interactive] -trans.pt_BR = tutorial/interactive.po -source_lang = en -type = PO - -[python-newest.tutorial--interpreter] -trans.pt_BR = tutorial/interpreter.po -source_lang = en -type = PO - -[python-newest.tutorial--introduction] -trans.pt_BR = tutorial/introduction.po -source_lang = en -type = PO - -[python-newest.tutorial--modules] -trans.pt_BR = tutorial/modules.po -source_lang = en -type = PO - -[python-newest.tutorial--stdlib] -trans.pt_BR = tutorial/stdlib.po -source_lang = en -type = PO - -[python-newest.tutorial--stdlib2] -trans.pt_BR = tutorial/stdlib2.po -source_lang = en -type = PO - -[python-newest.tutorial--venv] -trans.pt_BR = tutorial/venv.po -source_lang = en -type = PO - -[python-newest.tutorial--whatnow] -trans.pt_BR = tutorial/whatnow.po -source_lang = en -type = PO - -[python-newest.using--cmdline] -trans.pt_BR = using/cmdline.po -source_lang = en -type = PO - -[python-newest.using--configure] -trans.pt_BR = using/configure.po -source_lang = en -type = PO - -[python-newest.using--editors] -trans.pt_BR = using/editors.po -source_lang = en -type = PO - -[python-newest.using--index] -trans.pt_BR = using/index.po -source_lang = en -type = PO - -[python-newest.using--mac] -trans.pt_BR = using/mac.po -source_lang = en -type = PO - -[python-newest.using--unix] -trans.pt_BR = using/unix.po -source_lang = en -type = PO - -[python-newest.using--windows] -trans.pt_BR = using/windows.po -source_lang = en -type = PO - -[python-newest.whatsnew--2_0] -trans.pt_BR = whatsnew/2.0.po -source_lang = en -type = PO - -[python-newest.whatsnew--2_1] -trans.pt_BR = whatsnew/2.1.po -source_lang = en -type = PO - -[python-newest.whatsnew--2_2] -trans.pt_BR = whatsnew/2.2.po -source_lang = en -type = PO - -[python-newest.whatsnew--2_3] -trans.pt_BR = whatsnew/2.3.po -source_lang = en -type = PO - -[python-newest.whatsnew--2_4] -trans.pt_BR = whatsnew/2.4.po -source_lang = en -type = PO - -[python-newest.whatsnew--2_5] -trans.pt_BR = whatsnew/2.5.po -source_lang = en -type = PO - -[python-newest.whatsnew--2_6] -trans.pt_BR = whatsnew/2.6.po -source_lang = en -type = PO - -[python-newest.whatsnew--2_7] -trans.pt_BR = whatsnew/2.7.po -source_lang = en -type = PO - -[python-newest.whatsnew--3_0] -trans.pt_BR = whatsnew/3.0.po -source_lang = en -type = PO - -[python-newest.whatsnew--3_1] -trans.pt_BR = whatsnew/3.1.po -source_lang = en -type = PO - -[python-newest.whatsnew--3_10] -trans.pt_BR = whatsnew/3.10.po -source_lang = en -type = PO - -[python-newest.whatsnew--3_2] -trans.pt_BR = whatsnew/3.2.po -source_lang = en -type = PO - -[python-newest.whatsnew--3_3] -trans.pt_BR = whatsnew/3.3.po -source_lang = en -type = PO - -[python-newest.whatsnew--3_4] -trans.pt_BR = whatsnew/3.4.po -source_lang = en -type = PO - -[python-newest.whatsnew--3_5] -trans.pt_BR = whatsnew/3.5.po -source_lang = en -type = PO - -[python-newest.whatsnew--3_6] -trans.pt_BR = whatsnew/3.6.po -source_lang = en -type = PO - -[python-newest.whatsnew--3_7] -trans.pt_BR = whatsnew/3.7.po -source_lang = en -type = PO - -[python-newest.whatsnew--3_8] -trans.pt_BR = whatsnew/3.8.po -source_lang = en -type = PO - -[python-newest.whatsnew--3_9] -trans.pt_BR = whatsnew/3.9.po -source_lang = en -type = PO - -[python-newest.whatsnew--changelog] -trans.pt_BR = whatsnew/changelog.po -source_lang = en -type = PO - -[python-newest.whatsnew--index] -trans.pt_BR = whatsnew/index.po -source_lang = en -type = PO +[o:python-doc:p:python-newest:r:about] +file_filter = .//LC_MESSAGES/about.po +trans.pt_BR = about.po +source_file = cpython/Doc/locales/pot/about.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:bugs] +file_filter = .//LC_MESSAGES/bugs.po +trans.pt_BR = bugs.po +source_file = cpython/Doc/locales/pot/bugs.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:c-api--abstract] +file_filter = .//LC_MESSAGES/c-api/abstract.po +trans.pt_BR = c-api/abstract.po +source_file = cpython/Doc/locales/pot/c-api/abstract.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:c-api--allocation] +file_filter = .//LC_MESSAGES/c-api/allocation.po +trans.pt_BR = c-api/allocation.po +source_file = cpython/Doc/locales/pot/c-api/allocation.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:c-api--apiabiversion] +file_filter = .//LC_MESSAGES/c-api/apiabiversion.po +trans.pt_BR = c-api/apiabiversion.po +source_file = cpython/Doc/locales/pot/c-api/apiabiversion.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:c-api--arg] +file_filter = .//LC_MESSAGES/c-api/arg.po +trans.pt_BR = c-api/arg.po +source_file = cpython/Doc/locales/pot/c-api/arg.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:c-api--bool] +file_filter = .//LC_MESSAGES/c-api/bool.po +trans.pt_BR = c-api/bool.po +source_file = cpython/Doc/locales/pot/c-api/bool.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:c-api--buffer] +file_filter = .//LC_MESSAGES/c-api/buffer.po +trans.pt_BR = c-api/buffer.po +source_file = cpython/Doc/locales/pot/c-api/buffer.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:c-api--bytearray] +file_filter = .//LC_MESSAGES/c-api/bytearray.po +trans.pt_BR = c-api/bytearray.po +source_file = cpython/Doc/locales/pot/c-api/bytearray.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:c-api--bytes] +file_filter = .//LC_MESSAGES/c-api/bytes.po +trans.pt_BR = c-api/bytes.po +source_file = cpython/Doc/locales/pot/c-api/bytes.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:c-api--call] +file_filter = .//LC_MESSAGES/c-api/call.po +trans.pt_BR = c-api/call.po +source_file = cpython/Doc/locales/pot/c-api/call.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:c-api--capsule] +file_filter = .//LC_MESSAGES/c-api/capsule.po +trans.pt_BR = c-api/capsule.po +source_file = cpython/Doc/locales/pot/c-api/capsule.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:c-api--cell] +file_filter = .//LC_MESSAGES/c-api/cell.po +trans.pt_BR = c-api/cell.po +source_file = cpython/Doc/locales/pot/c-api/cell.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:c-api--code] +file_filter = .//LC_MESSAGES/c-api/code.po +trans.pt_BR = c-api/code.po +source_file = cpython/Doc/locales/pot/c-api/code.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:c-api--codec] +file_filter = .//LC_MESSAGES/c-api/codec.po +trans.pt_BR = c-api/codec.po +source_file = cpython/Doc/locales/pot/c-api/codec.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:c-api--complex] +file_filter = .//LC_MESSAGES/c-api/complex.po +trans.pt_BR = c-api/complex.po +source_file = cpython/Doc/locales/pot/c-api/complex.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:c-api--concrete] +file_filter = .//LC_MESSAGES/c-api/concrete.po +trans.pt_BR = c-api/concrete.po +source_file = cpython/Doc/locales/pot/c-api/concrete.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:c-api--contextvars] +file_filter = .//LC_MESSAGES/c-api/contextvars.po +trans.pt_BR = c-api/contextvars.po +source_file = cpython/Doc/locales/pot/c-api/contextvars.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:c-api--conversion] +file_filter = .//LC_MESSAGES/c-api/conversion.po +trans.pt_BR = c-api/conversion.po +source_file = cpython/Doc/locales/pot/c-api/conversion.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:c-api--coro] +file_filter = .//LC_MESSAGES/c-api/coro.po +trans.pt_BR = c-api/coro.po +source_file = cpython/Doc/locales/pot/c-api/coro.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:c-api--datetime] +file_filter = .//LC_MESSAGES/c-api/datetime.po +trans.pt_BR = c-api/datetime.po +source_file = cpython/Doc/locales/pot/c-api/datetime.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:c-api--descriptor] +file_filter = .//LC_MESSAGES/c-api/descriptor.po +trans.pt_BR = c-api/descriptor.po +source_file = cpython/Doc/locales/pot/c-api/descriptor.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:c-api--dict] +file_filter = .//LC_MESSAGES/c-api/dict.po +trans.pt_BR = c-api/dict.po +source_file = cpython/Doc/locales/pot/c-api/dict.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:c-api--exceptions] +file_filter = .//LC_MESSAGES/c-api/exceptions.po +trans.pt_BR = c-api/exceptions.po +source_file = cpython/Doc/locales/pot/c-api/exceptions.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:c-api--file] +file_filter = .//LC_MESSAGES/c-api/file.po +trans.pt_BR = c-api/file.po +source_file = cpython/Doc/locales/pot/c-api/file.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:c-api--float] +file_filter = .//LC_MESSAGES/c-api/float.po +trans.pt_BR = c-api/float.po +source_file = cpython/Doc/locales/pot/c-api/float.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:c-api--frame] +file_filter = .//LC_MESSAGES/c-api/frame.po +trans.pt_BR = c-api/frame.po +source_file = cpython/Doc/locales/pot/c-api/frame.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:c-api--function] +file_filter = .//LC_MESSAGES/c-api/function.po +trans.pt_BR = c-api/function.po +source_file = cpython/Doc/locales/pot/c-api/function.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:c-api--gcsupport] +file_filter = .//LC_MESSAGES/c-api/gcsupport.po +trans.pt_BR = c-api/gcsupport.po +source_file = cpython/Doc/locales/pot/c-api/gcsupport.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:c-api--gen] +file_filter = .//LC_MESSAGES/c-api/gen.po +trans.pt_BR = c-api/gen.po +source_file = cpython/Doc/locales/pot/c-api/gen.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:c-api--import] +file_filter = .//LC_MESSAGES/c-api/import.po +trans.pt_BR = c-api/import.po +source_file = cpython/Doc/locales/pot/c-api/import.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:c-api--index] +file_filter = .//LC_MESSAGES/c-api/index.po +trans.pt_BR = c-api/index.po +source_file = cpython/Doc/locales/pot/c-api/index.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:c-api--init] +file_filter = .//LC_MESSAGES/c-api/init.po +trans.pt_BR = c-api/init.po +source_file = cpython/Doc/locales/pot/c-api/init.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:c-api--init_config] +file_filter = .//LC_MESSAGES/c-api/init_config.po +trans.pt_BR = c-api/init_config.po +source_file = cpython/Doc/locales/pot/c-api/init_config.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:c-api--intro] +file_filter = .//LC_MESSAGES/c-api/intro.po +trans.pt_BR = c-api/intro.po +source_file = cpython/Doc/locales/pot/c-api/intro.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:c-api--iter] +file_filter = .//LC_MESSAGES/c-api/iter.po +trans.pt_BR = c-api/iter.po +source_file = cpython/Doc/locales/pot/c-api/iter.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:c-api--iterator] +file_filter = .//LC_MESSAGES/c-api/iterator.po +trans.pt_BR = c-api/iterator.po +source_file = cpython/Doc/locales/pot/c-api/iterator.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:c-api--list] +file_filter = .//LC_MESSAGES/c-api/list.po +trans.pt_BR = c-api/list.po +source_file = cpython/Doc/locales/pot/c-api/list.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:c-api--long] +file_filter = .//LC_MESSAGES/c-api/long.po +trans.pt_BR = c-api/long.po +source_file = cpython/Doc/locales/pot/c-api/long.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:c-api--mapping] +file_filter = .//LC_MESSAGES/c-api/mapping.po +trans.pt_BR = c-api/mapping.po +source_file = cpython/Doc/locales/pot/c-api/mapping.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:c-api--marshal] +file_filter = .//LC_MESSAGES/c-api/marshal.po +trans.pt_BR = c-api/marshal.po +source_file = cpython/Doc/locales/pot/c-api/marshal.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:c-api--memory] +file_filter = .//LC_MESSAGES/c-api/memory.po +trans.pt_BR = c-api/memory.po +source_file = cpython/Doc/locales/pot/c-api/memory.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:c-api--memoryview] +file_filter = .//LC_MESSAGES/c-api/memoryview.po +trans.pt_BR = c-api/memoryview.po +source_file = cpython/Doc/locales/pot/c-api/memoryview.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:c-api--method] +file_filter = .//LC_MESSAGES/c-api/method.po +trans.pt_BR = c-api/method.po +source_file = cpython/Doc/locales/pot/c-api/method.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:c-api--module] +file_filter = .//LC_MESSAGES/c-api/module.po +trans.pt_BR = c-api/module.po +source_file = cpython/Doc/locales/pot/c-api/module.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:c-api--none] +file_filter = .//LC_MESSAGES/c-api/none.po +trans.pt_BR = c-api/none.po +source_file = cpython/Doc/locales/pot/c-api/none.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:c-api--number] +file_filter = .//LC_MESSAGES/c-api/number.po +trans.pt_BR = c-api/number.po +source_file = cpython/Doc/locales/pot/c-api/number.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:c-api--objbuffer] +file_filter = .//LC_MESSAGES/c-api/objbuffer.po +trans.pt_BR = c-api/objbuffer.po +source_file = cpython/Doc/locales/pot/c-api/objbuffer.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:c-api--object] +file_filter = .//LC_MESSAGES/c-api/object.po +trans.pt_BR = c-api/object.po +source_file = cpython/Doc/locales/pot/c-api/object.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:c-api--objimpl] +file_filter = .//LC_MESSAGES/c-api/objimpl.po +trans.pt_BR = c-api/objimpl.po +source_file = cpython/Doc/locales/pot/c-api/objimpl.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:c-api--refcounting] +file_filter = .//LC_MESSAGES/c-api/refcounting.po +trans.pt_BR = c-api/refcounting.po +source_file = cpython/Doc/locales/pot/c-api/refcounting.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:c-api--reflection] +file_filter = .//LC_MESSAGES/c-api/reflection.po +trans.pt_BR = c-api/reflection.po +source_file = cpython/Doc/locales/pot/c-api/reflection.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:c-api--sequence] +file_filter = .//LC_MESSAGES/c-api/sequence.po +trans.pt_BR = c-api/sequence.po +source_file = cpython/Doc/locales/pot/c-api/sequence.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:c-api--set] +file_filter = .//LC_MESSAGES/c-api/set.po +trans.pt_BR = c-api/set.po +source_file = cpython/Doc/locales/pot/c-api/set.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:c-api--slice] +file_filter = .//LC_MESSAGES/c-api/slice.po +trans.pt_BR = c-api/slice.po +source_file = cpython/Doc/locales/pot/c-api/slice.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:c-api--stable] +file_filter = .//LC_MESSAGES/c-api/stable.po +trans.pt_BR = c-api/stable.po +source_file = cpython/Doc/locales/pot/c-api/stable.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:c-api--structures] +file_filter = .//LC_MESSAGES/c-api/structures.po +trans.pt_BR = c-api/structures.po +source_file = cpython/Doc/locales/pot/c-api/structures.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:c-api--sys] +file_filter = .//LC_MESSAGES/c-api/sys.po +trans.pt_BR = c-api/sys.po +source_file = cpython/Doc/locales/pot/c-api/sys.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:c-api--tuple] +file_filter = .//LC_MESSAGES/c-api/tuple.po +trans.pt_BR = c-api/tuple.po +source_file = cpython/Doc/locales/pot/c-api/tuple.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:c-api--type] +file_filter = .//LC_MESSAGES/c-api/type.po +trans.pt_BR = c-api/type.po +source_file = cpython/Doc/locales/pot/c-api/type.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:c-api--typehints] +file_filter = .//LC_MESSAGES/c-api/typehints.po +trans.pt_BR = c-api/typehints.po +source_file = cpython/Doc/locales/pot/c-api/typehints.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:c-api--typeobj] +file_filter = .//LC_MESSAGES/c-api/typeobj.po +trans.pt_BR = c-api/typeobj.po +source_file = cpython/Doc/locales/pot/c-api/typeobj.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:c-api--unicode] +file_filter = .//LC_MESSAGES/c-api/unicode.po +trans.pt_BR = c-api/unicode.po +source_file = cpython/Doc/locales/pot/c-api/unicode.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:c-api--utilities] +file_filter = .//LC_MESSAGES/c-api/utilities.po +trans.pt_BR = c-api/utilities.po +source_file = cpython/Doc/locales/pot/c-api/utilities.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:c-api--veryhigh] +file_filter = .//LC_MESSAGES/c-api/veryhigh.po +trans.pt_BR = c-api/veryhigh.po +source_file = cpython/Doc/locales/pot/c-api/veryhigh.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:c-api--weakref] +file_filter = .//LC_MESSAGES/c-api/weakref.po +trans.pt_BR = c-api/weakref.po +source_file = cpython/Doc/locales/pot/c-api/weakref.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:contents] +file_filter = .//LC_MESSAGES/contents.po +trans.pt_BR = contents.po +source_file = cpython/Doc/locales/pot/contents.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:copyright] +file_filter = .//LC_MESSAGES/copyright.po +trans.pt_BR = copyright.po +source_file = cpython/Doc/locales/pot/copyright.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:distributing--index] +file_filter = .//LC_MESSAGES/distributing/index.po +trans.pt_BR = distributing/index.po +source_file = cpython/Doc/locales/pot/distributing/index.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:distutils--_setuptools_disclaimer] +file_filter = .//LC_MESSAGES/distutils/_setuptools_disclaimer.po +trans.pt_BR = distutils/_setuptools_disclaimer.po +source_file = cpython/Doc/locales/pot/distutils/_setuptools_disclaimer.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:distutils--apiref] +file_filter = .//LC_MESSAGES/distutils/apiref.po +trans.pt_BR = distutils/apiref.po +source_file = cpython/Doc/locales/pot/distutils/apiref.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:distutils--builtdist] +file_filter = .//LC_MESSAGES/distutils/builtdist.po +trans.pt_BR = distutils/builtdist.po +source_file = cpython/Doc/locales/pot/distutils/builtdist.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:distutils--commandref] +file_filter = .//LC_MESSAGES/distutils/commandref.po +trans.pt_BR = distutils/commandref.po +source_file = cpython/Doc/locales/pot/distutils/commandref.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:distutils--configfile] +file_filter = .//LC_MESSAGES/distutils/configfile.po +trans.pt_BR = distutils/configfile.po +source_file = cpython/Doc/locales/pot/distutils/configfile.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:distutils--examples] +file_filter = .//LC_MESSAGES/distutils/examples.po +trans.pt_BR = distutils/examples.po +source_file = cpython/Doc/locales/pot/distutils/examples.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:distutils--extending] +file_filter = .//LC_MESSAGES/distutils/extending.po +trans.pt_BR = distutils/extending.po +source_file = cpython/Doc/locales/pot/distutils/extending.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:distutils--index] +file_filter = .//LC_MESSAGES/distutils/index.po +trans.pt_BR = distutils/index.po +source_file = cpython/Doc/locales/pot/distutils/index.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:distutils--introduction] +file_filter = .//LC_MESSAGES/distutils/introduction.po +trans.pt_BR = distutils/introduction.po +source_file = cpython/Doc/locales/pot/distutils/introduction.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:distutils--packageindex] +file_filter = .//LC_MESSAGES/distutils/packageindex.po +trans.pt_BR = distutils/packageindex.po +source_file = cpython/Doc/locales/pot/distutils/packageindex.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:distutils--setupscript] +file_filter = .//LC_MESSAGES/distutils/setupscript.po +trans.pt_BR = distutils/setupscript.po +source_file = cpython/Doc/locales/pot/distutils/setupscript.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:distutils--sourcedist] +file_filter = .//LC_MESSAGES/distutils/sourcedist.po +trans.pt_BR = distutils/sourcedist.po +source_file = cpython/Doc/locales/pot/distutils/sourcedist.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:distutils--uploading] +file_filter = .//LC_MESSAGES/distutils/uploading.po +trans.pt_BR = distutils/uploading.po +source_file = cpython/Doc/locales/pot/distutils/uploading.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:extending--building] +file_filter = .//LC_MESSAGES/extending/building.po +trans.pt_BR = extending/building.po +source_file = cpython/Doc/locales/pot/extending/building.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:extending--embedding] +file_filter = .//LC_MESSAGES/extending/embedding.po +trans.pt_BR = extending/embedding.po +source_file = cpython/Doc/locales/pot/extending/embedding.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:extending--extending] +file_filter = .//LC_MESSAGES/extending/extending.po +trans.pt_BR = extending/extending.po +source_file = cpython/Doc/locales/pot/extending/extending.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:extending--index] +file_filter = .//LC_MESSAGES/extending/index.po +trans.pt_BR = extending/index.po +source_file = cpython/Doc/locales/pot/extending/index.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:extending--newtypes] +file_filter = .//LC_MESSAGES/extending/newtypes.po +trans.pt_BR = extending/newtypes.po +source_file = cpython/Doc/locales/pot/extending/newtypes.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:extending--newtypes_tutorial] +file_filter = .//LC_MESSAGES/extending/newtypes_tutorial.po +trans.pt_BR = extending/newtypes_tutorial.po +source_file = cpython/Doc/locales/pot/extending/newtypes_tutorial.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:extending--windows] +file_filter = .//LC_MESSAGES/extending/windows.po +trans.pt_BR = extending/windows.po +source_file = cpython/Doc/locales/pot/extending/windows.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:faq--design] +file_filter = .//LC_MESSAGES/faq/design.po +trans.pt_BR = faq/design.po +source_file = cpython/Doc/locales/pot/faq/design.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:faq--extending] +file_filter = .//LC_MESSAGES/faq/extending.po +trans.pt_BR = faq/extending.po +source_file = cpython/Doc/locales/pot/faq/extending.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:faq--general] +file_filter = .//LC_MESSAGES/faq/general.po +trans.pt_BR = faq/general.po +source_file = cpython/Doc/locales/pot/faq/general.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:faq--gui] +file_filter = .//LC_MESSAGES/faq/gui.po +trans.pt_BR = faq/gui.po +source_file = cpython/Doc/locales/pot/faq/gui.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:faq--index] +file_filter = .//LC_MESSAGES/faq/index.po +trans.pt_BR = faq/index.po +source_file = cpython/Doc/locales/pot/faq/index.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:faq--installed] +file_filter = .//LC_MESSAGES/faq/installed.po +trans.pt_BR = faq/installed.po +source_file = cpython/Doc/locales/pot/faq/installed.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:faq--library] +file_filter = .//LC_MESSAGES/faq/library.po +trans.pt_BR = faq/library.po +source_file = cpython/Doc/locales/pot/faq/library.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:faq--programming] +file_filter = .//LC_MESSAGES/faq/programming.po +trans.pt_BR = faq/programming.po +source_file = cpython/Doc/locales/pot/faq/programming.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:faq--windows] +file_filter = .//LC_MESSAGES/faq/windows.po +trans.pt_BR = faq/windows.po +source_file = cpython/Doc/locales/pot/faq/windows.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:glossary_] +file_filter = .//LC_MESSAGES/glossary.po +trans.pt_BR = glossary.po +source_file = cpython/Doc/locales/pot/glossary.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:howto--annotations] +file_filter = .//LC_MESSAGES/howto/annotations.po +trans.pt_BR = howto/annotations.po +source_file = cpython/Doc/locales/pot/howto/annotations.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:howto--argparse] +file_filter = .//LC_MESSAGES/howto/argparse.po +trans.pt_BR = howto/argparse.po +source_file = cpython/Doc/locales/pot/howto/argparse.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:howto--clinic] +file_filter = .//LC_MESSAGES/howto/clinic.po +trans.pt_BR = howto/clinic.po +source_file = cpython/Doc/locales/pot/howto/clinic.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:howto--cporting] +file_filter = .//LC_MESSAGES/howto/cporting.po +trans.pt_BR = howto/cporting.po +source_file = cpython/Doc/locales/pot/howto/cporting.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:howto--curses] +file_filter = .//LC_MESSAGES/howto/curses.po +trans.pt_BR = howto/curses.po +source_file = cpython/Doc/locales/pot/howto/curses.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:howto--descriptor] +file_filter = .//LC_MESSAGES/howto/descriptor.po +trans.pt_BR = howto/descriptor.po +source_file = cpython/Doc/locales/pot/howto/descriptor.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:howto--enum] +file_filter = .//LC_MESSAGES/howto/enum.po +trans.pt_BR = howto/enum.po +source_file = cpython/Doc/locales/pot/howto/enum.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:howto--functional] +file_filter = .//LC_MESSAGES/howto/functional.po +trans.pt_BR = howto/functional.po +source_file = cpython/Doc/locales/pot/howto/functional.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:howto--index] +file_filter = .//LC_MESSAGES/howto/index.po +trans.pt_BR = howto/index.po +source_file = cpython/Doc/locales/pot/howto/index.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:howto--instrumentation] +file_filter = .//LC_MESSAGES/howto/instrumentation.po +trans.pt_BR = howto/instrumentation.po +source_file = cpython/Doc/locales/pot/howto/instrumentation.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:howto--ipaddress] +file_filter = .//LC_MESSAGES/howto/ipaddress.po +trans.pt_BR = howto/ipaddress.po +source_file = cpython/Doc/locales/pot/howto/ipaddress.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:howto--isolating-extensions] +file_filter = .//LC_MESSAGES/howto/isolating-extensions.po +trans.pt_BR = howto/isolating-extensions.po +source_file = cpython/Doc/locales/pot/howto/isolating-extensions.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:howto--logging] +file_filter = .//LC_MESSAGES/howto/logging.po +trans.pt_BR = howto/logging.po +source_file = cpython/Doc/locales/pot/howto/logging.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:howto--logging-cookbook] +file_filter = .//LC_MESSAGES/howto/logging-cookbook.po +trans.pt_BR = howto/logging-cookbook.po +source_file = cpython/Doc/locales/pot/howto/logging-cookbook.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:howto--pyporting] +file_filter = .//LC_MESSAGES/howto/pyporting.po +trans.pt_BR = howto/pyporting.po +source_file = cpython/Doc/locales/pot/howto/pyporting.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:howto--regex] +file_filter = .//LC_MESSAGES/howto/regex.po +trans.pt_BR = howto/regex.po +source_file = cpython/Doc/locales/pot/howto/regex.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:howto--sockets] +file_filter = .//LC_MESSAGES/howto/sockets.po +trans.pt_BR = howto/sockets.po +source_file = cpython/Doc/locales/pot/howto/sockets.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:howto--sorting] +file_filter = .//LC_MESSAGES/howto/sorting.po +trans.pt_BR = howto/sorting.po +source_file = cpython/Doc/locales/pot/howto/sorting.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:howto--unicode] +file_filter = .//LC_MESSAGES/howto/unicode.po +trans.pt_BR = howto/unicode.po +source_file = cpython/Doc/locales/pot/howto/unicode.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:howto--urllib2] +file_filter = .//LC_MESSAGES/howto/urllib2.po +trans.pt_BR = howto/urllib2.po +source_file = cpython/Doc/locales/pot/howto/urllib2.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:install--index] +file_filter = .//LC_MESSAGES/install/index.po +trans.pt_BR = install/index.po +source_file = cpython/Doc/locales/pot/install/index.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:installing--index] +file_filter = .//LC_MESSAGES/installing/index.po +trans.pt_BR = installing/index.po +source_file = cpython/Doc/locales/pot/installing/index.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--2to3] +file_filter = .//LC_MESSAGES/library/2to3.po +trans.pt_BR = library/2to3.po +source_file = cpython/Doc/locales/pot/library/2to3.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--__future__] +file_filter = .//LC_MESSAGES/library/__future__.po +trans.pt_BR = library/__future__.po +source_file = cpython/Doc/locales/pot/library/__future__.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--__main__] +file_filter = .//LC_MESSAGES/library/__main__.po +trans.pt_BR = library/__main__.po +source_file = cpython/Doc/locales/pot/library/__main__.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--_thread] +file_filter = .//LC_MESSAGES/library/_thread.po +trans.pt_BR = library/_thread.po +source_file = cpython/Doc/locales/pot/library/_thread.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--abc] +file_filter = .//LC_MESSAGES/library/abc.po +trans.pt_BR = library/abc.po +source_file = cpython/Doc/locales/pot/library/abc.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--aifc] +file_filter = .//LC_MESSAGES/library/aifc.po +trans.pt_BR = library/aifc.po +source_file = cpython/Doc/locales/pot/library/aifc.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--allos] +file_filter = .//LC_MESSAGES/library/allos.po +trans.pt_BR = library/allos.po +source_file = cpython/Doc/locales/pot/library/allos.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--archiving] +file_filter = .//LC_MESSAGES/library/archiving.po +trans.pt_BR = library/archiving.po +source_file = cpython/Doc/locales/pot/library/archiving.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--argparse] +file_filter = .//LC_MESSAGES/library/argparse.po +trans.pt_BR = library/argparse.po +source_file = cpython/Doc/locales/pot/library/argparse.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--array] +file_filter = .//LC_MESSAGES/library/array.po +trans.pt_BR = library/array.po +source_file = cpython/Doc/locales/pot/library/array.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--ast] +file_filter = .//LC_MESSAGES/library/ast.po +trans.pt_BR = library/ast.po +source_file = cpython/Doc/locales/pot/library/ast.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--asynchat] +file_filter = .//LC_MESSAGES/library/asynchat.po +trans.pt_BR = library/asynchat.po +source_file = cpython/Doc/locales/pot/library/asynchat.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--asyncio] +file_filter = .//LC_MESSAGES/library/asyncio.po +trans.pt_BR = library/asyncio.po +source_file = cpython/Doc/locales/pot/library/asyncio.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--asyncio-api-index] +file_filter = .//LC_MESSAGES/library/asyncio-api-index.po +trans.pt_BR = library/asyncio-api-index.po +source_file = cpython/Doc/locales/pot/library/asyncio-api-index.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--asyncio-dev] +file_filter = .//LC_MESSAGES/library/asyncio-dev.po +trans.pt_BR = library/asyncio-dev.po +source_file = cpython/Doc/locales/pot/library/asyncio-dev.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--asyncio-eventloop] +file_filter = .//LC_MESSAGES/library/asyncio-eventloop.po +trans.pt_BR = library/asyncio-eventloop.po +source_file = cpython/Doc/locales/pot/library/asyncio-eventloop.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--asyncio-exceptions] +file_filter = .//LC_MESSAGES/library/asyncio-exceptions.po +trans.pt_BR = library/asyncio-exceptions.po +source_file = cpython/Doc/locales/pot/library/asyncio-exceptions.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--asyncio-extending] +file_filter = .//LC_MESSAGES/library/asyncio-extending.po +trans.pt_BR = library/asyncio-extending.po +source_file = cpython/Doc/locales/pot/library/asyncio-extending.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--asyncio-future] +file_filter = .//LC_MESSAGES/library/asyncio-future.po +trans.pt_BR = library/asyncio-future.po +source_file = cpython/Doc/locales/pot/library/asyncio-future.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--asyncio-llapi-index] +file_filter = .//LC_MESSAGES/library/asyncio-llapi-index.po +trans.pt_BR = library/asyncio-llapi-index.po +source_file = cpython/Doc/locales/pot/library/asyncio-llapi-index.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--asyncio-platforms] +file_filter = .//LC_MESSAGES/library/asyncio-platforms.po +trans.pt_BR = library/asyncio-platforms.po +source_file = cpython/Doc/locales/pot/library/asyncio-platforms.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--asyncio-policy] +file_filter = .//LC_MESSAGES/library/asyncio-policy.po +trans.pt_BR = library/asyncio-policy.po +source_file = cpython/Doc/locales/pot/library/asyncio-policy.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--asyncio-protocol] +file_filter = .//LC_MESSAGES/library/asyncio-protocol.po +trans.pt_BR = library/asyncio-protocol.po +source_file = cpython/Doc/locales/pot/library/asyncio-protocol.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--asyncio-queue] +file_filter = .//LC_MESSAGES/library/asyncio-queue.po +trans.pt_BR = library/asyncio-queue.po +source_file = cpython/Doc/locales/pot/library/asyncio-queue.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--asyncio-runner] +file_filter = .//LC_MESSAGES/library/asyncio-runner.po +trans.pt_BR = library/asyncio-runner.po +source_file = cpython/Doc/locales/pot/library/asyncio-runner.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--asyncio-stream] +file_filter = .//LC_MESSAGES/library/asyncio-stream.po +trans.pt_BR = library/asyncio-stream.po +source_file = cpython/Doc/locales/pot/library/asyncio-stream.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--asyncio-subprocess] +file_filter = .//LC_MESSAGES/library/asyncio-subprocess.po +trans.pt_BR = library/asyncio-subprocess.po +source_file = cpython/Doc/locales/pot/library/asyncio-subprocess.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--asyncio-sync] +file_filter = .//LC_MESSAGES/library/asyncio-sync.po +trans.pt_BR = library/asyncio-sync.po +source_file = cpython/Doc/locales/pot/library/asyncio-sync.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--asyncio-task] +file_filter = .//LC_MESSAGES/library/asyncio-task.po +trans.pt_BR = library/asyncio-task.po +source_file = cpython/Doc/locales/pot/library/asyncio-task.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--asyncore] +file_filter = .//LC_MESSAGES/library/asyncore.po +trans.pt_BR = library/asyncore.po +source_file = cpython/Doc/locales/pot/library/asyncore.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--atexit] +file_filter = .//LC_MESSAGES/library/atexit.po +trans.pt_BR = library/atexit.po +source_file = cpython/Doc/locales/pot/library/atexit.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--audioop] +file_filter = .//LC_MESSAGES/library/audioop.po +trans.pt_BR = library/audioop.po +source_file = cpython/Doc/locales/pot/library/audioop.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--audit_events] +file_filter = .//LC_MESSAGES/library/audit_events.po +trans.pt_BR = library/audit_events.po +source_file = cpython/Doc/locales/pot/library/audit_events.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--base64] +file_filter = .//LC_MESSAGES/library/base64.po +trans.pt_BR = library/base64.po +source_file = cpython/Doc/locales/pot/library/base64.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--bdb] +file_filter = .//LC_MESSAGES/library/bdb.po +trans.pt_BR = library/bdb.po +source_file = cpython/Doc/locales/pot/library/bdb.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--binary] +file_filter = .//LC_MESSAGES/library/binary.po +trans.pt_BR = library/binary.po +source_file = cpython/Doc/locales/pot/library/binary.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--binascii] +file_filter = .//LC_MESSAGES/library/binascii.po +trans.pt_BR = library/binascii.po +source_file = cpython/Doc/locales/pot/library/binascii.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--bisect] +file_filter = .//LC_MESSAGES/library/bisect.po +trans.pt_BR = library/bisect.po +source_file = cpython/Doc/locales/pot/library/bisect.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--builtins] +file_filter = .//LC_MESSAGES/library/builtins.po +trans.pt_BR = library/builtins.po +source_file = cpython/Doc/locales/pot/library/builtins.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--bz2] +file_filter = .//LC_MESSAGES/library/bz2.po +trans.pt_BR = library/bz2.po +source_file = cpython/Doc/locales/pot/library/bz2.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--calendar] +file_filter = .//LC_MESSAGES/library/calendar.po +trans.pt_BR = library/calendar.po +source_file = cpython/Doc/locales/pot/library/calendar.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--cgi] +file_filter = .//LC_MESSAGES/library/cgi.po +trans.pt_BR = library/cgi.po +source_file = cpython/Doc/locales/pot/library/cgi.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--cgitb] +file_filter = .//LC_MESSAGES/library/cgitb.po +trans.pt_BR = library/cgitb.po +source_file = cpython/Doc/locales/pot/library/cgitb.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--chunk] +file_filter = .//LC_MESSAGES/library/chunk.po +trans.pt_BR = library/chunk.po +source_file = cpython/Doc/locales/pot/library/chunk.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--cmath] +file_filter = .//LC_MESSAGES/library/cmath.po +trans.pt_BR = library/cmath.po +source_file = cpython/Doc/locales/pot/library/cmath.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--cmd] +file_filter = .//LC_MESSAGES/library/cmd.po +trans.pt_BR = library/cmd.po +source_file = cpython/Doc/locales/pot/library/cmd.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--code] +file_filter = .//LC_MESSAGES/library/code.po +trans.pt_BR = library/code.po +source_file = cpython/Doc/locales/pot/library/code.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--codecs] +file_filter = .//LC_MESSAGES/library/codecs.po +trans.pt_BR = library/codecs.po +source_file = cpython/Doc/locales/pot/library/codecs.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--codeop] +file_filter = .//LC_MESSAGES/library/codeop.po +trans.pt_BR = library/codeop.po +source_file = cpython/Doc/locales/pot/library/codeop.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--collections] +file_filter = .//LC_MESSAGES/library/collections.po +trans.pt_BR = library/collections.po +source_file = cpython/Doc/locales/pot/library/collections.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--collections_abc] +file_filter = .//LC_MESSAGES/library/collections.abc.po +trans.pt_BR = library/collections.abc.po +source_file = cpython/Doc/locales/pot/library/collections.abc.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--colorsys] +file_filter = .//LC_MESSAGES/library/colorsys.po +trans.pt_BR = library/colorsys.po +source_file = cpython/Doc/locales/pot/library/colorsys.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--compileall] +file_filter = .//LC_MESSAGES/library/compileall.po +trans.pt_BR = library/compileall.po +source_file = cpython/Doc/locales/pot/library/compileall.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--concurrency] +file_filter = .//LC_MESSAGES/library/concurrency.po +trans.pt_BR = library/concurrency.po +source_file = cpython/Doc/locales/pot/library/concurrency.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--concurrent] +file_filter = .//LC_MESSAGES/library/concurrent.po +trans.pt_BR = library/concurrent.po +source_file = cpython/Doc/locales/pot/library/concurrent.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--concurrent_futures] +file_filter = .//LC_MESSAGES/library/concurrent.futures.po +trans.pt_BR = library/concurrent.futures.po +source_file = cpython/Doc/locales/pot/library/concurrent.futures.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--configparser] +file_filter = .//LC_MESSAGES/library/configparser.po +trans.pt_BR = library/configparser.po +source_file = cpython/Doc/locales/pot/library/configparser.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--constants] +file_filter = .//LC_MESSAGES/library/constants.po +trans.pt_BR = library/constants.po +source_file = cpython/Doc/locales/pot/library/constants.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--contextlib] +file_filter = .//LC_MESSAGES/library/contextlib.po +trans.pt_BR = library/contextlib.po +source_file = cpython/Doc/locales/pot/library/contextlib.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--contextvars] +file_filter = .//LC_MESSAGES/library/contextvars.po +trans.pt_BR = library/contextvars.po +source_file = cpython/Doc/locales/pot/library/contextvars.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--copy] +file_filter = .//LC_MESSAGES/library/copy.po +trans.pt_BR = library/copy.po +source_file = cpython/Doc/locales/pot/library/copy.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--copyreg] +file_filter = .//LC_MESSAGES/library/copyreg.po +trans.pt_BR = library/copyreg.po +source_file = cpython/Doc/locales/pot/library/copyreg.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--crypt] +file_filter = .//LC_MESSAGES/library/crypt.po +trans.pt_BR = library/crypt.po +source_file = cpython/Doc/locales/pot/library/crypt.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--crypto] +file_filter = .//LC_MESSAGES/library/crypto.po +trans.pt_BR = library/crypto.po +source_file = cpython/Doc/locales/pot/library/crypto.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--csv] +file_filter = .//LC_MESSAGES/library/csv.po +trans.pt_BR = library/csv.po +source_file = cpython/Doc/locales/pot/library/csv.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--ctypes] +file_filter = .//LC_MESSAGES/library/ctypes.po +trans.pt_BR = library/ctypes.po +source_file = cpython/Doc/locales/pot/library/ctypes.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--curses] +file_filter = .//LC_MESSAGES/library/curses.po +trans.pt_BR = library/curses.po +source_file = cpython/Doc/locales/pot/library/curses.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--curses_ascii] +file_filter = .//LC_MESSAGES/library/curses.ascii.po +trans.pt_BR = library/curses.ascii.po +source_file = cpython/Doc/locales/pot/library/curses.ascii.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--curses_panel] +file_filter = .//LC_MESSAGES/library/curses.panel.po +trans.pt_BR = library/curses.panel.po +source_file = cpython/Doc/locales/pot/library/curses.panel.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--custominterp] +file_filter = .//LC_MESSAGES/library/custominterp.po +trans.pt_BR = library/custominterp.po +source_file = cpython/Doc/locales/pot/library/custominterp.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--dataclasses] +file_filter = .//LC_MESSAGES/library/dataclasses.po +trans.pt_BR = library/dataclasses.po +source_file = cpython/Doc/locales/pot/library/dataclasses.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--datatypes] +file_filter = .//LC_MESSAGES/library/datatypes.po +trans.pt_BR = library/datatypes.po +source_file = cpython/Doc/locales/pot/library/datatypes.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--datetime] +file_filter = .//LC_MESSAGES/library/datetime.po +trans.pt_BR = library/datetime.po +source_file = cpython/Doc/locales/pot/library/datetime.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--dbm] +file_filter = .//LC_MESSAGES/library/dbm.po +trans.pt_BR = library/dbm.po +source_file = cpython/Doc/locales/pot/library/dbm.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--debug] +file_filter = .//LC_MESSAGES/library/debug.po +trans.pt_BR = library/debug.po +source_file = cpython/Doc/locales/pot/library/debug.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--decimal] +file_filter = .//LC_MESSAGES/library/decimal.po +trans.pt_BR = library/decimal.po +source_file = cpython/Doc/locales/pot/library/decimal.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--development] +file_filter = .//LC_MESSAGES/library/development.po +trans.pt_BR = library/development.po +source_file = cpython/Doc/locales/pot/library/development.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--devmode] +file_filter = .//LC_MESSAGES/library/devmode.po +trans.pt_BR = library/devmode.po +source_file = cpython/Doc/locales/pot/library/devmode.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--dialog] +file_filter = .//LC_MESSAGES/library/dialog.po +trans.pt_BR = library/dialog.po +source_file = cpython/Doc/locales/pot/library/dialog.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--difflib] +file_filter = .//LC_MESSAGES/library/difflib.po +trans.pt_BR = library/difflib.po +source_file = cpython/Doc/locales/pot/library/difflib.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--dis] +file_filter = .//LC_MESSAGES/library/dis.po +trans.pt_BR = library/dis.po +source_file = cpython/Doc/locales/pot/library/dis.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--distribution] +file_filter = .//LC_MESSAGES/library/distribution.po +trans.pt_BR = library/distribution.po +source_file = cpython/Doc/locales/pot/library/distribution.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--distutils] +file_filter = .//LC_MESSAGES/library/distutils.po +trans.pt_BR = library/distutils.po +source_file = cpython/Doc/locales/pot/library/distutils.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--doctest] +file_filter = .//LC_MESSAGES/library/doctest.po +trans.pt_BR = library/doctest.po +source_file = cpython/Doc/locales/pot/library/doctest.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--email] +file_filter = .//LC_MESSAGES/library/email.po +trans.pt_BR = library/email.po +source_file = cpython/Doc/locales/pot/library/email.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--email_charset] +file_filter = .//LC_MESSAGES/library/email.charset.po +trans.pt_BR = library/email.charset.po +source_file = cpython/Doc/locales/pot/library/email.charset.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--email_compat32-message] +file_filter = .//LC_MESSAGES/library/email.compat32-message.po +trans.pt_BR = library/email.compat32-message.po +source_file = cpython/Doc/locales/pot/library/email.compat32-message.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--email_contentmanager] +file_filter = .//LC_MESSAGES/library/email.contentmanager.po +trans.pt_BR = library/email.contentmanager.po +source_file = cpython/Doc/locales/pot/library/email.contentmanager.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--email_encoders] +file_filter = .//LC_MESSAGES/library/email.encoders.po +trans.pt_BR = library/email.encoders.po +source_file = cpython/Doc/locales/pot/library/email.encoders.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--email_errors] +file_filter = .//LC_MESSAGES/library/email.errors.po +trans.pt_BR = library/email.errors.po +source_file = cpython/Doc/locales/pot/library/email.errors.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--email_examples] +file_filter = .//LC_MESSAGES/library/email.examples.po +trans.pt_BR = library/email.examples.po +source_file = cpython/Doc/locales/pot/library/email.examples.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--email_generator] +file_filter = .//LC_MESSAGES/library/email.generator.po +trans.pt_BR = library/email.generator.po +source_file = cpython/Doc/locales/pot/library/email.generator.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--email_header] +file_filter = .//LC_MESSAGES/library/email.header.po +trans.pt_BR = library/email.header.po +source_file = cpython/Doc/locales/pot/library/email.header.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--email_headerregistry] +file_filter = .//LC_MESSAGES/library/email.headerregistry.po +trans.pt_BR = library/email.headerregistry.po +source_file = cpython/Doc/locales/pot/library/email.headerregistry.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--email_iterators] +file_filter = .//LC_MESSAGES/library/email.iterators.po +trans.pt_BR = library/email.iterators.po +source_file = cpython/Doc/locales/pot/library/email.iterators.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--email_message] +file_filter = .//LC_MESSAGES/library/email.message.po +trans.pt_BR = library/email.message.po +source_file = cpython/Doc/locales/pot/library/email.message.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--email_mime] +file_filter = .//LC_MESSAGES/library/email.mime.po +trans.pt_BR = library/email.mime.po +source_file = cpython/Doc/locales/pot/library/email.mime.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--email_parser] +file_filter = .//LC_MESSAGES/library/email.parser.po +trans.pt_BR = library/email.parser.po +source_file = cpython/Doc/locales/pot/library/email.parser.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--email_policy] +file_filter = .//LC_MESSAGES/library/email.policy.po +trans.pt_BR = library/email.policy.po +source_file = cpython/Doc/locales/pot/library/email.policy.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--email_utils] +file_filter = .//LC_MESSAGES/library/email.utils.po +trans.pt_BR = library/email.utils.po +source_file = cpython/Doc/locales/pot/library/email.utils.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--ensurepip] +file_filter = .//LC_MESSAGES/library/ensurepip.po +trans.pt_BR = library/ensurepip.po +source_file = cpython/Doc/locales/pot/library/ensurepip.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--enum] +file_filter = .//LC_MESSAGES/library/enum.po +trans.pt_BR = library/enum.po +source_file = cpython/Doc/locales/pot/library/enum.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--errno] +file_filter = .//LC_MESSAGES/library/errno.po +trans.pt_BR = library/errno.po +source_file = cpython/Doc/locales/pot/library/errno.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--exceptions] +file_filter = .//LC_MESSAGES/library/exceptions.po +trans.pt_BR = library/exceptions.po +source_file = cpython/Doc/locales/pot/library/exceptions.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--faulthandler] +file_filter = .//LC_MESSAGES/library/faulthandler.po +trans.pt_BR = library/faulthandler.po +source_file = cpython/Doc/locales/pot/library/faulthandler.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--fcntl] +file_filter = .//LC_MESSAGES/library/fcntl.po +trans.pt_BR = library/fcntl.po +source_file = cpython/Doc/locales/pot/library/fcntl.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--filecmp] +file_filter = .//LC_MESSAGES/library/filecmp.po +trans.pt_BR = library/filecmp.po +source_file = cpython/Doc/locales/pot/library/filecmp.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--fileformats] +file_filter = .//LC_MESSAGES/library/fileformats.po +trans.pt_BR = library/fileformats.po +source_file = cpython/Doc/locales/pot/library/fileformats.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--fileinput] +file_filter = .//LC_MESSAGES/library/fileinput.po +trans.pt_BR = library/fileinput.po +source_file = cpython/Doc/locales/pot/library/fileinput.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--filesys] +file_filter = .//LC_MESSAGES/library/filesys.po +trans.pt_BR = library/filesys.po +source_file = cpython/Doc/locales/pot/library/filesys.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--fnmatch] +file_filter = .//LC_MESSAGES/library/fnmatch.po +trans.pt_BR = library/fnmatch.po +source_file = cpython/Doc/locales/pot/library/fnmatch.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--fractions] +file_filter = .//LC_MESSAGES/library/fractions.po +trans.pt_BR = library/fractions.po +source_file = cpython/Doc/locales/pot/library/fractions.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--frameworks] +file_filter = .//LC_MESSAGES/library/frameworks.po +trans.pt_BR = library/frameworks.po +source_file = cpython/Doc/locales/pot/library/frameworks.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--ftplib] +file_filter = .//LC_MESSAGES/library/ftplib.po +trans.pt_BR = library/ftplib.po +source_file = cpython/Doc/locales/pot/library/ftplib.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--functional] +file_filter = .//LC_MESSAGES/library/functional.po +trans.pt_BR = library/functional.po +source_file = cpython/Doc/locales/pot/library/functional.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--functions] +file_filter = .//LC_MESSAGES/library/functions.po +trans.pt_BR = library/functions.po +source_file = cpython/Doc/locales/pot/library/functions.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--functools] +file_filter = .//LC_MESSAGES/library/functools.po +trans.pt_BR = library/functools.po +source_file = cpython/Doc/locales/pot/library/functools.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--gc] +file_filter = .//LC_MESSAGES/library/gc.po +trans.pt_BR = library/gc.po +source_file = cpython/Doc/locales/pot/library/gc.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--getopt] +file_filter = .//LC_MESSAGES/library/getopt.po +trans.pt_BR = library/getopt.po +source_file = cpython/Doc/locales/pot/library/getopt.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--getpass] +file_filter = .//LC_MESSAGES/library/getpass.po +trans.pt_BR = library/getpass.po +source_file = cpython/Doc/locales/pot/library/getpass.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--gettext] +file_filter = .//LC_MESSAGES/library/gettext.po +trans.pt_BR = library/gettext.po +source_file = cpython/Doc/locales/pot/library/gettext.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--glob] +file_filter = .//LC_MESSAGES/library/glob.po +trans.pt_BR = library/glob.po +source_file = cpython/Doc/locales/pot/library/glob.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--graphlib] +file_filter = .//LC_MESSAGES/library/graphlib.po +trans.pt_BR = library/graphlib.po +source_file = cpython/Doc/locales/pot/library/graphlib.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--grp] +file_filter = .//LC_MESSAGES/library/grp.po +trans.pt_BR = library/grp.po +source_file = cpython/Doc/locales/pot/library/grp.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--gzip] +file_filter = .//LC_MESSAGES/library/gzip.po +trans.pt_BR = library/gzip.po +source_file = cpython/Doc/locales/pot/library/gzip.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--hashlib] +file_filter = .//LC_MESSAGES/library/hashlib.po +trans.pt_BR = library/hashlib.po +source_file = cpython/Doc/locales/pot/library/hashlib.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--heapq] +file_filter = .//LC_MESSAGES/library/heapq.po +trans.pt_BR = library/heapq.po +source_file = cpython/Doc/locales/pot/library/heapq.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--hmac] +file_filter = .//LC_MESSAGES/library/hmac.po +trans.pt_BR = library/hmac.po +source_file = cpython/Doc/locales/pot/library/hmac.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--html] +file_filter = .//LC_MESSAGES/library/html.po +trans.pt_BR = library/html.po +source_file = cpython/Doc/locales/pot/library/html.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--html_entities] +file_filter = .//LC_MESSAGES/library/html.entities.po +trans.pt_BR = library/html.entities.po +source_file = cpython/Doc/locales/pot/library/html.entities.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--html_parser] +file_filter = .//LC_MESSAGES/library/html.parser.po +trans.pt_BR = library/html.parser.po +source_file = cpython/Doc/locales/pot/library/html.parser.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--http] +file_filter = .//LC_MESSAGES/library/http.po +trans.pt_BR = library/http.po +source_file = cpython/Doc/locales/pot/library/http.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--http_client] +file_filter = .//LC_MESSAGES/library/http.client.po +trans.pt_BR = library/http.client.po +source_file = cpython/Doc/locales/pot/library/http.client.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--http_cookiejar] +file_filter = .//LC_MESSAGES/library/http.cookiejar.po +trans.pt_BR = library/http.cookiejar.po +source_file = cpython/Doc/locales/pot/library/http.cookiejar.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--http_cookies] +file_filter = .//LC_MESSAGES/library/http.cookies.po +trans.pt_BR = library/http.cookies.po +source_file = cpython/Doc/locales/pot/library/http.cookies.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--http_server] +file_filter = .//LC_MESSAGES/library/http.server.po +trans.pt_BR = library/http.server.po +source_file = cpython/Doc/locales/pot/library/http.server.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--i18n] +file_filter = .//LC_MESSAGES/library/i18n.po +trans.pt_BR = library/i18n.po +source_file = cpython/Doc/locales/pot/library/i18n.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--idle] +file_filter = .//LC_MESSAGES/library/idle.po +trans.pt_BR = library/idle.po +source_file = cpython/Doc/locales/pot/library/idle.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--imaplib] +file_filter = .//LC_MESSAGES/library/imaplib.po +trans.pt_BR = library/imaplib.po +source_file = cpython/Doc/locales/pot/library/imaplib.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--imghdr] +file_filter = .//LC_MESSAGES/library/imghdr.po +trans.pt_BR = library/imghdr.po +source_file = cpython/Doc/locales/pot/library/imghdr.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--imp] +file_filter = .//LC_MESSAGES/library/imp.po +trans.pt_BR = library/imp.po +source_file = cpython/Doc/locales/pot/library/imp.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--importlib] +file_filter = .//LC_MESSAGES/library/importlib.po +trans.pt_BR = library/importlib.po +source_file = cpython/Doc/locales/pot/library/importlib.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--importlib_metadata] +file_filter = .//LC_MESSAGES/library/importlib.metadata.po +trans.pt_BR = library/importlib.metadata.po +source_file = cpython/Doc/locales/pot/library/importlib.metadata.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--importlib_resources] +file_filter = .//LC_MESSAGES/library/importlib.resources.po +trans.pt_BR = library/importlib.resources.po +source_file = cpython/Doc/locales/pot/library/importlib.resources.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--importlib_resources_abc] +file_filter = .//LC_MESSAGES/library/importlib.resources.abc.po +trans.pt_BR = library/importlib.resources.abc.po +source_file = cpython/Doc/locales/pot/library/importlib.resources.abc.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--index] +file_filter = .//LC_MESSAGES/library/index.po +trans.pt_BR = library/index.po +source_file = cpython/Doc/locales/pot/library/index.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--inspect] +file_filter = .//LC_MESSAGES/library/inspect.po +trans.pt_BR = library/inspect.po +source_file = cpython/Doc/locales/pot/library/inspect.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--internet] +file_filter = .//LC_MESSAGES/library/internet.po +trans.pt_BR = library/internet.po +source_file = cpython/Doc/locales/pot/library/internet.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--intro] +file_filter = .//LC_MESSAGES/library/intro.po +trans.pt_BR = library/intro.po +source_file = cpython/Doc/locales/pot/library/intro.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--io] +file_filter = .//LC_MESSAGES/library/io.po +trans.pt_BR = library/io.po +source_file = cpython/Doc/locales/pot/library/io.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--ipaddress] +file_filter = .//LC_MESSAGES/library/ipaddress.po +trans.pt_BR = library/ipaddress.po +source_file = cpython/Doc/locales/pot/library/ipaddress.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--ipc] +file_filter = .//LC_MESSAGES/library/ipc.po +trans.pt_BR = library/ipc.po +source_file = cpython/Doc/locales/pot/library/ipc.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--itertools] +file_filter = .//LC_MESSAGES/library/itertools.po +trans.pt_BR = library/itertools.po +source_file = cpython/Doc/locales/pot/library/itertools.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--json] +file_filter = .//LC_MESSAGES/library/json.po +trans.pt_BR = library/json.po +source_file = cpython/Doc/locales/pot/library/json.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--keyword] +file_filter = .//LC_MESSAGES/library/keyword.po +trans.pt_BR = library/keyword.po +source_file = cpython/Doc/locales/pot/library/keyword.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--language] +file_filter = .//LC_MESSAGES/library/language.po +trans.pt_BR = library/language.po +source_file = cpython/Doc/locales/pot/library/language.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--linecache] +file_filter = .//LC_MESSAGES/library/linecache.po +trans.pt_BR = library/linecache.po +source_file = cpython/Doc/locales/pot/library/linecache.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--locale] +file_filter = .//LC_MESSAGES/library/locale.po +trans.pt_BR = library/locale.po +source_file = cpython/Doc/locales/pot/library/locale.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--logging] +file_filter = .//LC_MESSAGES/library/logging.po +trans.pt_BR = library/logging.po +source_file = cpython/Doc/locales/pot/library/logging.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--logging_config] +file_filter = .//LC_MESSAGES/library/logging.config.po +trans.pt_BR = library/logging.config.po +source_file = cpython/Doc/locales/pot/library/logging.config.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--logging_handlers] +file_filter = .//LC_MESSAGES/library/logging.handlers.po +trans.pt_BR = library/logging.handlers.po +source_file = cpython/Doc/locales/pot/library/logging.handlers.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--lzma] +file_filter = .//LC_MESSAGES/library/lzma.po +trans.pt_BR = library/lzma.po +source_file = cpython/Doc/locales/pot/library/lzma.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--mailbox] +file_filter = .//LC_MESSAGES/library/mailbox.po +trans.pt_BR = library/mailbox.po +source_file = cpython/Doc/locales/pot/library/mailbox.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--mailcap] +file_filter = .//LC_MESSAGES/library/mailcap.po +trans.pt_BR = library/mailcap.po +source_file = cpython/Doc/locales/pot/library/mailcap.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--markup] +file_filter = .//LC_MESSAGES/library/markup.po +trans.pt_BR = library/markup.po +source_file = cpython/Doc/locales/pot/library/markup.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--marshal] +file_filter = .//LC_MESSAGES/library/marshal.po +trans.pt_BR = library/marshal.po +source_file = cpython/Doc/locales/pot/library/marshal.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--math] +file_filter = .//LC_MESSAGES/library/math.po +trans.pt_BR = library/math.po +source_file = cpython/Doc/locales/pot/library/math.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--mimetypes] +file_filter = .//LC_MESSAGES/library/mimetypes.po +trans.pt_BR = library/mimetypes.po +source_file = cpython/Doc/locales/pot/library/mimetypes.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--mm] +file_filter = .//LC_MESSAGES/library/mm.po +trans.pt_BR = library/mm.po +source_file = cpython/Doc/locales/pot/library/mm.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--mmap] +file_filter = .//LC_MESSAGES/library/mmap.po +trans.pt_BR = library/mmap.po +source_file = cpython/Doc/locales/pot/library/mmap.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--modulefinder] +file_filter = .//LC_MESSAGES/library/modulefinder.po +trans.pt_BR = library/modulefinder.po +source_file = cpython/Doc/locales/pot/library/modulefinder.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--modules] +file_filter = .//LC_MESSAGES/library/modules.po +trans.pt_BR = library/modules.po +source_file = cpython/Doc/locales/pot/library/modules.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--msilib] +file_filter = .//LC_MESSAGES/library/msilib.po +trans.pt_BR = library/msilib.po +source_file = cpython/Doc/locales/pot/library/msilib.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--msvcrt] +file_filter = .//LC_MESSAGES/library/msvcrt.po +trans.pt_BR = library/msvcrt.po +source_file = cpython/Doc/locales/pot/library/msvcrt.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--multiprocessing] +file_filter = .//LC_MESSAGES/library/multiprocessing.po +trans.pt_BR = library/multiprocessing.po +source_file = cpython/Doc/locales/pot/library/multiprocessing.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--multiprocessing_shared_memory] +file_filter = .//LC_MESSAGES/library/multiprocessing.shared_memory.po +trans.pt_BR = library/multiprocessing.shared_memory.po +source_file = cpython/Doc/locales/pot/library/multiprocessing.shared_memory.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--netdata] +file_filter = .//LC_MESSAGES/library/netdata.po +trans.pt_BR = library/netdata.po +source_file = cpython/Doc/locales/pot/library/netdata.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--netrc] +file_filter = .//LC_MESSAGES/library/netrc.po +trans.pt_BR = library/netrc.po +source_file = cpython/Doc/locales/pot/library/netrc.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--nis] +file_filter = .//LC_MESSAGES/library/nis.po +trans.pt_BR = library/nis.po +source_file = cpython/Doc/locales/pot/library/nis.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--nntplib] +file_filter = .//LC_MESSAGES/library/nntplib.po +trans.pt_BR = library/nntplib.po +source_file = cpython/Doc/locales/pot/library/nntplib.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--numbers] +file_filter = .//LC_MESSAGES/library/numbers.po +trans.pt_BR = library/numbers.po +source_file = cpython/Doc/locales/pot/library/numbers.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--numeric] +file_filter = .//LC_MESSAGES/library/numeric.po +trans.pt_BR = library/numeric.po +source_file = cpython/Doc/locales/pot/library/numeric.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--operator] +file_filter = .//LC_MESSAGES/library/operator.po +trans.pt_BR = library/operator.po +source_file = cpython/Doc/locales/pot/library/operator.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--optparse] +file_filter = .//LC_MESSAGES/library/optparse.po +trans.pt_BR = library/optparse.po +source_file = cpython/Doc/locales/pot/library/optparse.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--os] +file_filter = .//LC_MESSAGES/library/os.po +trans.pt_BR = library/os.po +source_file = cpython/Doc/locales/pot/library/os.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--os_path] +file_filter = .//LC_MESSAGES/library/os.path.po +trans.pt_BR = library/os.path.po +source_file = cpython/Doc/locales/pot/library/os.path.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--ossaudiodev] +file_filter = .//LC_MESSAGES/library/ossaudiodev.po +trans.pt_BR = library/ossaudiodev.po +source_file = cpython/Doc/locales/pot/library/ossaudiodev.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--pathlib] +file_filter = .//LC_MESSAGES/library/pathlib.po +trans.pt_BR = library/pathlib.po +source_file = cpython/Doc/locales/pot/library/pathlib.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--pdb] +file_filter = .//LC_MESSAGES/library/pdb.po +trans.pt_BR = library/pdb.po +source_file = cpython/Doc/locales/pot/library/pdb.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--persistence] +file_filter = .//LC_MESSAGES/library/persistence.po +trans.pt_BR = library/persistence.po +source_file = cpython/Doc/locales/pot/library/persistence.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--pickle] +file_filter = .//LC_MESSAGES/library/pickle.po +trans.pt_BR = library/pickle.po +source_file = cpython/Doc/locales/pot/library/pickle.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--pickletools] +file_filter = .//LC_MESSAGES/library/pickletools.po +trans.pt_BR = library/pickletools.po +source_file = cpython/Doc/locales/pot/library/pickletools.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--pipes] +file_filter = .//LC_MESSAGES/library/pipes.po +trans.pt_BR = library/pipes.po +source_file = cpython/Doc/locales/pot/library/pipes.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--pkgutil] +file_filter = .//LC_MESSAGES/library/pkgutil.po +trans.pt_BR = library/pkgutil.po +source_file = cpython/Doc/locales/pot/library/pkgutil.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--platform] +file_filter = .//LC_MESSAGES/library/platform.po +trans.pt_BR = library/platform.po +source_file = cpython/Doc/locales/pot/library/platform.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--plistlib] +file_filter = .//LC_MESSAGES/library/plistlib.po +trans.pt_BR = library/plistlib.po +source_file = cpython/Doc/locales/pot/library/plistlib.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--poplib] +file_filter = .//LC_MESSAGES/library/poplib.po +trans.pt_BR = library/poplib.po +source_file = cpython/Doc/locales/pot/library/poplib.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--posix] +file_filter = .//LC_MESSAGES/library/posix.po +trans.pt_BR = library/posix.po +source_file = cpython/Doc/locales/pot/library/posix.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--pprint] +file_filter = .//LC_MESSAGES/library/pprint.po +trans.pt_BR = library/pprint.po +source_file = cpython/Doc/locales/pot/library/pprint.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--profile] +file_filter = .//LC_MESSAGES/library/profile.po +trans.pt_BR = library/profile.po +source_file = cpython/Doc/locales/pot/library/profile.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--pty] +file_filter = .//LC_MESSAGES/library/pty.po +trans.pt_BR = library/pty.po +source_file = cpython/Doc/locales/pot/library/pty.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--pwd] +file_filter = .//LC_MESSAGES/library/pwd.po +trans.pt_BR = library/pwd.po +source_file = cpython/Doc/locales/pot/library/pwd.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--py_compile] +file_filter = .//LC_MESSAGES/library/py_compile.po +trans.pt_BR = library/py_compile.po +source_file = cpython/Doc/locales/pot/library/py_compile.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--pyclbr] +file_filter = .//LC_MESSAGES/library/pyclbr.po +trans.pt_BR = library/pyclbr.po +source_file = cpython/Doc/locales/pot/library/pyclbr.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--pydoc] +file_filter = .//LC_MESSAGES/library/pydoc.po +trans.pt_BR = library/pydoc.po +source_file = cpython/Doc/locales/pot/library/pydoc.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--pyexpat] +file_filter = .//LC_MESSAGES/library/pyexpat.po +trans.pt_BR = library/pyexpat.po +source_file = cpython/Doc/locales/pot/library/pyexpat.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--python] +file_filter = .//LC_MESSAGES/library/python.po +trans.pt_BR = library/python.po +source_file = cpython/Doc/locales/pot/library/python.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--queue] +file_filter = .//LC_MESSAGES/library/queue.po +trans.pt_BR = library/queue.po +source_file = cpython/Doc/locales/pot/library/queue.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--quopri] +file_filter = .//LC_MESSAGES/library/quopri.po +trans.pt_BR = library/quopri.po +source_file = cpython/Doc/locales/pot/library/quopri.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--random] +file_filter = .//LC_MESSAGES/library/random.po +trans.pt_BR = library/random.po +source_file = cpython/Doc/locales/pot/library/random.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--re] +file_filter = .//LC_MESSAGES/library/re.po +trans.pt_BR = library/re.po +source_file = cpython/Doc/locales/pot/library/re.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--readline] +file_filter = .//LC_MESSAGES/library/readline.po +trans.pt_BR = library/readline.po +source_file = cpython/Doc/locales/pot/library/readline.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--reprlib] +file_filter = .//LC_MESSAGES/library/reprlib.po +trans.pt_BR = library/reprlib.po +source_file = cpython/Doc/locales/pot/library/reprlib.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--resource] +file_filter = .//LC_MESSAGES/library/resource.po +trans.pt_BR = library/resource.po +source_file = cpython/Doc/locales/pot/library/resource.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--rlcompleter] +file_filter = .//LC_MESSAGES/library/rlcompleter.po +trans.pt_BR = library/rlcompleter.po +source_file = cpython/Doc/locales/pot/library/rlcompleter.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--runpy] +file_filter = .//LC_MESSAGES/library/runpy.po +trans.pt_BR = library/runpy.po +source_file = cpython/Doc/locales/pot/library/runpy.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--sched] +file_filter = .//LC_MESSAGES/library/sched.po +trans.pt_BR = library/sched.po +source_file = cpython/Doc/locales/pot/library/sched.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--secrets] +file_filter = .//LC_MESSAGES/library/secrets.po +trans.pt_BR = library/secrets.po +source_file = cpython/Doc/locales/pot/library/secrets.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--security_warnings] +file_filter = .//LC_MESSAGES/library/security_warnings.po +trans.pt_BR = library/security_warnings.po +source_file = cpython/Doc/locales/pot/library/security_warnings.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--select] +file_filter = .//LC_MESSAGES/library/select.po +trans.pt_BR = library/select.po +source_file = cpython/Doc/locales/pot/library/select.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--selectors] +file_filter = .//LC_MESSAGES/library/selectors.po +trans.pt_BR = library/selectors.po +source_file = cpython/Doc/locales/pot/library/selectors.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--shelve] +file_filter = .//LC_MESSAGES/library/shelve.po +trans.pt_BR = library/shelve.po +source_file = cpython/Doc/locales/pot/library/shelve.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--shlex] +file_filter = .//LC_MESSAGES/library/shlex.po +trans.pt_BR = library/shlex.po +source_file = cpython/Doc/locales/pot/library/shlex.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--shutil] +file_filter = .//LC_MESSAGES/library/shutil.po +trans.pt_BR = library/shutil.po +source_file = cpython/Doc/locales/pot/library/shutil.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--signal] +file_filter = .//LC_MESSAGES/library/signal.po +trans.pt_BR = library/signal.po +source_file = cpython/Doc/locales/pot/library/signal.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--site] +file_filter = .//LC_MESSAGES/library/site.po +trans.pt_BR = library/site.po +source_file = cpython/Doc/locales/pot/library/site.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--smtpd] +file_filter = .//LC_MESSAGES/library/smtpd.po +trans.pt_BR = library/smtpd.po +source_file = cpython/Doc/locales/pot/library/smtpd.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--smtplib] +file_filter = .//LC_MESSAGES/library/smtplib.po +trans.pt_BR = library/smtplib.po +source_file = cpython/Doc/locales/pot/library/smtplib.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--sndhdr] +file_filter = .//LC_MESSAGES/library/sndhdr.po +trans.pt_BR = library/sndhdr.po +source_file = cpython/Doc/locales/pot/library/sndhdr.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--socket] +file_filter = .//LC_MESSAGES/library/socket.po +trans.pt_BR = library/socket.po +source_file = cpython/Doc/locales/pot/library/socket.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--socketserver] +file_filter = .//LC_MESSAGES/library/socketserver.po +trans.pt_BR = library/socketserver.po +source_file = cpython/Doc/locales/pot/library/socketserver.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--spwd] +file_filter = .//LC_MESSAGES/library/spwd.po +trans.pt_BR = library/spwd.po +source_file = cpython/Doc/locales/pot/library/spwd.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--sqlite3] +file_filter = .//LC_MESSAGES/library/sqlite3.po +trans.pt_BR = library/sqlite3.po +source_file = cpython/Doc/locales/pot/library/sqlite3.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--ssl] +file_filter = .//LC_MESSAGES/library/ssl.po +trans.pt_BR = library/ssl.po +source_file = cpython/Doc/locales/pot/library/ssl.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--stat] +file_filter = .//LC_MESSAGES/library/stat.po +trans.pt_BR = library/stat.po +source_file = cpython/Doc/locales/pot/library/stat.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--statistics] +file_filter = .//LC_MESSAGES/library/statistics.po +trans.pt_BR = library/statistics.po +source_file = cpython/Doc/locales/pot/library/statistics.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--stdtypes] +file_filter = .//LC_MESSAGES/library/stdtypes.po +trans.pt_BR = library/stdtypes.po +source_file = cpython/Doc/locales/pot/library/stdtypes.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--string] +file_filter = .//LC_MESSAGES/library/string.po +trans.pt_BR = library/string.po +source_file = cpython/Doc/locales/pot/library/string.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--stringprep] +file_filter = .//LC_MESSAGES/library/stringprep.po +trans.pt_BR = library/stringprep.po +source_file = cpython/Doc/locales/pot/library/stringprep.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--struct] +file_filter = .//LC_MESSAGES/library/struct.po +trans.pt_BR = library/struct.po +source_file = cpython/Doc/locales/pot/library/struct.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--subprocess] +file_filter = .//LC_MESSAGES/library/subprocess.po +trans.pt_BR = library/subprocess.po +source_file = cpython/Doc/locales/pot/library/subprocess.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--sunau] +file_filter = .//LC_MESSAGES/library/sunau.po +trans.pt_BR = library/sunau.po +source_file = cpython/Doc/locales/pot/library/sunau.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--superseded] +file_filter = .//LC_MESSAGES/library/superseded.po +trans.pt_BR = library/superseded.po +source_file = cpython/Doc/locales/pot/library/superseded.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--symtable] +file_filter = .//LC_MESSAGES/library/symtable.po +trans.pt_BR = library/symtable.po +source_file = cpython/Doc/locales/pot/library/symtable.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--sys] +file_filter = .//LC_MESSAGES/library/sys.po +trans.pt_BR = library/sys.po +source_file = cpython/Doc/locales/pot/library/sys.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--sys_path_init] +file_filter = .//LC_MESSAGES/library/sys_path_init.po +trans.pt_BR = library/sys_path_init.po +source_file = cpython/Doc/locales/pot/library/sys_path_init.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--sysconfig] +file_filter = .//LC_MESSAGES/library/sysconfig.po +trans.pt_BR = library/sysconfig.po +source_file = cpython/Doc/locales/pot/library/sysconfig.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--syslog] +file_filter = .//LC_MESSAGES/library/syslog.po +trans.pt_BR = library/syslog.po +source_file = cpython/Doc/locales/pot/library/syslog.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--tabnanny] +file_filter = .//LC_MESSAGES/library/tabnanny.po +trans.pt_BR = library/tabnanny.po +source_file = cpython/Doc/locales/pot/library/tabnanny.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--tarfile] +file_filter = .//LC_MESSAGES/library/tarfile.po +trans.pt_BR = library/tarfile.po +source_file = cpython/Doc/locales/pot/library/tarfile.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--telnetlib] +file_filter = .//LC_MESSAGES/library/telnetlib.po +trans.pt_BR = library/telnetlib.po +source_file = cpython/Doc/locales/pot/library/telnetlib.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--tempfile] +file_filter = .//LC_MESSAGES/library/tempfile.po +trans.pt_BR = library/tempfile.po +source_file = cpython/Doc/locales/pot/library/tempfile.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--termios] +file_filter = .//LC_MESSAGES/library/termios.po +trans.pt_BR = library/termios.po +source_file = cpython/Doc/locales/pot/library/termios.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--test] +file_filter = .//LC_MESSAGES/library/test.po +trans.pt_BR = library/test.po +source_file = cpython/Doc/locales/pot/library/test.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--text] +file_filter = .//LC_MESSAGES/library/text.po +trans.pt_BR = library/text.po +source_file = cpython/Doc/locales/pot/library/text.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--textwrap] +file_filter = .//LC_MESSAGES/library/textwrap.po +trans.pt_BR = library/textwrap.po +source_file = cpython/Doc/locales/pot/library/textwrap.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--threading] +file_filter = .//LC_MESSAGES/library/threading.po +trans.pt_BR = library/threading.po +source_file = cpython/Doc/locales/pot/library/threading.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--time] +file_filter = .//LC_MESSAGES/library/time.po +trans.pt_BR = library/time.po +source_file = cpython/Doc/locales/pot/library/time.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--timeit] +file_filter = .//LC_MESSAGES/library/timeit.po +trans.pt_BR = library/timeit.po +source_file = cpython/Doc/locales/pot/library/timeit.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--tk] +file_filter = .//LC_MESSAGES/library/tk.po +trans.pt_BR = library/tk.po +source_file = cpython/Doc/locales/pot/library/tk.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--tkinter] +file_filter = .//LC_MESSAGES/library/tkinter.po +trans.pt_BR = library/tkinter.po +source_file = cpython/Doc/locales/pot/library/tkinter.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--tkinter_colorchooser] +file_filter = .//LC_MESSAGES/library/tkinter.colorchooser.po +trans.pt_BR = library/tkinter.colorchooser.po +source_file = cpython/Doc/locales/pot/library/tkinter.colorchooser.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--tkinter_dnd] +file_filter = .//LC_MESSAGES/library/tkinter.dnd.po +trans.pt_BR = library/tkinter.dnd.po +source_file = cpython/Doc/locales/pot/library/tkinter.dnd.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--tkinter_font] +file_filter = .//LC_MESSAGES/library/tkinter.font.po +trans.pt_BR = library/tkinter.font.po +source_file = cpython/Doc/locales/pot/library/tkinter.font.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--tkinter_messagebox] +file_filter = .//LC_MESSAGES/library/tkinter.messagebox.po +trans.pt_BR = library/tkinter.messagebox.po +source_file = cpython/Doc/locales/pot/library/tkinter.messagebox.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--tkinter_scrolledtext] +file_filter = .//LC_MESSAGES/library/tkinter.scrolledtext.po +trans.pt_BR = library/tkinter.scrolledtext.po +source_file = cpython/Doc/locales/pot/library/tkinter.scrolledtext.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--tkinter_tix] +file_filter = .//LC_MESSAGES/library/tkinter.tix.po +trans.pt_BR = library/tkinter.tix.po +source_file = cpython/Doc/locales/pot/library/tkinter.tix.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--tkinter_ttk] +file_filter = .//LC_MESSAGES/library/tkinter.ttk.po +trans.pt_BR = library/tkinter.ttk.po +source_file = cpython/Doc/locales/pot/library/tkinter.ttk.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--token] +file_filter = .//LC_MESSAGES/library/token.po +trans.pt_BR = library/token.po +source_file = cpython/Doc/locales/pot/library/token.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--tokenize] +file_filter = .//LC_MESSAGES/library/tokenize.po +trans.pt_BR = library/tokenize.po +source_file = cpython/Doc/locales/pot/library/tokenize.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--tomllib] +file_filter = .//LC_MESSAGES/library/tomllib.po +trans.pt_BR = library/tomllib.po +source_file = cpython/Doc/locales/pot/library/tomllib.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--trace] +file_filter = .//LC_MESSAGES/library/trace.po +trans.pt_BR = library/trace.po +source_file = cpython/Doc/locales/pot/library/trace.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--traceback] +file_filter = .//LC_MESSAGES/library/traceback.po +trans.pt_BR = library/traceback.po +source_file = cpython/Doc/locales/pot/library/traceback.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--tracemalloc] +file_filter = .//LC_MESSAGES/library/tracemalloc.po +trans.pt_BR = library/tracemalloc.po +source_file = cpython/Doc/locales/pot/library/tracemalloc.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--tty] +file_filter = .//LC_MESSAGES/library/tty.po +trans.pt_BR = library/tty.po +source_file = cpython/Doc/locales/pot/library/tty.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--turtle] +file_filter = .//LC_MESSAGES/library/turtle.po +trans.pt_BR = library/turtle.po +source_file = cpython/Doc/locales/pot/library/turtle.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--types] +file_filter = .//LC_MESSAGES/library/types.po +trans.pt_BR = library/types.po +source_file = cpython/Doc/locales/pot/library/types.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--typing] +file_filter = .//LC_MESSAGES/library/typing.po +trans.pt_BR = library/typing.po +source_file = cpython/Doc/locales/pot/library/typing.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--unicodedata] +file_filter = .//LC_MESSAGES/library/unicodedata.po +trans.pt_BR = library/unicodedata.po +source_file = cpython/Doc/locales/pot/library/unicodedata.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--unittest] +file_filter = .//LC_MESSAGES/library/unittest.po +trans.pt_BR = library/unittest.po +source_file = cpython/Doc/locales/pot/library/unittest.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--unittest_mock] +file_filter = .//LC_MESSAGES/library/unittest.mock.po +trans.pt_BR = library/unittest.mock.po +source_file = cpython/Doc/locales/pot/library/unittest.mock.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--unittest_mock-examples] +file_filter = .//LC_MESSAGES/library/unittest.mock-examples.po +trans.pt_BR = library/unittest.mock-examples.po +source_file = cpython/Doc/locales/pot/library/unittest.mock-examples.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--unix] +file_filter = .//LC_MESSAGES/library/unix.po +trans.pt_BR = library/unix.po +source_file = cpython/Doc/locales/pot/library/unix.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--urllib] +file_filter = .//LC_MESSAGES/library/urllib.po +trans.pt_BR = library/urllib.po +source_file = cpython/Doc/locales/pot/library/urllib.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--urllib_error] +file_filter = .//LC_MESSAGES/library/urllib.error.po +trans.pt_BR = library/urllib.error.po +source_file = cpython/Doc/locales/pot/library/urllib.error.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--urllib_parse] +file_filter = .//LC_MESSAGES/library/urllib.parse.po +trans.pt_BR = library/urllib.parse.po +source_file = cpython/Doc/locales/pot/library/urllib.parse.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--urllib_request] +file_filter = .//LC_MESSAGES/library/urllib.request.po +trans.pt_BR = library/urllib.request.po +source_file = cpython/Doc/locales/pot/library/urllib.request.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--urllib_robotparser] +file_filter = .//LC_MESSAGES/library/urllib.robotparser.po +trans.pt_BR = library/urllib.robotparser.po +source_file = cpython/Doc/locales/pot/library/urllib.robotparser.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--uu] +file_filter = .//LC_MESSAGES/library/uu.po +trans.pt_BR = library/uu.po +source_file = cpython/Doc/locales/pot/library/uu.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--uuid] +file_filter = .//LC_MESSAGES/library/uuid.po +trans.pt_BR = library/uuid.po +source_file = cpython/Doc/locales/pot/library/uuid.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--venv] +file_filter = .//LC_MESSAGES/library/venv.po +trans.pt_BR = library/venv.po +source_file = cpython/Doc/locales/pot/library/venv.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--warnings] +file_filter = .//LC_MESSAGES/library/warnings.po +trans.pt_BR = library/warnings.po +source_file = cpython/Doc/locales/pot/library/warnings.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--wave] +file_filter = .//LC_MESSAGES/library/wave.po +trans.pt_BR = library/wave.po +source_file = cpython/Doc/locales/pot/library/wave.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--weakref] +file_filter = .//LC_MESSAGES/library/weakref.po +trans.pt_BR = library/weakref.po +source_file = cpython/Doc/locales/pot/library/weakref.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--webbrowser] +file_filter = .//LC_MESSAGES/library/webbrowser.po +trans.pt_BR = library/webbrowser.po +source_file = cpython/Doc/locales/pot/library/webbrowser.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--windows] +file_filter = .//LC_MESSAGES/library/windows.po +trans.pt_BR = library/windows.po +source_file = cpython/Doc/locales/pot/library/windows.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--winreg] +file_filter = .//LC_MESSAGES/library/winreg.po +trans.pt_BR = library/winreg.po +source_file = cpython/Doc/locales/pot/library/winreg.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--winsound] +file_filter = .//LC_MESSAGES/library/winsound.po +trans.pt_BR = library/winsound.po +source_file = cpython/Doc/locales/pot/library/winsound.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--wsgiref] +file_filter = .//LC_MESSAGES/library/wsgiref.po +trans.pt_BR = library/wsgiref.po +source_file = cpython/Doc/locales/pot/library/wsgiref.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--xdrlib] +file_filter = .//LC_MESSAGES/library/xdrlib.po +trans.pt_BR = library/xdrlib.po +source_file = cpython/Doc/locales/pot/library/xdrlib.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--xml] +file_filter = .//LC_MESSAGES/library/xml.po +trans.pt_BR = library/xml.po +source_file = cpython/Doc/locales/pot/library/xml.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--xml_dom] +file_filter = .//LC_MESSAGES/library/xml.dom.po +trans.pt_BR = library/xml.dom.po +source_file = cpython/Doc/locales/pot/library/xml.dom.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--xml_dom_minidom] +file_filter = .//LC_MESSAGES/library/xml.dom.minidom.po +trans.pt_BR = library/xml.dom.minidom.po +source_file = cpython/Doc/locales/pot/library/xml.dom.minidom.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--xml_dom_pulldom] +file_filter = .//LC_MESSAGES/library/xml.dom.pulldom.po +trans.pt_BR = library/xml.dom.pulldom.po +source_file = cpython/Doc/locales/pot/library/xml.dom.pulldom.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--xml_etree_elementtree] +file_filter = .//LC_MESSAGES/library/xml.etree.elementtree.po +trans.pt_BR = library/xml.etree.elementtree.po +source_file = cpython/Doc/locales/pot/library/xml.etree.elementtree.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--xml_sax] +file_filter = .//LC_MESSAGES/library/xml.sax.po +trans.pt_BR = library/xml.sax.po +source_file = cpython/Doc/locales/pot/library/xml.sax.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--xml_sax_handler] +file_filter = .//LC_MESSAGES/library/xml.sax.handler.po +trans.pt_BR = library/xml.sax.handler.po +source_file = cpython/Doc/locales/pot/library/xml.sax.handler.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--xml_sax_reader] +file_filter = .//LC_MESSAGES/library/xml.sax.reader.po +trans.pt_BR = library/xml.sax.reader.po +source_file = cpython/Doc/locales/pot/library/xml.sax.reader.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--xml_sax_utils] +file_filter = .//LC_MESSAGES/library/xml.sax.utils.po +trans.pt_BR = library/xml.sax.utils.po +source_file = cpython/Doc/locales/pot/library/xml.sax.utils.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--xmlrpc] +file_filter = .//LC_MESSAGES/library/xmlrpc.po +trans.pt_BR = library/xmlrpc.po +source_file = cpython/Doc/locales/pot/library/xmlrpc.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--xmlrpc_client] +file_filter = .//LC_MESSAGES/library/xmlrpc.client.po +trans.pt_BR = library/xmlrpc.client.po +source_file = cpython/Doc/locales/pot/library/xmlrpc.client.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--xmlrpc_server] +file_filter = .//LC_MESSAGES/library/xmlrpc.server.po +trans.pt_BR = library/xmlrpc.server.po +source_file = cpython/Doc/locales/pot/library/xmlrpc.server.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--zipapp] +file_filter = .//LC_MESSAGES/library/zipapp.po +trans.pt_BR = library/zipapp.po +source_file = cpython/Doc/locales/pot/library/zipapp.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--zipfile] +file_filter = .//LC_MESSAGES/library/zipfile.po +trans.pt_BR = library/zipfile.po +source_file = cpython/Doc/locales/pot/library/zipfile.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--zipimport] +file_filter = .//LC_MESSAGES/library/zipimport.po +trans.pt_BR = library/zipimport.po +source_file = cpython/Doc/locales/pot/library/zipimport.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--zlib] +file_filter = .//LC_MESSAGES/library/zlib.po +trans.pt_BR = library/zlib.po +source_file = cpython/Doc/locales/pot/library/zlib.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:library--zoneinfo] +file_filter = .//LC_MESSAGES/library/zoneinfo.po +trans.pt_BR = library/zoneinfo.po +source_file = cpython/Doc/locales/pot/library/zoneinfo.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:license] +file_filter = .//LC_MESSAGES/license.po +trans.pt_BR = license.po +source_file = cpython/Doc/locales/pot/license.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:reference--compound_stmts] +file_filter = .//LC_MESSAGES/reference/compound_stmts.po +trans.pt_BR = reference/compound_stmts.po +source_file = cpython/Doc/locales/pot/reference/compound_stmts.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:reference--datamodel] +file_filter = .//LC_MESSAGES/reference/datamodel.po +trans.pt_BR = reference/datamodel.po +source_file = cpython/Doc/locales/pot/reference/datamodel.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:reference--executionmodel] +file_filter = .//LC_MESSAGES/reference/executionmodel.po +trans.pt_BR = reference/executionmodel.po +source_file = cpython/Doc/locales/pot/reference/executionmodel.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:reference--expressions] +file_filter = .//LC_MESSAGES/reference/expressions.po +trans.pt_BR = reference/expressions.po +source_file = cpython/Doc/locales/pot/reference/expressions.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:reference--grammar] +file_filter = .//LC_MESSAGES/reference/grammar.po +trans.pt_BR = reference/grammar.po +source_file = cpython/Doc/locales/pot/reference/grammar.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:reference--import] +file_filter = .//LC_MESSAGES/reference/import.po +trans.pt_BR = reference/import.po +source_file = cpython/Doc/locales/pot/reference/import.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:reference--index] +file_filter = .//LC_MESSAGES/reference/index.po +trans.pt_BR = reference/index.po +source_file = cpython/Doc/locales/pot/reference/index.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:reference--introduction] +file_filter = .//LC_MESSAGES/reference/introduction.po +trans.pt_BR = reference/introduction.po +source_file = cpython/Doc/locales/pot/reference/introduction.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:reference--lexical_analysis] +file_filter = .//LC_MESSAGES/reference/lexical_analysis.po +trans.pt_BR = reference/lexical_analysis.po +source_file = cpython/Doc/locales/pot/reference/lexical_analysis.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:reference--simple_stmts] +file_filter = .//LC_MESSAGES/reference/simple_stmts.po +trans.pt_BR = reference/simple_stmts.po +source_file = cpython/Doc/locales/pot/reference/simple_stmts.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:reference--toplevel_components] +file_filter = .//LC_MESSAGES/reference/toplevel_components.po +trans.pt_BR = reference/toplevel_components.po +source_file = cpython/Doc/locales/pot/reference/toplevel_components.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:sphinx] +file_filter = .//LC_MESSAGES/sphinx.po +trans.pt_BR = sphinx.po +source_file = cpython/Doc/locales/pot/sphinx.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:tutorial--appendix] +file_filter = .//LC_MESSAGES/tutorial/appendix.po +trans.pt_BR = tutorial/appendix.po +source_file = cpython/Doc/locales/pot/tutorial/appendix.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:tutorial--appetite] +file_filter = .//LC_MESSAGES/tutorial/appetite.po +trans.pt_BR = tutorial/appetite.po +source_file = cpython/Doc/locales/pot/tutorial/appetite.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:tutorial--classes] +file_filter = .//LC_MESSAGES/tutorial/classes.po +trans.pt_BR = tutorial/classes.po +source_file = cpython/Doc/locales/pot/tutorial/classes.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:tutorial--controlflow] +file_filter = .//LC_MESSAGES/tutorial/controlflow.po +trans.pt_BR = tutorial/controlflow.po +source_file = cpython/Doc/locales/pot/tutorial/controlflow.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:tutorial--datastructures] +file_filter = .//LC_MESSAGES/tutorial/datastructures.po +trans.pt_BR = tutorial/datastructures.po +source_file = cpython/Doc/locales/pot/tutorial/datastructures.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:tutorial--errors] +file_filter = .//LC_MESSAGES/tutorial/errors.po +trans.pt_BR = tutorial/errors.po +source_file = cpython/Doc/locales/pot/tutorial/errors.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:tutorial--floatingpoint] +file_filter = .//LC_MESSAGES/tutorial/floatingpoint.po +trans.pt_BR = tutorial/floatingpoint.po +source_file = cpython/Doc/locales/pot/tutorial/floatingpoint.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:tutorial--index] +file_filter = .//LC_MESSAGES/tutorial/index.po +trans.pt_BR = tutorial/index.po +source_file = cpython/Doc/locales/pot/tutorial/index.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:tutorial--inputoutput] +file_filter = .//LC_MESSAGES/tutorial/inputoutput.po +trans.pt_BR = tutorial/inputoutput.po +source_file = cpython/Doc/locales/pot/tutorial/inputoutput.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:tutorial--interactive] +file_filter = .//LC_MESSAGES/tutorial/interactive.po +trans.pt_BR = tutorial/interactive.po +source_file = cpython/Doc/locales/pot/tutorial/interactive.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:tutorial--interpreter] +file_filter = .//LC_MESSAGES/tutorial/interpreter.po +trans.pt_BR = tutorial/interpreter.po +source_file = cpython/Doc/locales/pot/tutorial/interpreter.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:tutorial--introduction] +file_filter = .//LC_MESSAGES/tutorial/introduction.po +trans.pt_BR = tutorial/introduction.po +source_file = cpython/Doc/locales/pot/tutorial/introduction.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:tutorial--modules] +file_filter = .//LC_MESSAGES/tutorial/modules.po +trans.pt_BR = tutorial/modules.po +source_file = cpython/Doc/locales/pot/tutorial/modules.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:tutorial--stdlib] +file_filter = .//LC_MESSAGES/tutorial/stdlib.po +trans.pt_BR = tutorial/stdlib.po +source_file = cpython/Doc/locales/pot/tutorial/stdlib.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:tutorial--stdlib2] +file_filter = .//LC_MESSAGES/tutorial/stdlib2.po +trans.pt_BR = tutorial/stdlib2.po +source_file = cpython/Doc/locales/pot/tutorial/stdlib2.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:tutorial--venv] +file_filter = .//LC_MESSAGES/tutorial/venv.po +trans.pt_BR = tutorial/venv.po +source_file = cpython/Doc/locales/pot/tutorial/venv.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:tutorial--whatnow] +file_filter = .//LC_MESSAGES/tutorial/whatnow.po +trans.pt_BR = tutorial/whatnow.po +source_file = cpython/Doc/locales/pot/tutorial/whatnow.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:using--cmdline] +file_filter = .//LC_MESSAGES/using/cmdline.po +trans.pt_BR = using/cmdline.po +source_file = cpython/Doc/locales/pot/using/cmdline.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:using--configure] +file_filter = .//LC_MESSAGES/using/configure.po +trans.pt_BR = using/configure.po +source_file = cpython/Doc/locales/pot/using/configure.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:using--editors] +file_filter = .//LC_MESSAGES/using/editors.po +trans.pt_BR = using/editors.po +source_file = cpython/Doc/locales/pot/using/editors.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:using--index] +file_filter = .//LC_MESSAGES/using/index.po +trans.pt_BR = using/index.po +source_file = cpython/Doc/locales/pot/using/index.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:using--mac] +file_filter = .//LC_MESSAGES/using/mac.po +trans.pt_BR = using/mac.po +source_file = cpython/Doc/locales/pot/using/mac.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:using--unix] +file_filter = .//LC_MESSAGES/using/unix.po +trans.pt_BR = using/unix.po +source_file = cpython/Doc/locales/pot/using/unix.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:using--windows] +file_filter = .//LC_MESSAGES/using/windows.po +trans.pt_BR = using/windows.po +source_file = cpython/Doc/locales/pot/using/windows.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:whatsnew--2_0] +file_filter = .//LC_MESSAGES/whatsnew/2.0.po +trans.pt_BR = whatsnew/2.0.po +source_file = cpython/Doc/locales/pot/whatsnew/2.0.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:whatsnew--2_1] +file_filter = .//LC_MESSAGES/whatsnew/2.1.po +trans.pt_BR = whatsnew/2.1.po +source_file = cpython/Doc/locales/pot/whatsnew/2.1.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:whatsnew--2_2] +file_filter = .//LC_MESSAGES/whatsnew/2.2.po +trans.pt_BR = whatsnew/2.2.po +source_file = cpython/Doc/locales/pot/whatsnew/2.2.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:whatsnew--2_3] +file_filter = .//LC_MESSAGES/whatsnew/2.3.po +trans.pt_BR = whatsnew/2.3.po +source_file = cpython/Doc/locales/pot/whatsnew/2.3.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:whatsnew--2_4] +file_filter = .//LC_MESSAGES/whatsnew/2.4.po +trans.pt_BR = whatsnew/2.4.po +source_file = cpython/Doc/locales/pot/whatsnew/2.4.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:whatsnew--2_5] +file_filter = .//LC_MESSAGES/whatsnew/2.5.po +trans.pt_BR = whatsnew/2.5.po +source_file = cpython/Doc/locales/pot/whatsnew/2.5.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:whatsnew--2_6] +file_filter = .//LC_MESSAGES/whatsnew/2.6.po +trans.pt_BR = whatsnew/2.6.po +source_file = cpython/Doc/locales/pot/whatsnew/2.6.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:whatsnew--2_7] +file_filter = .//LC_MESSAGES/whatsnew/2.7.po +trans.pt_BR = whatsnew/2.7.po +source_file = cpython/Doc/locales/pot/whatsnew/2.7.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:whatsnew--3_0] +file_filter = .//LC_MESSAGES/whatsnew/3.0.po +trans.pt_BR = whatsnew/3.0.po +source_file = cpython/Doc/locales/pot/whatsnew/3.0.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:whatsnew--3_1] +file_filter = .//LC_MESSAGES/whatsnew/3.1.po +trans.pt_BR = whatsnew/3.1.po +source_file = cpython/Doc/locales/pot/whatsnew/3.1.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:whatsnew--3_10] +file_filter = .//LC_MESSAGES/whatsnew/3.10.po +trans.pt_BR = whatsnew/3.10.po +source_file = cpython/Doc/locales/pot/whatsnew/3.10.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:whatsnew--3_11] +file_filter = .//LC_MESSAGES/whatsnew/3.11.po +trans.pt_BR = whatsnew/3.11.po +source_file = cpython/Doc/locales/pot/whatsnew/3.11.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:whatsnew--3_2] +file_filter = .//LC_MESSAGES/whatsnew/3.2.po +trans.pt_BR = whatsnew/3.2.po +source_file = cpython/Doc/locales/pot/whatsnew/3.2.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:whatsnew--3_3] +file_filter = .//LC_MESSAGES/whatsnew/3.3.po +trans.pt_BR = whatsnew/3.3.po +source_file = cpython/Doc/locales/pot/whatsnew/3.3.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:whatsnew--3_4] +file_filter = .//LC_MESSAGES/whatsnew/3.4.po +trans.pt_BR = whatsnew/3.4.po +source_file = cpython/Doc/locales/pot/whatsnew/3.4.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:whatsnew--3_5] +file_filter = .//LC_MESSAGES/whatsnew/3.5.po +trans.pt_BR = whatsnew/3.5.po +source_file = cpython/Doc/locales/pot/whatsnew/3.5.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:whatsnew--3_6] +file_filter = .//LC_MESSAGES/whatsnew/3.6.po +trans.pt_BR = whatsnew/3.6.po +source_file = cpython/Doc/locales/pot/whatsnew/3.6.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:whatsnew--3_7] +file_filter = .//LC_MESSAGES/whatsnew/3.7.po +trans.pt_BR = whatsnew/3.7.po +source_file = cpython/Doc/locales/pot/whatsnew/3.7.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:whatsnew--3_8] +file_filter = .//LC_MESSAGES/whatsnew/3.8.po +trans.pt_BR = whatsnew/3.8.po +source_file = cpython/Doc/locales/pot/whatsnew/3.8.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:whatsnew--3_9] +file_filter = .//LC_MESSAGES/whatsnew/3.9.po +trans.pt_BR = whatsnew/3.9.po +source_file = cpython/Doc/locales/pot/whatsnew/3.9.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:whatsnew--changelog] +file_filter = .//LC_MESSAGES/whatsnew/changelog.po +trans.pt_BR = whatsnew/changelog.po +source_file = cpython/Doc/locales/pot/whatsnew/changelog.pot +type = PO +minimum_perc = 0 + +[o:python-doc:p:python-newest:r:whatsnew--index] +file_filter = .//LC_MESSAGES/whatsnew/index.po +trans.pt_BR = whatsnew/index.po +source_file = cpython/Doc/locales/pot/whatsnew/index.pot +type = PO +minimum_perc = 0 + diff --git a/Makefile b/Makefile index db2cda83b..453fe6b09 100644 --- a/Makefile +++ b/Makefile @@ -8,59 +8,44 @@ ################# # Configuration -# Main translation branch; please make sure it matches 'python-newest' -# project's version in 'python-docs' organization in Transifex -BRANCH := $(shell git branch --show-current) - -# Branches representing docs for older Python versions, which current -# translations should be merged into. Here some details: -# - STABLEBRANCH and OLDSTABLEBRANCHES differ in that STABLEBRANCH -# still gets its translated strings overwritten. -# - Not-yet-translated strings will still be merged on both variables -# - Leave STABLEBRANCH empty if Python stable branch is same as BRANCH. -# - Never use same version as in BRANCH -# - Check Python Docs versions still being built and published in: -# https://github.com/python/docsbuild-scripts/blob/master/build_docs.py -STABLEBRANCH := 3.9 -OLDSTABLEBRANCHES := 3.8 3.7 3.6 2.7 - -# Name of language team; should be python-docs-LANG, where LANG is the -# IETF language tag for your language; see Language Tag section in PEP 545 -LANGUAGE_TEAM := python-docs-pt-br - -# Language code in ISO 639; see Language Tag section in PEP 545, and -# Sphinx configuration's supported languages -LANGUAGE := pt_BR - -# Paths and URLs -UPSTREAM := https://github.com/python/cpython -PYTHON := $(shell which python3) -CPYTHON_PATH := $(shell realpath ../cpython) -POSPELL_TMP_DIR := .pospell -VENV := $(shell realpath ./venv) -WORKDIRS := $(VENV)/workdirs -CPYTHON_WORKDIR := $(WORKDIRS)/cpython -LOCALE_DIR := $(WORKDIRS)/locale - -# Settings for 'build' target -JOBS := auto -SPHINXERRORHANDLING := "-W" +# Read environment variables from file to keep this clean move version +# changes elsewhere +include .env +# Force the use of Bash +SHELL=/bin/bash + +# Time of starting this run +NOW := $(shell date +'%Y%m%-d-%H%M%Z') + +# Force realpath, not relative one +override CPYTHON_DIR := $(shell realpath $(CPYTHON_DIR)) + +override LOCALE_DIR := "$(CPYTHON_DIR)/$(LOCALE_DIR)" + +override LOGS_DIR := $(shell realpath $(LOGS_DIR)) + +override VENV_DIR := $(shell realpath $(VENV_DIR)) # ################# -.PHONY: help +.PHONY: build clean help htmlview lint merge po-install pot pull push setup spell tx-config tx-install venv + help: @echo "Please use 'make ' where is one of:" - @echo " build Build an local version in html, with warnings as errors" - @echo " push Update translations and Transifex config in the repository" - @echo " pull Download translations from Transifex; calls 'venv'" - @echo " tx-config Recreate an up-to-date project .tx/config; calls 'pot'" - @echo " pot Create/Update POT files from source files" - @echo " serve Serve a built documentation on http://localhost:8000" + @echo " build Build an local version in html; deps: 'setup' and 'po-install'" + @echo " push Commit and push translations; no deps" + @echo " pull Download translations from Transifex; deps: 'tx-config'" + @echo " tx-config Regenerate Transifex config; deps: 'pot' and 'tx-install'" + @echo " tx-install Install Transifex CLI client; deps: no deps" + @echo " pot Regenerate POT files from sources; deps: 'setup' and 'po-install'" + @echo " htmlview View docs in a web browser; deps: build" @echo " spell Check spelling, storing output in $(POSPELL_TMP_DIR)" - @echo " merge Merge $(BRANCH) branch's .po files into the following" - @echo " older branches: $(STABLEBRANCH) $(OLDSTABLEBRANCHES)" + @echo " lint Do some linting in PO file's Sphinx syntax. deps: 'venv'" + @echo " merge Merge $(BRANCH) branch's .po files into older branches" + @echo " Defaults overwrite in: $(BUGFIXBRANCH)" + @echo " and NOT overwrite in: $(OLDERBRANCHES)" + @echo " clean Do some house cleaning" @echo "" @@ -68,203 +53,210 @@ help: # at the moment. For most up-to-date docs, run "tx-config" and "pull" # before this. If passing SPHINXERRORHANDLING='', warnings will not be # treated as errors, which is good to skip simple Sphinx syntax mistakes. -.PHONY: build -build: setup - @echo "Building Python $(BRANCH) Documentation ..." - @$(MAKE) -C $(CPYTHON_WORKDIR)/Doc/ \ - VENVDIR=$(CPYTHON_WORKDIR)/Doc/venv \ - PYTHON=$(PYTHON) \ - SPHINXERRORHANDLING=$(SPHINXERRORHANDLING) \ - SPHINXOPTS='-q --keep-going -j$(JOBS) \ - -D locale_dirs=$(LOCALE_DIR) \ - -D language=$(LANGUAGE) \ - -D gettext_compact=0 \ - -D latex_engine=xelatex \ - -D latex_elements.inputenc= \ - -D latex_elements.fontenc=' \ - html - - @echo "Success! Open file://$(CPYTHON_WORKDIR)/Doc/build/html/index.html, " \ - "or run 'make serve' to see them in http://localhost:8000"; - - -# push: push changed translation files and Transifex config file to repository. -# Do nothing if there is no file changes. If GITHUB_TOKEN is set, then -# assumes we are in GitHub Actions, requiring different push args. -.PHONY: push +build: setup po-install + @echo "Building Python $(BRANCH) Documentation in $(LANGUAGE) ..." + @mkdir -p "$(LOGS_DIR)/build" + @$(MAKE) -C $(CPYTHON_DIR)/Doc/ \ + PYTHON=$(PYTHON) \ + SPHINXERRORHANDLING=$(SPHINXERRORHANDLING) \ + SPHINXOPTS="--keep-going \ + -D language=$(LANGUAGE) \ + -D latex_engine=xelatex \ + -D latex_elements.inputenc= \ + -D latex_elements.fontenc=" \ + html \ + 2> >(tee -a $(LOGS_DIR)/build/err-$(NOW).txt >&2) + + +# push: Push changed translation files and Transifex config file to repository. +# First it git-adds tracked file whose changes are not limited to the +# POT-Creation-Date header field. Then it git-adds untracked PO files +# that might have been created in the update process, and the Transifex +# configuration. If no file changed, it does nothing. +# The MSG variable has a default commit message, but one can overrride it +# e.g. make push MSG='my message' +push: MSG := 'Update translations from Transifex' push: - @if ! git status -s | egrep '\.po|\.tx/config'; then \ - echo "Nothing to commit"; \ - exit 0; \ - else \ - git add *.po **/*.po .tx/config; \ - git commit -m 'Update translations from Transifex'; \ - if [ $(GITHUB_TOKEN) != "" ]; then \ - header="$(echo -n token:"$(GITHUB_TOKEN)" | base64)"; \ - git -c http.extraheader="AUTHORIZATION: basic $(header)" push; \ - else \ - git push; \ - fi; \ - fi + @git diff -I'^"POT-Creation-Date: ' --numstat *.po **/*.po \ + | cut -f3 | xargs -r git add + @git add $(git ls-files -o --exclude-standard *.po **/*.po) .tx/config + @git commit --allow-empty -m $(MSG) + @git push # pull: Download translations files from Transifex, and apply line wrapping. # For downloading new translation files, first run "tx-config" target # to update the translation file mapping. -.PHONY: pull -pull: venv - @$(VENV)/bin/tx pull --force --language=$(LANGUAGE) --parallel - @$(VENV)/bin/powrap --quiet *.po **/*.po +pull: tx-config + @"$(TX_CLI_DIR)/tx" pull -l pt_BR -t -f --use-git-timestamps + @"$(VENV_DIR)/bin/powrap" --quiet *.po **/*.po -# tx-config: After running "pot", create a new Transifex config file by -# reading pot files generated, then tweak it to LANGUAGE. -.PHONY: tx-config +# tx-config: Generate a new Transifex configuration file by reading +# the pot files generated by 'pot' target. The file is +# created in $(LOCALE_DIR)/.tx/config, and then is tweaked +# to fit the language's needs and then placed in .tx/config +# at the project's root directory. tx-config: TRANSIFEX_PROJECT := python-newest -tx-config: pot - @cd $(CPYTHON_WORKDIR)/Doc/locales; \ - rm -rf .tx; \ - $(VENV)/bin/sphinx-intl create-txconfig; \ - $(VENV)/bin/sphinx-intl update-txconfig-resources \ - --transifex-project-name=$(TRANSIFEX_PROJECT) \ - --locale-dir . \ - --pot-dir pot; - +tx-config: LOCALE_RELATIVE := $(shell realpath --relative-to=. $(LOCALE_DIR)) +tx-config: pot tx-install + @cd $(LOCALE_DIR); \ + rm -rf .tx; \ + "$(VENV_DIR)/bin/sphinx-intl" create-txconfig; \ + "$(VENV_DIR)/bin/sphinx-intl" update-txconfig-resources \ + --transifex-organization-name python-doc \ + --transifex-project-name=$(TRANSIFEX_PROJECT) \ + --locale-dir . \ + --pot-dir pot @mkdir -p .tx - @sed $(CPYTHON_WORKDIR)/Doc/locales/.tx/config \ - -e '/^source_file/d' \ - -e 's|/LC_MESSAGES/||' \ - -e "s|^file_filter|trans.$(LANGUAGE)|" \ + @sed $(LOCALE_DIR)/.tx/config \ + -e "s|^file_filter = .*|&\nx&|;" \ + -e "s|^source_file = pot/|source_file = $(LOCALE_RELATIVE)/pot/|" \ > .tx/config + @sed -i .tx/config \ + -e "s|^xfile_filter = .//LC_MESSAGES/|trans.$(LANGUAGE) = |;" + + +# tx-install: Install Transifex CLI client if not installed yet. Installs +# the TX_CLI_VERSION version into TX_CLI_DIR directory. If +# TX_CLI_VERSION not provided, uses the latest one. +tx-install: URL := https://raw.githubusercontent.com/transifex/cli/master/install.sh +tx-install: + @if [ ! -x "$(TX_CLI_DIR)/tx" ]; then \ + echo "Transifex TX Client not found, installing ..."; \ + cd "$(TX_CLI_DIR)"; \ + if [ -n "v$(TX_CLI_VERSION)" ]; then \ + curl -s -o- $(URL) | bash -s -- v$(TX_CLI_VERSION); \ + else \ + curl -s -o- $(URL) | bash; \ + fi; \ + fi -# pot: After running "setup" target, run a cpython Makefile's target -# to generate .pot files under $(CPYTHON_WORKDIR)/Doc/locales/pot. -.PHONY: pot -pot: setup - @$(MAKE) -C $(CPYTHON_WORKDIR)/Doc/ \ - VENVDIR=$(CPYTHON_WORKDIR)/Doc/venv \ - PYTHON=$(PYTHON) \ - ALLSPHINXOPTS='-E -b gettext \ - -D gettext_compact=0 \ - -d build/.doctrees . \ - locales/pot' \ - build +# pot: After running "setup" target, run sphinx-build's gettext target +# to generate .pot files under $(CPYTHON_DIR)/Doc/locales/pot. +pot: setup po-install + @$(MAKE) -C $(CPYTHON_DIR)/Doc/ \ + VENVDIR=./venv \ + PYTHON=$(PYTHON) \ + ALLSPHINXOPTS='-E \ + -b gettext \ + -D gettext_compact=0 \ + -d build/.doctrees \ + . $(LOCALE_DIR)/pot' \ + build # setup: After running "venv" target, prepare that virtual environment with # a local clone of cpython repository and the translation files. # If the directories exists, only update the cpython repository and # the translation files copy which could have new/updated files. -.PHONY: setup +setup: CPYTHON_URL := https://github.com/python/cpython setup: venv - @if [ -z $(BRANCH) ]; then \ + @if [ -z "$(BRANCH)" ]; then \ echo "BRANCH is empty, should have git-branch. Unable to continue."; \ - exit 1; \ + exit 1; \ fi - @if ! [ -d $(CPYTHON_PATH) ]; then \ - echo "CPython repo not found; cloning ..."; \ - git clone --depth 1 --no-single-branch $(UPSTREAM) $(CPYTHON_PATH); \ - git -C $(CPYTHON_PATH) checkout $(BRANCH); \ - else \ - echo "CPython repo found; updating ..."; \ - git -C $(CPYTHON_PATH) checkout $(BRANCH); \ - git -C $(CPYTHON_PATH) pull --rebase; \ + @if ! [ -d "$(CPYTHON_DIR)" ]; then \ + echo "CPython repo not found; cloning ..."; \ + git clone --depth 1 --no-single-branch $(CPYTHON_URL) $(CPYTHON_DIR); \ + git -C "$(CPYTHON_DIR)" checkout $(BRANCH); \ + else \ + echo "CPython repo found; updating ..."; \ + git -C "$(CPYTHON_DIR)" checkout $(BRANCH); \ + git -C "$(CPYTHON_DIR)" pull --rebase; \ fi - @if ! [ -d $(CPYTHON_WORKDIR) ]; then \ - echo "Setting up CPython repo in workdir ..."; \ - rm -fr $(WORKDIRS); \ - mkdir -p $(WORKDIRS); \ - git clone $(CPYTHON_PATH) $(CPYTHON_WORKDIR); \ - $(MAKE) -C $(CPYTHON_WORKDIR)/Doc \ - VENVDIR=$(CPYTHON_WORKDIR)/Doc/venv \ - PYTHON=$(PYTHON) venv; \ - else \ - echo "CPython repo already ready in workdir"; \ + @echo "Creating CPython's documentation virtual environment ..." + @if [ ! -d "$(CPYTHON_DIR)/Doc/venv" ]; then \ + $(MAKE) -C "$(CPYTHON_DIR)/Doc" PYTHON=$(PYTHON) venv; \ fi - - @echo "Setting up translation files in workdir ..." - @if ! [ -d $(LOCALE_DIR)/$(LANGUAGE)/LC_MESSAGES/ ]; then \ - mkdir -p $(LOCALE_DIR)/$(LANGUAGE)/LC_MESSAGES/; \ - fi - @cp --parents *.po **/*.po $(LOCALE_DIR)/$(LANGUAGE)/LC_MESSAGES/ + + +# po-install: Copy the project's PO files into CPython locales directory, +# to make it easier to run targets like build and gettext +po-install: + @echo "Setting up translation files in cpython's Doc ..." + @mkdir -p "$(LOCALE_DIR)/$(LANGUAGE)/LC_MESSAGES/" + @cp --parents *.po **/*.po "$(LOCALE_DIR)/$(LANGUAGE)/LC_MESSAGES/" # venv: create a virtual environment which will be used by almost every -# other target of this script. -.PHONY: venv +# other target of this script. CPython specific packages are installed +# in there specific venv (see 'setup' target). venv: - @if [ ! -d $(VENV) ]; then \ - echo "Setting up $(LANGUAGE_TEAM)'s virtual environment ..."; \ - $(PYTHON) -m venv --prompt $(LANGUAGE_TEAM) $(VENV); \ - $(VENV)/bin/python -m pip install --upgrade pip; \ + @if [ ! -d "$(VENV_DIR)" ]; then \ + echo "Setting up language team's virtual environment ..."; \ + "$(PYTHON)" -m venv "$(VENV_DIR)"; \ + "$(VENV_DIR)/bin/python" -m pip install --upgrade pip; \ + mkdir -p "$(LOGS_DIR)"; \ + "$(VENV_DIR)/bin/pip" install --requirement requirements.txt \ + --log "$(LOGS_DIR)/venv-$(NOW).txt"; \ fi - @$(VENV)/bin/pip install --upgrade --requirement requirements.txt -# serve: serve the documentation in a simple local web server, using cpython -# Makefile's "serve" target. Run "build" before using this target. -.PHONY: serve -serve: - @$(MAKE) -C $(CPYTHON_WORKDIR)/Doc serve +# htmlview: View the documentation locally, using Makefile's "htmlview" target. +# Run "build" before using this target. +htmlview: build + @INDEX="$(CPYTHON_DIR)/Doc/build/html/index.html"; \ + "$(PYTHON)" -c "import os, webbrowser; \ + webbrowser.open('file://' + os.path.realpath('$$INDEX'))" # spell: run spell checking tool in all po files listed in SRCS variable, # storing the output in text files DESTS for proofreading. The # DESTS target run the spellchecking, while the typos.txt target # gather all reported issues in one file, sorted without redundancy. -.PHONY: spell - SRCS := $(wildcard *.po **/*.po) -DESTS = $(addprefix $(POSPELL_TMP_DIR)/out/,$(patsubst %.po,%.txt,$(SRCS))) - -spell: venv $(DESTS) $(POSPELL_TMP_DIR)/typos.txt +DESTS := $(addprefix $(LOGS_DIR)/pospell-$(NOW)/out/,$(patsubst %.po,%.txt,$(SRCS))) +spell: venv $(DESTS) $(LOGS_DIR)/pospell-$(NOW)/all.txt -$(POSPELL_TMP_DIR)/out/%.txt: %.po dict +$(LOGS_DIR)/pospell-$(NOW)/out/%.txt: %.po dict @echo "Checking $< ..." @mkdir -p $(@D) - @$(VENV)/bin/pospell -l $(LANGUAGE) -p dict $< > $@ || true + @$(VENV_DIR)/bin/pospell -l "$(LANGUAGE)" -p dict $< > $@ || true -$(POSPELL_TMP_DIR)/typos.txt: - @echo "Gathering all typos in $(POSPELL_TMP_DIR)/typos.txt ..." +$(LOGS_DIR)/pospell-$(NOW)/all.txt: + @echo "Gathering all typos in $(LOGS_DIR)/pospell-$(NOW)/all.txt ..." @cut -d: -f3- $(DESTS) | sort -u > $@ # merge: merge translations from BRANCH (Python version currently aim of -# translation) into each branch listed by STABLEBRANCH and -# OLDSTABLEBRANCHES (branches of older Python versions) so that older +# translation) into each branch listed by BUGFIXBRANCH and +# OLDERBRANCHES (branches of older Python versions) so that older # versions of the Python Docs make at least some use the latest -# translations, if possible. OLDSTABLEBRANCHES has '--no-overwrite' +# translations, if possible. OLDERBRANCHES has '--no-overwrite' # flag so it does not overwrite translated strings, preserving history. # After merging, git-push merged files (if any) to the target branch. -.PHONY: merge -merge: venv $(STABLEBRANCH) $(OLDSTABLEBRANCHES) - -$(OLDSTABLEBRANCHES): OVERWRITEFLAG = --no-overwrite -$(STABLEBRANCH) $(OLDSTABLEBRANCHES): - @if [ $@ == $(BRANCH) ]; then \ - echo "Ignoring attempt to pomerge '$(BRANCH)' into itself"; \ - else \ - echo "Merging translations from $(BRANCH) branch into $@ ..."; \ - $(VENV)/bin/pomerge --from-files *.po **/*.po; \ - git checkout $@; \ - $(VENV)/bin/pomerge $(OVERWRITEFLAG) --to-files *.po **/*.po; \ - $(VENV)/bin/powrap --modified *.po **/*.po; \ - if git status -s | egrep '\.po'; then \ - git add *.po **/*.po; \ - git commit -m "pomerge from $(BRANCH) branch into $@"; \ - git push; \ - fi; \ - git checkout $(BRANCH); \ +merge: venv $(BUGFIXBRANCH) $(OLDERBRANCHES) + +$(OLDERBRANCHES): OVERWRITEFLAG = --no-overwrite +$(BUGFIXBRANCH) $(OLDERBRANCHES): + @if [[ $@ == $(BRANCH) ]]; then \ + echo "Ignoring attempt to pomerge '$(BRANCH)' into itself."; \ + else \ + echo "Merging translations from $(BRANCH) branch into $@ ..."; \ + $(VENV_DIR)/bin/pomerge --from-files *.po **/*.po; \ + git checkout $@; \ + $(VENV_DIR)/bin/pomerge $(OVERWRITEFLAG) --to-files *.po **/*.po; \ + $(VENV_DIR)/bin/powrap --modified *.po **/*.po; \ + $(MAKE) push MSG="Merge $(BRANCH) branch into $@"; \ + git checkout $(BRANCH); \ fi +# lint: Report reStrutcturedText syntax errors in the translation files +lint: venv + @mkdir -p "$(LOGS_DIR)" + @$(VENV_DIR)/bin/sphinx-lint *.po **/*.po |& \ + tee -a $(LOGS_DIR)/lint-$(NOW).txt || true + @echo "Lint output stored in $(LOGS_DIR)/lint-$(NOW).txt" + + # clean: remove all .mo files and the venv directory that may exist and could # have been created by the actions in other targets of this script. -.PHONY: clean clean: - rm -rf $(VENV) - rm -rf $(POSPELL_TMP_DIR) - find -name '*.mo' -delete + rm -rf "$(VENV_DIR)" + rm -rf "$(LOCALE_DIR)" + [ -d "$(CPYTHON_DIR)" ] && $(MAKE) -C "$(CPYTHON_DIR)/Doc" clean-venv diff --git a/README.md b/README.md index aad94561f..7a10e4bab 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,7 @@ # Brazilian Portuguese Translation of the Python Documentation -![Build and update documentation](https://github.com/python/python-docs-pt-br/workflows/Build%20and%20update%20documentation/badge.svg) +[![Update](https://github.com/python/python-docs-pt-br/actions/workflows/update.yml/badge.svg)](https://github.com/python/python-docs-pt-br/actions/workflows/update.yml) +[![Check](https://github.com/python/python-docs-pt-br/actions/workflows/check.yml/badge.svg)](https://github.com/python/python-docs-pt-br/actions/workflows/check.yml) Check our [wiki](https://github.com/python/python-docs-pt-br/wiki) for more guidance on translating diff --git a/requirements.txt b/requirements.txt index 1ccc5865b..ba4228db8 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,31 @@ +alabaster==0.7.13 +Babel==2.12.1 +certifi==2022.12.7 +charset-normalizer==3.1.0 +click==8.1.3 +docutils==0.17.1 +idna==3.4 +imagesize==1.4.1 +Jinja2==3.1.2 +MarkupSafe==2.1.2 +packaging==23.1 +pipdeptree==2.7.0 +polib==1.2.0 +pomerge==0.1.4 +pospell==1.1 +powrap==1.0.1 +Pygments==2.15.1 +regex==2023.3.23 +requests==2.28.2 +snowballstemmer==2.2.0 +Sphinx==5.3.0 sphinx-intl==2.1.0 -powrap -pomerge +sphinx-lint==0.6.7 +sphinxcontrib-applehelp==1.0.4 +sphinxcontrib-devhelp==1.0.2 +sphinxcontrib-htmlhelp==2.0.1 +sphinxcontrib-jsmath==1.0.1 +sphinxcontrib-qthelp==1.0.3 +sphinxcontrib-serializinghtml==1.1.5 +tqdm==4.65.0 +urllib3==1.26.15 diff --git a/requirements.txt.in b/requirements.txt.in new file mode 100644 index 000000000..0640e6881 --- /dev/null +++ b/requirements.txt.in @@ -0,0 +1,5 @@ +pomerge +powrap +pospell +sphinx-intl>=2.1.0 +sphinx-lint diff --git a/scripts/build.sh b/scripts/build.sh deleted file mode 100755 index c32e98671..000000000 --- a/scripts/build.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/sh -# Build translated version of Python Docs - -[ -n "$GITHUB_ACTIONS" ] && set -x -set -e - -# Allow language being passed as 1st argument, defaults to pt_BR -LANGUAGE=${1:-pt_BR} - -ROOTDIR="$(dirname $0)/.." - -cd "${ROOTDIR}" - -if ! test -f cpython/Doc/conf.py; then - echo Unable to find proper CPython Doc folder - exit 1 -fi - -for po in $(find . -type f -name '*.po' | sort | sed 's|^\./||'); do - install -Dm644 ${po} "cpython/Doc/locales/${LANGUAGE}/LC_MESSAGES/${po}" -done - -sphinx-build -b html -d build/doctrees -a --keep-going -jauto -D locale_dirs=locales -D language=pt_BR -D gettext_compact=0 -D latex_engine=xelatex -D latex_elements.inputenc= -D latex_elements.fontenc= -W cpython/Doc cpython/Doc/build/html - -if [ -z "$GITHUB_ACTIONS" ]; then - echo 'See the built documentation by running the following command:' - echo 'python3 -c "import os, webbrowser; webbrowser.open('file://' + os.path.realpath('cpython/Doc/build/html/index.html'))""' -fi diff --git a/scripts/prepmsg.sh b/scripts/prepmsg.sh deleted file mode 100644 index 4cbb65e87..000000000 --- a/scripts/prepmsg.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/sh -# Prepare message for Telegram notification -set -ex - -[ $# -ne 2 ] && ( echo "Expected 1 input and 1 output files, got $#"; exit; ) -[ ! -f $1 ] && ( echo "Input file $1 not found, skipping."; exit; ) -[ -z "${GITHUB_REPOSITORY}" ] && (echo "GITHUB_REPOSITORY is empty."; exit 1;) -[ -z "${GITHUB_RUN_ID}" ] && (echo "GITHUB_RUN_ID is empty."; exit 1;) -[ -z "${GITHUB_JOB}" ] && (echo "GITHUB_JOB is empty."; exit 1;) - -URL="https://github.com/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID}" - -echo "❌ *${GITHUB_JOB}* (ID [${GITHUB_RUN_ID}]($URL)):" > $2 -echo "" >> $2 -grep 'cpython/Doc/.*WARNING:' $1 | \ - sed 's|.*/cpython/Doc|Doc|' | \ - uniq | \ - sed 's|^|```\n|;s|$|\n```\n|' \ - >> $2 -echo "" >> $2 diff --git a/scripts/update.sh b/scripts/update.sh deleted file mode 100755 index d3b149078..000000000 --- a/scripts/update.sh +++ /dev/null @@ -1,35 +0,0 @@ -#!/bin/sh -# Pull catalog message files from Transifex - -[ -n "$GITHUB_ACTIONS" ] && set -x -set -e - -# Allow language being passed as 1st argument, defaults to pt_BR -LANGUAGE=${1:-pt_BR} - -ROOTDIR=$(realpath "$(dirname $0)/..") - -cd ${ROOTDIR} - -if ! test -f cpython/Doc/conf.py; then - echo Unable to find proper CPython Doc folder - exit 1 -fi - -# Create POT Files -cd cpython/Doc -sphinx-build -E -b gettext -D gettext_compact=0 -d build/.doctrees . locales/pot - -# Update CPython's .tx/config -cd locales -sphinx-intl create-txconfig -sphinx-intl update-txconfig-resources -p pot -d . --transifex-organization-name python-doc --transifex-project-name python-newest - -# Pull translations into cpython/Doc/locales/LANGUAGE/LC_MESSAGES/ -tx pull -l ${LANGUAGE} -t --use-git-timestamps -f - -# Finally, move downloaded translation files to the language's repository -cd "${LANGUAGE}/LC_MESSAGES/" -for po in $(find . -type f -name '*.po' | sort | sed 's|^\./||'); do - install -Dm644 ${po} "${ROOTDIR}/${po}" -done