[3.14] gh-134280: Disable constant folding for ~ with a boolean argument (GH-134982) (GH-136185)

This moves the deprecation warning from compile time to run time.
(cherry picked from commit 86c3316183)

Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
This commit is contained in:
Miss Islington (bot) 2025-07-02 10:28:09 +02:00 committed by GitHub
parent 3bc42942af
commit 8ba024ddf5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 7 additions and 0 deletions

View file

@ -292,6 +292,7 @@ def test_constant_folding_unaryop(self):
('---x', 'UNARY_NEGATIVE', None, False, None, None), ('---x', 'UNARY_NEGATIVE', None, False, None, None),
('~~~x', 'UNARY_INVERT', None, False, None, None), ('~~~x', 'UNARY_INVERT', None, False, None, None),
('+++x', 'CALL_INTRINSIC_1', intrinsic_positive, False, None, None), ('+++x', 'CALL_INTRINSIC_1', intrinsic_positive, False, None, None),
('~True', 'UNARY_INVERT', None, False, None, None),
] ]
for ( for (

View file

@ -0,0 +1,2 @@
Disable constant folding for ``~`` with a boolean argument.
This moves the deprecation warning from compile time to runtime.

View file

@ -1884,6 +1884,10 @@ eval_const_unaryop(PyObject *operand, int opcode, int oparg)
result = PyNumber_Negative(operand); result = PyNumber_Negative(operand);
break; break;
case UNARY_INVERT: case UNARY_INVERT:
// XXX: This should be removed once the ~bool depreciation expires.
if (PyBool_Check(operand)) {
return NULL;
}
result = PyNumber_Invert(operand); result = PyNumber_Invert(operand);
break; break;
case UNARY_NOT: { case UNARY_NOT: {