Pydantic BR
Essa é uma biblioteca de extensão e visa disponibilizar campos com validações brasileiras para a biblioteca pydantic.
Compatível com a versão v1 e v2 do Pydantic.
Código fonte: https://github.com/scjorge/pydantic_br
Documentação: https://pydantic-br.readthedocs.io
Disponibilidades
| Campo | Grupo de Documentos | Nome do Documento | Método de validação |
|---|---|---|---|
| CPF | Pessoa física | Cadastro de Pessoa Física | Digito Verificador |
| CNH | Pessoa física | Carteira Nacional de Habilitação | Digito Verificador |
| TE | Pessoa física | Título de Eleitor | Digito Verificador |
| PIS | Pessoa física | Programa de Integração Social | Digito Verificador |
| CERT | Pessoa física | Certidão (Nascimento/Casamento/Óbito) | Digito Verificador |
| CNS | Pessoa física | Cartão Nacional de Saúde | Digito Verificador |
| CNPJ | Pessoa Jurídica | Carteira Nacional de Pessoas Jurídicas | Digito Verificador |
| CEP | Endereços | Código de Endereçamento Postal | RegExr |
| SiglaEstado | Endereços | Sigla oficial do Estado Brasileiro | RegExr |
| RENAVAM | Veículos | Registro Nacional de Veículos Automotores | Digito Verificador |
| PlacaVeiculo | Veículos | Placa do Veículo | RegExr |
Instalação
Utilizando pip
pip install pydantic-br
Utilizando Poetry
poetry add pydantic-br
Exemplos de Utilização
Os exemplos de dados exemplificados foram tirados dos seguintes sites:
A má utilização dos dados é de total responsabilidade do usuário.
CPF válido
from pprint import pprint
from pydantic import BaseModel
from pydantic_br import CPF, CPFDigits, CPFMask
class Pessoa(BaseModel):
nome: str
cpf: CPF # aceita CPF válidos com ou sem máscara
cpf_mask: CPFMask # aceita CPF válido apenas com máscara
cpf_digits: CPFDigits # aceita CPF válido apenas com dígitos
p1 = Pessoa(
nome="João", cpf="53221394780", cpf_mask="532.213.947-80", cpf_digits="53221394780"
)
pprint(p1.model_dump())
Saída
{'cpf': '53221394780',
'cpf_digits': '53221394780',
'cpf_mask': '532.213.947-80',
'nome': 'João'}
CPF inválido
from pprint import pprint
from pydantic import BaseModel
from pydantic_br import CPF, CPFDigits, CPFMask
class Pessoa(BaseModel):
nome: str
cpf: CPF # aceita CPF válidos com ou sem máscara
cpf_mask: CPFMask # aceita CPF válido apenas com máscara
cpf_digits: CPFDigits # aceita CPF válido apenas com dígitos
p1 = Pessoa(
nome="João", cpf="00000000000", cpf_mask="53221394780", cpf_digits="532.213.947-80"
)
pprint(p1.model_dump())
Saída
Traceback (most recent call last):
p1 = Pessoa(
File "pydantic\main.py", line 341, in pydantic.main.BaseModel.__init__
pydantic.error_wrappers.ValidationError: 3 validation errors for Pessoa
cpf
invalid data [type=invalid_data, input_value='00000000000', input_type=str]
cpf_mask
invalid mask format [type=invalid_mask, input_value='53221394780', input_type=str]
cpf_digits
field only accept digits as string [type=not_digits, input_value='532.213.947-80', input_type=str]
Versões do Pydantic
Os exemplos acima estão escritos na versão v1 do Pydantic. Entretanto, funciona perfeitamente com a versão v2.
Então que mudará? Bem, uma das coisa é que os métodos de 'apresentação' das models foram alterados na v2.
- O método
dict()foi alterado paramodel_dump()emodel_dump_json() - O método
schema()foi alterado paramodel_json_schema()
Metadata
Release files for pydantic-br 1.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| pydantic_br-1.2.0.tar.gz | 11.5 kB | Without provenance | Details for pydantic_br-1.2.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| pydantic_br-1.2.0-py3-none-any.whl | Python 3 | none | any | Details for pydantic_br-1.2.0-py3-none-any.whl |
Total release size: 31.2 kB
Release files / pydantic_br-1.2.0.tar.gz
| Download URL | pydantic_br-1.2.0.tar.gz |
|---|---|
| Size | 11.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7e2007b20bba56673ccd5e729a6981c5ed032d1da696d49b51c029c09380df7e
|
|
BLAKE2b-256 checksum How to use checksums |
250eb7180bff2f7e7c2db8b92ef7df3a5b0fb166d6e3f5f303682c54d5b44db8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.4.1 CPython/3.12.3 Linux/6.17.0-23-generic
|
Release files / pydantic_br-1.2.0-py3-none-any.whl
| Download URL | pydantic_br-1.2.0-py3-none-any.whl |
|---|---|
| Size | 19.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f164c122f6a72789172c289c06d98627f52c2e1853a1e010982582475b6e09d3
|
|
BLAKE2b-256 checksum How to use checksums |
2ae42b39cd673fad2cf5e644d42cf7545e0f7baa7b59595206c45aefc9fb997e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.4.1 CPython/3.12.3 Linux/6.17.0-23-generic
|
Security for pydantic-br 1.2.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.