from sqlalchemy import Column
from sqlalchemy import Integer
from sqlalchemy import String
from sqlalchemy.orm import registry

reg: registry = registry()


@reg.mapped
class Foo:
    id: int = Column(Integer())
    name: str = Column(String)
    other_name: str = Column(String(50))

    # has a string key in it
    third_name = Column("foo", String(50))

    some_name = "fourth_name"

    fourth_name = Column(some_name, String(50))


f1 = Foo()

# This needs to work, e.g., value is "int" at the instance level
val: int = f1.id  # noqa

# also, the type are not optional, since we used an explicit
# type without Optional
p: str = f1.name

Foo.id.property


Foo(name="n", other_name="on", third_name="tn", fourth_name="fn")
