ANNOUNCE: Optik 1.1 released

Greg Ward
Sat, 17 Nov 2001 13:49:45 -0500

Optik 1.1

Optik is a powerful, flexible, extensible, easy-to-use command-line
parsing library for Python.  Using Optik, you can add intelligent,
sophisticated handling of command-line options to your scripts with very
little overhead.

Here's an example of using Optik to add some command-line options to a
simple script:

  from optik import OptionParser
  parser = OptionParser()
  parser.add_option("-f", "--file",
                    action="store", type="string", dest="filename",
                    help="write report to FILE", metavar="FILE")
  parser.add_option("-q", "--quiet",
                    action="store_false", dest="verbose", default=1,
                    help="don't print status messages to stdout")

  (options, args) = parser.parse_args()

With these few lines of code, users of your script can now do the
"usual thing" on the command-line:

  <yourscript> -f outfile --quiet
  <yourscript> -qfoutfile
  <yourscript> --file=outfile -q
  <yourscript> --quiet --file outfile

(All of these result in
  options.filename == "outfile"
  options.verbose == 0
...just as you might expect.)

Even niftier, users can run one of
  <yourscript> -h
  <yourscript> --help
and Optik will print out a brief summary of your script's optons:

  usage: <yourscript> [options]

    -h, --help           show this help message and exit
    -fFILE, --file=FILE  write report to FILE
    -q, --quiet          don't print status messages to stdout

That's just a taste of the flexibility Optik gives you in parsing your
command-line.  See the documentation included in the package for


Optik was written by Greg Ward <>

The latest version of Optik can be found at

Copyright (c) 2001 Gregory P. Ward.  All rights reserved.


  * Changed OptionParser.parse_args() method to allow interspersed
    options and positional arguments by default; can be disabled
    with disable_interspersed_args() method.  Reorganized the guts of
    the OptionParser class fairly heavily.

  * Split up into three scripts (test_optik,
    test_callback, and test_extend), and moved them all into
    the test/ directory.

  * Added the 'nargs' attribute to Option, which allows options to
    require more than one argument on the command line.  This
    enables eg.
      parser.add_option("-p", "--point",
                        action="append", nargs=3,
                        type="float", dest="points")
    to turn a command-line like this:
      --point 3.4 -5 95 -p 4 -4 6
    into this:
      options.points == [(3.4, -5.0, 95.0), (4.0, -4.0, 6.0)]

  * Fixed so the last default value explicitly specified for a
    particular option destination takes precedence, even if
    it's None.

Greg Ward - Unix bigot                        
Vote Cthulhu -- why settle for a lesser evil?