Skip to main content

filings-cvm filings-cvm

Project Status: Active Python Version PyPI Version PyPI Downloads Linting Test Coverage License Docs

Biblioteca Python tipada para os padrões de arquivo XML regulatórios da CVM (Comissão de Valores Mobiliários). Monte, valide e serialize documentos no formato exigido pela CVM — e, à medida que a biblioteca cresce, leia arquivos baixados da CVM de volta para modelos tipados.

Modelos Pydantic v2 validam tudo na construção — formato de datas, dígitos verificadores de CNPJ/CPF e a escala decimal de cada campo — e valores com casas decimais em excesso são truncados em direção a zero (ROUND_DOWN), nunca arredondados, para que um valor reportado jamais seja inflado.

Fonte da verdade: nomes de campo, escalas decimais e cardinalidades vêm do catálogo oficial da CVM — https://cvmweb.cvm.gov.br/SWB/Sistemas/SCW/PadroesXML/PadroesXML.asp — não desta documentação.

📖 Documentação

A documentação completa (em pt-BR) fica em https://guilhermegor.github.io/filings-cvm/ ou pode ser servida localmente:

make docs_server     # serve em http://0.0.0.0:8000  (sem make: ./tasks.sh docs_server)

✨ Funcionalidades

Toda solução vive em uma de duas macrosseções:

Seção Sentido O que faz
filings_cvm.submission envio → CVM Recebe modelos de schema validados e produz o arquivo XML compatível com a CVM, pronto para envio.
filings_cvm.ingestion leitura ← CVM Analisa um arquivo baixado da CVM de volta para modelos tipados. Criada quando o primeiro padrão de leitura for implementado.

O schema compartilhado (modelos Pydantic que espelham cada padrão XML) é neutro em relação à direção e reexportado pelas seções públicas — você importa tudo de que precisa a partir de filings_cvm.submission.

🧩 Padrões implementados (envio)

Os demais padrões do catálogo (CDA, Lâmina, Informe Mensal FIDC, etc.) estão pendentes — consulte o CLAUDE.md do repositório para o catálogo completo com o status de cada um.

🚀 Primeiros Passos

Pré-requisitos

  • Python >= 3.10
  • Poetry (recomendado)
  • Opcional: Makefile (ou use ./tasks.sh no Git Bash / Windows)

Instalação

Como dependência:

pip install filings-cvm
# ou
poetry add filings-cvm

A partir do código-fonte:

git clone https://github.com/guilhermegor/filings-cvm.git
cd filings-cvm
make init            # cria a .venv e instala os hooks de pre-commit
                     # (sem make: ./tasks.sh init)

Uso básico

from filings_cvm.submission import (
    DocumentHeader,
    PerfilMensal,
    PerfilMensalDocument,
    PerfilMensalRow,
)

header = DocumentHeader(dt_compt="01/2025", dt_gerac_arq="15/01/2025")
row = PerfilMensalRow(cnpj_fdo="11222333000181", ...)  # validado na construção
doc = PerfilMensalDocument(header=header, rows=[row])

xml = PerfilMensal().export(doc)                          # XML como str
PerfilMensal().export(doc, output_path="perfil.xml")     # ou grava em disco (windows-1252)

E a leitura (← CVM) devolve um DataFrame tipado e validado por contrato:

from datetime import date

from filings_cvm.ingestion 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.

Execução dos testes

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

📂 Estrutura do projeto

filings-cvm/
├── assets/                 # logo e imagens do projeto
├── docs/                   # documentação MkDocs (pt-BR) — make docs_server
├── mkdocs.yml              # configuração do site de documentação
├── src/filings_cvm/
│   ├── __init__.py         # API pública (controlada por __all__)
│   ├── submission/         # envio → CVM (modelo validado → XML)
│   ├── ingestion/          # leitura ← CVM (arquivo baixado → DataFrame tipado)
│   └── _internal/          # PRIVADO — schemas Pydantic, ports (interfaces) + helpers
├── tests/
│   ├── unit/  integration/  performance/
├── .pre-commit-config.yaml
├── Makefile  /  tasks.sh   # interfaces espelhadas (com e sem make)
├── pyproject.toml
└── README.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.

👨‍💻 Autores

Guilherme Rodrigues

GitHub LinkedIn

📜 Licença

Este projeto é licenciado sob a Licença MIT — veja LICENSE.

🙌 Agradecimentos

  • Gerado a partir do template lib-minimal via BlueprintX.

Metadata

Release files for opendata-cvm 0.25.6

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.25.6
File Size Uploaded Provenance Actions
opendata_cvm-0.25.6.tar.gz 160.7 kB With provenance Details for opendata_cvm-0.25.6.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for opendata-cvm 0.25.6
File Interpreter ABI Platform Actions
opendata_cvm-0.25.6-py3-none-any.whl Python 3 none any Details for opendata_cvm-0.25.6-py3-none-any.whl

Total release size: 509.2 kB

Release files / opendata_cvm-0.25.6.tar.gz

Download URL opendata_cvm-0.25.6.tar.gz
Size 160.7 kB
Tags Source
SHA-256 checksum
How to use checksums
d4fcbf404a39067e8776fd181ee03deb3d436a2fa6bd5a331d79decab8e4f5ba
BLAKE2b-256 checksum
How to use checksums
8c76ea3c5f37495941d4d6ddbed1393dde7413c0a2eb03913dd48774e5ab5306
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 11, 2026.

Transparency log

Release files / opendata_cvm-0.25.6-py3-none-any.whl

Download URL opendata_cvm-0.25.6-py3-none-any.whl
Size 348.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
19e2ba7dc885042a4475f0fbb4d0420deed71b0c7ec5a25e0e3b55bac688f3a3
BLAKE2b-256 checksum
How to use checksums
dbc4e4fb270e8b82e335568d8655970671b6513a0955d4e3e7b87bf2e8bd050d
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 11, 2026.

Transparency log

Security for opendata-cvm 0.25.6

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.25.6.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 11, 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.25.6 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