Pydantic v1
As validações utilizam a classe nativa do pydantic pydantic.PydanticTypeError
.
Os detalhes podem ser conferidas aqui
O pydantic_br utiliza 4 templetes e cógidos para enviar ao pydantic.
- FieldTypeError
- code: "not_str"
- msg_template: "Input should be a valid string"
- FieldMaskError
- code: "invalid_mask"
- msg_template: "invalid mask format"
- FieldDigitError
- code: "not_digits"
- msg_template: "field only accept digits as string"
- FieldInvalidError
- code: "invalid_data"
- msg_template: "invalid data"
FieldTypeError
Essa execeção atende a todos os campos disponíveis no pydantic_br.
Caso tente instanciar um objeto diferente de uma string
.
Exemplo:
from pydantic import BaseModel
from pydantic_br import CNPJ, CPF
class Empresa(BaseModel):
cpf: CPF
cnpj: CNPJ
p = Empresa(cpf=["532.213.947-80"], cnpj=42809023000191)
p = Empresa(cpf=["532.213.947-80"], cnpj=42809023000191)
File "pydantic\main.py", line 341, in pydantic.main.BaseModel.__init__
pydantic.error_wrappers.ValidationError: 2 validation errors for Empresa
cpf
Input should be a valid string (type=type_error.not_str)
cnpj
Input should be a valid string (type=type_error.not_str)
FieldMaskError
Essa execeção atende a todos os campos disponíveis no pydantic_br que possuem máscara.
Caso tente instanciar um objeto sem a máscara que o campo necessita de acordo com os detalhes. O Pydantic levantará uma execeção.
Exemplo:
from pydantic import BaseModel
from pydantic_br import CNPJMask, CPFMask
class Empresa(BaseModel):
cpf: CPFMask
cnpj: CNPJMask
p = Empresa(cpf="53221394780", cnpj="42809023000191")
p = Empresa(cpf="53221394780", cnpj="42809023000191")
File "pydantic\main.py", line 341, in pydantic.main.BaseModel.__init__
pydantic.error_wrappers.ValidationError: 2 validation errors for Empresa
cpf
invalid mask format (type=value_error.invalid_mask)
cnpj
invalid mask format (type=value_error.invalid_mask)
FieldDigitError
Essa exceção é lenvantada quando um campo que aceita apenas dígitos, recebe máscara. Caso tente instanciar um objeto com a máscara que o campo necessita de acordo com os detalhes. O Pydantic levantará uma execeção.
Exemplo:
from pydantic import BaseModel
from pydantic_br import CPFDigits, CNPJDigits
class Empresa(BaseModel):
cpf: CPFDigits
cnpj: CNPJDigits
p = Empresa(cpf="532.213.947-80", cnpj="42.809.023/0001-91")
p = Empresa(cpf="532.213.947-80", cnpj="42.809.023/0001-91")
File "pydantic\main.py", line 341, in pydantic.main.BaseModel.__init__
pydantic.error_wrappers.ValidationError: 2 validation errors for Empresa
cpf
field only accept digits as string (type=value_error.not_digits)
cnpj
field only accept digits as string (type=value_error.not_digits)
FieldInvalidError
Essa exceção é lenvantada quando um campo não atende ao requisitos do método utilizado para validação.
Exemplo:
from pydantic import BaseModel
from pydantic_br import CPF
class Pessoa(BaseModel):
cpf: CPF
p = Pessoa(cpf="000.000.00-00")
p = Pessoa(nome="João", cpf="000.000.00-00")
File "pydantic\main.py", line 341, in pydantic.main.BaseModel.__init__
pydantic.error_wrappers.ValidationError: 1 validation error for Pessoa
cpf
invalid data (type=value_error.invalid_data)
Pydantic V2
As validações utilizam a classe nativa do pydantic pydantic_core.PydanticCustomError
.
Funciona parecido com as exceções do pydantic v1 entretanto será considerado unicamente o atributo de msg_template
- FieldTypeError
- msg_template: "Input should be a valid string"
- FieldMaskError
- msg_template: "invalid mask format"
- FieldDigitError
- msg_template: "field only accept digits as string"
- FieldInvalidError
- msg_template: "invalid data"
Exemplo:
from pydantic import BaseModel
from pydantic_br import CNPJ, CPF
class Empresa(BaseModel):
cpf: CPF
cnpj: CNPJ
p = Empresa(cpf=["532.213.947-80"], cnpj=42809023000191)
Traceback (most recent call last):
p = Empresa(cpf=["532.213.947-80"], cnpj=42809023000191)
File "/mnt/c/DevNew/pydantic-br/pydantic-br/venv/lib/python3.10/site-packages/pydantic/main.py", line 159, in __init__
__pydantic_self__.__pydantic_validator__.validate_python(data, self_instance=__pydantic_self__)
pydantic_core._pydantic_core.ValidationError: 2 validation errors for Empresa
cpf
Input should be a valid string [type=string_type, input_value=['532.213.947-80'], input_type=list]
For further information visit https://errors.pydantic.dev/2.1/v/string_type
cnpj
Input should be a valid string [type=string_type, input_value=42809023000191, input_type=int]
For further information visit https://errors.pydantic.dev/2.1/v/string_type