xonsh.procs.pipelines#

Command pipeline tools.

class xonsh.procs.pipelines.CommandPipeline(specs)[source]#

Represents a subprocess-mode command pipeline.

Parameters
specslist of SubprocSpec

Process specifications

Attributes
specSubprocSpec

The last specification in specs

procPopen-like

The process in procs

endedbool

Boolean for if the command has stopped executing.

inputstr

A string of the standard input.

outputstr

Non-blocking, lazy access to output

errorsstr

A string of the standard error.

lineslist of str

The output lines

starttimefloats or None

Pipeline start timestamp.

end(tee_output=True)[source]#

End the pipeline, return the controlling terminal if needed.

Main things done in self._end().

itercheck()[source]#

Iterates through the command lines and throws an error if the returncode is non-zero.

iterraw()[source]#

Iterates through the last stdout, and returns the lines exactly as found.

resume(job, tee_output=True)[source]#
stream_stderr(lines)[source]#

Streams lines to sys.stderr and the errors attribute.

tee_stdout()[source]#

Writes the process stdout to the output variable, line-by-line, and yields each line. This may optionally accept lines (in bytes) to iterate over, in which case it does not call iterraw().

property alias#

Alias the process used.

property args#

Arguments to the process.

attrnames = ('stdin', 'stdout', 'stderr', 'pid', 'returncode', 'args', 'alias', 'stdin_redirect', 'stdout_redirect', 'stderr_redirect', 'timestamps', 'executed_cmd', 'input', 'output', 'errors')#
property err#

Error messages as a string.

property executed_cmd#

The resolve and executed command.

property inp#

Creates normalized input string from args.

nonblocking = (<class '_io.BytesIO'>, <class 'xonsh.procs.readers.NonBlockingFDReader'>, <class 'xonsh.procs.readers.ConsoleParallelReader'>)#
property out#

Output value as a str.

property output#

Non-blocking, lazy access to output

property pid#

Process identifier.

property raw_err#

Errors as raw bytes.

property raw_out#

Output as raw bytes.

property returncode#

Process return code, waits until command is completed.

property rtn#

Alias to return code.

property stderr#

Process stderr.

property stderr_postfix#

Postfix to print after stderr, as bytes.

property stderr_prefix#

Prefix to print in front of stderr, as bytes.

property stderr_redirect#

Redirection used for stderr.

property stdin#

Process stdin.

property stdin_redirect#

Redirection used for stdin.

property stdout#

Process stdout.

property stdout_redirect#

Redirection used for stdout.

property timestamps#

The start and end time stamps.

class xonsh.procs.pipelines.HiddenCommandPipeline(specs)[source]#
Parameters
specslist of SubprocSpec

Process specifications

Attributes
specSubprocSpec

The last specification in specs

procPopen-like

The process in procs

endedbool

Boolean for if the command has stopped executing.

inputstr

A string of the standard input.

outputstr

Non-blocking, lazy access to output

errorsstr

A string of the standard error.

lineslist of str

The output lines

starttimefloats or None

Pipeline start timestamp.

end(tee_output=True)#

End the pipeline, return the controlling terminal if needed.

Main things done in self._end().

itercheck()#

Iterates through the command lines and throws an error if the returncode is non-zero.

iterraw()#

Iterates through the last stdout, and returns the lines exactly as found.

resume(job, tee_output=True)#
stream_stderr(lines)#

Streams lines to sys.stderr and the errors attribute.

tee_stdout()#

Writes the process stdout to the output variable, line-by-line, and yields each line. This may optionally accept lines (in bytes) to iterate over, in which case it does not call iterraw().

property alias#

Alias the process used.

property args#

Arguments to the process.

attrnames = ('stdin', 'stdout', 'stderr', 'pid', 'returncode', 'args', 'alias', 'stdin_redirect', 'stdout_redirect', 'stderr_redirect', 'timestamps', 'executed_cmd', 'input', 'output', 'errors')#
property err#

