Cálculo de emolumentos de cartório do Paraná (FUNREJUS/VRCext), conforme Lei Estadual 21.869/2023.
Project description
Biblioteca Python para cálculo de emolumentos de cartório do Paraná, indexados por VRCext, conforme a Lei Estadual PR nº 21.869/2023 (FUNREJUS).
Entra o tipo de ato e o valor da transação; sai o emolumento detalhado, com o breakdown de cada componente — não apenas o total.
Status:
0.1.0— alpha. O motor de cálculo está pronto; as tabelas da lei e o valor da VRCext ainda são placeholders (veja Roadmap). Os números só têm validade legal depois de preenchidos os dados oficiais.
Por que isto não é trivial
Calcular emolumento não é "multiplicar por uma alíquota". A regra do PR envolve faixas de valor do ato, indexação por uma unidade estadual (VRCext) que é reajustada periodicamente, e componentes acessórios (FUNREJUS, ISS, taxas). O mesmo conjunto de documentos apresentado por um cliente pode servir a atos diferentes, com emolumentos diferentes. Traduzir esse emaranhado jurídico-financeiro em código correto e testado é o objetivo desta biblioteca.
Instalação
pip install emolumentos-pr # (após publicação no PyPI)
# ou, em desenvolvimento:
pip install -e ".[dev]"
Uso
Como biblioteca:
from decimal import Decimal
from emolumentos_pr import Ato, TipoAto, calcular
from emolumentos_pr.tabelas import tabela_de
from emolumentos_pr.vrcext import VRCEXT_ATUAL
ato = Ato(tipo=TipoAto.COMPRA_E_VENDA, valor=Decimal("250000.00"))
resultado = calcular(ato, tabela_de(ato.tipo), VRCEXT_ATUAL)
print(resultado.total)
for componente in resultado.componentes:
print(componente.nome, componente.valor)
Pela linha de comando:
emolpr calcular --tipo compra_e_venda --valor 250000.00
Decisões de design
Escolhas deliberadas — cada uma tem um porquê que vale saber explicar:
Decimalem todo valor monetário, nuncafloat. Float acumula erro de arredondamento; inaceitável em cálculo financeiro/legal.- Núcleo sem dependências. O pacote instala e roda só com a biblioteca
padrão. A CLI usa
argparse. - Cálculo em funções puras. A regra de negócio não faz I/O e não guarda estado — mesma entrada, mesma saída. Isso é o que torna a suíte de testes confiável.
- Resultado sempre auditável. O retorno traz o breakdown de componentes, não só a soma — dá para ver de onde veio cada centavo.
- Dados da lei isolados. Tabelas e VRCext ficam em módulos próprios; atualizar a lei é editar dado, não caçar número mágico no meio da lógica.
Roadmap
v0.1 (COMPLETO):
- Motor de cálculo (faixas, indexação por VRCext, truncamento, breakdown)
- Empacotamento, CI e testes do motor
- Tabela XI completa de faixas (valor -> VRCext) em
tabelas.py - VRCext oficial (0,277) em
vrcext.py - Componentes: Funrejus (0,2% e 25%), FUNDEP, ISSQN, Selo, Distribuidor
- Compra e venda, doação (com/sem usufruto), escritura sem valor, procuração
- Multiobjeto em CEV/doação (100% por imóvel)
- Casos oficiais reconciliando à casa do milésimo em
tests/
Todos os atos do escopo v1 reproduzem o sistema do cartório, para qualquer valor.
Atos previstos para o v1.1 (a estrutura já suporta; falta o dado e um exemplo real para reconciliar cada um):
- Partilha (divórcio/inventário) — item X.b: bem de maior valor a 100%, cada adicional (até nove) a 80%.
- Apartamento + garagem com matrícula autônoma — item X.c: garagem a 50%.
- Demais atos da Tabela XI: reconhecimento de firma, autenticação, testamentos, atas notariais, certidões, pública forma, buscas.
Resíduo conhecido: o total da procuração fecha a ~0,003 (os exemplos de sem-valor e procuração discordam na 3ª casa do arredondamento do Funrejus de 25%). Um printout novo do sistema pina a regra.
Fora do escopo (propositalmente): interface web, front-end, banco de dados, múltiplos estados.
Licença
MIT — veja LICENSE.
Project details
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 emolumentos_pr-0.2.0.tar.gz.
File metadata
- Download URL: emolumentos_pr-0.2.0.tar.gz
- Upload date:
- Size: 1.2 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9f86b880de4a678753e79d03147d30c719ddeb8054c06225249ba23bc761a6ce
|
|
| MD5 |
28c3be96f44659c26ecfaa7815cf0a01
|
|
| BLAKE2b-256 |
84cf51e9512dbd4c6d4c62bf6ad74948ef007d923b60f4dd56272402a33d0fbd
|
Provenance
The following attestation bundles were made for emolumentos_pr-0.2.0.tar.gz:
Publisher:
ci.yml on jefersonbraine/emolumentos-pr
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
emolumentos_pr-0.2.0.tar.gz -
Subject digest:
9f86b880de4a678753e79d03147d30c719ddeb8054c06225249ba23bc761a6ce - Sigstore transparency entry: 2098490921
- Sigstore integration time:
-
Permalink:
jefersonbraine/emolumentos-pr@de1dc6aa305c753d5ea07b666476e7aa9b62b572 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/jefersonbraine
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yml@de1dc6aa305c753d5ea07b666476e7aa9b62b572 -
Trigger Event:
push
-
Statement type:
File details
Details for the file emolumentos_pr-0.2.0-py3-none-any.whl.
File metadata
- Download URL: emolumentos_pr-0.2.0-py3-none-any.whl
- Upload date:
- Size: 14.7 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 |
f4f6f1b2edc01123231146c87192473d44424bfd564d0323acd417a9af7ea9d9
|
|
| MD5 |
af7a17baea87a6e9786df7eda42f1ab6
|
|
| BLAKE2b-256 |
bb1af2bb86dfe65e0100840ab83862ad71db5dfb7bcce25694598b6aff822d9a
|
Provenance
The following attestation bundles were made for emolumentos_pr-0.2.0-py3-none-any.whl:
Publisher:
ci.yml on jefersonbraine/emolumentos-pr
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
emolumentos_pr-0.2.0-py3-none-any.whl -
Subject digest:
f4f6f1b2edc01123231146c87192473d44424bfd564d0323acd417a9af7ea9d9 - Sigstore transparency entry: 2098491459
- Sigstore integration time:
-
Permalink:
jefersonbraine/emolumentos-pr@de1dc6aa305c753d5ea07b666476e7aa9b62b572 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/jefersonbraine
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yml@de1dc6aa305c753d5ea07b666476e7aa9b62b572 -
Trigger Event:
push
-
Statement type: