元信息¶
melobot 在顶级模块提供只读的项目元信息 MetaInfo,以及结构化版本号对象 VersionInfo。它们适合用于诊断信息、插件兼容性提示、CLI 输出和定位安装位置,而不需要依赖私有实现文件。
MetaInfo¶
MetaInfo 的属性都定义在类上,应直接通过类名读取:
from melobot import MetaInfo
print(MetaInfo.name) # "melobot"
print(MetaInfo.ver) # 版本字符串
print(MetaInfo.src) # 项目地址
print(MetaInfo.pkg_path) # 顶级包的 pathlib.Path
属性 |
含义 |
|---|---|
|
项目名称 |
|
项目描述 |
|
项目源码地址 |
|
当前版本字符串;与 |
|
当前版本的 |
|
已安装 melobot 顶级包所在的绝对 |
|
用于终端展示的 ASCII 图标文本 |
from melobot import MetaInfo
def diagnostics() -> dict[str, str]:
return {
"framework": MetaInfo.name,
"version": MetaInfo.ver,
"package_path": str(MetaInfo.pkg_path),
}
print(MetaInfo.logo)
这些属性是只读的。不要尝试修改它们来伪装版本或重定向框架路径;需要记录应用自身的信息,应单独定义配置对象。
VersionInfo¶
VersionInfo 是一个具名元组,字段结构与 Python 常见的版本信息一致:
from melobot import MetaInfo, VersionInfo
version: VersionInfo = MetaInfo.ver_info
print(version.major, version.minor, version.micro)
print(version.releaselevel, version.serial)
字段 |
含义 |
|---|---|
|
主版本号;重大架构更新时变化 |
|
次版本号;重要功能更新时变化 |
|
微版本号;一般功能更新或修复时变化 |
|
|
|
非正式发行阶段的序列号;正式版时与 |
版本比较应优先比较结构化字段,而不是依赖版本字符串的字典序:
from melobot import MetaInfo
version = MetaInfo.ver_info
if (version.major, version.minor) < (3, 4):
raise RuntimeError("此插件需要 melobot 3.4 或更新版本")
releaselevel 适合在开发、测试或预发行环境中提示兼容性风险。若插件要求严格的版本范围,仍建议使用包管理器的依赖声明作为第一道约束,并把运行时判断作为清晰的错误提示。
总结¶
使用 MetaInfo 读取框架身份、路径和当前版本;需要依据版本做逻辑判断时使用 MetaInfo.ver_info 的结构化字段。它们是诊断和兼容性辅助信息,不应替代包元数据中的依赖约束或应用自身的配置。
下一篇将介绍:CLI 界面。