On behalf of the Python Steering Council: We’ve chosen to reject PEP 679, “New assert statement syntax with parentheses”.
In our discussions, we all agreed that the old assert statement tuple footgun has long been a problem in Python. However, the SyntaxWarning present in more recent Python versions when parentheses that would generate a tuple are used on assert statements is likely sufficient to prevent authors from inadvertently writing those unintended always-true assertions, reducing the likelihood of the old anti-pattern.
Moving from that consistent SyntaxWarning state to adopting a special-case syntax felt like it would add complexity and make Python statement syntax more confusing to understand. Such a syntax would treat what would have been an exactly-two-element tuple as acceptable function-like arguments on the assert statement, allowing code to pretend that it is a function.
None of us felt this was a compelling enough feature to add. Ironically, if we had never added the existing assert SyntaxWarning, some of us might have found this PEP more compelling, as it would have “fixed” some existing code’s broken assertions. However, we believe the warnings have already led to that desired outcome for anyone not using linters that have long highlighted this problem.
Thanks for the PEP!