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"