libvcs._internal.run#

Misc. legacy helpers subprocess and finding VCS binaries.

libvcs._internal.run.run will be deprecated by libvcs._internal.subprocess.

Note

This is an internal API not covered by versioning policy.

class libvcs._internal.run.CmdLoggingAdapter(bin_name, keyword, *args, **kwargs)[source]#

Bases: logging.LoggerAdapter

Adapter for additional command-related data to logging.

Extends logging.LoggerAdapter’s functionality.

Mixes in additional context via logging.LoggerAdapter.process() for logging.Formatter when emitting log entries.

Parameters:
  • bin_name (str) – name of the command or vcs tool being wrapped, e.g. ‘git’

  • keyword (str) – directory basename, name of repo, hint, etc. e.g. ‘django’

process(self, msg, kwargs)[source]#

Add additional context information for loggers.

class libvcs._internal.run.ProgressCallbackProtocol[source]#

Bases: Protocol

Callback to report subprocess communication.

libvcs._internal.run.console_encoding#
libvcs._internal.run.console_to_str(s)[source]#

From pypa/pip project, pip.backwardwardcompat. License MIT.

libvcs._internal.run.mkdir_p(path)[source]#

Make directories recursively.

Parameters:

path (str) – path to create

libvcs._internal.run.run(args, bufsize=- 1, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, close_fds=True, shell=False, cwd=None, env=None, universal_newlines=False, startupinfo=None, creationflags=0, restore_signals=True, start_new_session=False, pass_fds=(), *, text=None, encoding=None, errors=None, user=None, group=None, extra_groups=None, umask=- 1, log_in_real_time=True, check_returncode=True, callback=None)[source]#

Run ‘args’ in a shell and return the combined contents of stdout and stderr (Blocking). Throws an exception if the command exits non-zero.

Keyword arguments are passthrough to subprocess.Popen.

Parameters:
  • args (list or str, or single str, if shell=True) – the command to run

  • shell (bool) – boolean indicating whether we are using advanced shell features. Use only when absolutely necessary, since this allows a lot more freedom which could be exploited by malicious code. See the warning here: http://docs.python.org/library/subprocess.html#popen-constructor

  • cwd (str) – dir command is run from. Defaults to path.

  • log_in_real_time (bool) – boolean indicating whether to read stdout from the subprocess in real time instead of when the process finishes.

  • check_returncode (bool) – Indicate whether a libvcs.exc.CommandError should be raised if return code is different from 0.

  • callback (ProgressCallbackProtocol) –

    callback to return output as a command executes, accepts a function signature of (output, timestamp). Example usage:

    def progress_cb(output, timestamp):
        sys.stdout.write(output)
        sys.stdout.flush()
    run(['git', 'pull'], callback=progress_cb)
    

  • bufsize (int) –

  • executable (Optional[libvcs._internal.types.StrOrBytesPath]) –

  • stdin (Optional[_FILE]) –

  • stdout (Optional[_FILE]) –

  • stderr (Optional[_FILE]) –

  • preexec_fn (Optional[Callable[[], Any]]) –

  • close_fds (bool) –

  • env (Optional[_ENV]) –

  • universal_newlines (bool) –

  • startupinfo (Optional[Any]) –

  • creationflags (int) –

  • restore_signals (bool) –

  • start_new_session (bool) –

  • pass_fds (Any) –

  • text (Optional[bool]) –

  • encoding (Optional[str]) –

  • errors (Optional[str]) –

  • user (Optional[Union[str, int]]) –

  • group (Optional[Union[str, int]]) –

  • extra_groups (Optional[Iterable[Union[str, int]]]) –

  • umask (int) –

libvcs._internal.run.which(exe=None, default_paths=['/bin', '/sbin', '/usr/bin', '/usr/sbin', '/usr/local/bin'])[source]#

Return path of bin. Python clone of /usr/bin/which.

from salt.util - https://www.github.com/saltstack/salt - license apache

Parameters:
  • exe (str) – Application to search PATHs for.

  • default_path (list) – Application to search PATHs for.

Returns:

Path to binary

Return type:

str