On Sat, Dec 26, 2020 at 11:23:16AM -0000, Anton Abrosimov wrote:
I am trying to release comfortable dataclass unpacking using `**` operator. Now I have 5 different ways to do it. But not a single good one. Confused by the implementation of the unpacking operator.
So when I try to unpack any custom class, I get the error:
`type object argument after ** must be a mapping, not MyClass`
Ok, nothing special. I need to use `collections.abc.Mapping` right? Now I need to implement: `__getitem__`, `__iter__`, `__len__`. Not a problem. But additionally I get: `keys`, `items`, `values`. Hey, I don't need them. I don't need the full mapping functionality. I only need the double asterisk to work.
Why do you want something that isn't a mapping to be usable with mapping unpacking?
Does it *really* hurt you to provide mapping methods when you get them for free? Just inherit from Mapping.