"""Test that the right-hand expressions we normally "replace" are actually
type checked.
"""
from typing import List
from sqlalchemy import Column
from sqlalchemy import ForeignKey
from sqlalchemy import Integer
from sqlalchemy import String
from sqlalchemy.orm import declarative_base
from sqlalchemy.orm import Mapped
from sqlalchemy.orm import relationship
from sqlalchemy.orm.decl_api import declared_attr
Base = declarative_base()
class User(Base):
__tablename__ = "user"
id = Column(Integer, primary_key=True)
addresses: Mapped[List["Address"]] = relationship(
"Address", wrong_arg="imwrong"
)
class SubUser(User):
__tablename__ = "subuser"
id: int = Column(Integer, ForeignKey("user.id"), primary_key=True)
class Address(Base):
__tablename__ = "address"
id: int = Column(Integer, primary_key=True)
user_id: int = Column(ForeignKey("user.id"))
@declared_attr
def email_address(cls) -> Column[String]:
return Column(True)
@declared_attr
def thisisweird(cls) -> Column(String):
return Column(False)