gh-82012: Deprecate bitwise inversion (~) of bool by timhoffm · Pull Request #103487 · python/cpython

bedevere-bot · GitHub

GitHub CopilotWrite better code with AI | MCP RegistryIntegrate external tools | ActionsAutomate any workflow | CodespacesInstant dev environments | IssuesPlan and track work | Code ReviewManage code changes | Code QualityEnforce quality at merge | Why GitHub | Marketplace | View all features | Enterprises | Small and medium teams | Startups | View all use cases | View all industries | View all solutions | AI | Software Development | DevOps | Security | View all topics | Customer stories | Events & webinars | Ebooks & reports | Business insights | Trust center | Partners | View all resources

@bedevere-bot

mentioned this pull request

Apr 12, 2023

Closed

timhoffm
@timhoffm
gvanrossum
@timhoffm
JelleZijlstra
JelleZijlstra
@timhoffm
@timhoffm
@timhoffm
@JelleZijlstra

The bitwise inversion operator on bool returns the bitwise inversion of the underlying int value; i.e. `~True == -2` such that `bool(~True) == True`. It's a common pitfall that users mistake `~` as negation operator and actually want `not`. Supporting `~` is an artifact of bool inheriting from int. Since there is no real use-case for the current behavior, let's deprecate `~` on bool and later raise an error. This removes a potential source errors for users. Full reasoning:

python#82012 (comment)

Co-authored-by: Jelle Zijlstra <[email protected]>

@timhoffm
@timhoffm

This also pulls the bool type to top-level of the type description page. Before it was only documented in the section "Other Built-in Types / Boolean Values".

JelleZijlstra
hauntsaninja
@timhoffm
@timhoffm
@hauntsaninja

Co-authored-by: Shantanu <[email protected]>

@hauntsaninja
@timhoffm

timhoffm

deleted the deprecate-bool-invert branch

May 3, 2023 07:22

Merged

pllim

This was referenced

Oct 4, 2023 Closed

Merged

pllim

added a commit to pllim/cpython that referenced this pull request

Oct 4, 2023

@pllim
@josyb

josyb

mentioned this pull request

Feb 18, 2024

Open

Closed

Closed

This was referenced

May 8, 2026 Open

Open