from pydantic import BaseModel, FieldclassPerson(BaseModel): name:str=Field(alias="full_name")# Set an alias for the fielddata ={"full_name":"John Doe"}person =Person(**data)print(person.name)# 'John Doe'
from pydantic import BaseModel
class Address:
street: str
city: str
class Person(BaseModel):
name: str
address: Address
person = Person(name="John", address={"street": "Main St.", "city": "New York"})
print(person.address.city) # 'New York'
from pydantic import BaseModel, Field
class Person(BaseModel):
name: str = Field(default="Unknown") # Set a default value for the field
person = Person()
print(person.name) # 'Unknown'
from pydantic import BaseModel, validator
class Person(BaseModel):
age: int
@validator("age")
def check_age(cls, v):
if v < 0:
raise ValueError("Age cannot be negative")
return v
person = Person(age=30)
print(person.age) # 30
from pydantic import BaseModel, Enum
class Gender(str, Enum):
male = "male"
female = "female"
class Person(BaseModel):
gender: Gender
person = Person(gender="male")
print(person.gender) # Gender.male
from pydantic import BaseModel, Union
class Name:
first_name: str
last_name: str
class PhoneNumber:
number: str
class Person(BaseModel):
name: Union[Name, PhoneNumber]
person = Person(name=Name(first_name="John", last_name="Doe"))
print(person.name.first_name) # 'John'
from fastapi import FastAPI
from pydantic import BaseModel
class PersonModel(BaseModel):
name: str
age: int
app = FastAPI()
@app.post("/person")
def create_person(person: PersonModel):
return {"message": "Person created successfully"}
from sqlalchemy import create_engine
from pydantic import BaseModel
class PersonModel(BaseModel):
id: int
name: str
age: int
engine = create_engine("sqlite:///:memory:")
PersonModel.metadata.create_all(engine)
import pandas as pd
from pydantic import validate_model
data = pd.read_csv("data.csv")
person_model = validate_model(PersonModel, data)
from sklearn.model_selection import train_test_split
from pydantic import BaseModel
class DatasetModel(BaseModel):
features: list
labels: list
data = DatasetModel.parse_obj(pd.read_csv("data.csv").to_dict(orient="list"))
X, y = train_test_split(data.features, data.labels)
import json
from pydantic import BaseModel
class PersonModel(BaseModel):
name: str
age: int
data = {"name": "John", "age": 30}
person_json = PersonModel.parse_raw(json.dumps(data)).json()
from pydantic import BaseModel
class ConfigModel(BaseModel):
database_url: str
smtp_server: str
config = ConfigModel.parse_file("config.yml")
print(config.database_url) # 'localhost:5432'
from pydantic import BaseModel, Field
class FormModel(BaseModel):
name: str = Field(alias="full_name")
email: str
password: str
data = {"full_name": "John Doe", "email": "john.doe@example.com", "password": "secret"}
form_model = FormModel(**data)
from lxml import etree
from pydantic import BaseModel, XmlRoot
@XmlRoot(tag="person")
class PersonModel(BaseModel):
name: str
age: int
xml = etree.parse("person.xml")
person_model = PersonModel.parse(xml.getroot())
import csv
from pydantic import BaseModel
class PersonModel(BaseModel):
name: str
age: int
with open("data.csv") as f:
csv_reader = csv.DictReader(f)
for row in csv_reader:
person_model = PersonModel(**row)
print(person_model.name) # John
import xlrd
from pydantic import BaseModel
class PersonModel(BaseModel):
name: str
age: int
workbook = xlrd.open_workbook("data.xls")
worksheet = workbook.sheet_by_index(0)
for row in range(1, worksheet.nrows):
values = [cell.value for cell in worksheet.row(row)]
person_model = PersonModel(**dict(zip(worksheet.row_values(0), values)))
print(person_model.name) # John
from pdfminer.high_level import extract_text
from pydantic import BaseModel, Field
class PersonModel(BaseModel):
name: str = Field(alias="full_name")
email: str
phone_number: str
pdf_text = extract_text("person.pdf")
data = dict(zip(pdf_text.split("\n")[::2], pdf_text.split("\n")[1::2]))
person_model = PersonModel(**data)
import pyttsx3
from pydantic import BaseModel, Field
class TextModel(BaseModel):
text: str
language: str = Field(default="en")
text_model = TextModel(text="Hello world!")
engine = pyttsx3.init()
engine.setProperty("lang", text_model.language)
engine.say(text_model.text)
engine.runAndWait()
import speech_recognition as sr
from pydantic import BaseModel, Field
class SpeechModel(BaseModel):
audio_data: bytes
language: str = Field(default="en")
speech_model = SpeechModel(audio_data=sr.AudioFile("audio.wav").read())
r = sr.Recognizer()
r.recognize_google(speech_model.audio_data, language=speech_model.language)
import googletrans
from pydantic import BaseModel, Field
class TranslationModel(BaseModel):
text: str
target_language: str = Field(default="en")
translation_model = TranslationModel(text="Hola mundo!")
translator = googletrans.Translator()
translation = translator.translate(translation_model.text, translation_model.target_language)
print(translation.text) # 'Hello world!'
from PIL import Image
from pydantic import BaseModel, Field
class ImageModel(BaseModel):
image_path: str
operations: list
image_model = ImageModel(image_path="image.png", operations=[{"rotate": 90}, {"resize": (500, 500)}])
image = Image.open(image_model.image_path)
for operation in image_model.operations:
if "rotate" in operation:
image = image.rotate(operation["rotate"])
elif "resize" in operation:
image = image.resize(operation["resize"])
image.save("image_processed.png")
import smtplib
from email.message import EmailMessage
from pydantic import BaseModel, Field
class EmailModel(BaseModel):
sender: str
recipients: list
subject: str
body: str
email_model = EmailModel(sender="john.doe@example.com", recipients=["jane.doe@example.com"], subject="Hello!", body="This is an email.")
smtp_server = smtplib.SMTP("smtp.example.com")
smtp_server.starttls()
smtp_server.login(email_model.sender, "password")
message = EmailMessage()
message["Subject"] = email_model.subject
message["From"] = email_model.sender
message["To"] = ",".join(email_model.recipients)
message.set_content(email_model.body)
smtp_server.send_message(message)
smtp_server.quit()
import math
from pydantic import BaseModel, Field
class FinanceModel(BaseModel):
principal: float = Field(gt=0)
interest_rate: float = Field(gt=0)
years: float = Field(gt=0)
finance_model = FinanceModel(principal=1000, interest_rate=0.05, years=5)
amount = finance_model.principal * (1 + finance_model.interest_rate)**finance_model.years
print(amount) # 1276.28
from decimal import Decimal
from pydantic import BaseModel, Field
class OrderItemModel(BaseModel):
product_id: str
quantity: int = Field(gt=0)
unit_price: Decimal = Field(gt=0)
class OrderModel(BaseModel):
customer_id: str
items: list[OrderItemModel]
@property
def total_amount(self):
return sum(item.quantity * item.unit_price for item in self.items)
order_model = OrderModel(customer_id="CUST001", items=[OrderItemModel(product_id="PROD001", quantity=2, unit_price=Decimal("10.00")), OrderItemModel(product_id="PROD002", quantity=1, unit_price=Decimal("5.00"))])
print(order_model.total_amount) # Decimal('25.00')