mirror of
https://github.com/langgenius/dify.git
synced 2026-04-28 03:36:36 +08:00
refactor: replace bare dict with typed annotations in core plugin module (#35096)
This commit is contained in:
parent
a12d740a5d
commit
83b242be7b
@ -1,4 +1,5 @@
|
|||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
from pydantic import BaseModel, Field, model_validator
|
from pydantic import BaseModel, Field, model_validator
|
||||||
|
|
||||||
@ -31,7 +32,7 @@ class EndpointEntity(BasePluginEntity):
|
|||||||
entity of an endpoint
|
entity of an endpoint
|
||||||
"""
|
"""
|
||||||
|
|
||||||
settings: dict
|
settings: dict[str, Any]
|
||||||
tenant_id: str
|
tenant_id: str
|
||||||
plugin_id: str
|
plugin_id: str
|
||||||
expired_at: datetime
|
expired_at: datetime
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
from typing import Any
|
||||||
|
|
||||||
from graphon.model_runtime.entities.provider_entities import ProviderEntity
|
from graphon.model_runtime.entities.provider_entities import ProviderEntity
|
||||||
from pydantic import BaseModel, Field, computed_field, model_validator
|
from pydantic import BaseModel, Field, computed_field, model_validator
|
||||||
|
|
||||||
@ -40,7 +42,7 @@ class MarketplacePluginDeclaration(BaseModel):
|
|||||||
|
|
||||||
@model_validator(mode="before")
|
@model_validator(mode="before")
|
||||||
@classmethod
|
@classmethod
|
||||||
def transform_declaration(cls, data: dict):
|
def transform_declaration(cls, data: dict[str, Any]) -> dict[str, Any]:
|
||||||
if "endpoint" in data and not data["endpoint"]:
|
if "endpoint" in data and not data["endpoint"]:
|
||||||
del data["endpoint"]
|
del data["endpoint"]
|
||||||
if "model" in data and not data["model"]:
|
if "model" in data and not data["model"]:
|
||||||
|
|||||||
@ -123,7 +123,7 @@ class PluginDeclaration(BaseModel):
|
|||||||
|
|
||||||
@model_validator(mode="before")
|
@model_validator(mode="before")
|
||||||
@classmethod
|
@classmethod
|
||||||
def validate_category(cls, values: dict):
|
def validate_category(cls, values: dict[str, Any]) -> dict[str, Any]:
|
||||||
# auto detect category
|
# auto detect category
|
||||||
if values.get("tool"):
|
if values.get("tool"):
|
||||||
values["category"] = PluginCategory.Tool
|
values["category"] = PluginCategory.Tool
|
||||||
|
|||||||
@ -73,7 +73,7 @@ class PluginBasicBooleanResponse(BaseModel):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
result: bool
|
result: bool
|
||||||
credentials: dict | None = None
|
credentials: dict[str, Any] | None = None
|
||||||
|
|
||||||
|
|
||||||
class PluginModelSchemaEntity(BaseModel):
|
class PluginModelSchemaEntity(BaseModel):
|
||||||
|
|||||||
@ -49,7 +49,7 @@ class RequestInvokeTool(BaseModel):
|
|||||||
tool_type: Literal["builtin", "workflow", "api", "mcp"]
|
tool_type: Literal["builtin", "workflow", "api", "mcp"]
|
||||||
provider: str
|
provider: str
|
||||||
tool: str
|
tool: str
|
||||||
tool_parameters: dict
|
tool_parameters: dict[str, Any]
|
||||||
credential_id: str | None = None
|
credential_id: str | None = None
|
||||||
|
|
||||||
|
|
||||||
@ -209,7 +209,7 @@ class RequestInvokeEncrypt(BaseModel):
|
|||||||
opt: Literal["encrypt", "decrypt", "clear"]
|
opt: Literal["encrypt", "decrypt", "clear"]
|
||||||
namespace: Literal["endpoint"]
|
namespace: Literal["endpoint"]
|
||||||
identity: str
|
identity: str
|
||||||
data: dict = Field(default_factory=dict)
|
data: dict[str, Any] = Field(default_factory=dict)
|
||||||
config: list[BasicProviderConfig] = Field(default_factory=list)
|
config: list[BasicProviderConfig] = Field(default_factory=list)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -26,7 +26,7 @@ class PluginDatasourceManager(BasePluginClient):
|
|||||||
Fetch datasource providers for the given tenant.
|
Fetch datasource providers for the given tenant.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def transformer(json_response: dict[str, Any]) -> dict:
|
def transformer(json_response: dict[str, Any]) -> dict[str, Any]:
|
||||||
if json_response.get("data"):
|
if json_response.get("data"):
|
||||||
for provider in json_response.get("data", []):
|
for provider in json_response.get("data", []):
|
||||||
declaration = provider.get("declaration", {}) or {}
|
declaration = provider.get("declaration", {}) or {}
|
||||||
@ -68,7 +68,7 @@ class PluginDatasourceManager(BasePluginClient):
|
|||||||
Fetch datasource providers for the given tenant.
|
Fetch datasource providers for the given tenant.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def transformer(json_response: dict[str, Any]) -> dict:
|
def transformer(json_response: dict[str, Any]) -> dict[str, Any]:
|
||||||
if json_response.get("data"):
|
if json_response.get("data"):
|
||||||
for provider in json_response.get("data", []):
|
for provider in json_response.get("data", []):
|
||||||
declaration = provider.get("declaration", {}) or {}
|
declaration = provider.get("declaration", {}) or {}
|
||||||
@ -110,7 +110,7 @@ class PluginDatasourceManager(BasePluginClient):
|
|||||||
|
|
||||||
tool_provider_id = DatasourceProviderID(provider_id)
|
tool_provider_id = DatasourceProviderID(provider_id)
|
||||||
|
|
||||||
def transformer(json_response: dict[str, Any]) -> dict:
|
def transformer(json_response: dict[str, Any]) -> dict[str, Any]:
|
||||||
data = json_response.get("data")
|
data = json_response.get("data")
|
||||||
if data:
|
if data:
|
||||||
for datasource in data.get("declaration", {}).get("datasources", []):
|
for datasource in data.get("declaration", {}).get("datasources", []):
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
from typing import Any
|
||||||
|
|
||||||
from core.plugin.entities.endpoint import EndpointEntityWithInstance
|
from core.plugin.entities.endpoint import EndpointEntityWithInstance
|
||||||
from core.plugin.impl.base import BasePluginClient
|
from core.plugin.impl.base import BasePluginClient
|
||||||
from core.plugin.impl.exc import PluginDaemonInternalServerError
|
from core.plugin.impl.exc import PluginDaemonInternalServerError
|
||||||
@ -5,7 +7,12 @@ from core.plugin.impl.exc import PluginDaemonInternalServerError
|
|||||||
|
|
||||||
class PluginEndpointClient(BasePluginClient):
|
class PluginEndpointClient(BasePluginClient):
|
||||||
def create_endpoint(
|
def create_endpoint(
|
||||||
self, tenant_id: str, user_id: str, plugin_unique_identifier: str, name: str, settings: dict
|
self,
|
||||||
|
tenant_id: str,
|
||||||
|
user_id: str,
|
||||||
|
plugin_unique_identifier: str,
|
||||||
|
name: str,
|
||||||
|
settings: dict[str, Any],
|
||||||
) -> bool:
|
) -> bool:
|
||||||
"""
|
"""
|
||||||
Create an endpoint for the given plugin.
|
Create an endpoint for the given plugin.
|
||||||
@ -49,7 +56,9 @@ class PluginEndpointClient(BasePluginClient):
|
|||||||
params={"plugin_id": plugin_id, "page": page, "page_size": page_size},
|
params={"plugin_id": plugin_id, "page": page, "page_size": page_size},
|
||||||
)
|
)
|
||||||
|
|
||||||
def update_endpoint(self, tenant_id: str, user_id: str, endpoint_id: str, name: str, settings: dict):
|
def update_endpoint(
|
||||||
|
self, tenant_id: str, user_id: str, endpoint_id: str, name: str, settings: dict[str, Any]
|
||||||
|
) -> bool:
|
||||||
"""
|
"""
|
||||||
Update the settings of the given endpoint.
|
Update the settings of the given endpoint.
|
||||||
"""
|
"""
|
||||||
|
|||||||
@ -80,7 +80,7 @@ class PluginModelClient(BasePluginClient):
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
def validate_provider_credentials(
|
def validate_provider_credentials(
|
||||||
self, tenant_id: str, user_id: str | None, plugin_id: str, provider: str, credentials: dict
|
self, tenant_id: str, user_id: str | None, plugin_id: str, provider: str, credentials: dict[str, Any]
|
||||||
) -> bool:
|
) -> bool:
|
||||||
"""
|
"""
|
||||||
validate the credentials of the provider
|
validate the credentials of the provider
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
from collections.abc import Sequence
|
from collections.abc import Sequence
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
from requests import HTTPError
|
from requests import HTTPError
|
||||||
|
|
||||||
@ -263,7 +264,7 @@ class PluginInstaller(BasePluginClient):
|
|||||||
original_plugin_unique_identifier: str,
|
original_plugin_unique_identifier: str,
|
||||||
new_plugin_unique_identifier: str,
|
new_plugin_unique_identifier: str,
|
||||||
source: PluginInstallationSource,
|
source: PluginInstallationSource,
|
||||||
meta: dict,
|
meta: dict[str, Any],
|
||||||
) -> PluginInstallTaskStartResponse:
|
) -> PluginInstallTaskStartResponse:
|
||||||
"""
|
"""
|
||||||
Upgrade a plugin.
|
Upgrade a plugin.
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user