wip
This commit is contained in:
parent
fec28df75f
commit
5ae6b86712
10 changed files with 312 additions and 39 deletions
|
|
@ -1,3 +1,6 @@
|
|||
# SPDX-FileCopyrightText: 2023-present Waylon S. Walker <waylon@waylonwalker.com>
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
"""Tests.
|
||||
|
||||
SPDX-FileCopyrightText: 2023-present Waylon S. Walker <waylon@waylonwalker.com>
|
||||
|
||||
SPDX-License-Identifier: MIT
|
||||
"""
|
||||
|
|
|
|||
94
tests/models.py
Normal file
94
tests/models.py
Normal file
|
|
@ -0,0 +1,94 @@
|
|||
"""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 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.",
|
||||
)
|
||||
other_name: 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.",
|
||||
)
|
||||
43
tests/test_person.py
Normal file
43
tests/test_person.py
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
"""Example usage of expand_pydantic_args with the Person model.
|
||||
|
||||
SPDX-FileCopyrightText: 2023-present Waylon S. Walker <waylon@waylonwalker.com>
|
||||
|
||||
SPDX-License-Identifier: MIT
|
||||
"""
|
||||
|
||||
import inspect
|
||||
|
||||
from pydantic_typer import expand_pydantic_args
|
||||
|
||||
from . import models
|
||||
|
||||
# this one is broken
|
||||
# def test_no_pydantic() -> None:
|
||||
# @expand_pydantic_args()
|
||||
# def get_person(alpha) -> None:
|
||||
# """Mydocstring."""
|
||||
# from rich import print
|
||||
|
||||
# print(str(thing))
|
||||
# print(person)
|
||||
|
||||
# sig = inspect.signature(get_person)
|
||||
# params = sig.parameters
|
||||
|
||||
# for field in models.Alpha.__fields__.values():
|
||||
# assert field.name in params
|
||||
|
||||
|
||||
def test_single_signature() -> None:
|
||||
@expand_pydantic_args()
|
||||
def get_person(alpha: models.Alpha) -> None:
|
||||
"""Mydocstring."""
|
||||
return alpha
|
||||
|
||||
sig = inspect.signature(get_person)
|
||||
params = sig.parameters
|
||||
|
||||
for field in models.Alpha.__fields__.values():
|
||||
assert field.name in params
|
||||
|
||||
assert get_person(a=1) == models.Alpha(a=1)
|
||||
Loading…
Add table
Add a link
Reference in a new issue