Changes :
* Factored the help-formatting code out of OptionParser into
some new classes (HelpFormatter and subclasses) in help.py. This
should make it a lot easier to customize how help is formatted.
* Added the notion of "option groups": an OptionParser can now
contain several option groups, each which contains several options.
The main purpose of this is to enable sensibly-grouped help output,
but it opens up all sorts of interesting (and largely untested)
possibilities for code to throw whole option groups around instead
of individual options. Added two new classes: OptionGroup, and
OptionContainer for code common to OptionParser and OptionGroup.
(OptionContainer should be invisible to programmers using Optik).
* Added the 'description' attribute and set_description() method to
both OptionParser and OptionGroup (actually OptionContainer).
Again, this is to make help output more useful.
* Made it easier for OptionParser subclasses to decide whether
they should have the standard "help" option, by moving the logic
from class level to the _populate_option_list() method.
* Added the "choice" option type, which is just a string type
constrained to a fixed set of values.
* Added method get_default_values() to OptionParser.
* Rewrote how OptionParser recognizes abbreviated long
options; removed a redundant internal instance attribute.
* Simplify parsing logic in OptionParser a tad by relocating a loop
and renaming _process_arg() to _process_args().
- Updated my email address
Changes since Optik-1.2 :
* Fixed a couple of lurking bugs found by PyChecker.
* You can now get away with not supplying an option's type,
no matter the action: Optik now assumes a default type of "string".
* You can now get away with not supplying an option's destination:
Optik now derives a default destination from the first long option,
or the first short option if no long options were given. Eg. an
option string "--foo-bar" has the default destination 'foo_bar'.
* Refactored both Option's and OptionParser's constructors to
make life easier for people extending Optik.
* Added the "examples/" subdirectory -- this is a repository of
examples of extending and using Optik; the goal is to provide
canonical implementations of various features that I don't want to
add to Optik proper, but that are occasionally requested. (Also,
this gives me a good place to test how Optik's extensibility.)
* Added support for long and complex option types, mainly for
completeness (patch by Matthew Mueller).
* Added make_option() as an alias for the Option constructor, because
someday there might be many Option classes (in which case
make_option() will become a factory function).
* Added the examples/ directory to the source distribution -- this
demonstrates various ways to extend Optik.