Removed single stray print statement
The StaticArgs _specs attribute is now an explicit parameter

The specifications used in defining a StaticArgs object are now
explicitly declared as a constant parameter (with the leading
underscore removed).
Updated method doc strings, regrouped toplevel imports
ListArgs values now an explicit parameter

The 'arg_name' parameter has also been renamed to 'list_key' and a
syntax error introduced by the previous commit has been fixed.
Binary operands now declared as explicit parameters

The operands 'first' and 'second' of StaticConcatenate and
StaticCartesianProduct now explicit, constant parameters.
LinearArgs definition and usage simplified

LinearArgs now always requires the end_value. The 'arg_name' parameter
has been renamed to 'key' and the 'value' parameter to
'start_value'. Default step count is now 2.
New Log specifier introduced for loading Lancet log files

The 'extract_log_specifications' method has also been moved from
StaticArgs to the new Log class with the shorter name 'extract_log'.
Introduced the Indexed specifier for cross-referencing specifiers

An Indexed specifier allows two separate specifiers to be merged
according to some unique index value. Useful for cross-referencing
logs with files, for instance.
Introduced the FilePattern specifier for locating specific files

The FilePattern specifier allows glob-style location of files using a
string pattern. This pattern also specifies the required metadata to
extract from the path string (appropriately typed) using a succinct
and readable syntax.
Introduced the LexSorted specifier for customized lexical sorting

Using LexSorted allows a specifier to be lexically according to an
ordered list of keys, each of which can specify ascending or
descending sort. Also added missing doc strings to Indexed.
Added method to BaseArgs to test if a given key is in a specifier

Added __contains__ method to BaseArgs to membership testing. This
allows you to quickly determine if a key is contained in a specifier
in either the constant or varying keys.
Pretty printing refactor using single approach for all specifiers

Implemented a unified mechanism for generating display strings with
__str__, __repr__ and _repr_pretty_ (IPython pprint). Displays all
positional arguments and only modified parameters that are set via
keywords in a specified, fixed order. Allows for flat (repr)and
indented representation (str, pretty.pprint).
HTML table output and display added to StaticArg specifiers

Intended for IPython, specifiers can be immediately displayed in
tabular form using the 'html' method. For this to work, the HTML
parameter needs to be set to the HTML class imported from
IPython.display. This avoids making IPython a core dependency.
Fix to docstring in StaticArgs
Moved log generation code into a Log Specifier staticmethod

New 'write_log' staticmethod of Log specifier designed to unify the
creation of log files and the addition of entries to existing logs.
Specifiers no longer callable - introduced caller helper utility.

Interface to Python code has been updated. Specifiers are no longer
callable and the 'caller' helper utility should be used instead. This
change has simplified a lot of code and should be easier to maintain.
Fixed pretty printing in review and removed use of pprint pformat

Pretty printing of specifiers improved in review and now constant
items shown (not just constant keys). Removed use of pformat as it
wasn't helping with readability.
Renamed 'caller' utility to 'using' for more natural useage
Option to save a launch as an IPython notebook (if available)

If IPython is available, offer the option to save the launch
specifiers as an IPython notebook. Notebook path relative to the
current working directory or to the $LANCET_NB_DIR environment
variable (if set).
Cleaner, shorter pretty printing code with new 'annotation' option

Simpler and clearer pretty printing implementation. New annotate
option inserts an additional informative comment with the #items,