melobot

melobot 顶级对象与方法

melobot.lazy_load(namespace: dict[str, Any], location: str, item: str | None = None, alias: str | None = None) str[源代码]

惰性加载模块的方法

指定的模块或者对象,在发生第一次属性访问时触发加载,并同步修改 namespace 字典中对应键值。

在完成加载后与常规的 import 语句效果无异,但需要略微注意未加载时的一些行为。 例如未加载时 print 对象,行为可能就不一致。

# 典型的使用方法:
if TYPE_CHECKING:
    import matplotlib as mpl
    import matplotlib.font_manager as fm
    import PIL
    from matplotlib import pyplot as plt
else:
    _g = globals()
    lazy_load(_g, "matplotlib", alias="mpl")
    lazy_load(_g, "matplotlib.font_manager", alias="fm")
    lazy_load(_g, "PIL")
    lazy_load(_g, "matplotlib", item="pyplot", alias="plt")

假设有导入语句:

import xxx

import xxx as zzz

from xxx import yyy

from xxx import yyy as zzz

参数:
  • namespace (dict[str, Any]) -- 当前模块的 globals() 字典

  • location (str) -- import 语句中 xxx 的部分

  • item (str | None) -- import 语句中 yyy 的部分,无则为空

  • alias (str | None) -- import 语句中 zzz 的部分,无则为空

返回:

惰性加载对象的 repr 字符串,用于调试

返回类型:

str

melobot.add_import_fallback(*names: str) None[源代码]

添加未导入模块或包的导入回退,非线程安全

绝大多数情况下,melobot 都能处理好导入行为。 但在极少数情况下,某些包或模块可能需要回退到默认的导入机制

使用此方法,将模块名以 names 起始的模块或包标记为需要回退

参数:

names (str) -- 需要回退的模块或包名称的起始字符串

返回类型:

None

melobot.MODULE_EXTS

模块扩展名元组,包含当前平台所有可加载的模块扩展名。优先级从高到低,且与操作系统平台有关

melobot.install_exc_hook() None[源代码]

安装 melobot 默认异常格式化的钩子

在 Jupyter 或 IPython 中使用时,需要手动调用该方法安装

但在普通的脚本环境中,导入时已自动安装

返回类型:

None

melobot.uninstall_exc_hook() None[源代码]

卸载 melobot 默认异常格式化的钩子

在任意环境中皆可使用

返回类型:

None

melobot.set_traceback_style(hide_internal: bool = True, flip: bool = False) None[源代码]

melobot 默认异常格式化启用时,设置异常回溯栈的格式化风格

参数:
  • hide_internal (bool) -- 是否隐藏 melobot 内部的栈帧

  • flip (bool) -- 是否折叠异常栈帧,只显示文件和行号,而不是具体行的代码

返回类型:

None

melobot 元信息

class melobot.MetaInfo[源代码]

基类:object

melobot 项目只读元信息

ver: ClassVar[str]

melobot 版本

ver_info: ClassVar[VersionInfo]

melobot 版本信息

name: ClassVar[str]

melobot 项目名称

desc: ClassVar[str]

melobot 项目描述

src: ClassVar[str]

melobot 项目地址

pkg_path: ClassVar[Path]

melobot 顶级包路径

melobot ascii art 图标

class melobot._meta.VersionInfo[源代码]

基类:NamedTuple

版本信息元组

major: int

主要版本号

变更时伴随重大架构更新(下一代 melobot 才会更改)

minor: int

次要版本号

变更时伴随重要的功能更新

micro: int

微版本号

变更时伴随不重要的功能更新,或是漏洞/错误修复

releaselevel: Literal['alpha', 'beta', 'pre-release', 'final']

发行级别

micro 更新,一般直接使用 final 发行级别

minor 更新,可能历经:
  • alpha -> beta -> pre-release -> final (极少)

  • pre-release -> final (较多)

  • final (较多)

major 更新,一定历经:
  • alpha -> beta -> pre-release -> final

serial: int

发行序列号,若 releaselevel 为 "final",则该值与 micro 相同

否则可以视为具体 releaselevel 的子版本号,相当于 nano 级版本号