[issue14705] Add 'bool' format character to PyArg_ParseTuple*

Larry Hastings report at bugs.python.org
Fri May 4 13:13:58 CEST 2012


Larry Hastings <larry at hastings.org> added the comment:

I looked through the Python sources and couldn't find any instances of a  function or method with an argument that only allowed you to pass in either True or False.

Serily already said he would use 'P' over 'p', although I too am unconvinced that's a good idea.  Serily: why would you unhesitatingly prefer 'P' to 'p'?


Certainly I see loads of uses for 'p'.  For example, when converting code from Python to C that already relied on Python's standard definition of truthiness.

I did find some spots that took an object and converted to bool with PyObject_IsTrue, like _json.Encoder(allow_nan) and pickle._Pickler(fix_imports).  These too would be well-served by 'p'.

I also found some funny in-between cases.  For example, stat_float_times and the three-argument form of os.symlink both claim to take a boolean but actually take 'i' (integer).  This is relying on bool.__int__().  We certainly couldn't use 'P' here.  We could consider switching these to 'p', though in all likelyhood we'll just leave 'em alone.

----------

_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue14705>
_______________________________________


More information about the Python-bugs-list mailing list