Repository navigation
Using new 'bool' format character #60203
Copy link
Copy link
Closed
Labels
3.12only security fixesonly security fixesextension-modulesC modules in the Modules dirC modules in the Modules dirinterpreter-core(Objects, Python, Grammar, and Parser dirs)(Objects, Python, Grammar, and Parser dirs)type-featureA feature request or enhancementA feature request or enhancement
Description
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
assignee = 'https://github.com/serhiy-storchaka'
closed_at = None
created_at = <Date 2012-09-21.15:47:09.273>
labels = ['extension-modules', 'interpreter-core', 'type-feature']
title = "Using new 'bool' format character"
updated_at = <Date 2019-09-01.09:16:53.793>
user = 'https://github.com/serhiy-storchaka'bugs.python.org fields:
activity = <Date 2019-09-01.09:16:53.793>
actor = 'serhiy.storchaka'
assignee = 'serhiy.storchaka'
closed = False
closed_date = None
closer = None
components = ['Extension Modules', 'Interpreter Core']
creation = <Date 2012-09-21.15:47:09.273>
creator = 'serhiy.storchaka'
dependencies = []
files = ['27244', '40809', '40810']
hgrepos = []
issue_num = 15999
keywords = ['patch']
message_count = 7.0
messages = ['170897', '170898', '252765', '253154', '350940', '350941', '350942']
nosy_count = 3.0
nosy_names = ['larry', 'Rosuav', 'serhiy.storchaka']
pr_nums = ['15609', '15610', '15621', '15622']
priority = 'normal'
resolution = None
stage = 'patch review'
status = 'open'
superseder = None
type = 'enhancement'
url = 'https://bugs.python.org/issue15999'
versions = ['Python 3.4']Linked PRs
- gh-60203: Revert changes in cycle.__setstate__ #99982
- gh-60203: Always pass True/False as boolean arguments in tests #99983
- [3.11] gh-60203: Always pass True/False as boolean arguments in tests (GH-99983) #99986
- [3.10] gh-60203: Always pass True/False as boolean arguments in tests… #99989
- [3.11] gh-60203: Revert changes in cycle.__setstate__ (GH-99982) #100016
- [3.10] gh-60203: Revert changes in cycle.__setstate__ (GH-99982) #100017
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
3.12only security fixesonly security fixesextension-modulesC modules in the Modules dirC modules in the Modules dirinterpreter-core(Objects, Python, Grammar, and Parser dirs)(Objects, Python, Grammar, and Parser dirs)type-featureA feature request or enhancementA feature request or enhancement
Activity
serhiy-storchaka commentedon Sep 21, 2012
bpo-14705 added 'bool' format character to PyArg_ParseTuple for using it for parsing multiple boolean arguments in os module. The proposed patch uses this format character for other boolean arguments. This makes the sources simpler, clearer and more reliable, improves error messages, gets rid of a few rare errors.
larryhastings commentedon Sep 21, 2012
Patch looks fine in principle, though I'd want someone to go over the individual cases to make sure they make sense.
Also, I have something up my sleeve regarding argument parsing for 3.4, and if it gets accepted we might be touching all this code anyway. I mention this just to say--you may want to hold off on more patches like this for now.
Rosuav commentedon Oct 11, 2015
Has this been entirely superseded by Argument Clinic?
serhiy-storchaka commentedon Oct 18, 2015
No, it is orthogonal to Argument Clinic. Usually converting to Argument Clinic didn't change semantic. However these changes conflicted with proposed patch.
Rebased patch is splitted on two patches.
bool_cleanup.patch. It almost doesn't change the behavior. It uses the "p" format unit instead of manually called PyObject_IsTrue(), passes boolean value instead 0/1 integers to functions that needs boolean, and made some arguments ("flush" in print(), "strict", "sort_keys" and "skipkeys" in json module) to be converted to boolean only once.
accept_bool.patch. It makes a number of functions to accept arbitrary objects in boolean context, not just False/True and ints representable as C int. But I prefer first to commit the patch for bpo-24037.
serhiy-storchaka commentedon Sep 1, 2019
New changeset eb89746 by Serhiy Storchaka in branch 'master':
bpo-15999: Always pass bool instead of int to the expat parser. (GH-15622)
eb89746
serhiy-storchaka commentedon Sep 1, 2019
New changeset 5eca7f3 by Serhiy Storchaka in branch 'master':
bpo-15999: Always pass bool instead of int to socket.setblocking(). (GH-15621)
5eca7f3
serhiy-storchaka commentedon Sep 1, 2019
New changeset 1f21eaa by Serhiy Storchaka in branch 'master':
bpo-15999: Clean up of handling boolean arguments. (GH-15610)
1f21eaa
gpshead commentedon Dec 3, 2022
#15609 was merged.
I didn't try to figure out if there were any more of these left, that PR from @serhiy-storchaka took care of a large number of them.
gpshead commentedon Dec 3, 2022
I'll close this issue as the end point isn't well defined with something we can easily check "[x] Complete" on.
But it could be considered ongoing work to clean up any remaining. Feel free to re-open if anyone has identified more.
Or just file new more specific issues for each area of the codebase still being overly pedantic about bool in C code.
4 remaining items
pythongh-60203: Revert changes in cycle.__setstate__
pythongh-60203: Always pass True/False as boolean arguments in tests
gh-60203: Always pass True/False as boolean arguments in tests (GH-99983
pythongh-60203: Always pass True/False as boolean arguments in tests (p…
[3.10] pythongh-60203: Always pass True/False as boolean arguments in…
gh-60203: Always pass True/False as boolean arguments in tests (GH-99983
[3.10] gh-60203: Always pass True/False as boolean arguments in tests (…
serhiy-storchaka commentedon Dec 5, 2022
Opened a discussion: https://discuss.python.org/t/boolean-arguments/21662
Gregory, please join. Feel free to rewrite my post or add your explanations (you are better in this).
gh-60203: Revert changes in cycle.__setstate__ (#99982)
[3.11] pythongh-60203: Revert changes in cycle.__setstate__ (pythonGH…
[3.10] pythongh-60203: Revert changes in cycle.__setstate__ (pythonGH…
[3.10] gh-60203: Revert changes in cycle.__setstate__ (GH-99982) (#10…
[3.11] gh-60203: Revert changes in cycle.__setstate__ (GH-99982) (#10…
serhiy-storchaka commentedon Sep 7, 2023
Seems the decision was to simply accept this. So I close this issue.