[issue26994] unexpected behavior for booleans in argparse

2016-05-14 Thread paul j3

paul j3 added the comment:

I answered a similar question recently on Stackoverflow when the user wanted to 
use `type=hex`.

http://stackoverflow.com/questions/37006387/python-argparse-hex-error


In another recent bug/issue the poster want a `enum` type.  It's not hard to 
define a function, or factory class, that handles mappings like this, but it 
isn't as simple or intuitive as some would like.

There is a registries mechanism, which could allow the user to use 
`type='bool'`, where 'bool' is the name of a function that that converts some 
set of strings to True/False.  But people are used to providing strings for the 
`action`, they aren't used to do so for the `type`.

http://stackoverflow.com/questions/15008758/parsing-boolean-values-with-argparse

--
nosy: +paul.j3

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue26994] unexpected behavior for booleans in argparse

2016-05-10 Thread R. David Murray

R. David Murray added the comment:

Yes, it is an unitended consequence of the fact that argparse types are 
arbitrary single argument functions (that take an arbitrary string as the 
argument and convert it), and bool is a single argument function.  
Unfortunately we're stuck with it now.  The correct answer, of course, is to 
write your own bool type converter if you need one.

It is possible there should be a documentation mention that bool is not 
approprate as a type function, since int and float, for example, are explicitly 
mentioned.  If you want to submit a patch to that end I'll reopen the issue.

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue26994] unexpected behavior for booleans in argparse

2016-05-10 Thread Nathan Naze

Nathan Naze added the comment:

I also buy the argument that changing the behavior now would be problematic 
given the existing usages in the wild.

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue26994] unexpected behavior for booleans in argparse

2016-05-10 Thread Nathan Naze

Nathan Naze added the comment:

> It does 'bool(value)', and 'bool("False")' is True, since "False" is a 
> non-empty string.

Yes, I understand this. It's fine to mark as "working as intended", but coming 
from other flag-parsing libraries, I find the behavior unintuitive and do not 
understand the utility of accepting arbitrary strings given the  potential for 
user confusion. We uncovered this behavior debugging a script used internally 
at Google.

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue26994] unexpected behavior for booleans in argparse

2016-05-10 Thread R. David Murray

R. David Murray added the comment:

type=bool doesn't do what you think it does.  It does 'bool(value)', and 
'bool("False")' is True, since "False" is a non-empty string.

See issue 21208 for some further discussion.

--
nosy: +r.david.murray
resolution:  -> duplicate
stage:  -> resolved
status: open -> closed
superseder:  -> Change default behavior of arguments with type bool when 
options are specified

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue26994] unexpected behavior for booleans in argparse

2016-05-10 Thread Nathan Naze

New submission from Nathan Naze:

Setting a boolean type in argparse gives unexpected behavior when setting 
"True", "False", etc.

https://gist.github.com/nanaze/db63e3f63e318408e3223bf1245d9752

Would have expected parsing to fail for unclear input that doesn't neatly map 
to a boolean value.

--
components: Library (Lib)
messages: 265256
nosy: Nathan Naze
priority: normal
severity: normal
status: open
title: unexpected behavior for booleans in argparse
type: behavior
versions: Python 2.7

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com