Skip to content

agrobr v1.0.0

Choose a tag to compare

@bruno-portfolio bruno-portfolio released this 10 Mar 12:39
· 178 commits to main since this release
5386797

agrobr 1.0.0

Infraestrutura Python para dados agrícolas brasileiros. 26 fontes públicas, 34 datasets semânticos, 5100+ testes, 88% cobertura.

pip install agrobr==1.0.0

Highlights

  • 34 datasets semânticos com fallback automático entre fontes — peça o dado, a fonte é detalhe interno
  • 26/26 fontes com golden tests (21 com dados reais) — CEPEA, CONAB, IBGE, NASA POWER, BCB/SICOR, ComexStat, ANDA, ABIOVE, USDA, IMEA, DERAL, INMET, Notícias Agrícolas, Queimadas/INPE, Desmatamento PRODES/DETER, MapBiomas, B3 Futuros, CONAB CEASA, UN Comtrade, ANTAQ, ANP Diesel, MAPA PSR, ANTT Pedágio, SICAR, ZARC
  • Contratos formais — schema versionado, primary keys, validação automática em todo fetch
  • as_polars=True em todas as 51 source APIs — suporte Polars completo
  • Modo determinístico + snapshots — reprodutibilidade total para papers e auditorias
  • CLI funcionalagrobr cepea indicador soja --ultimo, agrobr conab safras soja, agrobr snapshot create
  • py.typed — PEP 561, type checking em projetos downstream

Novos Datasets (desde v0.12.0)

Dataset Descrição Fonte
movimentacao_portuaria Carga em portos (granel, geral, contêiner) ANTAQ
condicao_lavouras Condição semanal das lavouras PR DERAL
oferta_demanda_global Oferta/demanda global de commodities USDA PSD
comercio_internacional Comércio bilateral por HS code UN Comtrade
zoneamento_agricola Janelas de plantio por município/cultura/solo ZARC/MAPA
desmatamento PRODES consolidado + DETER alertas INPE
uso_do_solo Cobertura terra anual (1985-presente) MapBiomas
queimadas Focos de calor por satélite (6 biomas) INPE
clima Dados climáticos mensais/diários INMET → NASA POWER
futuros_agricolas Ajustes, histórico, posições abertas B3
serie_historica_safra 32 culturas desde 1976/77 CONAB
preco_atacado Hortifrúti em 43 CEASAs CONAB CEASA
seguro_rural Apólices e sinistros MAPA PSR
importacao Importações por NCM ComexStat
pib_agro PIB agropecuário trimestral IBGE SIDRA
progresso_safra Progresso semanal plantio/colheita CONAB

Performance

  • Retry com transport exceptionsTimeoutException, NetworkError, RemoteProtocolError agora têm retry exponencial em 24+ clients (antes: zero retries para falhas de rede)
  • Concorrência configurável — RateLimiter com semáforo por fonte (B3 e IBGE: 3 requests simultâneos)
  • B3 ~4.4x mais rápidohistorico() e oi_historico() migrados de while-loop sequencial para asyncio.gather()
  • IBGE gatherlspa(), censo_agro() em paralelo (~3x speedup)
  • Client pooling — INMET e NASA POWER reutilizam AsyncClient em vez de criar um por request
  • B3 ZIP nativoajustes() usa BVBG-086 XML streaming (fallback HTML legado)

Qualidade Interna

  • ~2500 linhas de código removidas em 3 ciclos de simplificação (/simplify, /simplify2, /simplify3)
  • Dead code purge — 5 módulos mortos, cache/history.py inteiro, 8 métodos DuckDB, 32 TTL fields mortos
  • Helpers canônicosfinalize_result, build_source_meta, safe_float, parse_numeric_br, detect_encoding_chain, warn_once, get_timeout, read_csv_safe, validate_year_uf
  • IBGE module splitapi.py (2025 linhas) → 4 módulos especializados
  • Excel resilientepython-calamine como fallback para XLSX malformados (9 parsers)

Bugfixes

  • sidrapy roda via asyncio.to_thread() (desbloqueava event loop em todas as queries IBGE)
  • RateLimiter detecta troca de event loop (crashava em chamadas sequenciais com asyncio.run())
  • Cache timezone UTC consistente (datetime.utcnow() deprecated → utcnow() helper)
  • comtrade/comexstat/exportacao defaults corrigidos para ano anterior (dados completos)
  • bcb fallback BigQuery acionado em HTTP 403/404 (antes propagava sem tentar)
  • sicar valores BR (vírgula decimal) normalizados antes de pd.to_numeric
  • Encoding validação contra conteúdo completo (não apenas sample 4KB)
  • Wheel distribuído sem módulos internos (health/, alerts/, benchmark/)

Links