Skip to content

Commit 4a29c92

Browse files
committed
test date
1 parent 4b7a28d commit 4a29c92

File tree

1 file changed

+53
-8
lines changed

1 file changed

+53
-8
lines changed

tests/contrib/test_pydantic.py

Lines changed: 53 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import dataclasses
22
import uuid
3-
from datetime import datetime, timedelta
3+
from datetime import date, datetime, timedelta
44
from ipaddress import IPv4Address
55
from typing import Annotated, Any, List, Sequence, Tuple, TypeVar, Union
66

@@ -65,11 +65,44 @@ def _check_instance(self):
6565
]
6666

6767

68+
class MyPydanticDateModel(BaseModel):
69+
date_field: date
70+
date_field_assigned_field: date = Field()
71+
date_field_with_default: date = Field(default_factory=lambda: date(2000, 1, 2))
72+
annotated_date: Annotated[date, Field(), WithJsonSchema({"extra": "data"})]
73+
annotated_list_of_date: Annotated[
74+
List[date], Field(), WithJsonSchema({"extra": "data"})
75+
]
76+
date_short_sequence: ShortSequence[List[date]]
77+
78+
def _check_instance(self):
79+
_assert_date_validity(self.date_field)
80+
_assert_date_validity(self.date_field_assigned_field)
81+
_assert_date_validity(self.date_field_with_default)
82+
_assert_date_validity(self.annotated_date)
83+
assert isinstance(self.annotated_list_of_date, list)
84+
assert isinstance(self.date_short_sequence, list)
85+
assert self.annotated_date == date(2000, 1, 2)
86+
assert self.annotated_list_of_date == [
87+
date(2000, 1, 2),
88+
date(2001, 11, 12),
89+
]
90+
assert self.date_short_sequence == [
91+
date(2000, 1, 2),
92+
date(2001, 11, 12),
93+
]
94+
95+
6896
def _assert_datetime_validity(dt: datetime):
6997
assert isinstance(dt, datetime)
7098
assert issubclass(dt.__class__, datetime)
7199

72100

101+
def _assert_date_validity(d: date):
102+
assert isinstance(d, date)
103+
assert issubclass(d.__class__, date)
104+
105+
73106
def make_homogeneous_list_of_pydantic_objects() -> List[MyPydanticModel]:
74107
return [
75108
MyPydanticModel(
@@ -82,7 +115,7 @@ def make_homogeneous_list_of_pydantic_objects() -> List[MyPydanticModel]:
82115

83116

84117
def make_heterogenous_list_of_pydantic_objects() -> (
85-
List[Union[MyPydanticModel, MyPydanticDatetimeModel]]
118+
List[Union[MyPydanticModel, MyPydanticDatetimeModel, MyPydanticDateModel]]
86119
):
87120
return [
88121
MyPydanticModel(
@@ -104,6 +137,13 @@ def make_heterogenous_list_of_pydantic_objects() -> (
104137
datetime(2001, 11, 12, 13, 14, 15),
105138
],
106139
),
140+
MyPydanticDateModel(
141+
date_field=date(2000, 1, 2),
142+
date_field_assigned_field=date(2000, 1, 2),
143+
annotated_date=date(2000, 1, 2),
144+
annotated_list_of_date=[date(2000, 1, 2), date(2001, 11, 12)],
145+
date_short_sequence=[date(2000, 1, 2), date(2001, 11, 12)],
146+
),
107147
]
108148

109149

@@ -116,8 +156,8 @@ async def homogeneous_list_of_pydantic_models_activity(
116156

117157
@activity.defn
118158
async def heterogeneous_list_of_pydantic_models_activity(
119-
models: List[Union[MyPydanticModel, MyPydanticDatetimeModel]],
120-
) -> List[Union[MyPydanticModel, MyPydanticDatetimeModel]]:
159+
models: List[Union[MyPydanticModel, MyPydanticDatetimeModel, MyPydanticDateModel]],
160+
) -> List[Union[MyPydanticModel, MyPydanticDatetimeModel, MyPydanticDateModel]]:
121161
return models
122162

123163

@@ -136,8 +176,11 @@ async def run(self, models: List[MyPydanticModel]) -> List[MyPydanticModel]:
136176
class HeterogenousListOfPydanticObjectsWorkflow:
137177
@workflow.run
138178
async def run(
139-
self, models: List[Union[MyPydanticModel, MyPydanticDatetimeModel]]
140-
) -> List[Union[MyPydanticModel, MyPydanticDatetimeModel]]:
179+
self,
180+
models: List[
181+
Union[MyPydanticModel, MyPydanticDatetimeModel, MyPydanticDateModel]
182+
],
183+
) -> List[Union[MyPydanticModel, MyPydanticDatetimeModel, MyPydanticDateModel]]:
141184
return await workflow.execute_activity(
142185
heterogeneous_list_of_pydantic_models_activity,
143186
models,
@@ -206,10 +249,12 @@ class MixedCollectionTypesWorkflow:
206249
async def run(
207250
self,
208251
input: Tuple[
209-
List[MyDataClass], List[Union[MyPydanticModel, MyPydanticDatetimeModel]]
252+
List[MyDataClass],
253+
List[Union[MyPydanticModel, MyPydanticDatetimeModel, MyPydanticDateModel]],
210254
],
211255
) -> Tuple[
212-
List[MyDataClass], List[Union[MyPydanticModel, MyPydanticDatetimeModel]]
256+
List[MyDataClass],
257+
List[Union[MyPydanticModel, MyPydanticDatetimeModel, MyPydanticDateModel]],
213258
]:
214259
data_classes, pydantic_objects = input
215260
pydantic_objects = await workflow.execute_activity(

0 commit comments

Comments
 (0)