if TYPE_CHECKING:
+ @overload
+ def __get__(
+ self, instance: None, owner: Any
+ ) -> InstrumentedAttribute[_T]:
+ ...
+
+ @overload
+ def __get__(self, instance: object, owner: Any) -> AppenderQuery[_T]:
+ ...
+
def __get__(
self, instance: Optional[object], owner: Any
- ) -> AppenderQuery[_T]:
+ ) -> Union[InstrumentedAttribute[_T], AppenderQuery[_T]]:
...
def __set__(self, instance: Any, value: typing.Collection[_T]) -> None:
if TYPE_CHECKING:
+ @overload
def __get__(
- self, instance: Optional[object], owner: Any
+ self, instance: None, owner: Any
+ ) -> InstrumentedAttribute[_T]:
+ ...
+
+ @overload
+ def __get__(
+ self, instance: object, owner: Any
) -> WriteOnlyCollection[_T]:
...
+ def __get__(
+ self, instance: Optional[object], owner: Any
+ ) -> Union[InstrumentedAttribute[_T], WriteOnlyCollection[_T]]:
+ ...
+
def __set__(self, instance: Any, value: typing.Collection[_T]) -> None:
...
import typing
from sqlalchemy import ForeignKey
+from sqlalchemy import select
from sqlalchemy.orm import DeclarativeBase
from sqlalchemy.orm import DynamicMapped
from sqlalchemy.orm import Mapped
u.addresses.append(Address())
session.commit()
+
+ # test #9985
+ stmt = select(User).join(User.addresses)
import typing
from sqlalchemy import ForeignKey
+from sqlalchemy import select
from sqlalchemy.orm import DeclarativeBase
from sqlalchemy.orm import Mapped
from sqlalchemy.orm import mapped_column
u.addresses.add(Address())
session.commit()
+
+ # test #9985
+ stmt = select(User).join(User.addresses)