summaryrefslogtreecommitdiff
path: root/test/ext/mypy/plugin_files/mixin_three.py
blob: cb8e30df81adfc036f6e3754563b4ecec39ab640 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
from typing import Callable

from sqlalchemy import Column
from sqlalchemy import Integer
from sqlalchemy import String
from sqlalchemy.orm import deferred
from sqlalchemy.orm import Mapped
from sqlalchemy.orm.decl_api import declarative_mixin
from sqlalchemy.orm.decl_api import declared_attr
from sqlalchemy.orm.interfaces import MapperProperty


def some_other_decorator(fn: Callable[..., None]) -> Callable[..., None]:
    return fn


@declarative_mixin
class HasAMixin:
    x: Mapped[int] = Column(Integer)

    y = Column(String)

    @declared_attr
    def data(cls) -> Column[String]:
        return Column(String)

    @declared_attr
    def data2(cls) -> MapperProperty[str]:
        return deferred(Column(String))

    @some_other_decorator
    def q(cls) -> None:
        return None