Remix.run Logo
zahlman 3 days ago

I'm still "surprised" (though I've known for years) that GvR and Peters were in favour of the design and co-wrote the PEP (https://peps.python.org/pep-0572/), and that the other author is Chris Angelico who I (also) otherwise greatly respect.

Where it's useful, it tends to just save a line of code or work around other defects (for example, the regex example near the start of the PEP points to either a missing null-coalescing operator — which has been repeatedly proposed and rejected, BTW — or the library's fault in not using the "null object" pattern). It's used twice for example as far as I can tell in all of pip and its vendored dependencies (>100 kloc), and it isn't really doing much in either case (https://github.com/pypa/pip/blob/main/src/pip/_internal/meta... and https://github.com/pypa/pip/blob/main/src/pip/_internal/meta... ; it was also used in `typing_extensions` but that's been dropped as a dependency; there are some false-positives related to code that parses source code and some data formats).

But most importantly to me, it fundamentally violates the strong https://en.wikipedia.org/wiki/Command%E2%80%93query_separati... seen throughout the rest of the language.

Meanwhile, changes that I think might actually be good are nowadays routinely rejected with the same kinds of arguments that PEP 572 faced and survived.

It's unfortunate that Guido felt harassed and ended up leaving the project. It was overall better under his leadership. I wish I'd been paying attention at the time. I suspect that the people who created that feeling must have themselves felt betrayed.