[Python-Dev] Python 2.7b1 and argparse's version action

Nick Coghlan ncoghlan at gmail.com
Sun Apr 18 13:03:34 CEST 2010


Tobias Herp wrote:
> *Before Python 2.7 reaches productivity stage*, IMNSHO the following
> changes should be applied to argparse.py:
> 
> - removal of the deprecation warnings
> - removal of the default usage of '-v'
>   with the version information facility
> 
> This is a very simple thing to do; I'd happily provide a patch.
> (The only complicated task might be to make the unit tests reflect the
> change;  but for a start, 7 lines of the test_main function could be
> dropped.)
> 
> Just for the records, this is what optparse does:
> - it defines -h and --help for the help (unless suppressed)
> - it defines --version for the version (if version argument given)
> This is how it should be (regarding the version, at least).
> This is how the vast majority of *x tools looks like.
> No reason to change this behaviour.
> 
> What do you think?

I can see Steven's argument from an argparse point of view, but I think
he is taking backwards compatibility to an unhealthy extreme.

Deprecating a perfectly valid option *just* because someone might be
relying on -v instead of -V as the shorthand for version? A phrase
involving babies and bathwater comes to mind...

I would be a lot happier if argparse as a standard library module just
followed optparse's lead here (i.e. defined '--version' only and punted
on the shorthand form).

To deal with this in a backwards compatible way while remaining on the
path to more conventional behaviour, I suggest the following:

1. For Python 2.7, deprecate *just* the "-v" default behaviour for the
version. This means "--version" and "-v" will be set to invoke different
actions when the version argument is supplied (the latter will trigger a
deprecation warning if supplied, while the former will work normally).

2. For Python 3.2, don't create the "-v" shorthand at all (i.e. only
create "--version").

Cheers,
Nick.

-- 
Nick Coghlan   |   ncoghlan at gmail.com   |   Brisbane, Australia
---------------------------------------------------------------


More information about the Python-Dev mailing list