util

class invoke.util.ExceptionHandlingThread(**kwargs: Any)

线程处理程序使父级更容易处理线程异常。

部分基于Fabric 1‘S线程处理器。另请参阅Fabric GH问题#204。

当直接使用时,可以用来代替常规 threading.Thread 。如果是子类,子类必须执行以下操作之一:

  • 供应 target__init__

  • 定义 _run() 而不是 run()

这是因为这个线程的全部要点是围绕线程的执行来包装行为;子类无法重新定义 run() 而不会破坏这一功能。

在 1.0 版本加入.

__init__(**kwargs: Any) None

创建一个新的异常处理线程实例。

所有常规用药 threading.Thread 关键字参数,通过 **kwargs 以便在引发捕获的异常时更轻松地显示线程标识。

__repr__() str

返回epr(Self)。

exception() ExceptionWrapper | None

如果发生异常,则返回 ExceptionWrapper 围绕着它。

返回:

一个 ExceptionWrapper 管理以下项目的结果 sys.exc_info 如果在线程执行期间引发异常,则返回。如果未发生异常,则返回 None 取而代之的是。

在 1.0 版本加入.

property is_dead: bool

退货 True 如果不是活动的,则具有存储的异常。

用于检测已异常和关闭的线程。

在 1.0 版本加入.

run() None

表示线程活动的方法。

您可以在子类中重写此方法。标准run()方法调用作为目标参数传递给对象构造函数的可调用对象(如果有的话),其中顺序参数和关键字参数分别取自args和kwargs参数。

invoke.util.has_fileno(stream: IO) bool

干净利落地确定 stream 有一个有用的 .fileno()

备注

此函数帮助确定给定的类似文件的对象是否可以与各种面向终端的模块和函数一起使用,例如 selecttermios ,以及 tty 。对于其中的大多数,只需要一个文件;它们将运行,即使 stream.isatty()False

参数:

stream -- 一个类似文件的物体。

返回:

True 如果 stream.fileno() 返回一个整数, False 否则(这包括当 stream 缺少一个 fileno 方法)。

在 1.0 版本加入.

invoke.util.helpline(obj: object) str | None

生成对象的第一个文档字符串行,如果没有文档字符串,则不生成。

在 1.0 版本加入.

invoke.util.isatty(stream: IO) bool | Any

干净利落地确定 stream 是一个TTY。

具体地说,首先尝试调用 stream.isatty() ,如果失败(例如,由于完全缺乏该方法),则回退到 os.isatty

备注

大多数情况下,我们实际上并不关心真正的TTY-ness,而只是关心流是否似乎有文件号(Per has_fileno )。然而,在某些情况下(特别是使用 pty.fork 为了呈现本地伪终端),我们需要告诉给定流是否具有有效的文件,但是 isn't 绑在一个实际的终端上。因此,这个函数。

参数:

stream -- 一个类似文件的物体。

返回:

取决于调用结果的布尔值 .isatty() 和/或 os.isatty

在 1.0 版本加入.

invoke.util.task_name_sort_key(name: str) Tuple[List[str], str]

用于对虚线任务名称进行排序的返回键元组,例如 sorted

在 1.0 版本加入.

class invoke.util.ExceptionWrapper(kwargs, type, value, traceback)

一个namedtuple包装一个由线程承载的异常&该线程的参数。主要用作 ExceptionHandlingThread (保留最初的例外情况)和 ThreadException (包含1..n这样的异常,因为通常涉及多个线程。)