Skip to main content

Pluvia logo

Cliente para coleta de dados hidrometeorológicos do Brasil.

Instalação

pip install pluvia

Como usar

Uso via CLI

Após a instalação, o comando pluvia fica disponível no PATH do seu ambiente Python.

Por conveniência, o pacote inclui contornos dos estados brasileiros (IBGE) embutidos.

pluvia --state SP --start 2026-01-01 --end 2026-06-30 --output ./dados

Para filtrar estações por qualquer limite vetorial (bacias hidrográficas, municípios, áreas de estudo etc.):

pluvia --shapefile ./bacias.shp --shape-column codigo --shape-id 01 --output ./dados
Argumento Descrição
--state Sigla do estado brasileiro (ex: CE, SP, RJ). Obrigatório se --shapefile não for informado.
--start Data de início no formato YYYY-MM-DD (padrão: ontem).
--end Data de fim no formato YYYY-MM-DD (padrão: hoje).
--output Diretório para salvar os dados CSV (padrão: diretório atual).
--rebuild Ignora o cache e re-consulta todas as estações.
--update-active Re-consulta estações ativas mesmo que o intervalo já esteja coberto (padrão: True).
--shapefile Caminho para shapefile vetorial customizado (.shp, .gpkg, .geojson).
--shape-column Coluna de atributo do shapefile para filtrar (padrão: acronym).
--shape-id Valor do ID na coluna de atributo do shapefile.
--station-type Tipo de estação: fluviometrica, pluviometrica, telemetric.

Uso via API

import pluvia

client = pluvia.ANA()

# Contornos embutidos (estados brasileiros)
stations = client.get_stations(
    contour="uf.shp", column="acronym", value="SP"
)

# Shapefile customizado
stations = client.get_stations(
    contour="./bacias.shp", column="codigo", value="01"
)

# Filtro por tipo de estação
stations = client.get_stations(
    contour="uf.shp", column="acronym", value="SP",
    station_type="fluviometrica"
)

data = client.fetch_data(
    stations=stations,
    start="2026-01-01",
    end="2026-06-30",
    variable="chuva",  # chuva, nivel, vazao, cota
    rebuild=True,  # força re-consulta completa (use na primeira execução)
    update_active=True,  # re-consulta estações ativas mesmo com cache válido
)

Caching

O serviço de dados da ANA (Agência Nacional de Águas) é lento e com limitações diversas. Para otimizar o uso dos dados, a biblioteca implementa uma estratégia de caching incremental e orientado a intervalos.

  1. Apenas os períodos ainda não baixados são consultados na API.
  2. O inventário de estações é re-buscado apenas quando expira (padrão: 7 dias).
  3. Estações sem dados são marcadas como inativas e re-consultadas com TTL dinâmico.
  4. Erros de rede consecutivos colocam a estação em cooldown de 24 h.

O TTL dinâmico dita a frequência com que as estações são re-consultadas:

  • diariamente se tiveram dados recentes
  • a cada 3 dias se o último dado tem entre 30 dias e 1 ano
  • semanalmente se ainda mais antigo

Essa estratégia visa reduzir tempo de coleta de dados ao mesmo tempo em que busca não desperdiçar estações que, por eventual (milagre) voltem a operar ou que tenham sofrido interrupções temporárias no serviço.

Desenvolvimento

pixi run -e dev lint        # ruff check
pixi run -e dev format      # ruff format
pixi run -e dev typecheck   # pyrefly
pixi run test               # pytest

Build e publicação no PyPI

O projeto usa Conventional Commits e versionamento semântico automatizado com bump-my-version. O changelog é gerado automaticamente com git-cliff a partir dos commits seguindo Conventional Commits.

Configure um token em pypi.org/manage/account/token e salve em ~/.pypirc.

# ~/.pypirc
[pypi]
username = __token__
password = pypi-xxxxxxxxxxxx

Siga o fluxo para release de uma nova versão:

# 1. Atualizar versão (cria tag automaticamente)
pixi run -e dev bump        # patch
pixi run -e dev bump minor  # minor
pixi run -e dev bump major  # major

# 2. Atualizar changelog
pixi run -e dev changelog

# 3. Build
pixi run -e dev build

# 4. Publicar (requer API token no PyPI)
pixi run -e dev publish

Metadata

Release files for pluvia 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pluvia 0.1.1
File Size Uploaded Provenance Actions
pluvia-0.1.1.tar.gz 13.9 MB Without provenance Details for pluvia-0.1.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for pluvia 0.1.1
File Interpreter ABI Platform Actions
pluvia-0.1.1-py3-none-any.whl Python 3 none any Details for pluvia-0.1.1-py3-none-any.whl

Total release size: 27.7 MB

Release files / pluvia-0.1.1.tar.gz

Download URL pluvia-0.1.1.tar.gz
Size 13.9 MB
Tags Source
SHA-256 checksum
How to use checksums
491ab09d89a93f56c20c17b3c851a57b90ebd3444040042bdb8410a63dd22d73
BLAKE2b-256 checksum
How to use checksums
8270b5fea98cd24f1fedb3c81bf51d2f41775afda9956ad7e4f64eada68275ee
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.5

Release files / pluvia-0.1.1-py3-none-any.whl

Download URL pluvia-0.1.1-py3-none-any.whl
Size 13.8 MB
Tags Python 3
SHA-256 checksum
How to use checksums
010f30a852c0e0f2e9af3866c803cd0e2756036476a32a84a080a2402685587e
BLAKE2b-256 checksum
How to use checksums
d62137c38a170ca7034432a964b1e4a2d4a04ba5c3755d08581125d8cf413432
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.5

Security for pluvia 0.1.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page