Error messages as a string.

property executed_cmd#

The resolve and executed command.

property inp#

Creates normalized input string from args.

nonblocking = (<class '_io.BytesIO'>, <class 'xonsh.procs.readers.NonBlockingFDReader'>, <class 'xonsh.procs.readers.ConsoleParallelReader'>)#
property out#

Output value as a str.

property output#

Non-blocking, lazy access to output

property pid#

Process identifier.

property raw_err#

Errors as raw bytes.

property raw_out#

Output as raw bytes.

property returncode#

Process return code, waits until command is completed.

property rtn#

Alias to return code.

property stderr#

Process stderr.

property stderr_postfix#

Postfix to print after stderr, as bytes.

property stderr_prefix#

Prefix to print in front of stderr, as bytes.

property stderr_redirect#

Redirection used for stderr.

property stdin#

Process stdin.

property stdin_redirect#

Redirection used for stdin.

property stdout#

Process stdout.

property stdout_redirect#

Redirection used for stdout.

property timestamps#

The start and end time stamps.

class xonsh.procs.pipelines.PrevProcCloser(pipeline)[source]#

Previous process closer thread for pipelines whose last command is itself unthreadable. This makes sure that the pipeline is driven forward and does not deadlock.

Parameters
pipelineCommandPipeline

The pipeline whose prev procs we should close.

getName()#
isDaemon()#
is_alive()#

Return whether the thread is alive.

This method returns True just before the run() method starts until just after the run() method terminates. The module function enumerate() returns a list of all alive threads.

join(timeout=None)#

Wait until the thread terminates.

This blocks the calling thread until the thread whose join() method is called terminates – either normally or through an unhandled exception or until the optional timeout occurs.

When the timeout argument is present and not None, it should be a floating point number specifying a timeout for the operation in seconds (or fractions thereof). As join() always returns None, you must call is_alive() after join() to decide whether a timeout happened – if the thread is still alive, the join() call timed out.

When the timeout argument is not present or None, the operation will block until the thread terminates.

A thread can be join()ed many times.

join() raises a RuntimeError if an attempt is made to join the current thread as that would cause a deadlock. It is also an error to join() a thread before it has been started and attempts to do so raises the same exception.

run()[source]#

Runs the closing algorithm.

setDaemon(daemonic)#
setName(name)#
start()#

Start the thread’s activity.

It must be called at most once per thread object. It arranges for the object’s run() method to be invoked in a separate thread of control.

This method will raise a RuntimeError if called more than once on the same thread object.

property daemon#

A boolean value indicating whether this thread is a daemon thread.

This must be set before start() is called, otherwise RuntimeError is raised. Its initial value is inherited from the creating thread; the main thread is not a daemon thread and therefore all threads created in the main thread default to daemon = False.

The entire Python program exits when only daemon threads are left.

property ident#

Thread identifier of this thread or None if it has not been started.

This is a nonzero integer. See the get_ident() function. Thread identifiers may be recycled when a thread exits and another thread is created. The identifier is available even after the thread has exited.

property name#

A string used for identification purposes only.

It has no semantics. Multiple threads may be given the same name. The initial name is set by the constructor.

property native_id#

Native integral thread ID of this thread, or None if it has not been started.

This is a non-negative integer. See the get_native_id() function. This represents the Thread ID as reported by the kernel.

xonsh.procs.pipelines.pause_call_resume(p, f, *args, **kwargs)[source]#

For a process p, this will call a function f with the remaining args and and kwargs. If the process cannot accept signals, the function will be called.

Parameters
pPopen object or similar
fcallable
argsremaining arguments
kwargskeyword arguments
xonsh.procs.pipelines.safe_readable(handle)[source]#

Attempts to find if the handle is readable without throwing an error.

xonsh.procs.pipelines.safe_readlines(handle, hint=- 1)[source]#

Attempts to read lines without throwing an error.

xonsh.procs.pipelines.update_process_group(pipeline_group, background)[source]#