Skip to content

Commit 89ae689

Browse files
committed
Add field cases
1 parent 4182b95 commit 89ae689

File tree

1 file changed

+47
-2
lines changed

1 file changed

+47
-2
lines changed

tests/contrib/test_pydantic.py

Lines changed: 47 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,38 @@
11
import uuid
22
from datetime import datetime, timedelta
33
from ipaddress import IPv4Address
4-
from typing import List
4+
from typing import Annotated, Any, List, Sequence, TypeVar
55

6-
from pydantic import BaseModel
6+
from annotated_types import Len
7+
from pydantic import BaseModel, Field, WithJsonSchema
78

89
from temporalio import activity, workflow
910
from temporalio.client import Client
1011
from temporalio.contrib.pydantic.converter import pydantic_data_converter
1112
from temporalio.worker import Worker
1213

14+
SequenceType = TypeVar("SequenceType", bound=Sequence[Any])
15+
ShortSequence = Annotated[SequenceType, Len(max_length=2)]
16+
1317

1418
class MyPydanticModel(BaseModel):
1519
ip_field: IPv4Address
1620
datetime_field: datetime
21+
string_field_assigned_field: str = Field()
22+
datetime_field_assigned_field: datetime = Field()
23+
string_field_with_default: str = Field(default_factory=lambda: "my-string")
24+
datetime_field_with_default: datetime = Field(
25+
default_factory=lambda: datetime(2000, 1, 2, 3, 4, 5)
26+
)
27+
annotated_datetime: Annotated[datetime, Field(), WithJsonSchema({"extra": "data"})]
28+
annotated_list_of_str: Annotated[
29+
List[str], Field(), WithJsonSchema({"extra": "data"})
30+
]
31+
annotated_list_of_datetime: Annotated[
32+
List[datetime], Field(), WithJsonSchema({"extra": "data"})
33+
]
34+
str_short_sequence: ShortSequence[List[str]]
35+
datetime_short_sequence: ShortSequence[List[datetime]]
1736

1837

1938
@activity.defn
@@ -43,10 +62,36 @@ async def test_workflow_with_pydantic_model(client: Client):
4362
MyPydanticModel(
4463
ip_field=IPv4Address("127.0.0.1"),
4564
datetime_field=datetime(2000, 1, 2, 3, 4, 5),
65+
string_field_assigned_field="my-string",
66+
datetime_field_assigned_field=datetime(2000, 1, 2, 3, 4, 5),
67+
annotated_datetime=datetime(2000, 1, 2, 3, 4, 5),
68+
annotated_list_of_str=["my-string-1", "my-string-2"],
69+
annotated_list_of_datetime=[
70+
datetime(2000, 1, 2, 3, 4, 5),
71+
datetime(2000, 11, 12, 13, 14, 15),
72+
],
73+
str_short_sequence=["my-string-1", "my-string-2"],
74+
datetime_short_sequence=[
75+
datetime(2000, 1, 2, 3, 4, 5),
76+
datetime(2000, 11, 12, 13, 14, 15),
77+
],
4678
),
4779
MyPydanticModel(
4880
ip_field=IPv4Address("127.0.0.2"),
4981
datetime_field=datetime(2001, 2, 3, 4, 5, 6),
82+
string_field_assigned_field="my-string",
83+
datetime_field_assigned_field=datetime(2000, 2, 3, 4, 5, 6),
84+
annotated_datetime=datetime(2001, 2, 3, 4, 5, 6),
85+
annotated_list_of_str=["my-string-3", "my-string-4"],
86+
annotated_list_of_datetime=[
87+
datetime(2001, 2, 3, 4, 5, 6),
88+
datetime(2001, 12, 13, 14, 15, 16),
89+
],
90+
str_short_sequence=["my-string-3", "my-string-4"],
91+
datetime_short_sequence=[
92+
datetime(2001, 2, 3, 4, 5, 6),
93+
datetime(2001, 12, 13, 14, 15, 16),
94+
],
5095
),
5196
]
5297

0 commit comments

Comments
 (0)