Issue 31411: SystemError raised by warn_explicit() in case warnings.onceregistry is not a dict (original) (raw)
The following code causes warn_explicit() (in Python/_warnings.c) to raise a SystemError:
import warnings warnings.filterwarnings('once') warnings.onceregistry = None warnings.warn_explicit(message='foo', category=Warning, filename='bar', lineno=1, registry=None)
this is because warn_explicit() assumes that warnings.onceregistry is a dict, and passes it to update_registry(), which passes it to already_warned(), which eventually passes it to _PyDict_SetItemId(), which raises the SystemError.