Steven Bethard schrieb: > On Sun, Apr 18, 2010 at 3:31 AM, Tobias Herp <tobias.h...@gmx.de> wrote: >> To put it short: >> *Argparse should simply do this like optparse does already.* >> I.e., use '--version', '--help' and '-h' by default, but not '-v'. > [snip] >> What happened was the following: >> Completely unnecessarily, the 'version' constructor argument is now >> deprecated. > [snip] >> The deprecation of the 'version' argument press-gangs people to replace >> it by >> parser.add_argument('--version', action='version', >> version='<the version>', # the only common part >> help="show program's version number and exit") > > What Tobias has conveniently omitted is that there was not much > agreement on what the default behavior of the version flag should be.
Well, the mail was quite long already, and the issue-tracker issue was linked. > Things that were proposed: > > * Use both -v and --version This is very unusual. I don't know of a single example other than existing argparse. Incompatible to existing optparse usage. > * Use both -V and --version A very common combination; many programs which support --version accompany it with -V. However, if we'd add '-V' to the default option strings, we would likely break existing programs which worked around the so-far default. > * Use just --version IMO the only way, and the way optparse does it. > * Print out just the version string > * Print out program name with the version string If this is an issue: With optparse, the version argument value is printed, which is often something like '%prog '+VERSION (for argparse, '%(prog)s '+VERSION or '%%(prog)s %s' % VERSION). This way, the decision is left to the programmer. Completely agreeable, as far as I'm concerned. > I put up a poll [...] > > Given the lack of consensus, the many > different options people thought were the "right" way to do things, > and the fact that the action='version' approach allows people to > customize the flags to whatever they want, I stick by my decision to > deprecate the constructor argument ... A. Very. Bad. Idea. > ... and redirect people to the more flexible add_argument approach. It is ok to /allow/ people to customize the flags to whatever they want. It is /not/ ok to /force/ them to do so, if there is a perfectly reasonable solution which allows them to stick with their habits. And there is one: drop the '-v' default. The only way (see above). > In the face of ambiguity, refuse the temptation to guess. No guessing is needed (and the ZoP aphorism is not applicable here: this is not about guessing what the user might have meant. Besides, if the user specifies '--version', [s]he /very/ likely wants some info about the program version; giving '-v' can have been done looking forward to --verbose output (ok, nothing bad will happen, but it mismatches user expectations). > In general, I should say that I'm not opposed to changing the behavior > in Python trunk, even if it causes a bit of backwards incompatibility. A /very little/ bit. When fetching stdout to get the program version, it is much more reasonable to rely on '--version' than on '-v'. This is /the/ option string which is best supported by far. > But I'd really like a consensus about the correct behavior, and so far > I have not seen that. We'll have one ;-) -- Tobias _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com