@@ -166,3 +166,52 @@ 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 isinstance (o1 .string_field_assigned_field , str )
181+ assert isinstance (o1 .datetime_field_assigned_field , datetime )
182+ assert isinstance (o1 .string_field_with_default , str )
183+ assert isinstance (o1 .datetime_field_with_default , datetime )
184+ assert isinstance (o1 .annotated_datetime , datetime )
185+ assert isinstance (o1 .annotated_list_of_str , list )
186+ assert isinstance (o1 .annotated_list_of_datetime , list )
187+ assert isinstance (o1 .str_short_sequence , list )
188+ assert isinstance (o1 .datetime_short_sequence , list )
189+ assert o1 .annotated_datetime == datetime (2000 , 1 , 2 , 3 , 4 , 5 )
190+ assert o1 .annotated_list_of_str == ["my-string-1" , "my-string-2" ]
191+ assert o1 .annotated_list_of_datetime == [
192+ datetime (2000 , 1 , 2 , 3 , 4 , 5 ),
193+ datetime (2000 , 11 , 12 , 13 , 14 , 15 ),
194+ ]
195+ assert o1 .str_short_sequence == ["my-string-1" , "my-string-2" ]
196+ assert o1 .datetime_short_sequence == [
197+ datetime (2000 , 1 , 2 , 3 , 4 , 5 ),
198+ datetime (2000 , 11 , 12 , 13 , 14 , 15 ),
199+ ]
200+
201+
202+ async def test_pydantic_usage_in_workflow (client : Client ):
203+ new_config = client .config ()
204+ new_config ["data_converter" ] = pydantic_data_converter
205+ client = Client (** new_config )
206+ task_queue_name = str (uuid .uuid4 ())
207+
208+ async with Worker (
209+ client ,
210+ task_queue = task_queue_name ,
211+ workflows = [PydanticModelInWorkflow ],
212+ ):
213+ await client .execute_workflow (
214+ PydanticModelInWorkflow .run ,
215+ id = str (uuid .uuid4 ()),
216+ task_queue = task_queue_name ,
217+ )
0 commit comments