Skip to content
Back to top
View this page
Edit this page

# xonsh.procs.pipelines

Command pipeline tools.

class xonsh.procs.pipelines.CommandPipeline(specs)

  Represents a subprocess-mode command pipeline.

  Parameters:
    specs list of SubprocSpec

      Process specifications

  Attributes:
    spec SubprocSpec

      The last specification in specs

    proc Popen-like

      The process in procs

    ended bool

      Boolean for if the command has stopped executing.

    input str

      A string of the standard input.

    `output` str

      Non-blocking, lazy access to output

    errors str

      A string of the standard error.

    lines list of str

      The output lines

    starttime floats or None

      Pipeline start timestamp.

    `pipestatus` list of int or None

      Current status.

    `pipecode` int

      Current status.

  end(tee_output=True)

    End the pipeline, return the controlling terminal if needed.

    Main things done in self._end().

  get_formatted_lines(lines)

    Format output lines.

  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 = ('returncode', 'suspended', 'pid', 'args', 'alias', 'executed_cmd', 'timestamps', 'input', 'output', 'errors')
  attrnames_ext = ('stdin', 'stdout', 'stderr', 'stdin_redirect', 'stdout_redirect', 'stderr_redirect')
  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 pipecode

    Current status. 1 if any command in the pipeline returned non-zero or is still running, 0 if all succeeded.

  property pipestatus

    Current status. Return codes of all commands in the pipeline.

  property raw_err

    Errors as raw bytes.

  property raw_out

    Output as raw bytes.

  property returncode

    Process return code.

    `None` means the proc has not exited (typically a suspended or backgrounded pipeline). After a foreground pipeline has `end()`-ed this never returns `None`.

    Background: under load, `tee_stdout` can bail before the trailing `proc.wait()` in `iterraw` runs (e.g. an uncaught `OSError` while draining the pipe). `end()` then flips `self.ended = True` in its `finally` with `self.proc.returncode` still unset. The raise-check helpers conflated `None` with `0` (success) and silently swallowed real failures (#6456). Reap once more via `poll()` — non-blocking, so suspended/backgrounded pipelines still correctly report `None`.

  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)
  Parameters:
    specs list of SubprocSpec

      Process specifications

  Attributes:
    spec SubprocSpec

      The last specification in specs

    proc Popen-like

      The process in procs

    ended bool

      Boolean for if the command has stopped executing.

    input str

      A string of the standard input.

    `output` str

      Non-blocking, lazy access to output

    errors str

      A string of the standard error.

    lines list of str

      The output lines

    starttime floats or None

      Pipeline start timestamp.

    `pipestatus` list of int or None

      Current status.

    `pipecode` int

      Current status.

  end(tee_output=True)

    End the pipeline, return the controlling terminal if needed.

    Main things done in self._end().

  get_formatted_lines(lines)

    Format output lines.

  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 = ('returncode', 'suspended', 'pid', 'args', 'alias', 'executed_cmd', 'timestamps', 'input', 'output', 'errors')
  attrnames_ext = ('stdin', 'stdout', 'stderr', 'stdin_redirect', 'stdout_redirect', 'stderr_redirect')
  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 pipecode

    Current status. 1 if any command in the pipeline returned non-zero or is still running, 0 if all succeeded.

  property pipestatus

    Current status. Return codes of all commands in the pipeline.

  property raw_err

    Errors as raw bytes.

  property raw_out

    Output as raw bytes.

  property returncode

    Process return code.

    `None` means the proc has not exited (typically a suspended or backgrounded pipeline). After a foreground pipeline has `end()`-ed this never returns `None`.

    Background: under load, `tee_stdout` can bail before the trailing `proc.wait()` in `iterraw` runs (e.g. an uncaught `OSError` while draining the pipe). `end()` then flips `self.ended = True` in its `finally` with `self.proc.returncode` still unset. The raise-check helpers conflated `None` with `0` (success) and silently swallowed real failures (#6456). Reap once more via `poll()` — non-blocking, so suspended/backgrounded pipelines still correctly report `None`.

  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)

  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:
    pipeline CommandPipeline

      The pipeline whose prev procs we should close.

  getName()

    Return a string used for identification purposes only.

    This method is deprecated, use the name attribute instead.

  isDaemon()

    Return whether this thread is a daemon.

    This method is deprecated, use the daemon attribute instead.

  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. See also the module function enumerate().

  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()

    Runs the closing algorithm.

  setDaemon(daemonic)

    Set whether this thread is a daemon.

    This method is deprecated, use the .daemon property instead.

  setName(name)

    Set the name string for this thread.

    This method is deprecated, use the name attribute instead.

  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.

class xonsh.procs.pipelines.blocking_property(fget=None, fset=None, fdel=None, doc=None)

  Property that may block waiting for process completion.

  deleter(object, /)

    Descriptor to obtain a copy of the property with a different deleter.

  getter(object, /)

    Descriptor to obtain a copy of the property with a different getter.

  setter(object, /)

    Descriptor to obtain a copy of the property with a different setter.

  fdel
  fget
  fset

xonsh.procs.pipelines.resume_process(p)

  Sends SIGCONT to a process if possible.

xonsh.procs.pipelines.safe_readable(handle)

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

xonsh.procs.pipelines.safe_readlines(handle, hint=-1)

  Attempts to read lines without throwing an error.

xonsh.procs.pipelines.update_process_group(pipeline_group, background)