pydantic-typer/tests/models.py
2023-04-28 21:11:48 -05:00

123 lines
2.4 KiB
Python

"""Models defines a set of classes for representing people and their hair.
Classes:
* `Alpha`: A class for representing an alpha value.
* `Color`: A class for representing a color.
* `Hair`: A class for representing hair.
* `Person`: A class for representing a person.
"""
from typing import Optional
from polyfactory.factories.pydantic_factory import ModelFactory
from pydantic import BaseModel, Field
class Alpha(BaseModel):
"""A class for representing an alpha value."""
a: int = Field(
...,
description="The alpha value.",
)
class Color(BaseModel):
"""A class for representing a color."""
r: int = Field(
...,
description="The red component of the color.",
)
g: int = Field(
...,
description="The green component of the color.",
)
b: int = Field(
...,
description="The blue component of the color.",
)
alpha: Alpha = Field(
...,
description="The alpha value of the color.",
)
class Hair(BaseModel):
"""A class for representing hair."""
color: Color = Field(
...,
description="The color of the hair.",
)
length: int = Field(
...,
description="The length of the hair.",
)
class Person(BaseModel):
"""A class for representing a person."""
name: str = Field(
...,
description="The name of the person.",
)
alias: Optional[str] = Field(
None,
description="An optional other name for the person.",
)
age: int = Field(
...,
description="The age of the person.",
)
email: Optional[str] = Field(
None,
description="An optional email address for the person.",
)
pet: str = Field(
"dog",
description="The person's pet.",
)
address: str = Field(
"123 Main St",
description="Where the person calls home.",
)
hair: Hair = Field(
...,
description="The person's hair.",
)
class AlphaFactory(ModelFactory[Alpha]):
"""A class for generating an alpha value."""
__model__ = Alpha
class ColorFactory(ModelFactory[Color]):
"""A class for generating a color."""
__model__ = Color
class HairFactory(ModelFactory[Hair]):
"""A class for generating hair."""
__model__ = Hair
class PersonFactory(ModelFactory[Person]):
"""A class for generating a person."""
__model__ = Person