summaryrefslogtreecommitdiff
path: root/test/ext/mypy/plugin_files/issue_7321_part2.py
blob: 4227f2797e898eaf497abf2be2d7e142c0f92c85 (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
from typing import Any
from typing import Dict
from typing import Type

from sqlalchemy.orm import declarative_base
from sqlalchemy.orm import declared_attr


Base = declarative_base()


class Foo(Base):
    # no mypy error emitted regarding the
    # Type[Foo] part
    @declared_attr
    def __tablename__(cls: Type["Foo"]) -> str:
        return "name"

    @declared_attr
    def __mapper_args__(cls: Type["Foo"]) -> Dict[Any, Any]:
        return {}

    # this was a workaround that works if there's no plugin present, make
    # sure that doesn't crash anything
    @classmethod
    @declared_attr
    def __table_args__(cls: Type["Foo"]) -> Dict[Any, Any]:
        return {}