Skip to main content

ccpf

A CPF (brazilian register numbers for persons) library that can:

  • Validate CPFs
  • Generate random CPFs
  • Apply and remove masks from CPFs
  • Check if CPFs are masked

Install

Just do pip3 install ccpf and you are good to go.

How to use

After importing ccpf you can:

  • generate() - Generate a random valid unmasked CPF.
import ccpf
cpf = ccpf.generate()
assert ccpf.validate(cpf)
  • validate(cpf) - Validate if a string is a valid CPF. Works for masked and unmasked CPFs.
import ccpf
cpf = ccpf.generate()
assert ccpf.validate(cpf)
  • has_mask(cpf) - Return wheter or not the given CPF is masked. If CPF format is invalid, it will raise a CPFInvalidFormat exception.
import ccpf
cpf = ccpf.generate()
assert not ccpf.has_mask(cpf)
  • mask(cpf) - Return the masked version of the given CPF. If the CPF is already masked, just return it. If CPF format is invalid, it will raise a CPFInvalidFormat exception.
import ccpf
cpf = ccpf.generate()
assert not ccpf.has_mask(cpf)
masked = ccpf.mask(cpf)
assert ccpf.has_mask(masked)
masked2 = ccpf.mask(masked)
assert ccpf.has_mask(masked2)
  • unmask(cpf) - Return unmasked version of the given CPF. If the CPF is already unmasked, just return it. If CPF format is invalid, it will raise a CPFInvalidFormat exception.
import ccpf
cpf = ccpf.generate()
assert not ccpf.has_mask(cpf)
unmasked = ccpf.unmask(cpf)
assert not ccpf.has_mask(unmasked)
masked = ccpf.mask(unmasked)
assert ccpf.has_mask(masked)
unmasked2 = ccpf.unmask(masked)
assert not ccpf.has_mask(unmasked2)

CPFInvalidFormat

A CPF may have a valid format, but be invalid:

  • without mask but invalid:
invalid_cpf_with_right_format = '12345678901'
assert not ccpf.validate(invalid_cpf_with_right_format)
error = False
try:
    ccpf.unmask(invalid_cpf_with_right_format)
except ccpf.CPFInvalidFormat:
    error = True
finally:
    assert not error
  • with mask but invalid.
invalid_cpf_with_right_format = '123.456.789-01'
assert not ccpf.validate(invalid_cpf_with_right_format)
error = False
try:
    ccpf.unmask(invalid_cpf_with_right_format)
except ccpf.CPFInvalidFormat:
    error = True
finally:
    assert not error
  • CPFInvalidFormat will be raised when the format is invalid. It does not say whether the CPF itself is invalid or not.
cpf_with_wrong_format = 'thisisclearlynotinthecpfformat'
assert not ccpf.validate(cpf_with_wrong_format)
error = False
try:
    ccpf.unmask(cpf_with_wrong_format)
except ccpf.CPFInvalidFormat:
    error = True
finally:
    assert error

Run tests

Just execute tox by calling it:

tox

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ccpf-1.0.0.tar.gz (60.7 kB view details)

Uploaded Source

File details

Details for the file ccpf-1.0.0.tar.gz.

File metadata

  • Download URL: ccpf-1.0.0.tar.gz
  • Upload date:
  • Size: 60.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.8

File hashes

Hashes for ccpf-1.0.0.tar.gz
Algorithm Hash digest
SHA256 d804180633116c18f09d70fc4c460daee79bac288943a65bb56cec7ef12c976f
MD5 02b259d46ee2984db48473e26aa5e7dc
BLAKE2b-256 8523d9c5aaf3560bc067e90c7f2bd4a08edb3150f8722acf937256968cd56c3f

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

1.0.0 This release

1 file

0.0.1

1 file

0.0.0

1 file

Supported by

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