Pular para conteúdo

Desenvolvimento

Testes

# Rodar todos os testes (cobertura incluída automaticamente)
make test

# Modo verbose
make test-v

# Apenas um módulo
make test-file FILE=tests/test_handlers.py

# Sem relatório de cobertura (mais rápido)
make test-fast

A cobertura é configurada automaticamente via pyproject.toml (branch coverage). A suite cobre translate, inbox_worker, handlers, actor/keys, persistência (followers, notas, fila, deduplicação, rate limit) e os endpoints principais do servidor.

Comandos úteis

# Listar todos os comandos disponíveis
make help

# Verificar o código com o linter
make lint

# Corrigir erros de lint automaticamente
make lint-fix

# Formatar o código
make format

# Verificar tipos com mypy
make typecheck

# Formatar + lint + typecheck de uma vez
make check

# Remover artefatos gerados (cache, cobertura, build)
make clean

# Adicionar uma dependência
uv add nome-do-pacote

# Adicionar dependência só de desenvolvimento
uv add --group dev nome-do-pacote

# Atualizar apenas o apkit
uv lock --upgrade-package apkit

Documentação

Este site é gerado com MkDocs + Material for MkDocs, a partir dos arquivos em docs/.

# Servir localmente com hot-reload
make docs-serve

# Gerar o site estático em site/
make docs-build

Um workflow (.github/workflows/docs.yml) publica o site automaticamente no GitHub Pages a cada push na main que altere docs/ ou mkdocs.yml.

Notas

Releases são publicadas automaticamente

A cada tag vX.Y.Z empurrada pra main, o workflow release.yml roda a suíte completa, builda e publica a imagem em ghcr.io/riverfount/translate-bot e cria a release no GitHub com changelog gerado automaticamente a partir dos PRs mergeados.

apkit ainda não é estável

A versão está fixada no pyproject.toml. Antes de atualizar, leia o CHANGELOG do projeto.

LibreTranslate é open source e self-hostável

Para maior controle e sem custos por caractere, considere rodar sua própria instância. Instruções em libretranslate.com. O limite de 500 caracteres por requisição é configurável no código.

uv.lock deve ser versionado no git

Ele garante que produção use exatamente as mesmas versões que desenvolvimento.