That has been discussed a few times and is even worse for backwards compatibility since it’s not a clear break and the locations where this is an issue are hard to spot.
I still think this PEP should go through while allowing a bare except when raise is used and think the community consequences is mostly by uninformed people who are just angry that they have to do a small amount of work, but I can’t exactly force anyone to do anything.
The good purpose of PEP 760 could be successful if users refrain from subclassing BaseException to create their exceptions. There is no guarantee that they will stop doing so.
When I test a library in a sandbox, I am forced to use a bare except to log any unknown exceptions before reviewing the entire library. Forcing me to write except BaseException won’t stop users from subclassing BaseException, nor will it help ensure that interrupts like ^C work properly.
For the record, there are many cases of bare except in the Python standard library: Code search results · GitHub
Even if the PEP is no longer proposed, if you (anybody, not just the PEP authors) believe bare excepts are bad, perhaps replacing those 150+ bare excepts with the appropriate exceptions would make sense. (I don’t think it’s worth the time, but maybe you do.)
A PR replacing except with except BaseException will probably be rejected, because changing code style only isn’t allowed. And when narrowing it, you need to be careful to not introduce bugs.
I have not read the whole discussion and does not know whether this argument was already mentioned, there is a case in which the bare except cannot be simply replaced by except BaseException.
If the code can be called very late in the interpreter shutdown process, when the builtins module has already be cleared. Then built-in BaseException can not be found. sys.stderr is already cleared as well, so most such errors are unnoticed.
The common workaround is to save a reference to BaseException in function defaults, for example: