Skip to main content

Gera e valida CPFs e CNPJs de acordo com os padrões brasileiros.

Project description

Gerador e Validador de CPF e CNPJ

Python 3.8+ License: MIT

Uma biblioteca Python moderna para validar e gerar CPFs e CNPJs brasileiros de acordo com os algoritmos oficiais.

Características

  • Validação correta: Usa algoritmos módulo 11 oficiais
  • Geração eficiente: Gera documentos válidos de forma determinística
  • CPF com regiões: Valida e gera CPFs por estado/região
  • CNPJ com filiais: Gera matrizes (0001) ou filiais aleatórias
  • Formatação flexível: Aceita entrada formatada ou não
  • Type hints completos: Totalmente tipado para melhor IDE support
  • 98% de cobertura: 209 testes unitários e de integração
  • Clean Architecture: Código organizado com princípios SOLID

Instalação

pip install cpf

Uso Rápido

CPF

import cpf

# Validação
cpf.validate("494.351.429-40")  # True
cpf.validate("49435142940")      # True (aceita sem formatação)
cpf.validate("111.111.111-11")  # False (dígitos iguais)

# Validação com informação de região
result = cpf.validate("494.351.429-40", show_region=True)
# {'valid': True, 'region': 'Paraná – Santa Catarina'}

# Geração
cpfs = cpf.generate(count=5)
# ['222.272.431-78', '157.258.802-50', ...]

# Geração por região (número, nome ou sigla)
cpfs = cpf.generate(count=3, region=8)        # São Paulo
cpfs = cpf.generate(count=3, region="SP")     # por sigla
cpfs = cpf.generate(count=3, region="rio de janeiro")  # por nome

# Sem formatação
cpfs = cpf.generate(count=2, formatted=False)
# ['22227243178', '15725880250']

CNPJ

import cnpj

# Validação
cnpj.validate("11.222.333/0001-81")  # True
cnpj.validate("11222333000181")       # True (aceita sem formatação)
cnpj.validate("11.111.111/1111-11")  # False (dígitos iguais)

# Geração de matrizes (filial 0001)
cnpjs = cnpj.generate(count=5, matriz_only=True)
# ['11.222.333/0001-81', '45.678.901/0001-23', ...]

# Geração com filiais aleatórias
cnpjs = cnpj.generate(count=5, matriz_only=False)
# ['11.222.333/0245-67', '45.678.901/1234-56', ...]

# Sem formatação
cnpjs = cnpj.generate(count=2, formatted=False)
# ['11222333000181', '45678901000123']

Regiões do CPF

O 9º dígito do CPF indica a região de emissão:

Código Estados
0 RS
1 DF, GO, MS, MT, TO
2 AC, AM, AP, PA, RO, RR
3 CE, MA, PI
4 AL, PB, PE, RN
5 BA, SE
6 MG
7 ES, RJ
8 SP
9 PR, SC

Desenvolvimento

Instalando dependências

git clone https://github.com/pedrokpp/gerador-e-checker-de-cpf
cd gerador-e-checker-de-cpf
python -m venv .venv
source .venv/bin/activate  # Linux/Mac
# ou .venv\Scripts\activate no Windows
pip install -e ".[dev]"

Rodando testes

pytest tests/ -v
pytest tests/ --cov=src/cpf --cov=src/cnpj  # Com coverage

Build

python -m build

Exemplos CLI

O projeto inclui scripts de exemplo interativos:

python examples/cli_modern.py  # CPF (API v3.0)
python examples/cli_cnpj.py    # CNPJ (API v3.1)
python examples/cli_legacy.py  # CPF (API v2.x compatível)

Ver examples/README.md para mais detalhes.

Estrutura do Projeto

src/
├── cpf/                  # Módulo CPF
│   ├── domain/          # Entidades (CPF, Region)
│   ├── application/     # Casos de uso
│   ├── infrastructure/  # Validador e gerador
│   └── presentation/    # API pública
└── cnpj/                 # Módulo CNPJ
    ├── domain/          # Entidades (CNPJ)
    ├── application/     # Casos de uso
    ├── infrastructure/  # Validador e gerador
    └── presentation/    # API pública

API Legada

A biblioteca mantém compatibilidade com versão 2.x para CPF:

import cpf

# Funções legadas (backward compatible)
cpf.checar("494.351.429-40")  # equivalente a validate()
cpf.gerar(quantidade=5)        # equivalente a generate()

Atenção

Estes scripts validam CPFs e CNPJs de acordo com os padrões técnicos brasileiros (algoritmo módulo 11). A validação não garante que o documento está cadastrado na Receita Federal, apenas que é um número válido segundo as regras de formação.

Contribuindo

Contribuições são bem-vindas! Por favor:

  1. Faça um fork do projeto
  2. Crie uma branch para sua feature (git checkout -b feature/MinhaFeature)
  3. Commit suas mudanças (git commit -m 'Adiciona MinhaFeature')
  4. Push para a branch (git push origin feature/MinhaFeature)
  5. Abra um Pull Request

Reportando Bugs

Abra uma issue com:

  • Descrição do problema
  • Exemplo de código que reproduz o bug
  • Comportamento esperado vs comportamento atual
  • Versão do Python e da biblioteca

Licença

MIT License - veja LICENSE.txt para detalhes.

Autor

pedrokp - pedrkp@proton.me

Links

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

cpf-3.1.1.tar.gz (28.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cpf-3.1.1-py3-none-any.whl (25.8 kB view details)

Uploaded Python 3

File details

Details for the file cpf-3.1.1.tar.gz.

File metadata

  • Download URL: cpf-3.1.1.tar.gz
  • Upload date:
  • Size: 28.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for cpf-3.1.1.tar.gz
Algorithm Hash digest
SHA256 d5633ab9d022b9cb5e40073313a3a71804194cf8166c59a959c5cdedbe9cb951
MD5 59fb0cdd99c40be0496de91560a74b15
BLAKE2b-256 ad80c19f1f737e04670f6bd941c4da5c4069d6c02dfb3a2185071b9df2d74ed0

See more details on using hashes here.

File details

Details for the file cpf-3.1.1-py3-none-any.whl.

File metadata

  • Download URL: cpf-3.1.1-py3-none-any.whl
  • Upload date:
  • Size: 25.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for cpf-3.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 8af222f0a22ae0ae239bea7aba990b5e2ef34d36d05f80cf5d96aed77f17690b
MD5 4b5c20acb72aa6dade2d23787faf06fd
BLAKE2b-256 2d3a1e92ca55776af40d2287691a14ab03e3d299b559770f1193277517a6c44f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page