dataclasses-json icon indicating copy to clipboard operation
dataclasses-json copied to clipboard

named tuple support

Open rnag opened this issue 2 years ago • 0 comments

using NamedTuple from the typing module don't seem to be supported. I also tried collections.namedtuple variant, but running into the same issue.

dataclasses-json version: 0.5.5

example:

from collections import namedtuple
from dataclasses import dataclass
from typing import List, Optional, NamedTuple

from dataclasses_json import DataClassJsonMixin


@dataclass
class MyClass(DataClassJsonMixin):

    my_str: str
    people: List['Person']


@dataclass
class Person:
    name: 'Name'


class Name(NamedTuple):
    """A person's name"""
    first: str
    last: str
    salutation: Optional[str] = 'Mr.'

# also tried with `collections.namedtuple`, with same error
# Name = namedtuple('Name', ['first', 'last'])


data = {
        'my_str': 'string',
        'people': [{'name': ('John', 'Smith')},
                   {'name': ('Jane', 'Doe', 'Dr.')}]
    }

c = MyClass.from_dict(data)
print(c)

err message:

TypeError: Type List cannot be instantiated; use list() instead

rnag avatar Sep 11 '21 14:09 rnag