Changelog¶
Formato Keep a Changelog; versionamento SemVer.
[Não publicado]¶
Adicionado¶
NOTICEcreditando pyboleto (BSD) e BrCobrança (MIT). Distribuído no wheel e no sdist vialicense-files; aLICENSEsegue intacta.
[1.0.3] - 2026-08-01¶
Adicionado¶
- Type hints expostos ao consumidor (PEP 561): o pacote passa a distribuir
pycobranca/py.typed— mypy e pyright leem as anotações da biblioteca sem stubs. ClassifierTyping :: Typed. - Exemplos executáveis em
examples/: 10 scripts curtos cobrindo boleto, Bolepix, remessa 400/240, retorno, OFX, carnê, fatura (3 níveis), contrato REST e tratamento de erros. A CI roda todos a cada push (python examples/executa_todos.py), instalando o pacote sem as dependências de desenvolvimento — documentação que não envelhece e teste de fumaça do wheel. - Documentação publicada em https://maxwbh.github.io/pyCobranca/ (MkDocs Material, com busca
e navegação), gerada do próprio
docs/a cada push namain. Os documentos continuam legíveis no GitHub: o hookmkdocs_hooks.pyreescreve os links relativos no site. Extra opcionalpip install "pycobranca[docs]".
Alterado¶
Development Statusde2 - Pre-Alphapara5 - Production/Stable— o estágio anterior não refletia 18 bancos, remessa validada byte a byte e a suíte de testes atual.
[1.0.2] - 2026-07-30¶
Alterado¶
requires-pythonde>=3.14para>=3.12. A 1.0.1 foi publicada antes desta mudança e só instalava em 3.14; a 1.0.2 corrige isso. O código não usa nenhum recurso acima de 3.10, e o piso 3.12 acompanha o alvo de migração recomendado (suporte até out/2028). A CI roda a suíte em matriz (3.12, 3.13 e 3.14), com lint/formatação em job próprio.
[1.0.1] - 2026-07-30¶
Adicionado¶
-
CNPJ alfanumérico (IN RFB 2.229/2024; primeiras emissões a partir de 31/07/2026):
validar_cnpjaceita as 12 primeiras posições com letrasA–Z(DVs seguem numéricos, calculados comord(c) - 48), eformatar_cnpjpreserva as letras. Novos helpersso_alfanumerico,cnpj_e_alfanumerico,dv_cnpjeformatar_documento. O CPF continua exclusivamente numérico. No contrato REST, os campos de documento ganharampattern(e o validador passou a suportá-lo), permitindo que um serviço HTTP rejeite formato inválido antes de chamar a engine. -
Validação de campos por banco (tamanho mín./máx. e conjunto de carteiras) na geração do boleto e coerência de encargos (mora/multa/desconto,
valor > 0, UF/CEP) na remessa CNAB. - Validação de leitura:
Extrato.ler(OFX) levantaOFXInvalidopara arquivo que não é OFX;Retorno.ler(CNAB) levantaRetornoInvalidopara arquivo vazio/sem header — em vez de devolver resultado vazio silencioso. - Contrato de erros estruturado:
BoletoInvalidopassa a carregar.erros(lista, um item por problema) além da mensagem única — pronto para uma camada REST tratar cada violação. Verdocs/14-validacao-campos.md. - Docs por banco padronizados num template único (18 bancos; inclui Banestes, HSBC e Safra) com
seção de validação por banco. Novos guias: criação de banco (
docs/15-novo-banco.md) e arquitetura/diretórios (docs/16-arquitetura-diretorios.md). - Fatura (
render_fatura_pdf): corpo livre + boleto na mesma página, em 3 níveis —itens(tabela pronta),fatura.blocos(corpo declarativo: tabela, campos, texto, total, separador, espaço) efatura.desenhar(callable com liberdade total). Serve a várias modalidades sem engine de HTML; os níveis 1 e 2 entram no contrato REST existente (ItemFatura,FaturaCorpo,BlocoFaturaemBoletoData).
Corrigido¶
-
Empacotamento:
licensemigrado para expressão SPDX (PEP 639) comlicense-files, eliminando o aviso de depreciação do setuptools; o classifier de licença saiu (agora o metadado éLicense-Expression). Exigesetuptools>=77no build. O diretório de logos passou a ser declarado empackages, removendo o aviso de pacote ausente — os arquivos já eram distribuídos e seguem no wheel. -
Tipo de inscrição na remessa CNAB com CNPJ alfanumérico: as letras eram descartadas e o documento acabava marcado como CPF (
01) e truncado nos registros. Agora o documento é gravado íntegro e o tipo (01/02) sai correto.
Alterado¶
pycobranca.renderreorganizado: o módulo único de 1183 linhas viroucomum(primitivas),tela(canvas + cursor),dados(preenchimento),blocos(comuns) emodelos/— o catálogo dos documentos (boleto clássico, boleto moderno, carnê, fatura). Saída dos PDFs inalterada; a API pública mantém os mesmos nomes e ganharender_fatura_pdfedesenha_boleto.
[1.0.0] - 2026-07-24¶
Primeira versão pública — cobrança bancária brasileira em Python 3.14+ puro, com 18 bancos e um único pip install.
Recursos¶
- Boleto: código de barras e linha digitável dos 18 bancos, em Python puro.
- PDF (ReportLab): layouts
moderno/classico, carnê e logo opt-in por banco. - PIX/Bolepix: BR Code EMV + CRC16 e QR, no boleto e na remessa.
- CNAB: remessa 400 (12 bancos) e 240 (7 bancos); retorno 400/240.
- Encargos na remessa: juros/mora (valor/dia ou taxa mensal), multa e desconto 1º/2º/3º, IOF e abatimento.
- OFX (
pycobranca.ofx): leitura de extrato (v1/v2) e conciliação com os boletos emitidos. - Contrato REST (OpenAPI 3.0): serializadores e validador leve, sem dependência HTTP.