Skip to content

v0.9.0

Choose a tag to compare

@bruno-portfolio bruno-portfolio released this 11 Feb 12:45
· 366 commits to main since this release

agrobr 0.9.0 — Quality & Resilience

Foco total em qualidade, resiliência e confiabilidade da biblioteca.

Highlights

  • 1500+ testes (era 949), cobertura ~75% (era 57.5%)
  • 13/13 fontes com golden tests (era 2/13)
  • 10 bugs corrigidos incluindo histórico DuckDB que nunca salvava dados
  • Resiliência HTTP completa: retry centralizado, 429/Retry-After handling
  • INMET atualizado: novo endpoint + suporte a token de autenticação
  • Benchmark de escalabilidade validado: memory, volume, cache, async

Fixed

  • Cache DuckDB: history_entries.id sem autoincrement — histórico permanente nunca salvava dados
  • normalizar_safra() não fazia strip no input (" 2024 / 25 " falhava)
  • 6 clients sem retry para HTTP 429 (INMET, NASA POWER, CONAB, IBGE)
  • Graceful degradation silenciosa → SourceUnavailableError quando retry esgota
  • except Exception genérico no cache restringido para exceções específicas
  • INMET: endpoint /estacao/dados//estacao/ (API mudou)
  • INMET: HTTP 204 (No Content) retorna DataFrame vazio sem erro

Added

  • retry_on_status() e retry_async() centralizados em http/retry.py
  • Suporte a Retry-After header em respostas 429
  • Token INMET via AGROBR_INMET_TOKEN (env var)
  • Golden tests para todas as 13 fontes de dados
  • Testes de resiliência HTTP para todos os clients
  • Testes da API pública: indicador(), ultimo(), safras(), balanco(), brasil_total()
  • Benchmark de escalabilidade: memory profiling, volume scaling, cache stress, async performance

Changed

  • Retry de 5 clients migrado para http/retry.py centralizado
  • Testes de datasets refatorados: 98 funções duplicadas → 27 parametrizadas (115 cenários)
  • Pre-commit hooks atualizados (ruff v0.15, mypy v1.19)

Breaking Changes

Nenhum. API pública mantida.

Upgrade

pip install --upgrade agrobr

Known Issues

  • indicadores_upsert com 50k+ records escala não-linearmente
  • 5 golden tests com dados sintéticos (BCB, INMET, USDA, ComexStat, NA)
  • 7 clients legados com retry loop próprio (migração pra retry_on_status no roadmap)

Feedback e issues: https://github.com/brunoescalhao/agrobr/issues