dropbox / dropbox/sqlalchemy-stubs

Declared attributes aren't supported

Open
#97 7 comments 12 reactions 0 assignees View on GitHub
enhancement priority-normal topic-plugins
Dominant language
Python
Stars
583
Forks
96
PR merge metrics
No merged PRs in 30d

Description

I'm using SQLAlchemy's `declared_attr` decorator to add columns and relationships.

However, the decorated columns and relationships are completely ignored.

Here is a very simplified reproducer:

```python
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.ext.declarative.api import declared_attr
from sqlalchemy.orm import relationship
from sqlalchemy.schema import Column, ForeignKey
from sqlalchemy.types import Integer

Base = declarative_base()

class Person(Base):
__tablename__ = 'people'

id = Column(Integer, primary_key=True)

class EmailAddress(Base):
__tablename__ = 'emails'

@declared_attr
def owner_id(self) -> Column:
return Column(Integer, ForeignKey('people.id'), nullable=False)

@declared_attr
def owner(self) -> relationship:
return relationship(Person)

me = Person()
email_address = EmailAddress(owner=me)
```

This is what mypy says:

```
$ pipenv run mypy decl_attr.py
decl_attr.py:30: error: Unexpected column "owner" for model "EmailAddress"
```

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.