PEP proposal optparse

James Nicolson jlnicolson at gmail.com
Thu Sep 18 07:02:07 EDT 2008


Perhaps it is better to keep descriptions short and store longer
descriptions elsewhere, but there are many programs that have long
descriptions, for example try: ls --help (at least on my machine a lot
of these descriptions are quite long).

2008/9/18 James Mills <prologic at shortcircuit.net.au>:
> Hi James,
>
> I can't say I really agree with your
> proposal. I tend to keep the help
> descriptions of my options short
> and concise and to the point.
>
> Also, one must use the language's
> features (indentation) to your advantage,
> as doing so ensure readability.
>
> For example (from my bhimport tool):
>
> <snippet>
> def parse_options():
>   """parse_options() -> opts, args
>
>   Parse any command-line options given returning both
>   the parsed options and arguments.
>   """
>
>   parser = optparse.OptionParser(usage=USAGE, version=VERSION)
>
>   parser.add_option("", "--date-format",
>         action="store",type="str", default="%d/%m/%Y",
>         dest="dateFormat",
>         help="date format string")
>   parser.add_option("", "--time-format",
>         action="store", type="str", default="%H:%M:%S",
>         dest="timeFormat",
>         help="time format string")
>   parser.add_option("", "--datetime-format",
>         action="store", type="str", default="%H:%M:%S %d/%m/%Y",
>         dest="datetimeFormat",
>         help="datetime format string")
>
>   opts, args = parser.parse_args()
>
>   if len(args) < 2:
>      parser.print_help()
>      raise SystemExit, 1
>
>   return opts, args
> </snippet>
>
> As you can see (as long as you're
> reading this in fixed-width fonts)
> it _is_ very readable.
>
> cheers
> James
>
> On 9/18/08, James <jlnicolson at gmail.com> wrote:
>> Hi,
>>
>>  I would like to know your thoughts on a proposed change to optparse
>>  that I have planned. It is possible to add default values to multiple
>>  options using the set_defaults. However, when adding descriptions to
>>  options the developer has to specify it in each add_option() call.
>>  This results in unreadable code such as:
>>
>>     parser.add_option('-q', '--quiet'    , action="store_false",
>>  dest='verbose',
>>         help = 'Output less information')
>>     parser.add_option('-o', '--output'   , type='string',
>>  dest='castordir'       , metavar='<DIR>'       ,
>>         help = 'specify the wanted CASTOR directory where to store the
>>  results tarball')
>>     parser.add_option('-r', '--prevrel'  , type='string',
>>  dest='previousrel'     , metavar='<DIR>'       ,
>>         help = 'Top level dir of previous release for regression
>>  analysis'             )
>>
>>  The same code could become much more readable if there was an
>>  equivalent method of set_defaults for the description/help of the
>>  option. The same code could then become:
>>
>>     parser.set_description(
>>         verbose          = 'Output less information',
>>         castordir        = 'specify the wanted CASTOR directory where
>>  to store the results tarball',
>>         previousrel      = 'Top level dir of previous release for
>>  regression analysis')
>>
>>     parser.add_option('-q', '--quiet'    , action="store_false",
>>  dest='verbose')
>>     parser.add_option('-o', '--output'   , type='string',
>>  dest='castordir'       , metavar='<DIR>'       )
>>     parser.add_option('-r', '--prevrel'  , type='string',
>>  dest='previousrel'     , metavar='<DIR>'       )
>>
>>  Help descriptions can often be quite long and separating them in this
>>  fashion would, IMHO, be desirable.
>>
>>  Kind Regards,
>>  James Nicolson
>>
>>
>>  --
>>  http://mail.python.org/mailman/listinfo/python-list
>>
>
>
> --
> --
> -- "Problems are solved by method"
>



More information about the Python-list mailing list