Problema
Atualmente, o workflow .github/workflows/publish.yml é acionado apenas em pushes de tags v* e executa exclusivamente o processo de build e publish no PyPI. Hoje não existe nenhuma etapa de validação automatizada com pytest, ruff ou mypy sendo executada em pull requests ou em pushes para main.
O projeto já possui uma base relevante de qualidade configurada, incluindo 121 testes e dependências de desenvolvimento definidas em [project.optional-dependencies].dev no pyproject.toml, como:
pytest>=8.0.0
ruff>=0.4.0
mypy>=1.10.0
Apesar disso, essas validações nunca são executadas automaticamente no fluxo de integração.
Impacto
Sem uma pipeline de CI rodando antes do merge ou da publicação, código quebrado pode ser integrado à main e, em seguida, publicado no PyPI sem nenhuma barreira de qualidade.
Além disso, como a configuração do mypy utiliza strict = true no pyproject.toml, existe um risco ainda maior de regressões de tipagem e segurança de tipos passarem despercebidas até chegarem em produção.
Proposta
Criar um novo workflow .github/workflows/ci.yml para validar o projeto em pushes para main e em pull requests direcionados à main.
Exemplo:
name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.11", "3.12"]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- run: pip install -e ".[dev]"
- run: pytest tests/ -v
- run: ruff check epi/
- run: mypy epi/
Problema
Atualmente, o workflow
.github/workflows/publish.ymlé acionado apenas em pushes de tagsv*e executa exclusivamente o processo de build e publish no PyPI. Hoje não existe nenhuma etapa de validação automatizada compytest,ruffoumypysendo executada em pull requests ou em pushes paramain.O projeto já possui uma base relevante de qualidade configurada, incluindo 121 testes e dependências de desenvolvimento definidas em
[project.optional-dependencies].devnopyproject.toml, como:pytest>=8.0.0ruff>=0.4.0mypy>=1.10.0Apesar disso, essas validações nunca são executadas automaticamente no fluxo de integração.
Impacto
Sem uma pipeline de CI rodando antes do merge ou da publicação, código quebrado pode ser integrado à
maine, em seguida, publicado no PyPI sem nenhuma barreira de qualidade.Além disso, como a configuração do
mypyutilizastrict = truenopyproject.toml, existe um risco ainda maior de regressões de tipagem e segurança de tipos passarem despercebidas até chegarem em produção.Proposta
Criar um novo workflow
.github/workflows/ci.ymlpara validar o projeto em pushes paramaine em pull requests direcionados àmain.Exemplo: