2024-07-24 02:36:46 +08:00
|
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
|
"""
|
|
|
|
|
Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved
|
|
|
|
|
|
|
|
|
|
@Time : 2024/7/24 上午12:02
|
|
|
|
|
@Author : snowykami
|
|
|
|
|
@Email : snowykami@outlook.com
|
|
|
|
|
@File : model.py
|
|
|
|
|
@Software: PyCharm
|
|
|
|
|
"""
|
|
|
|
|
from types import ModuleType
|
|
|
|
|
from typing import Optional
|
|
|
|
|
|
|
|
|
|
from pydantic import BaseModel
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class PluginMetadata(BaseModel):
|
|
|
|
|
"""
|
2024-08-08 18:06:03 +08:00
|
|
|
|
轻雪插件元数据,由插件编写者提供,name为必填项
|
2024-07-24 02:36:46 +08:00
|
|
|
|
"""
|
|
|
|
|
name: str
|
2024-08-08 18:06:03 +08:00
|
|
|
|
description: str = ""
|
2024-07-24 02:36:46 +08:00
|
|
|
|
usage: str = ""
|
|
|
|
|
type: str = ""
|
|
|
|
|
homepage: str = ""
|
|
|
|
|
running_in_main: bool = True # 是否在主进程运行
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Plugin(BaseModel):
|
|
|
|
|
"""
|
|
|
|
|
存储插件信息
|
|
|
|
|
"""
|
|
|
|
|
model_config = {
|
|
|
|
|
'arbitrary_types_allowed': True
|
|
|
|
|
}
|
|
|
|
|
name: str
|
|
|
|
|
"""插件名称 例如plugin_loader"""
|
|
|
|
|
module: ModuleType
|
|
|
|
|
"""插件模块对象"""
|
|
|
|
|
module_name: str
|
|
|
|
|
"""点分割模块路径 例如a.b.c"""
|
|
|
|
|
metadata: Optional[PluginMetadata] = None
|
|
|
|
|
|
|
|
|
|
def __hash__(self):
|
|
|
|
|
return hash(self.module_name)
|