melobot.ctx

class melobot.ctx.Context[源代码]

基类:Generic[T]

上下文对象,本质是对 contextvars.ContextVar 操作的封装

继承该基类,可以实现自己的上下文对象。 任何时候不应该直接实例化该类,而是应该继承实现子类,再使用子类

__init__(ctx_name: str, lookup_exc_cls: type[BaseException], lookup_exc_tip: str | None = None) None[源代码]

初始化一个上下文对象

参数:
  • ctx_name (str) -- 上下文的名称(唯一)

  • lookup_exc_cls (type[BaseException]) -- 当试图获取上下文值失败时,抛出的异常

  • lookup_exc_tip (str | None) -- 当试图获取上下文值失败时,抛出异常的附加说明

返回类型:

None

get() T[源代码]

在当前上下文中,获取本上下文对象的上下文值

返回:

上下文对象的上下文值

返回类型:

T

try_get() T | None[源代码]

get() 类似,但不存在上下文对象时返回 None

返回:

上下文对象的上下文值

返回类型:

T | None

add(ctx: T) Token[T][源代码]

在当前上下文中,添加一个上下文值

参数:

ctx (T) -- 上下文值

返回:

contextvars.Token 对象

返回类型:

Token[T]

remove(token: Token[T]) None[源代码]

移除当前上下文中的上下文值

参数:

token (Token[T]) -- 添加时返回的 contextvars.Token 对象

返回类型:

None

unfold(obj: T) Generator[T, None, None][源代码]

展开一个上下文值为 obj 的上下文环境,返回上下文管理器

上下文管理器可 yield 上下文值,退出上下文管理器作用域后自动清理

参数:

obj (T) -- 上下文值

返回类型:

Generator[T, None, None]