Contribuindo¶
Ambiente de desenvolvimento¶
Testes¶
A suíte cobre cada módulo com mocks (sem precisar de Postgres/API reais):
| Arquivo | Cobre |
|---|---|
test_tap.py |
IXCTap — discover, check, sync, cursor, VALIDATE, vazio, resume |
test_api_client.py |
IXCClient — paginação, params, check |
test_checkpoint.py |
CRUD de checkpoint |
test_pipeline.py |
state machine (stages, from_checkpoint, falhas) |
test_staging.py |
NDJSON → DuckDB, fields, transform_sql, read/replace |
test_postgres.py |
helpers de schema evolution, validação de identificador |
test_contracts.py |
sanitize, validate_batch, dead letter |
test_runner.py |
webhook |
test_settings.py |
carga de config, erros humanizados |
Convenções¶
- Código síncrono —
httpx.Client(não async). - structlog para logging — nunca
printou logging stdlib direto. - Pydantic v2,
typing.Protocolpara interfaces (não ABC). - Type hints em funções públicas; docstrings em módulos e classes.
- Nunca
exceptgenérico sem tipo. TapResulté o retorno —sync()nunca levanta para o caller.
Veja também o Guia de code review.
Adicionar um stream¶
Dois passos — veja Streams.
Documentação¶
A doc é MkDocs Material. Para rodar localmente:
O deploy para GitHub Pages é automático (workflow .github/workflows/docs.yml) em
push na master.