diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 85b8169..8568c80 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -5,3 +5,19 @@ repos: - id: ruff args: [--fix] - id: ruff-format + + # Hook local (não o mirrors-mypy oficial) pra rodar o mesmo mypy já + # instalado via "pip install -e .[dev]", com a mesma versão e config do + # CI, em vez de duplicar as dependências de tipo num ambiente isolado à + # parte. Roda no projeto inteiro (não só nos arquivos staged), porque o + # modo strict do mypy depende de contexto entre módulos. Usa "python -m + # mypy" em vez do executável mypy.exe direto: em caminho com acento (ex: + # "Programação"), o mypy.exe falha silenciosamente no Windows. + - repo: local + hooks: + - id: mypy + name: mypy + entry: python -m mypy . + language: system + pass_filenames: false + types: [python] diff --git a/README.md b/README.md index a0b97bf..a2063e6 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ qa-api-python/ ├── reports/ # Relatório HTML e cobertura (coverage.xml) gerados a cada execução (não versionado) ├── conftest.py # Fixtures (contexto por cenário) e captura de evidência de falha ├── pyproject.toml # Dependências, scripts e configuração (pytest, ruff, mypy) -├── .pre-commit-config.yaml # Hook de pre-commit (ruff) +├── .pre-commit-config.yaml # Hooks de pre-commit (ruff, mypy) ├── LICENSE └── README.md # Este arquivo ``` @@ -91,7 +91,7 @@ O CI roda `mypy`, `ruff check`, `ruff format --check` e `pip-audit` antes dos te Cada execução de `pytest` já gera cobertura de `api/` e `models/` (código dos API Clients e dos schemas), impressa no terminal e também em `reports/coverage.xml` (não versionado). No CI esse arquivo é enviado para o [Codecov](https://codecov.io/gh/ThomasTDS/qa-api-python), que mantém o histórico e mostra o badge no topo deste README. -Um hook de pre-commit (framework `pre-commit`, instalado via `pre-commit install` após o `pip install`) roda `ruff --fix` e `ruff format` nos arquivos staged antes de cada commit, então a maioria dos problemas de lint/formatação já é corrigida localmente antes de chegar no CI. +Um hook de pre-commit (framework `pre-commit`, instalado via `pre-commit install` após o `pip install`) roda `ruff --fix` e `ruff format` nos arquivos staged, e também `mypy .` no projeto inteiro, antes de cada commit — então a maioria dos problemas de lint, formatação ou tipo já é pega localmente antes de chegar no CI. ### Rodar contra outra URL