File: issue_7321_part2.py

package info (click to toggle)
sqlalchemy 2.0.40%2Bds1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 26,404 kB
  • sloc: python: 410,002; makefile: 230; sh: 7
file content (28 lines) | stat: -rw-r--r-- 683 bytes parent folder | download | duplicates (4)
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 {}