[Python-Dev] argparse ugliness

Eric Smith eric at trueblade.com
Wed Mar 10 14:13:17 CET 2010


Nick Coghlan wrote:
> Greg Ewing wrote:
>> Steven Bethard wrote:
>>
>>> Because the names are so long and you'd have to import them, I've left
>>> them as private attributes of the module, but if there's really
>>> demand, we could rename them to argparse.StoreTrueAction, etc.
>> What's wrong with just StoreTrue?
> 
> All of this discussion about the class names is ignoring the main
> benefit of using the string names:
> 
> - with Python variables, you just get a generic name error at the
> reference site (which may or may not be useful, depending on the program
> structure)
> - with a string, the parser *tells* you that the problem is with the
> requested action for a particular argument
> 
> The second, explicit error is going to be more informative in most cases.
> 
> Using strings also reduces the verbosity of the code, avoiding either an
> "argparse." buried in the middle of the function call, or else a "from
> argparse import <whatever>".

I agree that it should be left as a string. About the only reason I 
would suggest changing it from a string to an object is that it makes it 
obvious that argparse does accept an object that conforms to the Action 
API. But this is already well documented, so I don't see the need. Just 
leave it as a string.

-- 
Eric.


More information about the Python-Dev mailing list