◐ Shell
clean mode source ↗

Message 166526 - Python tracker

I realize now that the idea of using object.__reduce__(..., 2) would not really work since many exception classes use non-slot descriptors (unless '__slots__' attributes were also added as hints of what to serialize).

I think there are two options simple enough to sneak in to 3.3:

(1) The trivial patch of initially setting self->args in __new__().

(2) Georg's idea of additionally setting a __newargs__ attribute in __new__() and using it in __reduce__().  However, I would store __newargs__ directly in the struct to avoid always triggering creation of a dict for the instance.