123 lines
2.4 KiB
Python
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
|