This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author iritkatriel
Recipients alexandre.vassalotti, iritkatriel, liugang93, liyang1025@gmail.com, pitrou
Date 2022-01-06.12:59:34
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1641473974.62.0.750099657062.issue37489@roundup.psfhosted.org>
In-reply-to
Content
> I want to known why it is

It's because Exception implements __reduce__ and that takes precedence over __getnewargs_ex__. You can see that with this example:

""""
import pickle

class MyException():
    def __init__(self, desc, item):
        super().__init__()
        self.desc = desc
        self.item = item

    def __getnewargs_ex__(self):
        print('called in {}.__getnewargs_ex__'.format(self.__class__.__name__))
        return (self.desc,), self.__dict__

    def __reduce__(self):
        print('called in {}.__reduce__'.format(self.__class__.__name__))
        return MyException, (self.desc, self.item),

e = MyException('testing', item='cpu')
s = pickle.dumps(e, protocol=-1)

x = pickle.loads(s)
""""

Output: called in MyException.__reduce__
History
Date User Action Args
2022-01-06 12:59:34iritkatrielsetrecipients: + iritkatriel, pitrou, alexandre.vassalotti, liyang1025@gmail.com, liugang93
2022-01-06 12:59:34iritkatrielsetmessageid: <1641473974.62.0.750099657062.issue37489@roundup.psfhosted.org>
2022-01-06 12:59:34iritkatriellinkissue37489 messages
2022-01-06 12:59:34iritkatrielcreate