@@ -166,3 +166,53 @@ async def test_mixed_collection_types(client: Client):
166166 )
167167 assert orig_dataclass_objects == round_tripped_dataclass_objects
168168 assert orig_pydantic_objects == round_tripped_pydantic_objects
169+
170+
171+ @workflow .defn
172+ class PydanticModelInWorkflow :
173+ @workflow .run
174+ async def run (self ) -> None :
175+ o1 , _ = make_pydantic_objects ()
176+ assert isinstance (o1 , MyPydanticModel )
177+ assert isinstance (o1 , BaseModel )
178+ assert isinstance (o1 .ip_field , IPv4Address )
179+ assert isinstance (o1 .datetime_field , datetime )
180+ assert issubclass (o1 .annotated_datetime .__class__ , datetime )
181+ assert isinstance (o1 .string_field_assigned_field , str )
182+ assert isinstance (o1 .datetime_field_assigned_field , datetime )
183+ assert isinstance (o1 .string_field_with_default , str )
184+ assert isinstance (o1 .datetime_field_with_default , datetime )
185+ assert isinstance (o1 .annotated_datetime , datetime )
186+ assert isinstance (o1 .annotated_list_of_str , list )
187+ assert isinstance (o1 .annotated_list_of_datetime , list )
188+ assert isinstance (o1 .str_short_sequence , list )
189+ assert isinstance (o1 .datetime_short_sequence , list )
190+ assert o1 .annotated_datetime == datetime (2000 , 1 , 2 , 3 , 4 , 5 )
191+ assert o1 .annotated_list_of_str == ["my-string-1" , "my-string-2" ]
192+ assert o1 .annotated_list_of_datetime == [
193+ datetime (2000 , 1 , 2 , 3 , 4 , 5 ),
194+ datetime (2000 , 11 , 12 , 13 , 14 , 15 ),
195+ ]
196+ assert o1 .str_short_sequence == ["my-string-1" , "my-string-2" ]
197+ assert o1 .datetime_short_sequence == [
198+ datetime (2000 , 1 , 2 , 3 , 4 , 5 ),
199+ datetime (2000 , 11 , 12 , 13 , 14 , 15 ),
200+ ]
201+
202+
203+ async def test_pydantic_usage_in_workflow (client : Client ):
204+ new_config = client .config ()
205+ new_config ["data_converter" ] = pydantic_data_converter
206+ client = Client (** new_config )
207+ task_queue_name = str (uuid .uuid4 ())
208+
209+ async with Worker (
210+ client ,
211+ task_queue = task_queue_name ,
212+ workflows = [PydanticModelInWorkflow ],
213+ ):
214+ await client .execute_workflow (
215+ PydanticModelInWorkflow .run ,
216+ id = str (uuid .uuid4 ()),
217+ task_queue = task_queue_name ,
218+ )
0 commit comments