opendata-cvm
Visão geral
Biblioteca Python tipada para ler os arquivos abertos da
CVM (Comissão de Valores Mobiliários): baixa o dump publicado em
https://dados.cvm.gov.br/dados/ e devolve um DataFrame tipado e validado por contrato.
Valores decimais seguem a regra do projeto: nada de float onde a precisão importa. Colunas
numéricas voltam como texto exato da fonte, sem truncar nem arredondar — a escala e o
Decimal ficam a cargo de quem consome.
Migração: a seção de envio (
opendata_cvm.submission, modelo validado → XML) foi removida e vive no pacote separadolayouts-cvm(from layouts_cvm import PerfilMensal). Esta biblioteca não depende dele.
Fonte da verdade: nomes de coluna e tipos vêm dos arquivos reais publicados no portal de dados abertos da CVM — https://dados.cvm.gov.br/dados/ — não desta documentação.
Funcionalidades
Toda solução vive em opendata_cvm.ingestion (leitura ← CVM): analisa um arquivo baixado
da CVM de volta para modelos tipados, agrupado por raiz do portal (ex.: opendata_cvm.ingestion.fi).
Para gerar os arquivos XML de envio → CVM, use o pacote separado layouts-cvm.
Documentação
A documentação completa (em pt-BR) fica em https://guilhermegor.github.io/opendata-cvm/ ou pode ser servida localmente:
make docs_server # serve em http://0.0.0.0:8000 (sem make: ./tasks.sh docs_server)
Primeiros Passos
Pré-requisitos
- Python >= 3.11
- Poetry (recomendado)
- Opcional: Makefile (ou use
./tasks.shno Git Bash / Windows)
Instalação
Como dependência:
pip install opendata-cvm
# ou
poetry add opendata-cvm
A partir do código-fonte:
git clone https://github.com/guilhermegor/opendata-cvm.git
cd opendata-cvm
make init # cria a .venv e instala os hooks de pre-commit
# (sem make: ./tasks.sh init)
Uso básico
A leitura (← CVM) devolve um DataFrame tipado e validado por contrato:
from datetime import date
from opendata_cvm.ingestion.fi import InformeDiarioReader
df = InformeDiarioReader(date_ref=date(2025, 1, 15)).read() # dump mensal inf_diario_fi
O exemplo completo (incluindo o bloco obrigatório de contagem de clientes) está em Uso.
Estrutura do projeto
opendata-cvm/
├── assets/ # logo e imagens do projeto
├── bin/ # scripts de gate e utilitários (inclui check_readme_structure.sh)
├── docs/ # documentação MkDocs (pt-BR) — make docs_server
├── mkdocs.yml # configuração do site de documentação
├── src/opendata_cvm/
│ ├── __init__.py # API pública (controlada por __all__)
│ ├── ingestion/ # leitura ← CVM (arquivo baixado → DataFrame tipado)
│ └── _internal/ # PRIVADO — contratos, ports (interfaces) + helpers
├── tests/
│ ├── unit/ integration/ performance/
├── .pre-commit-config.yaml
├── Makefile / tasks.sh # interfaces espelhadas (com e sem make)
├── pyproject.toml
└── README.md
Desenvolvimento
make unit_tests # pytest tests/unit/
make test_cov # cobertura + badge (coverage.svg)
make lint # ruff, codespell, pydocstyle, check_docstrings
make help # lista todos os comandos disponíveis
O README.md em si é validado por bin/check_readme_structure.sh (hook readme-structure
no pre-commit e passo equivalente no CI): títulos sem emoji, marcadores <!-- slug: ... -->
nas seções obrigatórias e lista de autores com links do GitHub e do LinkedIn.
API pública
A seção ingestion é dona dos seus nomes; o opendata_cvm.__all__ de topo guarda apenas o que não
pertence a nenhuma delas. Tudo sob _internal/ é privado.
| O quê | Importe de |
|---|---|
| Um reader de ingestão | opendata_cvm.ingestion.<raiz_do_portal> (ex.: opendata_cvm.ingestion.fi) |
RetryPolicy, __version__ |
opendata_cvm |
Publicação
As versões saem pelos workflows release-test-pypi.yaml (ensaio no Test PyPI) e
release-pypi.yaml (PyPI + GitHub Release) em .github/workflows/; a tag git é a versão.
O caminho do 0.x ao 1.0.0, e o portão de release que o protege, está em docs/releasing-1-0-0.md.
Contribuição
Contribuições são bem-vindas — leia o docs/contributing.md antes de abrir sua primeira branch. Fluxo resumido:
make lint # ruff, codespell, pydocstyle
make unit_tests # pytest tests/unit/
Toda mudança entra por pull request: a branch padrão é protegida pelo ruleset
pr-quality-gate (PR obrigatório, testes nos 3 SOs + build da doc verdes, CodeQL limpo e
revisão automática do Copilot a cada push). Ele é provisionado por código — make init já o
aplica, e make enable_repo_rules o (re)aplica sozinho; nenhuma configuração manual na UI do
GitHub é necessária. Detalhes em
docs/contributing.md.
Licença
Este projeto é licenciado sob a Licença MIT — veja LICENSE.
Autores
Links úteis
Agradecimentos: gerado a partir do template lib-minimal via BlueprintX. Biblioteca não oficial, mantida pela comunidade: sem afiliação ou endosso da CVM; o emblema é do regulador.
Metadata
Release files for opendata-cvm 0.27.0
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 |
|---|---|---|---|---|
| opendata_cvm-0.27.0.tar.gz | 274.1 kB | With provenance | Details for opendata_cvm-0.27.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| opendata_cvm-0.27.0-py3-none-any.whl | Python 3 | none | any | Details for opendata_cvm-0.27.0-py3-none-any.whl |
Total release size: 967.8 kB
Release files / opendata_cvm-0.27.0.tar.gz
| Download URL | opendata_cvm-0.27.0.tar.gz |
|---|---|
| Size | 274.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e9776e1f078745695769e7a2dac4fe49917770d99b092fc144072b35869f6b0a
|
|
BLAKE2b-256 checksum How to use checksums |
4572b153145950f51a936f8430fb44c0ce55449290c19cee1ea5862d20eac516
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 12, 2026.
Transparency logRelease files / opendata_cvm-0.27.0-py3-none-any.whl
| Download URL | opendata_cvm-0.27.0-py3-none-any.whl |
|---|---|
| Size | 693.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
832f472b8642980bb630f260eb46a38d2649e26eee2117f4490b16668c400e6d
|
|
BLAKE2b-256 checksum How to use checksums |
9665fda5cbabe220be38ca8a3b3b4cb352e1b1d4d32bee2b896f60a3eed2518c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 12, 2026.
Transparency logSecurity for opendata-cvm 0.27.0
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.
Full provenance
Both files in this release have been uploaded with provenance metadata.
Attestation for opendata_cvm-0.27.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 12, 2026.
Transparency logA 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.