| @@ -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 | |||
| @@ -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 | |||
| } | |||
| @@ -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) | |||
| @@ -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): | |||