|  | @@ -8,16 +8,20 @@ from ipaddress import IPv4Address, IPv4Interface, IPv4Network, IPv6Address, IPv6
 | 
	
		
			
				|  |  |  from pathlib import Path, PurePath
 | 
	
		
			
				|  |  |  from re import Pattern
 | 
	
		
			
				|  |  |  from types import GeneratorType
 | 
	
		
			
				|  |  | -from typing import Any, Optional, Union
 | 
	
		
			
				|  |  | +from typing import Any, Literal, Optional, Union
 | 
	
		
			
				|  |  |  from uuid import UUID
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  from pydantic import BaseModel
 | 
	
		
			
				|  |  |  from pydantic.networks import AnyUrl, NameEmail
 | 
	
		
			
				|  |  |  from pydantic.types import SecretBytes, SecretStr
 | 
	
		
			
				|  |  | +from pydantic_core import Url
 | 
	
		
			
				|  |  |  from pydantic_extra_types.color import Color
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -from ._compat import PYDANTIC_V2, Url, _model_dump
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +def _model_dump(
 | 
	
		
			
				|  |  | +    model: BaseModel, mode: Literal["json", "python"] = "json", **kwargs: Any
 | 
	
		
			
				|  |  | +) -> Any:
 | 
	
		
			
				|  |  | +    return model.model_dump(mode=mode, **kwargs)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  # Taken from Pydantic v1 as is
 | 
	
		
			
				|  |  |  def isoformat(o: Union[datetime.date, datetime.time]) -> str:
 | 
	
	
		
			
				|  | @@ -109,12 +113,6 @@ def jsonable_encoder(
 | 
	
		
			
				|  |  |                  if isinstance(obj, encoder_type):
 | 
	
		
			
				|  |  |                      return encoder_instance(obj)
 | 
	
		
			
				|  |  |      if isinstance(obj, BaseModel):
 | 
	
		
			
				|  |  | -        # TODO: remove when deprecating Pydantic v1
 | 
	
		
			
				|  |  | -        encoders: dict[Any, Any] = {}
 | 
	
		
			
				|  |  | -        if not PYDANTIC_V2:
 | 
	
		
			
				|  |  | -            encoders = getattr(obj.__config__, "json_encoders", {})  # type: ignore[attr-defined]
 | 
	
		
			
				|  |  | -            if custom_encoder:
 | 
	
		
			
				|  |  | -                encoders.update(custom_encoder)
 | 
	
		
			
				|  |  |          obj_dict = _model_dump(
 | 
	
		
			
				|  |  |              obj,
 | 
	
		
			
				|  |  |              mode="json",
 | 
	
	
		
			
				|  | @@ -131,8 +129,6 @@ def jsonable_encoder(
 | 
	
		
			
				|  |  |              obj_dict,
 | 
	
		
			
				|  |  |              exclude_none=exclude_none,
 | 
	
		
			
				|  |  |              exclude_defaults=exclude_defaults,
 | 
	
		
			
				|  |  | -            # TODO: remove when deprecating Pydantic v1
 | 
	
		
			
				|  |  | -            custom_encoder=encoders,
 | 
	
		
			
				|  |  |              sqlalchemy_safe=sqlalchemy_safe,
 | 
	
		
			
				|  |  |          )
 | 
	
		
			
				|  |  |      if dataclasses.is_dataclass(obj):
 |