chore: add ast-grep rule to convert Optional[T] to T | None (#25560)

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
This commit is contained in:
-LAN-
2025-09-15 13:06:33 +08:00
committed by GitHub
parent 2e44ebe98d
commit bab4975809
394 changed files with 2555 additions and 2792 deletions

View File

@ -1,5 +1,5 @@
from collections.abc import Generator, Mapping
from typing import Optional, Union
from typing import Union
from sqlalchemy import select
from sqlalchemy.orm import Session
@ -53,8 +53,8 @@ class PluginAppBackwardsInvocation(BaseBackwardsInvocation):
app_id: str,
user_id: str,
tenant_id: str,
conversation_id: Optional[str],
query: Optional[str],
conversation_id: str | None,
query: str | None,
stream: bool,
inputs: Mapping,
files: list[dict],

View File

@ -1,5 +1,5 @@
from collections.abc import Generator, Mapping
from typing import Generic, Optional, TypeVar
from typing import Generic, TypeVar
from pydantic import BaseModel
@ -23,5 +23,5 @@ T = TypeVar("T", bound=dict | Mapping | str | bool | int | BaseModel)
class BaseBackwardsInvocationResponse(BaseModel, Generic[T]):
data: Optional[T] = None
data: T | None = None
error: str = ""

View File

@ -1,5 +1,5 @@
from collections.abc import Generator
from typing import Any, Optional
from typing import Any
from core.callback_handler.workflow_tool_callback_handler import DifyWorkflowCallbackHandler
from core.plugin.backwards_invocation.base import BaseBackwardsInvocation
@ -23,7 +23,7 @@ class PluginToolBackwardsInvocation(BaseBackwardsInvocation):
provider: str,
tool_name: str,
tool_parameters: dict[str, Any],
credential_id: Optional[str] = None,
credential_id: str | None = None,
) -> Generator[ToolInvokeMessage, None, None]:
"""
invoke tool

View File

@ -1,5 +1,4 @@
from datetime import datetime
from typing import Optional
from pydantic import BaseModel, Field, model_validator
@ -24,7 +23,7 @@ class EndpointProviderDeclaration(BaseModel):
"""
settings: list[ProviderConfig] = Field(default_factory=list)
endpoints: Optional[list[EndpointDeclaration]] = Field(default_factory=list[EndpointDeclaration])
endpoints: list[EndpointDeclaration] | None = Field(default_factory=list[EndpointDeclaration])
class EndpointEntity(BasePluginEntity):

View File

