João Eiras <joao.ei...@gmail.com> added the comment:

On a related note, after inspecting the UnicodeEror C code, the exception 
object keeps explicit references to 'encoding', 'object', 'start', 'end' and 
'reason'. That means that if those properties are set (the C code does have 
setters) then the properties stored in UnicodeError go out of sync with the 
args tuple in BaseException. And so pickling and unpickling will restore the 
original values, and not those that were set after the exception being created, 
unless args is too modified.

My suggestion would be to just fetch all 5 properties from the args tuple 
inside the getters and setters, and in the setters, recreate the tuple with a 
modified value. The constructor could do argument validation but would not set 
any properties, because that would be delegated to BaseException.

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue39750>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to