Fix SQLAlchemy list types (#2668)

* fix sqlalchemy relationship list type hints

* py3.8 and py3.9 compatibility

Co-authored-by: Masen Furer <m_github@0x26.net>

* add missing import

---------

Co-authored-by: Masen Furer <m_github@0x26.net>
This commit is contained in:
benedikt-bartscher 2024-02-21 00:14:33 +01:00 committed by GitHub
parent 0b771db10a
commit 6c49b96d9d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -10,6 +10,7 @@ from typing import (
Any,
Callable,
Iterable,
List,
Literal,
Optional,
Type,
@ -164,7 +165,11 @@ def get_attribute_access_type(cls: GenericType, name: str) -> GenericType | None
prop = descriptor.property
if not isinstance(prop, Relationship):
return None
return prop.mapper.class_
class_ = prop.mapper.class_
if prop.uselist:
return List[class_]
else:
return class_
elif isinstance(cls, type) and issubclass(cls, Model):
# Check in the annotations directly (for sqlmodel.Relationship)
hints = get_type_hints(cls)