plumbum v1.4.1 Release Notes

    • ๐Ÿ‘ฎ Force /bin/sh to be the shell in SshMachine.session() (#111 <https://github.com/tomerfiliba/plumbum/pull/111>_)
    • โž• Added islink() and unlink() to path objects (#100 <https://github.com/tomerfiliba/plumbum/pull/100>, #103 <https://github.com/tomerfiliba/plumbum/pull/103>)
    • โž• Added access to path objects
    • Faster which implementation (#98 <https://github.com/tomerfiliba/plumbum/pull/98>_)
    • ๐Ÿ›  Several minor bug fixes

    1.4

    • ๐Ÿ“ฆ Moved atomic and unixutils into the new fs package (file-system related utilities)
    • โฌ‡๏ธ Dropped plumbum.utils legacy shortcut in favor of plumbum.path.utils
    • ๐Ÿ›  Bugfix: the left-hand-side process of a pipe wasn't waited on, leading to zombies (#89 <https://github.com/tomerfiliba/plumbum/pull/89>_)
    • โž• Added RelativePath (the result of Path.relative_to)
    • ๐Ÿ›  Fixed more text alignment issues in cli.Application.help()
    • Introduced ask() and choose to cli.terminal
    • ๐Ÿ›  Bugfix: Path comparison operators were wrong
    • โž• Added connection timeout to RemoteMachine

    1.3

    • Command.popen: a new argument, new_session may be passed to Command.popen, which runs the given in a new session (setsid on POSIX, CREATE_NEW_PROCESS_GROUP on Windows)
    • ๐Ÿ‘€ Command.Popen: args can now also be a list (previously, it was required to be a tuple). See
    • local.daemonize: run commands as full daemons (double-fork and setsid) on POSIX systems, or detached from their controlling console and parent (on Windows).
    • list_processes: return a list of running process (local/remote machines)
    • SshMachine.nohup: "daemonize" remote commands via nohup (not really a daemon, but good enough)
    • atomic: Atomic file operations (AtomicFile, AtomicCounterFile and PidFile)
    • ๐Ÿšš copy and move: the src argument can now be a list of files to move, e.g., copy(["foo", "bar"], "/usr/bin")
    • list local and remote processes
    • ๐Ÿ‘ cli: better handling of text wrapping in the generated help message
    • 0๏ธโƒฃ cli: add a default main() method that checks for unknown subcommands
    • terminal: initial commit (get_terminal_size)
    • ๐Ÿ“ฆ packaging: the package was split into subpackages; it grew too big for a flat namespace. imports are not expected to be broken by this change
    • ๐Ÿง SshMachine: added password parameter, which relies on sshpass <http://linux.die.net/man/1/sshpass>_ to feed the password to ssh. This is a security risk, but it's occasionally necessary. Use this with caution!
    • Commands now have a machine attribute that points to the machine they run on
    • Commands gained setenv, which creates a command with a bound environment
    • ๐Ÿ›  Remote path: several fixes to stat (StatRes)
    • ๐Ÿ“ฆ cli: add lazily-loaded subcommands (e.g., MainApp.subcommand("foo", "my.package.foo.FooApp")), which are imported on demand
    • โœ… Paths: added relative_to and split <https://github.com/tomerfiliba/plumbum/blob/c224058bcefaf5c00fe2295389887c7ebc9d5132/tests/test_local.py#L53>_, which (respectively) computes the difference between two paths and splits paths into lists of nodes
    • ๐Ÿ–จ cli: Predicate became a class decorator (it exists solely for pretty-printing anyway)
    • ๐Ÿ›  PuttyMachine: bugfix <https://github.com/tomerfiliba/plumbum/pull/85>_

    1.2

    • Path: added chmod <https://github.com/tomerfiliba/plumbum/pull/49>_
    • Path: added link and symlink <https://github.com/tomerfiliba/plumbum/issues/65>_
    • Path: walk() now applies filter recursively (#64 <https://github.com/tomerfiliba/plumbum/issues/64>_)
    • Commands: added Append redirect <https://github.com/tomerfiliba/plumbum/pull/54>_
    • Commands: fix _subprocess issue (#59 <https://github.com/tomerfiliba/plumbum/issues/59>_)
    • Commands: add __file__ to module hack (#66 <https://github.com/tomerfiliba/plumbum/issues/66>_)
    • Paramiko: add 'username' and 'password' <https://github.com/tomerfiliba/plumbum/pull/52>_
    • Paramiko: add 'timeout' and 'look_for_keys' <https://github.com/tomerfiliba/plumbum/pull/67>_
    • Python 3: fix #56 <https://github.com/tomerfiliba/plumbum/issues/56>_ and #55 <https://github.com/tomerfiliba/plumbum/pull/55>_

    1.1

    • Paramiko <http://pypi.python.org/pypi/paramiko/1.8.0>_ integration (#10 <https://github.com/tomerfiliba/plumbum/issues/10>_)
    • โœ… CLI: now with built-in support for sub-commands <https://plumbum.readthedocs.io/en/latest/cli.html#sub-commands>. See also: #43 <https://github.com/tomerfiliba/plumbum/issues/43>
    • The "import hack" has moved to the package's __init__.py, to make it importable directly (#45 <https://github.com/tomerfiliba/plumbum/issues/45>_)
    • ๐Ÿ‘ Paths now support chmod (on POSIX platform) (#49 <https://github.com/tomerfiliba/plumbum/pull/49>_)
    • 0๏ธโƒฃ The argument name of a SwitchAttr can now be given to it (defaults to VALUE) (#46 <https://github.com/tomerfiliba/plumbum/pull/46>_)