- Force
/bin/sh
to be the shell inSshMachine.session()
(#111) - Added
islink()
andunlink()
to path objects (#100, #103) - Added
access
to path objects - Faster
which
implementation (#98) - Several minor bug fixes
- Moved
atomic
andunixutils
into the newfs
package (file-system related utilities) - Dropped
plumbum.utils
legacy 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()
andchoose
tocli.terminal
- Bugfix: Path comparison operators were wrong
- Added connection timeout to
RemoteMachine
Command.popen
: a new argument,new_session
may be passed toCommand.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). 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
,AtomicCounterFile
andPidFile
)copy
andmove
: thesrc
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
- 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 to feed the password tossh
. 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, 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
- Path: added chmod
- Path: added link and symlink
- Path:
walk()
now applies filter recursively (#64) - Commands: added Append redirect
- Commands: fix
_subprocess
issue (#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
SwitchAttr
can 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
LocalPath
andRemotePath
#35 - Added
PuttyMachine
for Windows users that relies onplink
andpscp
(instead ofssh
andscp
) #37
- Rename
cli.CountingAttr
tocli.CountOf
- Moved to Travis continuous integration
- Added
unixutils
- Added
chown
anduid
/gid
- Lots of fixes and updates to the doc
- Full list of issues
Initial release