@@ -390,23 +390,11 @@ def to_dict(self, obj: Any) -> Any:
390390 if isinstance (obj , BaseModel ):
391391 return self .to_dict_pydantic (obj )
392392
393- if isinstance (obj , (list , tuple )) and any (
394- isinstance (item , BaseModel ) for item in obj
395- ):
396- return [
397- self .to_dict_pydantic (item ) if isinstance (item , BaseModel ) else item
398- for item in obj
399- ]
393+ if isinstance (obj , (list , tuple )):
394+ return [self .to_dict (item ) for item in obj ]
400395
401- if isinstance (obj , dict ) and any (
402- isinstance (value , BaseModel ) for value in obj .values ()
403- ):
404- return {
405- key : self .to_dict_pydantic (value )
406- if isinstance (value , BaseModel )
407- else value
408- for key , value in obj .items ()
409- }
396+ if isinstance (obj , dict ):
397+ return {key : self .to_dict (value ) for key , value in obj .items ()}
410398
411399 return obj
412400
@@ -418,22 +406,13 @@ def from_dict(self, data: Any) -> Any:
418406 :return: Reconstructed object with proper types restored
419407 """
420408 if isinstance (data , (list , tuple )):
421- return [
422- self .from_dict_pydantic (item )
423- if isinstance (item , dict ) and "*PYD*" in item
424- else item
425- for item in data
426- ]
427- elif isinstance (data , dict ) and data :
409+ return [self .from_dict (item ) for item in data ]
410+
411+ if isinstance (data , dict ) and data :
428412 if "*PYD*" in data :
429413 return self .from_dict_pydantic (data )
430414
431- return {
432- key : self .from_dict_pydantic (value )
433- if isinstance (value , dict ) and "*PYD*" in value
434- else value
435- for key , value in data .items ()
436- }
415+ return {key : self .from_dict (value ) for key , value in data .items ()}
437416
438417 return data
439418
0 commit comments