@ -1,5 +1,3 @@
from typing import Optional
from pydantic import BaseModel, Field, model_validator
from core.model_runtime.entities.provider_entities import ProviderEntity
@ -19,11 +17,11 @@ class MarketplacePluginDeclaration(BaseModel):
resource: PluginResourceRequirements = Field(
..., description="Specification of computational resources needed to run the plugin"
)
endpoint: Optional[EndpointProviderDeclaration] = Field(
endpoint: EndpointProviderDeclaration | None = Field(
None, description="Configuration for the plugin's API endpoint, if applicable"
)
model: Optional[ProviderEntity] = Field(None, description="Details of the AI model used by the plugin, if any")
tool: Optional[ToolProviderEntity] = Field(
model: ProviderEntity | None = Field(None, description="Details of the AI model used by the plugin, if any")
tool: ToolProviderEntity | None = Field(
None, description="Information about the tool functionality provided by the plugin, if any"
)
latest_version: str = Field(

View File

@ -1,6 +1,6 @@
import json
from enum import StrEnum, auto
from typing import Any, Optional, Union
from typing import Any, Union
from pydantic import BaseModel, Field, field_validator
@ -12,9 +12,7 @@ from core.workflow.nodes.base.entities import NumberType
class PluginParameterOption(BaseModel):
value: str = Field(..., description="The value of the option")
label: I18nObject = Field(..., description="The label of the option")
icon: Optional[str] = Field(
default=None, description="The icon of the option, can be a url or a base64 encoded image"
)
icon: str | None = Field(default=None, description="The icon of the option, can be a url or a base64 encoded image")
@field_validator("value", mode="before")
@classmethod
@ -74,15 +72,15 @@ class PluginParameterTemplate(BaseModel):
class PluginParameter(BaseModel):
name: str = Field(..., description="The name of the parameter")
label: I18nObject = Field(..., description="The label presented to the user")
placeholder: Optional[I18nObject] = Field(default=None, description="The placeholder presented to the user")
placeholder: I18nObject | None = Field(default=None, description="The placeholder presented to the user")
scope: str | None = None
auto_generate: Optional[PluginParameterAutoGenerate] = None
template: Optional[PluginParameterTemplate] = None
auto_generate: PluginParameterAutoGenerate | None = None
template: PluginParameterTemplate | None = None
required: bool = False
default: Optional[Union[float, int, str]] = None
min: Optional[Union[float, int]] = None
max: Optional[Union[float, int]] = None
precision: Optional[int] = None
default: Union[float, int, str] | None = None
min: Union[float, int] | None = None
max: Union[float, int] | None = None
precision: int | None = None
options: list[PluginParameterOption] = Field(default_factory=list)
@field_validator("options", mode="before")

View File

@ -2,7 +2,7 @@ import datetime
import re
from collections.abc import Mapping
from enum import StrEnum, auto
from typing import Any, Optional
from typing import Any
from packaging.version import InvalidVersion, Version
from pydantic import BaseModel, Field, field_validator, model_validator
@ -28,34 +28,34 @@ class PluginResourceRequirements(BaseModel):
class Permission(BaseModel):
class Tool(BaseModel):
enabled: Optional[bool] = Field(default=False)
enabled: bool | None = Field(default=False)
class Model(BaseModel):
enabled: Optional[bool] = Field(default=False)
llm: Optional[bool] = Field(default=False)
text_embedding: Optional[bool] = Field(default=False)
rerank: Optional[bool] = Field(default=False)
tts: Optional[bool] = Field(default=False)
speech2text: Optional[bool] = Field(default=False)
moderation: Optional[bool] = Field(default=False)
enabled: bool | None = Field(default=False)
llm: bool | None = Field(default=False)
text_embedding: bool | None = Field(default=False)
rerank: bool | None = Field(default=False)
tts: bool | None = Field(default=False)
speech2text: bool | None = Field(default=False)
moderation: bool | None = Field(default=False)
class Node(BaseModel):
enabled: Optional[bool] = Field(default=False)
enabled: bool | None = Field(default=False)
class Endpoint(BaseModel):
enabled: Optional[bool] = Field(default=False)
enabled: bool | None = Field(default=False)
class Storage(BaseModel):
enabled: Optional[bool] = Field(default=False)
enabled: bool | None = Field(default=False)
size: int = Field(ge=1024, le=1073741824, default=1048576)
tool: Optional[Tool] = Field(default=None)
model: Optional[Model] = Field(default=None)
node: Optional[Node] = Field(default=None)
endpoint: Optional[Endpoint] = Field(default=None)
storage: Optional[Storage] = Field(default=None)
tool: Tool | None = Field(default=None)
model: Model | None = Field(default=None)
node: Node | None = Field(default=None)
endpoint: Endpoint | None = Field(default=None)
storage: Storage | None = Field(default=None)
permission: Optional[Permission] = Field(default=None)
permission: Permission | None = Field(default=None)
class PluginCategory(StrEnum):
@ -67,17 +67,17 @@ class PluginCategory(StrEnum):
class PluginDeclaration(BaseModel):
class Plugins(BaseModel):
tools: Optional[list[str]] = Field(default_factory=list[str])
models: Optional[list[str]] = Field(default_factory=list[str])
endpoints: Optional[list[str]] = Field(default_factory=list[str])
tools: list[str] | None = Field(default_factory=list[str])
models: list[str] | None = Field(default_factory=list[str])
endpoints: list[str] | None = Field(default_factory=list[str])
class Meta(BaseModel):
minimum_dify_version: Optional[str] = Field(default=None)
version: Optional[str] = Field(default=None)
minimum_dify_version: str | None = Field(default=None)
version: str | None = Field(default=None)
@field_validator("minimum_dify_version")
@classmethod
def validate_minimum_dify_version(cls, v: Optional[str]) -> Optional[str]:
def validate_minimum_dify_version(cls, v: str | None) -> str | None:
if v is None:
return v
try:
@ -87,23 +87,23 @@ class PluginDeclaration(BaseModel):
raise ValueError(f"Invalid version format: {v}") from e
version: str = Field(...)
author: Optional[str] = Field(..., pattern=r"^[a-zA-Z0-9_-]{1,64}$")
author: str | None = Field(..., pattern=r"^[a-zA-Z0-9_-]{1,64}$")
name: str = Field(..., pattern=r"^[a-z0-9_-]{1,128}$")
description: I18nObject
icon: str
icon_dark: Optional[str] = Field(default=None)
icon_dark: str | None = Field(default=None)
label: I18nObject
category: PluginCategory
created_at: datetime.datetime
resource: PluginResourceRequirements
plugins: Plugins
tags: list[str] = Field(default_factory=list)
repo: Optional[str] = Field(default=None)
repo: str | None = Field(default=None)
verified: bool = Field(default=False)
tool: Optional[ToolProviderEntity] = None
model: Optional[ProviderEntity] = None
endpoint: Optional[EndpointProviderDeclaration] = None
agent_strategy: Optional[AgentStrategyProviderEntity] = None
tool: ToolProviderEntity | None = None
model: ProviderEntity | None = None
endpoint: EndpointProviderDeclaration | None = None
agent_strategy: AgentStrategyProviderEntity | None = None
meta: Meta
@field_validator("version")
@ -233,9 +233,9 @@ class PluginDependency(BaseModel):
type: Type
value: Github | Marketplace | Package
current_identifier: Optional[str] = None
current_identifier: str | None = None
class MissingPluginDependency(BaseModel):
plugin_unique_identifier: str
current_identifier: Optional[str] = None
current_identifier: str | None = None

View File

@ -1,7 +1,7 @@
from collections.abc import Mapping, Sequence
from datetime import datetime
from enum import StrEnum
from typing import Any, Generic, Optional, TypeVar
from typing import Any, Generic, TypeVar
from pydantic import BaseModel, ConfigDict, Field
@ -24,7 +24,7 @@ class PluginDaemonBasicResponse(BaseModel, Generic[T]):
code: int
message: str
data: Optional[T] = None
data: T | None = None
class InstallPluginMessage(BaseModel):
@ -174,7 +174,7 @@ class PluginVerification(BaseModel):
class PluginDecodeResponse(BaseModel):
unique_identifier: str = Field(description="The unique identifier of the plugin.")
manifest: PluginDeclaration
verification: Optional[PluginVerification] = Field(default=None, description="Basic verification information")
verification: PluginVerification | None = Field(default=None, description="Basic verification information")
class PluginOAuthAuthorizationUrlResponse(BaseModel):

View File

@ -1,4 +1,4 @@
from typing import Any, Literal, Optional
from typing import Any, Literal
from pydantic import BaseModel, ConfigDict, Field, field_validator
@ -35,7 +35,7 @@ class InvokeCredentials(BaseModel):
class PluginInvokeContext(BaseModel):
credentials: Optional[InvokeCredentials] = Field(
credentials: InvokeCredentials | None = Field(
default_factory=InvokeCredentials,
description="Credentials context for the plugin invocation or backward invocation.",
)
@ -50,7 +50,7 @@ class RequestInvokeTool(BaseModel):
provider: str
tool: str
tool_parameters: dict
credential_id: Optional[str] = None
credential_id: str | None = None
class BaseRequestInvokeModel(BaseModel):
@ -70,9 +70,9 @@ class RequestInvokeLLM(BaseRequestInvokeModel):
mode: str
completion_params: dict[str, Any] = Field(default_factory=dict)
prompt_messages: list[PromptMessage] = Field(default_factory=list)
tools: Optional[list[PromptMessageTool]] = Field(default_factory=list[PromptMessageTool])
stop: Optional[list[str]] = Field(default_factory=list[str])
stream: Optional[bool] = False
tools: list[PromptMessageTool] | None = Field(default_factory=list[PromptMessageTool])
stop: list[str] | None = Field(default_factory=list[str])
stream: bool | None = False
model_config = ConfigDict(protected_namespaces=())
@ -194,10 +194,10 @@ class RequestInvokeApp(BaseModel):
app_id: str
inputs: dict[str, Any]
query: Optional[str] = None
query: str | None = None
response_mode: Literal["blocking", "streaming"]
conversation_id: Optional[str] = None
user: Optional[str] = None
conversation_id: str | None = None
user: str | None = None
files: list[dict] = Field(default_factory=list)

View File

@ -1,5 +1,5 @@
from collections.abc import Generator
from typing import Any, Optional
from typing import Any
from core.agent.entities import AgentInvokeMessage
from core.plugin.entities.plugin import GenericProviderID
@ -82,10 +82,10 @@ class PluginAgentClient(BasePluginClient):
agent_provider: str,
agent_strategy: str,
agent_params: dict[str, Any],
conversation_id: Optional[str] = None,
app_id: Optional[str] = None,
message_id: Optional[str] = None,
context: Optional[PluginInvokeContext] = None,
conversation_id: str | None = None,
app_id: str | None = None,
message_id: str | None = None,
context: PluginInvokeContext | None = None,
) -> Generator[AgentInvokeMessage, None, None]:
"""
Invoke the agent with the given tenant, user, plugin, provider, name and parameters.

View File

@ -1,6 +1,6 @@
import binascii
from collections.abc import Generator, Sequence
from typing import IO, Optional
from typing import IO
from core.model_runtime.entities.llm_entities import LLMResultChunk
from core.model_runtime.entities.message_entities import PromptMessage, PromptMessageTool
@ -151,9 +151,9 @@ class PluginModelClient(BasePluginClient):
model: str,
credentials: dict,
prompt_messages: list[PromptMessage],
model_parameters: Optional[dict] = None,
tools: Optional[list[PromptMessageTool]] = None,
stop: Optional[list[str]] = None,
model_parameters: dict | None = None,
tools: list[PromptMessageTool] | None = None,
stop: list[str] | None = None,
stream: bool = True,
) -> Generator[LLMResultChunk, None, None]:
"""
@ -200,7 +200,7 @@ class PluginModelClient(BasePluginClient):
model: str,
credentials: dict,
prompt_messages: list[PromptMessage],
tools: Optional[list[PromptMessageTool]] = None,
tools: list[PromptMessageTool] | None = None,
) -> int:
"""
Get number of tokens for llm
@ -325,8 +325,8 @@ class PluginModelClient(BasePluginClient):
credentials: dict,
query: str,
docs: list[str],
score_threshold: Optional[float] = None,
top_n: Optional[int] = None,
score_threshold: float | None = None,
top_n: int | None = None,
) -> RerankResult:
"""
Invoke rerank
@ -414,7 +414,7 @@ class PluginModelClient(BasePluginClient):
provider: str,
model: str,
credentials: dict,
language: Optional[str] = None,
language: str | None = None,
):
"""
Get tts model voices

View File

@ -1,5 +1,5 @@
from collections.abc import Generator
from typing import Any, Optional
from typing import Any
from pydantic import BaseModel
@ -81,9 +81,9 @@ class PluginToolManager(BasePluginClient):
credentials: dict[str, Any],
credential_type: CredentialType,
tool_parameters: dict[str, Any],
conversation_id: Optional[str] = None,
app_id: Optional[str] = None,
message_id: Optional[str] = None,
conversation_id: str | None = None,
app_id: str | None = None,
message_id: str | None = None,
) -> Generator[ToolInvokeMessage, None, None]:
"""
Invoke the tool with the given tenant, user, plugin, provider, name, credentials and parameters.
@ -153,9 +153,9 @@ class PluginToolManager(BasePluginClient):
provider: str,
credentials: dict[str, Any],
tool: str,
conversation_id: Optional[str] = None,
app_id: Optional[str] = None,
message_id: Optional[str] = None,
conversation_id: str | None = None,
app_id: str | None = None,
message_id: str | None = None,
) -> list[ToolParameter]:
"""
get the runtime parameters of the tool