vistir.cmdparse module

exception vistir.cmdparse.ScriptEmptyError[source]

Bases: ValueError

class vistir.cmdparse.Script(command, args=None)[source]

Bases: object

Parse a script line (in Pipfile’s [scripts] section).

This always works in POSIX mode, even on Windows.

args
cmdify()[source]

Encode into a cmd-executable string.

This re-implements CreateProcess’s quoting logic to turn a list of arguments into one single string for the shell to interpret.

  • All double quotes are escaped with a backslash.
  • Existing backslashes before a quote are doubled, so they are all escaped properly.
  • Backslashes elsewhere are left as-is; cmd will interpret them literally.

The result is then quoted into a pair of double quotes to be grouped.

An argument is intentionally not quoted if it does not contain whitespaces. This is done to be compatible with Windows built-in commands that don’t work well with quotes, e.g. everything with echo, and DOS-style (forward slash) switches.

The intended use of this function is to pre-process an argument list before passing it into subprocess.Popen(..., shell=True).

See also: https://docs.python.org/3/library/subprocess.html#converting-argument-sequence

command
extend(extra_args)[source]
classmethod parse(value)[source]