sqlalchemy-stubs icon indicating copy to clipboard operation
sqlalchemy-stubs copied to clipboard

Assigning to a Union of a nullable and non-nullable column fails

Open Garrett-R opened this issue 3 years ago • 0 comments

I'm running the latest (at the time of writing) mypy (0.950) and sqlalchemy-stubs (0.4) and hitting this issue:

from sqlalchemy import Column, Integer
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()


class Dog(Base):
    __tablename__ = 'dogs'

    age = Column(Integer)


class Cat(Base):
    __tablename__ = 'cats'

    age = Column(Integer, nullable=False)


Animal = Dog | Cat

animal: Animal = Cat()

animal.age = 20  # Mypy error, should be fine!

The error I get is:

error: Incompatible types in assignment (expression has type "int", variable has type "Union[Column[Optional[int]], Column[int]]")

but I don't think there should be an error.

My mypy config in my pyproject.toml is just:

[tool.mypy]
plugins = "sqlmypy"

Garrett-R avatar May 16 '22 20:05 Garrett-R