Skip to content

Commit f28d72b

Browse files
committed
Deduplicate tests
1 parent 2496156 commit f28d72b

File tree

1 file changed

+52
-91
lines changed

1 file changed

+52
-91
lines changed

tests/contrib/test_pydantic.py

Lines changed: 52 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
Tuple,
1616
TypeVar,
1717
Union,
18-
get_type_hints,
1918
)
2019

2120
from annotated_types import Len
@@ -229,42 +228,6 @@ def make_generic_string_object() -> GenericModel[str]:
229228
)
230229

231230

232-
class PydanticModel(BaseModel):
233-
ip_field: IPv4Address
234-
string_field_assigned_field: str = Field()
235-
string_field_with_default: str = Field(default_factory=lambda: "my-string")
236-
annotated_list_of_str: Annotated[
237-
List[str], Field(), WithJsonSchema({"extra": "data"})
238-
]
239-
str_short_sequence: ShortSequence[List[str]]
240-
union_field: Union[int, str]
241-
242-
def _check_instance(self):
243-
assert isinstance(self.ip_field, IPv4Address)
244-
assert isinstance(self.string_field_assigned_field, str)
245-
assert isinstance(self.string_field_with_default, str)
246-
assert isinstance(self.annotated_list_of_str, list)
247-
assert isinstance(self.str_short_sequence, list)
248-
assert self.annotated_list_of_str == ["my-string-1", "my-string-2"]
249-
assert self.str_short_sequence == ["my-string-1", "my-string-2"]
250-
assert isinstance(self.union_field, str)
251-
assert self.union_field == "my-string"
252-
253-
assert get_type_hints(self) == {
254-
"ip_field": IPv4Address,
255-
"string_field_assigned_field": str,
256-
"string_field_with_default": str,
257-
"annotated_list_of_str": List[str],
258-
"str_short_sequence": List[str],
259-
# TODO: why not
260-
# "annotated_list_of_str": Annotated[
261-
# List[str], Field(), WithJsonSchema({"extra": "data"})
262-
# ],
263-
# "str_short_sequence": ShortSequence[List[str]],
264-
"union_field": Union[int, str],
265-
}
266-
267-
268231
class PydanticDatetimeModel(BaseModel):
269232
datetime_field: datetime
270233
datetime_field_assigned_field: datetime = Field()
@@ -295,6 +258,22 @@ def _check_instance(self):
295258
]
296259

297260

261+
def make_pydantic_datetime_object() -> PydanticDatetimeModel:
262+
return PydanticDatetimeModel(
263+
datetime_field=datetime(2000, 1, 2, 3, 4, 5),
264+
datetime_field_assigned_field=datetime(2000, 1, 2, 3, 4, 5),
265+
annotated_datetime=datetime(2000, 1, 2, 3, 4, 5),
266+
annotated_list_of_datetime=[
267+
datetime(2000, 1, 2, 3, 4, 5),
268+
datetime(2001, 11, 12, 13, 14, 15),
269+
],
270+
datetime_short_sequence=[
271+
datetime(2000, 1, 2, 3, 4, 5),
272+
datetime(2001, 11, 12, 13, 14, 15),
273+
],
274+
)
275+
276+
298277
class PydanticDateModel(BaseModel):
299278
date_field: date
300279
date_field_assigned_field: date = Field()
@@ -323,6 +302,16 @@ def _check_instance(self):
323302
]
324303

325304

305+
def make_pydantic_date_object() -> PydanticDateModel:
306+
return PydanticDateModel(
307+
date_field=date(2000, 1, 2),
308+
date_field_assigned_field=date(2000, 1, 2),
309+
annotated_date=date(2000, 1, 2),
310+
annotated_list_of_date=[date(2000, 1, 2), date(2001, 11, 12)],
311+
date_short_sequence=[date(2000, 1, 2), date(2001, 11, 12)],
312+
)
313+
314+
326315
class PydanticTimedeltaModel(BaseModel):
327316
timedelta_field: timedelta
328317
timedelta_field_assigned_field: timedelta = Field()
@@ -355,6 +344,22 @@ def _check_instance(self):
355344
]
356345

357346

