Rapidly turning a warning into a hard error can break environments. A longer warning period ensures developers see the notice without their builds immediately failing.
For most developers, this is rarely the intended result. Usually, someone using ~ on a boolean actually wants the logical NOT ( not True ), which correctly returns False . Because of this common point of confusion, the Python steering committee decided to deprecate bitwise inversion on booleans to encourage clearer coding practices. What’s New in Issue #122982? 122982
If your project currently triggers a DeprecationWarning when using ~ on a boolean, the fix is straightforward. Replace the bitwise operator with the logical not keyword: Rapidly turning a warning into a hard error
If you have ever accidentally used the bitwise inversion operator ( ~ ) on a Python boolean, you might have noticed it behaves in a way that is technically correct but logically confusing. As Python continues to refine its syntax for better clarity, Issue #122982 marks a small but important step in how the language handles these edge cases. The Problem: Why ~True Isn't False Usually, someone using ~ on a boolean actually
In Python, booleans are a subclass of integers. When you apply the bitwise NOT operator ( ~ ) to a boolean: ~True (which is ~1 ) evaluates to -2 . ~False (which is ~0 ) evaluates to -1 .
Python’s evolution is often about making the "obvious" way to do things the only way to do things. While Issue #122982 might seem like a minor administrative tweak in the CPython GitHub, it reflects the core philosophy of maintaining a stable, readable, and developer-friendly language.
It allows more time for the community to discuss if there are specific edge cases where bitwise inversion on bool remains necessary. How to Prepare Your Code