watchers

class invoke.watchers.FailingResponder(pattern: str, response: str, sentinel: str)

的变体 Responder 其能够检测不正确的响应。

这个类添加了一个 sentinel 参数设置为 __init__ ,以及它的 submit 将筹集 ResponseNotAccepted 如果它在流中检测到该前哨数值。

在 1.0 版本加入.

__init__(pattern: str, response: str, sentinel: str) None

把这个印下来 Responder 以及必要的参数。

参数:
  • pattern -- 原始字符串(例如 r"\[sudo\] password for .*:" ),它将被转换为正则表达式。

  • response -- 在以下情况下提交给子进程的stdin的字符串 pattern 被检测到。

submit(stream: str) Generator[str, None, None]

对……采取行动 stream 数据,可能会返回响应。

参数:

stream (str) -- 自会话开始以来在该流上读取的所有数据。

返回:

一个可迭代的 str (可能为空)。

在 1.0 版本加入.

class invoke.watchers.Responder(pattern: str, response: str)

提交对特定模式的响应的可参数化对象。

通常用于实现密码自动响应,例如 sudo

在 1.0 版本加入.

__init__(pattern: str, response: str) None

把这个印下来 Responder 以及必要的参数。

参数:
  • pattern -- 原始字符串(例如 r"\[sudo\] password for .*:" ),它将被转换为正则表达式。

  • response -- 在以下情况下提交给子进程的stdin的字符串 pattern 被检测到。

pattern_matches(stream: str, pattern: str, index_attr: str) Iterable[str]

通用的“使用索引搜索流中的模式”行为。

在这里和一些希望同时跟踪多个模式的子类中使用。

参数:
  • stream (str) -- 相同的数据传递到 submit

  • pattern (str) -- 要搜索的模式。

  • index_attr (str) -- 要使用的索引属性的名称。

返回:

字符串匹配的可迭代数。

在 1.0 版本加入.

submit(stream: str) Generator[str, None, None]

对……采取行动 stream 数据,可能会返回响应。

参数:

stream (str) -- 自会话开始以来在该流上读取的所有数据。

返回:

一个可迭代的 str (可能为空)。

在 1.0 版本加入.

class invoke.watchers.StreamWatcher

其子类可以作用于来自子进程的SAW流数据的类。

子类必须显示以下API;请参见 Responder 来看一个具体的例子。

  • __init__ 完全取决于每个子类,尽管像往常一样,子类 of 子类应该小心地使用 super 在适当的情况下。

  • submit 必须接受正在观察的流的全部当前内容作为字符串,并可以选择返回字符串的可迭代(或充当生成器迭代器,即多次调用 yield <string> ),每个都将被写入子流程的标准输入。

备注

StreamWatcher 子类的存在部分是为了启用状态跟踪,例如检测提交的密码何时不起作用&出错(或提示用户等)。使用简单的回调函数很难实现这样的记账。

备注

StreamWatcher 子类 threading.local 这样,它的实例就可以用来“监视”单独线程中的stdout和stderr的子进程。

在 1.0 版本加入.

submit(stream: str) Iterable[str]

对……采取行动 stream 数据,可能会返回响应。

参数:

stream (str) -- 自会话开始以来在该流上读取的所有数据。

返回:

一个可迭代的 str (可能为空)。

在 1.0 版本加入.