Why do I get a TypeError: requires a single type#

The full error message looks something like this:

TypeError: typing.Optional requires a single type. Got Field(name=None,type=None,default=<dataclasses._MISSING_TYPE object at 0x7f79f4b0d700>,default_facto.

This error means the typing annotations for a model are ambiguous because they collide with a class field. In order to resolve this issue you have to enable code:PostponedAnnotations in the generator config.

Hint

Postponed Evaluations of Annotations (PEP 563).

Example

from __future__ import annotations
from dataclasses import dataclass, field
from typing import Optional
from tests.fixtures.annotations.units import unit

__NAMESPACE__ = "http://domain.org/schema/model"


@dataclass
class Measurement:
    value: Optional[float] = field(
        default=None,
        metadata={
            "required": True,
        }
    )
    unit: Optional[unit] = field(
        default=None,
        metadata={
            "type": "Attribute",
        }
    )


@dataclass
class Weight(Measurement):
    class Meta:
        namespace = "http://domain.org/schema/model"