0.75.0
======

Execute
-------

- use timer loop to drive both subprocess and pty instead of signals
- do not strip any output before passwords
- keep Execute as convenience function; actual class changed to Job


0.74.41
=======

change Execute pty default back to False as I encountered issues with
forked processes forking other processes

use signal to provide timeout when pty is False on non-Windows systems;
(Windows systems are out of luck until Python 3.3)


0.74.40
=======

If Execute times out, modify resulting object instead of raising


0.74.38
=======

change Execute pty default on non-Windows systems to True


0.74.35
=======

allow other scriptionified modules to be imported
remove ability for Script to be used as a plain function


0.74.34
=======

arguments to Execute passed as a list no longer get quotes around them
reenable -h for help
do not show command name as a list in --help


0.74.33
=======

enhance Execute pty support
allow multiple passwords / raise if no password available


0.74.31
=======

--version now recognizes 'version', '__version__', 'VERSION', and
'__VERSION__'


0.74.30
=======

do not strip leading/trailing whitespace from Execute output


0.74.29
=======

-v only means 'verbose' if v has not been used as an abbreviation for some
other argument
remove whitespace from script __doc__ when printing help


0.74.28
=======

Execute: new 'interactive' paramater:
  False  -> only store output
  'echo' -> echo output as soon as feasible (and store)


0.74.26
=======

Execute: raise ExecuteTimeoutError when pty is True and timeout is exceeded;
all Execute*Error now have an attribute, process, that contains the Execute
attempt


0.74.25
=======

Execute: close error pipe when done reading (avoids resource leakage in long-
running processes)


0.74.24
=======

change mail() to not require a server (will attempt to use the server in the
recipients' address) or the port (defaults to 25); also, if message is a
string it will have its To, Cc, and Bcc fields split on comma to determine
recipients; finally, it will return a dictionary of recipients and error
information (if any) -- an empty dict means mail went to everyone


0.74.23
=======

better usage of docstrings in help output


0.74.21
=======

use 'help()' instead of raising exceptions for user errors
quote args that contain white space
fix writing error output from child


0.74.20
=======

inject script_verbosity


0.74.17
=======

use None as default for a MULTI option when specified in header (not
(None, ) )


0.74.16
=======

fix regression: parameter type from def will be used if none in Spec
fix regression: show script name in help output
fix help display when Scription has no function
show module __doc__ with help display
change global help to show commands and their doc strings; specific
command help will show details
always inject 'script_name' and 'script_command_name'
fix CHANGES file (not at 0.75 yet!)


0.74.15
=======

allow _params in commands to not be annotated
treat underscore and dash the same in command names


0.74.13
=======

allow returncode to be specified when using abort() or help()


0.74.12
=======

inject 'script_name' in to script's globals
add script_name to abort() and help() output
list all subcommands when --help is requested


0.74.10
=======

add wait_and_check(seconds, period=1): is True until <seconds> have elapsed,
and waits <period> seconds each check


0.73.08
=======

decode OrmFile (default is utf-8)


0.74.06
=======

decode command-line to unicode under Python2 (Python3 does this for us)


0.74.03
=======

add --version and --all-versions as scription built-ins


0.74.00
=======

add --verbose as a built-in


0.73.00
=======

converted from modules to package
added CHANGES and LICENSE files
