dropbox / dropbox/sqlalchemy-stubs

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

Open
#240 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
583
Forks
96
PR merge metrics
No merged PRs in 30d

Description

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

```python
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"
```

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.