347+
def make_pydantic_timedelta_object() -> PydanticTimedeltaModel:
348+
return PydanticTimedeltaModel(
349+
timedelta_field=timedelta(1, 2, 3, 4, 5, 6, 7),
350+
timedelta_field_assigned_field=timedelta(1, 2, 3, 4, 5, 6, 7),
351+
annotated_timedelta=timedelta(1, 2, 3, 4, 5, 6, 7),
352+
annotated_list_of_timedelta=[
353+
timedelta(1, 2, 3, 4, 5, 6, 7),
354+
timedelta(2, 3, 4, 5, 6, 7, 8),
355+
],
356+
timedelta_short_sequence=[
357+
timedelta(1, 2, 3, 4, 5, 6, 7),
358+
timedelta(2, 3, 4, 5, 6, 7, 8),
359+
],
360+
)
361+
362+
358363
PydanticModels = Union[
359364
BasicTypesModel,
360365
ComplexTypesModel,
@@ -363,7 +368,6 @@ def _check_instance(self):
363368
FieldFeaturesModel,
364369
AnnotatedFieldsModel,
365370
GenericModel,
366-
PydanticModel,
367371
PydanticDatetimeModel,
368372
PydanticDateModel,
369373
PydanticTimedeltaModel,
@@ -385,16 +389,8 @@ def _assert_timedelta_validity(td: timedelta):
385389
assert issubclass(td.__class__, timedelta)
386390

387391

388-
def make_homogeneous_list_of_pydantic_objects() -> List[PydanticModel]:
389-
objects = [
390-
PydanticModel(
391-
ip_field=IPv4Address("127.0.0.1"),
392-
string_field_assigned_field="my-string",
393-
annotated_list_of_str=["my-string-1", "my-string-2"],
394-
str_short_sequence=["my-string-1", "my-string-2"],
395-
union_field="my-string",
396-
),
397-
]
392+
def make_homogeneous_list_of_pydantic_objects() -> List[PydanticDatetimeModel]:
393+
objects = [make_pydantic_datetime_object()]
398394
for o in objects:
399395
o._check_instance()
400396
return objects
@@ -409,46 +405,9 @@ def make_heterogeneous_list_of_pydantic_objects() -> List[PydanticModels]:
409405
make_field_features_object(),
410406
make_annotated_fields_object(),
411407
make_generic_string_object(),
412-
PydanticModel(
413-
ip_field=IPv4Address("127.0.0.1"),
414-
string_field_assigned_field="my-string",
415-
annotated_list_of_str=["my-string-1", "my-string-2"],
416-
str_short_sequence=["my-string-1", "my-string-2"],
417-
union_field="my-string",
418-
),
419-
PydanticDatetimeModel(
420-
datetime_field=datetime(2000, 1, 2, 3, 4, 5),
421-
datetime_field_assigned_field=datetime(2000, 1, 2, 3, 4, 5),
422-
annotated_datetime=datetime(2000, 1, 2, 3, 4, 5),
423-
annotated_list_of_datetime=[
424-
datetime(2000, 1, 2, 3, 4, 5),
425-
datetime(2001, 11, 12, 13, 14, 15),
426-
],
427-
datetime_short_sequence=[
428-
datetime(2000, 1, 2, 3, 4, 5),
429-
datetime(2001, 11, 12, 13, 14, 15),
430-
],
431-
),
432-
PydanticDateModel(
433-
date_field=date(2000, 1, 2),
434-
date_field_assigned_field=date(2000, 1, 2),
435-
annotated_date=date(2000, 1, 2),
436-
annotated_list_of_date=[date(2000, 1, 2), date(2001, 11, 12)],
437-
date_short_sequence=[date(2000, 1, 2), date(2001, 11, 12)],
438-
),
439-
PydanticTimedeltaModel(
440-
timedelta_field=timedelta(1, 2, 3, 4, 5, 6, 7),
441-
timedelta_field_assigned_field=timedelta(1, 2, 3, 4, 5, 6, 7),
442-
annotated_timedelta=timedelta(1, 2, 3, 4, 5, 6, 7),
443-
annotated_list_of_timedelta=[
444-
timedelta(1, 2, 3, 4, 5, 6, 7),
445-
timedelta(2, 3, 4, 5, 6, 7, 8),
446-
],
447-
timedelta_short_sequence=[
448-
timedelta(1, 2, 3, 4, 5, 6, 7),
449-
timedelta(2, 3, 4, 5, 6, 7, 8),
450-
],
451-
),
408+
make_pydantic_datetime_object(),
409+
make_pydantic_date_object(),
410+
make_pydantic_timedelta_object(),
452411
]
453412
for o in objects:
454413
o._check_instance()
@@ -457,8 +416,8 @@ def make_heterogeneous_list_of_pydantic_objects() -> List[PydanticModels]:
457416

458417
@activity.defn
459418
async def homogeneous_list_of_pydantic_models_activity(
460-
models: List[PydanticModel],
461-
) -> List[PydanticModel]:
419+
models: List[PydanticDatetimeModel],
420+
) -> List[PydanticDatetimeModel]:
462421
return models
463422

464423

@@ -472,7 +431,9 @@ async def heterogeneous_list_of_pydantic_models_activity(
472431
@workflow.defn
473432
class HomogeneousListOfPydanticObjectsWorkflow:
474433
@workflow.run
475-
async def run(self, models: List[PydanticModel]) -> List[PydanticModel]:
434+
async def run(
435+
self, models: List[PydanticDatetimeModel]
436+
) -> List[PydanticDatetimeModel]:
476437
return await workflow.execute_activity(
477438
homogeneous_list_of_pydantic_models_activity,
478439
models,

0 commit comments

Comments
 (0)