Skip to content

agrobr v0.12.0

Choose a tag to compare

@bruno-portfolio bruno-portfolio released this 28 Feb 17:49
· 263 commits to main since this release

agrobr v0.12.0 — Auditoria de Segurança, PEVS, Censo 1985 & PIB Agro

Maior release até agora: 24 correções de segurança de uma auditoria completa, 4 novas fontes IBGE, dados censitários históricos desde 1920 e dados municipais de 1985 extraídos via OCR.

Auditoria de Segurança — 24 issues resolvidos

Auditoria completa pip-audit + openssl s_client. Destaques:

  • Path traversal em snapshots — shutil.rmtree com input não sanitizado permitia deletar diretórios arbitrários
  • TLS hardening — removido verify=False desnecessário (B3, SICAR) após confirmar certificados válidos; caso justificado documentado (ComexStat/SERPRO)
  • JS injection no browser headless CONAB — URL sanitizada via json.dumps()
  • SQL injection no BCB BigQuery — f-strings substituídas por sanitização via regex whitelist
  • Exception handlingexcept Exception substituído por catches específicos em IBGE, B3, CEPEA (bugs não são mais engolidos silenciosamente)
  • Rate limiting — integrado ao retry_on_status(), 32 call sites em 21 clients agora com rate limiting automático
  • Scrubbing de dados sensíveis — processador structlog redacta API keys, tokens e passwords nos logs
  • Auto-discovery de contratos — imports por side-effect substituídos por pkgutil auto-discovery

Novas Fontes

IBGE PEVS — Silvicultura & Extração Vegetal

df = await ibge.silvicultura("madeira_tora", uf="PR")          # 14 produtos
df = await ibge.silvicultura("eucalipto", variavel="area")      # área plantada (tab 5930)
df = await ibge.extracao_vegetal("acai", nivel="municipio")     # 21 produtos

IBGE Leite Trimestral

df = await ibge.leite_trimestral(uf="MG")  # formato wide: adquirido, industrializado, preço médio

IBGE PIB Agro

df = await ibge.pib_agro(precos="corrente", setor="agropecuaria")

Censo Agropecuário Série Histórica (1920-2006)

df = await ibge.censo_agro_historico("uso_terra", ano=1985, uf="SP")  # 9 temas, nível UF

Censo Agropecuário Municipal 1985 — Melhoria de Qualidade OCR

  • 525 valores corrigidos por column bleed (remoção de dígitos vazados de colunas adjacentes)
  • Labels OCR corrigidos — erros sistemáticos D→O
  • Tolerância adaptativa — tabelas esparsas não são mais penalizadas
  • Distribuição de confiança: alta 5.4%→25.4%, média 62.0%→65.3%, baixa 32.6%→9.3%

Performance

  • Suite de testes 58% mais rápida — 102s → 43s
  • Backoff de retry mockado nos testes (0.001s), benchmarks excluídos por default
  • Golden test ANP diesel (12s de parse xlsx) marcado como @pytest.mark.slow

Qualidade

  • 3 novos contratos + schemas JSON (silvicultura, extrativismo_vegetal, leite_industrial)
  • 4 novas cache policies (TTL 7d / stale 90d)
  • Golden data de chamadas reais ao SIDRA para as 4 novas fontes
  • Contrato IBGE LSPA registrado (era dead code)
  • Schema órfão antaq_movimentacao.json removido
  • Validação de colunas DATETIME adicionada ao sistema de contratos
  • ~150 novos testes

Instalar

pip install agrobr==0.12.0

Changelog completo: https://github.com/bruno-portfolio/agrobr/blob/main/CHANGELOG.md