integrations.factory
integrations/factory.py
1""" 2integrations/factory.py 3""" 4 5from typing import TYPE_CHECKING, Literal, NoReturn, TypeAlias, Union, overload 6 7from integrations.discord.adapter import ServiceAdapter as discord_adapter 8from integrations.slack.adapter import ServiceAdapter as slack_adapter 9from integrations.standard_io.adapter import ServiceAdapter as std_adapter 10from integrations.web.adapter import ServiceAdapter as web_adapter 11from libs.types import ServiceType 12 13if TYPE_CHECKING: 14 from libs.bootstrap.app_config import AppConfig 15 16 17AdapterType: TypeAlias = Union[ 18 slack_adapter, 19 discord_adapter, 20 web_adapter, 21 std_adapter, 22] 23"""アダプタインターフェース""" 24 25 26@overload 27def select_adapter(selected_service: Literal[ServiceType.SLACK], conf: "AppConfig") -> slack_adapter: ... 28 29 30@overload 31def select_adapter(selected_service: Literal[ServiceType.DISCORD], conf: "AppConfig") -> discord_adapter: ... 32 33 34@overload 35def select_adapter(selected_service: Literal[ServiceType.WEB], conf: "AppConfig") -> web_adapter: ... 36 37 38@overload 39def select_adapter(selected_service: Literal[ServiceType.STANDARD_IO], conf: "AppConfig") -> std_adapter: ... 40 41 42@overload 43def select_adapter(selected_service: Literal[ServiceType.UNKNOWN], conf: "AppConfig") -> NoReturn: ... 44 45 46@overload 47def select_adapter(selected_service: ServiceType, conf: "AppConfig") -> AdapterType: ... 48 49 50def select_adapter(selected_service: ServiceType, conf: "AppConfig") -> AdapterType: 51 """ 52 インターフェース選択 53 54 Args: 55 selected_service (ServiceType): 選択サービス 56 conf (AppConfig): 設定ファイル 57 58 Raises: 59 ValueError: 未定義サービス 60 61 Returns: 62 AdapterType: アダプタインターフェース 63 64 """ 65 match selected_service: 66 case ServiceType.SLACK: 67 return slack_adapter(conf.main_parser) 68 case ServiceType.DISCORD: 69 return discord_adapter(conf.main_parser) 70 case ServiceType.WEB: 71 return web_adapter(conf.main_parser) 72 case ServiceType.STANDARD_IO: 73 return std_adapter(conf.main_parser) 74 case _: 75 raise ValueError(f"Unknown service: {selected_service}")
AdapterType: TypeAlias =
integrations.slack.adapter.ServiceAdapter | integrations.discord.adapter.ServiceAdapter | integrations.web.adapter.ServiceAdapter | integrations.standard_io.adapter.ServiceAdapter
アダプタインターフェース
def
select_adapter( selected_service: libs.types.ServiceType, conf: libs.bootstrap.app_config.AppConfig) -> integrations.slack.adapter.ServiceAdapter | integrations.discord.adapter.ServiceAdapter | integrations.web.adapter.ServiceAdapter | integrations.standard_io.adapter.ServiceAdapter:
51def select_adapter(selected_service: ServiceType, conf: "AppConfig") -> AdapterType: 52 """ 53 インターフェース選択 54 55 Args: 56 selected_service (ServiceType): 選択サービス 57 conf (AppConfig): 設定ファイル 58 59 Raises: 60 ValueError: 未定義サービス 61 62 Returns: 63 AdapterType: アダプタインターフェース 64 65 """ 66 match selected_service: 67 case ServiceType.SLACK: 68 return slack_adapter(conf.main_parser) 69 case ServiceType.DISCORD: 70 return discord_adapter(conf.main_parser) 71 case ServiceType.WEB: 72 return web_adapter(conf.main_parser) 73 case ServiceType.STANDARD_IO: 74 return std_adapter(conf.main_parser) 75 case _: 76 raise ValueError(f"Unknown service: {selected_service}")
インターフェース選択
Arguments:
- selected_service (ServiceType): 選択サービス
- conf (AppConfig): 設定ファイル
Raises:
- ValueError: 未定義サービス
Returns:
AdapterType: アダプタインターフェース