@@ -290,12 +290,14 @@ def build(
290290 )
291291
292292 @classmethod
293- def serialize_url (cls , url : Any ) -> str :
293+ def serialize_url (cls , url : Any , info : core_schema . SerializationInfo ) -> str | Self :
294294 if not isinstance (url , cls ):
295295 raise PydanticSerializationUnexpectedValue (
296296 f"Expected `{ cls } ` but got `{ type (url )} ` with value `'{ url } '` - serialized value may not be as expected."
297297 )
298- return str (url )
298+ if info .mode == 'json' :
299+ return str (url )
300+ return url
299301
300302 @classmethod
301303 def __get_pydantic_core_schema__ (
@@ -314,7 +316,9 @@ def wrap_val(v, h):
314316 return core_schema .no_info_wrap_validator_function (
315317 wrap_val ,
316318 schema = core_schema .url_schema (** cls ._constraints .defined_constraints ),
317- serialization = core_schema .plain_serializer_function_ser_schema (cls .serialize_url ),
319+ serialization = core_schema .plain_serializer_function_ser_schema (
320+ cls .serialize_url , info_arg = True , when_used = 'always'
321+ ),
318322 )
319323
320324 @classmethod
@@ -465,12 +469,14 @@ def build(
465469 )
466470
467471 @classmethod
468- def serialize_url (cls , url : Any ) -> str :
472+ def serialize_url (cls , url : Any , info : core_schema . SerializationInfo ) -> str | Self :
469473 if not isinstance (url , cls ):
470474 raise PydanticSerializationUnexpectedValue (
471475 f"Expected `{ cls } ` but got `{ type (url )} ` with value `'{ url } '` - serialized value may not be as expected."
472476 )
473- return str (url )
477+ if info .mode == 'json' :
478+ return str (url )
479+ return url
474480
475481 @classmethod
476482 def __get_pydantic_core_schema__ (
@@ -489,7 +495,9 @@ def wrap_val(v, h):
489495 return core_schema .no_info_wrap_validator_function (
490496 wrap_val ,
491497 schema = core_schema .multi_host_url_schema (** cls ._constraints .defined_constraints ),
492- serialization = core_schema .plain_serializer_function_ser_schema (cls .serialize_url ),
498+ serialization = core_schema .plain_serializer_function_ser_schema (
499+ cls .serialize_url , info_arg = True , when_used = 'always'
500+ ),
493501 )
494502
495503 @classmethod
0 commit comments