- Force
/bin/shto be the shell inSshMachine.session()(#111) - Added
islink()andunlink()to path objects (#100, #103) - Added
accessto path objects - Faster
whichimplementation (#98) - Several minor bug fixes
- Moved
atomicandunixutilsinto the newfspackage (file-system related utilities) - Dropped
plumbum.utilslegacy shortcut in favor ofplumbum.path.utils - Bugfix: the left-hand-side process of a pipe wasn't waited on, leading to zombies (#89)
- Added
RelativePath(the result ofPath.relative_to) - Fixed more text alignment issues in
cli.Application.help() - Introduced
ask()andchoosetocli.terminal - Bugfix: Path comparison operators were wrong
- Added connection timeout to
RemoteMachine
Command.popen: a new argument,new_sessionmay be passed toCommand.popen, which runs the given in a new session (setsidon POSIX,CREATE_NEW_PROCESS_GROUPon Windows)Command.Popen: args can now also be a list (previously, it was required to be a tuple). Seelocal.daemonize: run commands as full daemons (double-fork andsetsid) 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 vianohup(not really a daemon, but good enough)atomic: Atomic file operations (AtomicFile,AtomicCounterFileandPidFile)copyandmove: thesrcargument 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
- 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
passwordparameter, which relies on sshpass to feed the password tossh. This is a security risk, but it's occasionally necessary. Use this with caution! - Commands now have a
machineattribute 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, which (respectively) computes the difference between two paths and splits paths into lists of nodes
- cli:
Predicatebecame a class decorator (it exists solely for pretty-printing anyway) - PuttyMachine: bugfix
- Path: added chmod
- Path: added link and symlink
- Path:
walk()now applies filter recursively (#64) - Commands: added Append redirect
- Commands: fix
_subprocessissue (#59) - Commands: add
__file__to module hack (#66) - Paramiko: add 'username' and 'password'
- Paramiko: add 'timeout' and 'look_for_keys'
- Python 3: fix #56 and #55
- Paramiko integration #10
- CLI: now with built-in support for sub-commands. See also: #43
- The "import hack" has moved to the package's
__init__.py, to make it importable directly #45 - Paths now support
chmod(on POSIX platform) #49 - The argument name of a
SwitchAttrcan now be given to it (defaults toVALUE) #46
- Windows: path are no longer converted to lower-case, but
__eq__and__hash__operate on the lower-cased result #38 - Properly handle empty strings in the argument list #41
- Relaxed type-checking of
LocalPathandRemotePath#35 - Added
PuttyMachinefor Windows users that relies onplinkandpscp(instead ofsshandscp) #37
- Rename
cli.CountingAttrtocli.CountOf - Moved to Travis continuous integration
- Added
unixutils - Added
chownanduid/gid - Lots of fixes and updates to the doc
- Full list of issues
Initial release