Skip to main content
Este guia cobre a validação de dados com o pydantic, uma biblioteca Python cujo núcleo de validação (pydantic-core) é escrito em Rust. Os exemplos usam o pydantic v2. Você precisa do Python e da biblioteca pydantic:

Criando um modelo

  • Primeiro, precisamos importar pydantic.BaseModel e fazer a nossa classe herdar dele para começar a validar. No nosso exemplo, vamos criar uma classe chamada Person, que terá um nome, uma idade e um e-mail.
  • Com essa classe, ao instanciá-la, o pydantic vai validar se name e email são strings e se age é um inteiro.

Usando o modelo

  • Agora que a criamos, vamos instanciar a classe. Vamos criar um dicionário com os dados e desempacotá-lo na nossa classe.
  • O exemplo acima não gera nenhum erro, pois todos os campos têm o tipo correto. Por padrão, o pydantic também converte valores compatíveis: se age for a string "19", ela vira o inteiro 19. Agora vamos enviar dados errados para confirmar que a validação funciona.
  • O exemplo acima gera um ValidationError, pois age precisa ser um inteiro e "nineteen" não pode ser convertido em um:
  • Para tratar o erro em vez de deixá-lo parar o seu programa, capture-o com try/except. O método errors() lista cada campo inválido:

Modo estrito

  • Se você quiser rejeitar também strings como "19", ative o modo estrito no modelo. Assim, age só aceita um int de verdade, e Person(name="John", age="19", email="john@example.com") gera ValidationError.

Criando uma dataclass

  • Você também pode criar dataclasses com o pydantic. Elas são parecidas com as dataclasses padrão do Python, mas validam os campos como o BaseModel.
  • Se enviarmos a string "19" para age, ela será convertida para o int 19.
O Pydantic suporta validação recursiva: ao validar modelos aninhados, ele também valida os modelos internos.Se uma classe tiver uma lista de Person, people: list[Person], o pydantic verifica cada item da lista e o converte em um Person.

Extras

  • O Pydantic tem alguns extras, como a validação de e-mail e um pacote de fallback de timezone. Para instalá-los, execute os comandos abaixo:
  • Você pode instalar os dois de uma vez com o seguinte comando.
  • O pydantic[email] adiciona o tipo EmailStr, que valida o formato user@domain.tld e normaliza o endereço.

Validando variáveis de ambiente na inicialização

  • Bots e APIs leem tokens e configurações de variáveis de ambiente. Com o pydantic-settings, uma variável faltando ou inválida para a aplicação na inicialização com um erro claro, em vez de falhar mais tarde no meio de uma requisição.
  • Declare as variáveis de que a sua aplicação precisa em uma classe que herda de BaseSettings. Cada campo lê a variável de ambiente de mesmo nome, sem diferenciar maiúsculas de minúsculas: discord_token lê DISCORD_TOKEN.
settings.py
  • Se DISCORD_TOKEN não estiver definida, Settings() gera um ValidationError para discord_token com a mensagem Field required. Um valor como PORT=abc falha da mesma forma, porque port precisa ser um inteiro.
  • O SecretStr esconde o token quando você imprime ou registra as configurações nos logs. Leia o valor real com settings.discord_token.get_secret_value().

Rode na Square Cloud

Liste o pydantic e os extras dele no seu requirements.txt, para que a Square Cloud os instale durante o deploy:
requirements.txt
Crie um arquivo squarecloud.app na raiz do projeto. Para um bot cujo arquivo principal é o main.py e importa settings do settings.py:
squarecloud.app
O seu ZIP contém os seus arquivos .py, o requirements.txt e o squarecloud.app, sem o token. Defina a DISCORD_TOKEN e as outras variáveis no dashboard ou com squarecloud app env set: veja Variáveis de ambiente. Se uma variável obrigatória estiver faltando, o ValidationError aparece nos logs da aplicação assim que ela inicia.

Próximos passos

Variáveis de ambiente

Defina as variáveis que a sua classe de configurações lê.

FastAPI

Faça deploy de uma API que valida as requisições com o pydantic.

Bot do Discord

Hospede um bot que lê o token do ambiente.

Gostou desse artigo?

  • Criamos este conteúdo com o máximo de cuidado para oferecer a melhor ajuda possível. Se o artigo contribuiu de alguma forma, valorize nosso trabalho! Desenvolvedores já avaliaram a Square Cloud com 4,9/5 em 402 avaliações no Google e Trustpilot: deixe a sua também! Isso nos ajuda a entender o que é mais importante para você.

Google Reviews

Deixe sua avaliação no Google Reviews.

Trustpilot

Deixe sua avaliação no Trustpilot.