From 0d9becd060448533197e63054d9a3b9d6427e17c Mon Sep 17 00:00:00 2001 From: jyong <718720800@qq.com> Date: Thu, 18 Sep 2025 10:51:47 +0800 Subject: [PATCH] fix version missing --- api/core/plugin/entities/plugin.py | 1 + api/services/plugin/dependencies_analysis.py | 25 +++++++++++++++----- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/api/core/plugin/entities/plugin.py b/api/core/plugin/entities/plugin.py index 57012bf495..c504e0e11f 100644 --- a/api/core/plugin/entities/plugin.py +++ b/api/core/plugin/entities/plugin.py @@ -178,6 +178,7 @@ class PluginDependency(BaseModel): class Marketplace(BaseModel): marketplace_plugin_unique_identifier: str + version: str | None = None @property def plugin_unique_identifier(self) -> str: diff --git a/api/services/plugin/dependencies_analysis.py b/api/services/plugin/dependencies_analysis.py index 9879248bbd..cdc73ea2ab 100644 --- a/api/services/plugin/dependencies_analysis.py +++ b/api/services/plugin/dependencies_analysis.py @@ -1,3 +1,4 @@ +import re from configs import dify_config from core.helper import marketplace from core.plugin.entities.plugin import PluginDependency, PluginInstallationSource @@ -49,13 +50,25 @@ class DependenciesAnalysisService: for dependency in dependencies: unique_identifier = dependency.value.plugin_unique_identifier if unique_identifier in missing_plugin_unique_identifiers: - leaked_dependencies.append( - PluginDependency( - type=dependency.type, - value=dependency.value, - current_identifier=missing_plugin_unique_identifiers[unique_identifier].current_identifier, + if dependency.type == PluginDependency.Type.Marketplace: + version = re.search(r":(?P[0-9]+(?:\.[0-9]+){2}(?:[+-][0-9A-Za-z.-]+)?)(?:@|$)", unique_identifier) + if version: + dependency.value.version = version.group("version") + leaked_dependencies.append( + PluginDependency( + type=dependency.type, + value=dependency.value, + current_identifier=missing_plugin_unique_identifiers[unique_identifier].current_identifier, + ) + ) + else: + leaked_dependencies.append( + PluginDependency( + type=dependency.type, + value=dependency.value, + current_identifier=missing_plugin_unique_identifiers[unique_identifier].current_identifier, + ) ) - ) return leaked_dependencies