Skip to main content

CPF and CNPJ validation and generation with support for alphanumeric CNPJ

Project description

📦 py-cpf-cnpj

A Python library for CPF and CNPJ validation and generation, with support for the new alphanumeric CNPJ standard.


✨ Features

  • ✅ CPF validation
  • ✅ CNPJ validation (numeric and alphanumeric)
  • 🔢 Random CPF generator
  • 🔡 Random CNPJ generator (numeric or alphanumeric)
  • 🧪 Fully tested with pytest

📥 Installation

pip install py-cpf-cnpj

🚀 Usage

Validate CPF

from py_cpf_cnpj import is_valid_cpf

is_valid_cpf("529.982.247-25")
# True

Validate CNPJ

from py_cpf_cnpj import is_valid_cnpj

# Validate numeric CNPJ
is_valid_cnpj("11.222.333/0001-81")
# True

# Validate alphanumeric CNPJ
is_valid_cnpj("2P.76B.MNX/0001-66")
# True

Generate Random CPF

from py_cpf_cnpj import generate_random_cpf

cpf = generate_random_cpf(masked=True)
print(cpf)
# e.g., "123.456.789-09"

cpf_unmasked = generate_random_cpf(masked=False)
print(cpf_unmasked)
# e.g., "12345678909"

Generate Random CNPJ

from py_cpf_cnpj import generate_random_cnpj

# Generate numeric CNPJ
cnpj_numeric = generate_random_cnpj(alphanumeric=False, masked=True)
print(cnpj_numeric)
# e.g., "12.345.678/0001-95"

# Generate alphanumeric CNPJ
cnpj_alphanumeric = generate_random_cnpj(alphanumeric=True, masked=False)
print(cnpj_alphanumeric)
# e.g., "RSASKDDW000100"

🧠 How it works

CPF

  • Uses fixed weights (10 → 2, then 11 → 2)
  • Applies the official modulo 11 algorithm
  • Prevents invalid repeated-digit CPFs (e.g. 11111111111)

CNPJ (Alphanumeric)

  • Supports digits (0–9) and uppercase letters (A–Z)
  • Characters are converted using: value = ord(char) - ord('0')
  • Weights cycle from 2 → 9

Contributing

Contributions are very welcome!
Feel free to open issues, suggest improvements, or submit pull requests.

📄 License

MIT License.


Versão em Português

📦 py-cpf-cnpj

Uma biblioteca Python para validação e geração de CPF e CNPJ, com suporte ao novo padrão de CNPJ alfanumérico.


✨ Funcionalidades

  • ✅ Validação de CPF
  • ✅ Validação de CNPJ (numérico e alfanumérico)
  • 🔢 Gerador de CPF aleatório
  • 🔡 Gerador de CNPJ aleatório (numérico ou alfanumérico)
  • 🧪 Testes automatizados com pytest

📥 Instalação

pip install py-cpf-cnpj

🚀 Uso

Validar CPF

from py_cpf_cnpj import is_valid_cpf

is_valid_cpf("529.982.247-25")
# True

Validar CNPJ

from py_cpf_cnpj import is_valid_cnpj

# Validar CNPJ numérico
is_valid_cnpj("11.222.333/0001-81")
# True

# Validar CNPJ alfanumérico
is_valid_cnpj("2P.76B.MNX/0001-66")
# True

Gerar CPF Aleatório

from py_cpf_cnpj import generate_random_cpf

cpf = generate_random_cpf(masked=True)
print(cpf)
# e.g., "123.456.789-09"

cpf_unmasked = generate_random_cpf(masked=False)
print(cpf_unmasked)
# e.g., "12345678909"

Gerar CNPJ Aleatório

from py_cpf_cnpj import generate_random_cnpj

# Gerar CNPJ numérico
cnpj_numeric = generate_random_cnpj(alphanumeric=False, masked=True)
print(cnpj_numeric)
# e.g., "12.345.678/0001-95"

# Gerar CNPJ alfanumérico
cnpj_alphanumeric = generate_random_cnpj(alphanumeric=True, masked=False)
print(cnpj_alphanumeric)
# e.g., "RSASKDDW000100"

🧠 Como Funciona

CPF

  • Pesos fixos (10 → 2 e 11 → 2)
  • Algoritmo módulo 11
  • Rejeita CPFs inválidos com dígitos repetidos (e.g. 11111111111)

CNPJ (Alfanumérico)

  • Aceita números (0–9) e letras (A–Z)
  • Conversão baseada em valor ASCII: value = ord(char) - ord('0')
  • Pesos cíclicos de 2 → 9

Contribuindo

Contribuições são muito bem-vindas! Sinta-se à vontade para abrir issues, sugerir melhorias ou enviar pull requests.

📄 License

MIT 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

br_cpf_cnpj-0.1.1.tar.gz (6.4 kB view details)

Uploaded Source

Built Distribution

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

br_cpf_cnpj-0.1.1-py3-none-any.whl (6.3 kB view details)

Uploaded Python 3

File details

Details for the file br_cpf_cnpj-0.1.1.tar.gz.

File metadata

  • Download URL: br_cpf_cnpj-0.1.1.tar.gz
  • Upload date:
  • Size: 6.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for br_cpf_cnpj-0.1.1.tar.gz
Algorithm Hash digest
SHA256 ac19fff5b7e9a721feddb078c997be9e6449cbc4dcb940adff744b2dd10279ab
MD5 a03a51aa77c91306795062ad159d3ce1
BLAKE2b-256 21dd388dec633b4eac432d03f6b9882bc3b55d6d34544874179400e5a1679d31

See more details on using hashes here.

File details

Details for the file br_cpf_cnpj-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: br_cpf_cnpj-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 6.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for br_cpf_cnpj-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 74348a1e3666c24a235f7dcb27b352c29b46c2bcd1f22be563425bf666a8af6b
MD5 8d257afbab73f3849b82c54d439b5776
BLAKE2b-256 1eec278cfc182f2f83b55ba1e53040b53516940d6987b926d3fc96e68422b55b

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