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.
- Apenas os períodos ainda não baixados são consultados na API.
- O inventário de estações é re-buscado apenas quando expira (padrão: 7 dias).
- Estações sem dados são marcadas como inativas e re-consultadas com TTL dinâmico.
- 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)
| 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)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| 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.