watchers
¶
- class invoke.watchers.FailingResponder(pattern: str, response: str, sentinel: str)¶
Variant of
Responder
which is capable of detecting incorrect responses.This class adds a
sentinel
parameter to__init__
, and itssubmit
will raiseResponseNotAccepted
if it detects that sentinel value in the stream.New in version 1.0.
- __init__(pattern: str, response: str, sentinel: str) None ¶
Imprint this
Responder
with necessary parameters.- Parameters:
pattern – A raw string (e.g.
r"\[sudo\] password for .*:"
) which will be turned into a regular expression.response – The string to submit to the subprocess’ stdin when
pattern
is detected.
- class invoke.watchers.Responder(pattern: str, response: str)¶
A parameterizable object that submits responses to specific patterns.
Commonly used to implement password auto-responds for things like
sudo
.New in version 1.0.
- __init__(pattern: str, response: str) None ¶
Imprint this
Responder
with necessary parameters.- Parameters:
pattern – A raw string (e.g.
r"\[sudo\] password for .*:"
) which will be turned into a regular expression.response – The string to submit to the subprocess’ stdin when
pattern
is detected.
- class invoke.watchers.StreamWatcher¶
A class whose subclasses may act on seen stream data from subprocesses.
Subclasses must exhibit the following API; see
Responder
for a concrete example.__init__
is completely up to each subclass, though as usual, subclasses of subclasses should be careful to make use ofsuper
where appropriate.submit
must accept the entire current contents of the stream being watched, as a string, and may optionally return an iterable of strings (or act as a generator iterator, i.e. multiple calls toyield <string>
), which will each be written to the subprocess’ standard input.
Note
StreamWatcher
subclasses exist in part to enable state tracking, such as detecting when a submitted password didn’t work & erroring (or prompting a user, or etc). Such bookkeeping isn’t easily achievable with simple callback functions.Note
StreamWatcher
subclassesthreading.local
so that its instances can be used to ‘watch’ both subprocess stdout and stderr in separate threads.New in version 1.0.