marshmallow_dataclass icon indicating copy to clipboard operation
marshmallow_dataclass copied to clipboard

mypy: error: "Type[X]" has no attribute "Schema" [attr-defined]

Open darwinyip opened this issue 2 years ago • 1 comments

mypy complains about the following code:

from dataclasses import dataclass
from typing import Union

from marshmallow_dataclass import add_schema


@add_schema
@dataclass(frozen=True)
class Person:
    name: str
    age: Union[int, float]


Person.Schema().load({"name": "jane", "age": 50.0})

Error:

$ mypy main.py --ignore-missing-imports
app/main.py:14: error: "Type[Person]" has no attribute "Schema"  [attr-defined]
Found 1 error in 1 file (checked 1 source file)

This is not an issue with:

PersonSchema = marshmallow_dataclass.class_schema(Person)
PersonSchema().load({"name": "jane", "age": 50.0})

darwinyip avatar Jun 02 '23 03:06 darwinyip

It is actually documented in an example that you can add the following to placate type checkers:

Schema: ClassVar[Type[Schema]] = Schema # For the type checker

mivade avatar Jun 02 '23 14:06 mivade