Author eric.smith
Recipients alexdelorenzo, eric.smith, levkivskyi
Date 2018-08-09.02:54:30
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1533783271.31.0.56676864532.issue34363@psf.upfronthosting.co.za>
In-reply-to
Content
Thanks for the pointer, Ivan.

I haven't really thought it through yet, but this fixes the problem at hand:

diff --git a/dataclasses.py b/dataclasses.py
index ba34f6b..54916ee 100644
--- a/dataclasses.py
+++ b/dataclasses.py
@@ -1019,7 +1019,7 @@ def _asdict_inner(obj, dict_factory):
             result.append((f.name, value))
         return dict_factory(result)
     elif isinstance(obj, (list, tuple)):
-        return type(obj)(_asdict_inner(v, dict_factory) for v in obj)
+        return type(obj)(*[_asdict_inner(v, dict_factory) for v in obj])
     elif isinstance(obj, dict):
         return type(obj)((_asdict_inner(k, dict_factory), _asdict_inner(v, dict_factory))
                           for k, v in obj.items())

There are plenty more tests needed for this, plus I need to think it through some more. astuple() has the same issue. I'll also have to think about the dict subclass case, too.
History
Date User Action Args
2018-08-09 02:54:31eric.smithsetrecipients: + eric.smith, levkivskyi, alexdelorenzo
2018-08-09 02:54:31eric.smithsetmessageid: <1533783271.31.0.56676864532.issue34363@psf.upfronthosting.co.za>
2018-08-09 02:54:31eric.smithlinkissue34363 messages
2018-08-09 02:54:30eric.smithcreate