@finalclass ExecProcessA running exec as two byte iterators, a wait(), and an idempotent kill().
Built by Session.spawn, never by a constructor: a process with no exec behind it is one
whose every method fails in a way that looks like a dead VM.
Constructor
Section titled “Constructor”ExecProcess declares no __new__ or __init__, so it is not constructed directly: an instance comes back from another call in this package.
Properties
Section titled “Properties”exec_id
Section titled “exec_id”exec_id: strThe exec id, which is the idempotency key: Session.exec(exec_id) reattaches to it.
gaps: list[OutputGap]Every byte range the daemon couldn’t replay, under gap_policy="event". Empty under
the default policy, where a gap raises from both iterators instead.
stderr
Section titled “stderr”stderr: ByteStreamThe child’s standard error. Order is kept within each side and isn’t recoverable
between them; ExecHandle.stream() has the interleaving.
stdout
Section titled “stdout”stdout: ByteStreamThe child’s standard output. The same iterator every time, since two over one side would split its bytes between them.
Methods
Section titled “Methods”def kill() -> boolSignals the whole process group. Idempotent: False means nothing was signalled
because the group was already gone, which is the outcome a kill wanted, so a caller
can call this in a finally without guarding it.
kill_async
Section titled “kill_async”def kill_async() -> boolThe awaitable twin of kill.
def wait(timeout: SupportsFloat | SupportsIndex | None = None) -> ExecResultPolls the daemon’s exec record until the command is done, or raises TimeoutError.
From the record, not from the iterators ending: a stream that stopped carrying bytes
is the same observation for a cut connection and a finished command. A timeout hasn’t
touched the exec, so a caller can wait again. timeout defaults to ExecHandle.wait’s.
wait_async
Section titled “wait_async”def wait_async(timeout: SupportsFloat | SupportsIndex | None = None) -> ExecResultThe awaitable twin of wait. Cancelling it leaves the exec untouched.
Special methods
Section titled “Special methods”__repr__
Section titled “__repr__”def __repr__() -> strProvenance
Section titled “Provenance”This page is generated from bindings/microvms-py/microvms.pyi by Griffe 2.3.0, run from site/scripts/gen-reference.mjs on every pnpm run sync, so an edit made here is overwritten by the next run.
To change the page, change the doc comment in the binding’s Rust source, then regenerate the declarations with mise run stubs. mise run stubs:check fails when the committed file no longer matches the source.