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()
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 | |
|---|---|---|---|
| pydantic_br-1.2.0.tar.gz | 11.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pydantic_br-1.2.0-py3-none-any.whl | Python 3 | none | any | Details |
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
|