Currently __reduce__ returns up to five things:

(1) self.__new__ (or a substitute)
(2) the result of __getnewargs__, which returns a tuple of positional arguments for __new__,
(3) the result of __getstate__, which returns an object to be passed to __setstate__
(4) an iterator of values for appending to a sequence
(5) an iterator of key-value pairs for setting on a string.

Python 3.4 added the very useful (for me) __getnewargs_ex__, which returns a pair:
(1) a tuple of positional arguments for __new__
(2) a dict of keyword arguments for __new__

Therefore, I am proposing that __reduce__ return somehow these keyword arguments for __new__.

Best,
Neil