summaryrefslogtreecommitdiff
path: root/test/ext/mypy/files/issue_7321_part2.py
blob: f53add1da9c2c58a451ade66f8f93fc1d10bbd3b (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
from typing import Any
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 {}