madman-bob/python-dataclasses-serialization

Bug for deserialising fields of type Optional[Dataclass]

Closed this issue · 1 comments

Whenever you want to serialise/deserialise a dataclass that has as one of its field an Optional[T] with T being another dataclass, deserialising fails.

Code to reproduce:

from typing import Optional
from unittest import TestCase

from dataclasses import dataclass
from dataclasses_serialization.json import JSONSerializer

class TestDeleteme(TestCase):

    def test_one(self):

        dc1 = DC1()
        dc2 = DC2()

        JSONSerializer.deserialize(DC1, JSONSerializer.serialize(dc1))
        serialised_value = JSONSerializer.serialize(dc2)
        JSONSerializer.deserialize(DC2, serialised_value)

@dataclass
class DC1:
    value: Optional[float] = None

@dataclass
class DC2:
    optional_dc1: Optional[DC1] = None

The problem is not just for Optional, but also all Unions involving dataclasses.

Fixed in 8217789, and released as 1.2.2.