Skip to main content

opendata-cvm

Emblema da CVM

Project Status: Active Python Version PyPI Version Docs Linting Type-checked: mypy Test Coverage License Open Issues Contributions Welcome PyPI Downloads

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 separado layouts-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.sh no 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


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)

Source distribution for opendata-cvm 0.27.0
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)

Table of built distributions (wheels) for opendata-cvm 0.27.0
File Interpreter ABI Platform Actions
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 log

Release 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 log

Security 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.

Select from 2 files

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 log

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.27.0 This release

2 release files Full 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