diff --git a/api/app.py b/api/app.py index e0cccd6183..f5a6d40e1a 100644 --- a/api/app.py +++ b/api/app.py @@ -2,7 +2,7 @@ import os from configs import dify_config -if not os.environ.get("DEBUG") or os.environ.get("DEBUG", "false").lower() != 'true': +if os.environ.get("DEBUG", "false").lower() != 'true': from gevent import monkey monkey.patch_all() @@ -43,6 +43,8 @@ from extensions import ( from extensions.ext_database import db from extensions.ext_login import login_manager from libs.passport import PassportService + +# TODO: Find a way to avoid importing models here from models import account, dataset, model, source, task, tool, tools, web from services.account_service import AccountService diff --git a/api/core/app/apps/workflow/app_generator.py b/api/core/app/apps/workflow/app_generator.py index 3eb0bcf3da..0f547ca164 100644 --- a/api/core/app/apps/workflow/app_generator.py +++ b/api/core/app/apps/workflow/app_generator.py @@ -94,7 +94,6 @@ class WorkflowAppGenerator(BaseAppGenerator): application_generate_entity=application_generate_entity, invoke_from=invoke_from, stream=stream, - call_depth=call_depth, ) def _generate( @@ -104,7 +103,6 @@ class WorkflowAppGenerator(BaseAppGenerator): application_generate_entity: WorkflowAppGenerateEntity, invoke_from: InvokeFrom, stream: bool = True, - call_depth: int = 0 ) -> Union[dict, Generator[dict, None, None]]: """ Generate App response. @@ -166,10 +164,10 @@ class WorkflowAppGenerator(BaseAppGenerator): """ if not node_id: raise ValueError('node_id is required') - + if args.get('inputs') is None: raise ValueError('inputs is required') - + extras = { "auto_generate_conversation_name": False } diff --git a/api/core/model_runtime/utils/_compat.py b/api/core/model_runtime/utils/_compat.py deleted file mode 100644 index 5c34152751..0000000000 --- a/api/core/model_runtime/utils/_compat.py +++ /dev/null @@ -1,21 +0,0 @@ -from typing import Any, Literal - -from pydantic import BaseModel -from pydantic.version import VERSION as PYDANTIC_VERSION - -PYDANTIC_V2 = PYDANTIC_VERSION.startswith("2.") - -if PYDANTIC_V2: - from pydantic_core import Url as Url - - def _model_dump( - model: BaseModel, mode: Literal["json", "python"] = "json", **kwargs: Any - ) -> Any: - return model.model_dump(mode=mode, **kwargs) -else: - from pydantic import AnyUrl as Url # noqa: F401 - - def _model_dump( - model: BaseModel, mode: Literal["json", "python"] = "json", **kwargs: Any - ) -> Any: - return model.dict(**kwargs) diff --git a/api/core/model_runtime/utils/encoders.py b/api/core/model_runtime/utils/encoders.py index e41d49216c..5078f00bfa 100644 --- a/api/core/model_runtime/utils/encoders.py +++ b/api/core/model_runtime/utils/encoders.py @@ -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):