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
以便在引发捕获的异常时更轻松地显示线程标识。
- exception() ExceptionWrapper | None ¶
如果发生异常,则返回
ExceptionWrapper
围绕着它。- 返回:
一个
ExceptionWrapper
管理以下项目的结果sys.exc_info
如果在线程执行期间引发异常,则返回。如果未发生异常,则返回None
取而代之的是。
在 1.0 版本加入.
- invoke.util.has_fileno(stream: IO) bool ¶
干净利落地确定
stream
有一个有用的.fileno()
。备注
此函数帮助确定给定的类似文件的对象是否可以与各种面向终端的模块和函数一起使用,例如
select
,termios
,以及tty
。对于其中的大多数,只需要一个文件;它们将运行,即使stream.isatty()
是False
。- 参数:
stream -- 一个类似文件的物体。
- 返回:
True
如果stream.fileno()
返回一个整数,False
否则(这包括当stream
缺少一个fileno
方法)。
在 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这样的异常,因为通常涉及多个线程。)