Biblioteca de utilitários domain-neutral que serve como base para todos os coletores e pipelines Quantilica. Centraliza rede resiliente, armazenamento atômico, proveniência de dados e logging estruturado — permitindo que cada pacote de domínio foque exclusivamente na lógica de sua fonte de dados.
pip install "quantilica-core @ git+https://github.com/Quantilica/quantilica-core.git"Com uv:
uv add "quantilica-core @ git+https://github.com/Quantilica/quantilica-core.git"from quantilica_core.http import HttpClient
from quantilica_core.storage import LocalStorage
from quantilica_core.manifests import DownloadManifest
# Cliente HTTP com retry automático
client = HttpClient(attempts=3)
response = client.get("https://api.ibge.gov.br/...")
# Escrita atômica em disco
storage = LocalStorage("dados/raw")
stat = storage.write_bytes("sidra/tabela.csv", response.content)
# Registro de proveniência (SHA-256)
manifest = DownloadManifest.from_file(
source_id="ibge",
dataset_id="sidra-1234",
url="https://...",
file_path=stat.path,
producer="sidra-fetcher",
)
manifest.write_json(stat.path.with_suffix(".manifest.json"))| Módulo | Descrição |
|---|---|
http |
HttpClient e AsyncHttpClient com backoff exponencial e jitter |
retry |
Lógica de retry configurável para falhas de rede e erros transientes |
storage |
LocalStorage para gerenciar artefatos brutos e processados atomicamente |
manifests |
DownloadManifest e ExecutionManifest para rastreabilidade completa |
metadata |
Modelos MetadataCatalog, Source, Dataset para interoperabilidade |
logging |
Logging estruturado via get_logger e log_step |
exceptions |
Hierarquia padrão: FetchError, ParseError, StorageError |
- Neutralidade de domínio — o core nunca sabe o que é IBGE, DATASUS ou INMET.
- Leveza — dependências mínimas no núcleo; integrações pesadas são extras opcionais.
- Estabilidade — alta cobertura de testes em todos os componentes de infraestrutura.
- DX — APIs tipadas e tratamento de erros consistente em toda a organização.
git clone https://github.com/Quantilica/quantilica-core.git
cd quantilica-core
uv sync --dev
uv run pytestMIT — veja LICENSE.