Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork32k
Open
Description
Bug report
Bug description:
Related to:#103487
# literal.pyprint(~False)print(~True)# var.pya=Trueprint(~a)b=Falseprint(~b)
A DeprecationWarning is reported forvar.py
, but not forliteral.py
.
$ python -c 'import sys; print(sys.version)'3.15.0a0 (heads/main:42d03f3, May 19 2025, 23:32:01) [GCC 15.1.1 20250425 (Red Hat 15.1.1-1)]$ python literal.py-1-2$ python var.py/tmp/scratch/var.py:2: DeprecationWarning: Bitwise inversion '~' on bool is deprecated and will be removed in Python 3.16. This returns the bitwise inversion of the underlying int object and is usually not what you expect from negating a bool. Use the 'not' operator for boolean negation or ~int(x) if you really want the bitwise inversion of the underlying int. print(~a)-2/tmp/scratch/var.py:5: DeprecationWarning: Bitwise inversion '~' on bool is deprecated and will be removed in Python 3.16. This returns the bitwise inversion of the underlying int object and is usually not what you expect from negating a bool. Use the 'not' operator for boolean negation or ~int(x) if you really want the bitwise inversion of the underlying int. print(~b)-1
What's interesting is that there's a test for this:
Lines 68 to 71 in42d03f3
withself.assertWarns(DeprecationWarning): | |
# also check that the warning is issued in case of constant | |
# folding at compile time | |
self.assertEqual(eval("~False"),-1) |
eval("~True")
is used instead of just~True
$ python -c 'print(~True)'-2$ python -c 'print(eval("~True"))'<string>:1: DeprecationWarning: Bitwise inversion '~' on bool is deprecated and will be removed in Python 3.16. This returns the bitwise inversion of the underlying int object and is usually not what you expect from negating a bool. Use the 'not' operator for boolean negation or ~int(x) if you really want the bitwise inversion of the underlying int.-2
CPython versions tested on:
CPython main branch, 3.13
Operating systems tested on:
Linux