filings-cvm 
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)
- ✅ Perfil Mensal — V4 (
PadraoXMLPerfilV4.asp) —PerfilMensal/PerfilMensalDocument - ✅ Informe Diário — V4 (
PadraoXMLInfoDiarioNetV4.asp) —InformeDiario/InformeDiarioDocument
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.shno 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
📜 Licença
Este projeto é licenciado sob a Licença MIT — veja LICENSE.
🙌 Agradecimentos
- Gerado a partir do template lib-minimal via BlueprintX.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file filings_cvm-0.21.0.tar.gz.
File metadata
- Download URL: filings_cvm-0.21.0.tar.gz
- Upload date:
- Size: 113.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7d8f5e565db8c5395f488eca239e3eef90333cfe75f425df54008d3e008a04a7
|
|
| MD5 |
e6f7974589c3edaa5f34ef5d4a1f7e9d
|
|
| BLAKE2b-256 |
d6d34aed13194751b96a9c4fcdd1946d185959be6a50a9041b36962d1b784ef7
|
Provenance
The following attestation bundles were made for filings_cvm-0.21.0.tar.gz:
Publisher:
release-pypi.yaml on guilhermegor/filings-cvm
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
filings_cvm-0.21.0.tar.gz -
Subject digest:
7d8f5e565db8c5395f488eca239e3eef90333cfe75f425df54008d3e008a04a7 - Sigstore transparency entry: 2148018971
- Sigstore integration time:
-
Permalink:
guilhermegor/filings-cvm@d9e419add5a5c3af86981bfcfd38e4b39cdda13e -
Branch / Tag:
refs/heads/main - Owner: https://github.com/guilhermegor
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release-pypi.yaml@d9e419add5a5c3af86981bfcfd38e4b39cdda13e -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file filings_cvm-0.21.0-py3-none-any.whl.
File metadata
- Download URL: filings_cvm-0.21.0-py3-none-any.whl
- Upload date:
- Size: 223.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e7e4ad3039b15828134b5edd3744bd0ff114690152591b3e573cdf6b34c81a79
|
|
| MD5 |
6879d6db414bc21283faaa25a09bf410
|
|
| BLAKE2b-256 |
bb4304e7e67b9682046e7626efada713ddf418ba78451d8a7f195bdd5ccf6b3e
|
Provenance
The following attestation bundles were made for filings_cvm-0.21.0-py3-none-any.whl:
Publisher:
release-pypi.yaml on guilhermegor/filings-cvm
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
filings_cvm-0.21.0-py3-none-any.whl -
Subject digest:
e7e4ad3039b15828134b5edd3744bd0ff114690152591b3e573cdf6b34c81a79 - Sigstore transparency entry: 2148018978
- Sigstore integration time:
-
Permalink:
guilhermegor/filings-cvm@d9e419add5a5c3af86981bfcfd38e4b39cdda13e -
Branch / Tag:
refs/heads/main - Owner: https://github.com/guilhermegor
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release-pypi.yaml@d9e419add5a5c3af86981bfcfd38e4b39cdda13e -
Trigger Event:
workflow_dispatch
-
Statement type: