xonsh.procs.specs#

Subprocess specification and related utilities.

class xonsh.procs.specs.SubprocSpec(cmd, cls=<class 'subprocess.Popen'>, stdin=None, stdout=None, stderr=None, universal_newlines=False, close_fds=False, captured=False, env=None)[source]#

A container for specifying how a subprocess command should be executed.

Parameters:
cmdlist of str

Command to be run.

clsPopen-like

Class to run the subprocess with.

stdinfile-like

Popen file descriptor or flag for stdin.

stdoutfile-like

Popen file descriptor or flag for stdout.

stderrfile-like

Popen file descriptor or flag for stderr.

universal_newlinesbool

Whether or not to use universal newlines.

close_fdsbool

Whether or not to close the file descriptors when the process exits.

capturedbool or str, optional

The flag for if the subprocess is captured, may be one of: False for $[], ‘stdout’ for $(), ‘hiddenobject’ for ![], or ‘object’ for !().

envdict

Replacement environment to run the subporcess in.

Attributes:
argslist of str

Arguments as originally supplied.

aliaslist of str, callable, or None

The alias that was resolved for this command, if any.

binary_locstr or None

Path to binary to execute.

is_proxybool

Whether or not the subprocess is or should be run as a proxy.

backgroundbool

Whether or not the subprocess should be started in the background.

threadablebool

Whether or not the subprocess is able to be run in a background thread, rather than the main thread.

pipeline_indexint or None

The index number of this sepc into the pipeline that is being setup.

last_in_pipelinebool

Whether the subprocess is the last in the execution pipeline.

captured_stdoutfile-like

Handle to captured stdin

captured_stderrfile-like

Handle to captured stderr

stacklist of FrameInfo namedtuples or None

The stack of the call-site of alias, if the alias requires it. None otherwise.

classmethod build(cmd, *, cls=<class 'subprocess.Popen'>, **kwargs)[source]#

Creates an instance of the subprocess command, with any modifications and adjustments based on the actual cmd that was received.

prep_env_subproc(kwargs)[source]#

Prepares the environment to use in the subprocess.

prep_preexec_fn(kwargs, pipeline_group=None)[source]#

Prepares the ‘preexec_fn’ keyword argument

redirect_leading()[source]#

Manage leading redirects such as with ‘< input.txt COMMAND’.

redirect_trailing()[source]#

Manages trailing redirects.

resolve_alias()[source]#

Sets alias in command, if applicable.

resolve_alias_cls()[source]#

Determine which proxy class to run an alias with.

resolve_auto_cd()[source]#

Implements AUTO_CD functionality.

resolve_binary_loc()[source]#

Sets the binary location

resolve_executable_commands()[source]#

Resolve command executables, if applicable.

resolve_stack()[source]#

Computes the stack for a callable alias’s call-site, if needed.

run(*, pipeline_group=None)[source]#

Launches the subprocess and returns the object.

kwnames = ('stdin', 'stdout', 'stderr', 'universal_newlines', 'close_fds')#
property stderr#
property stdin#
property stdout#
xonsh.procs.specs.cmds_to_specs(cmds, captured=False, envs=None)[source]#

Converts a list of cmds to a list of SubprocSpec objects that are ready to be executed.

xonsh.procs.specs.default_signal_pauser(n, f)[source]#

Pauses a signal, as needed.

xonsh.procs.specs.get_script_subproc_command(fname, args)[source]#

Given the name of a script outside the path, returns a list representing an appropriate subprocess command to execute the script or None if the argument is not readable or not a script. Raises PermissionError if the script is not executable.

xonsh.procs.specs.is_app_execution_alias(fname)[source]#

App execution aliases behave strangly on Windows and Python. Here we try to detect if a file is an app execution alias.

xonsh.procs.specs.no_pg_xonsh_preexec_fn()[source]#

Default subprocess preexec function for when there is no existing pipeline group.

xonsh.procs.specs.run_subproc(cmds, captured=False, envs=None)[source]#

Runs a subprocess, in its many forms. This takes a list of ‘commands,’ which may be a list of command line arguments or a string, representing a special connecting character. For example:

$ ls | grep wakka

is represented by the following cmds:

[['ls'], '|', ['grep', 'wakka']]

Lastly, the captured argument affects only the last real command.

xonsh.procs.specs.safe_close(x)[source]#

Safely attempts to close an object.

xonsh.procs.specs.safe_open(fname, mode, buffering=-1)[source]#

Safely attempts to open a file in for xonsh subprocs.