From 2883ad6764ecbc2c741090d5eab4afa6a5e0e9f4 Mon Sep 17 00:00:00 2001 From: Statxc Date: Mon, 6 Apr 2026 23:10:23 -0300 Subject: [PATCH] refactor(api): type plugin migration results with TypedDict (#34627) --- api/services/plugin/plugin_migration.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/api/services/plugin/plugin_migration.py b/api/services/plugin/plugin_migration.py index 442ccef1da..d6f6ee8086 100644 --- a/api/services/plugin/plugin_migration.py +++ b/api/services/plugin/plugin_migration.py @@ -5,7 +5,7 @@ import time from collections.abc import Mapping, Sequence from concurrent.futures import ThreadPoolExecutor from pathlib import Path -from typing import Any, TypedDict +from typing import TypedDict from uuid import uuid4 import click @@ -42,6 +42,16 @@ class _TenantPluginRecord(TypedDict): _tenant_plugin_adapter: TypeAdapter[_TenantPluginRecord] = TypeAdapter(_TenantPluginRecord) +class ExtractedPluginsDict(TypedDict): + plugins: dict[str, str] + plugin_not_exist: list[str] + + +class PluginInstallResultDict(TypedDict): + success: list[str] + failed: list[str] + + class PluginMigration: @classmethod def extract_plugins(cls, filepath: str, workers: int): @@ -310,7 +320,7 @@ class PluginMigration: Path(output_file).write_text(json.dumps(cls.extract_unique_plugins(extracted_plugins))) @classmethod - def extract_unique_plugins(cls, extracted_plugins: str) -> Mapping[str, Any]: + def extract_unique_plugins(cls, extracted_plugins: str) -> ExtractedPluginsDict: plugins: dict[str, str] = {} plugin_ids = [] plugin_not_exist = [] @@ -524,7 +534,7 @@ class PluginMigration: @classmethod def handle_plugin_instance_install( cls, tenant_id: str, plugin_identifiers_map: Mapping[str, str] - ) -> Mapping[str, Any]: + ) -> PluginInstallResultDict: """ Install plugins for a tenant. """