diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2022-07-18 08:48:55 -0400 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2022-07-18 11:03:31 -0400 |
commit | 10204576215fad27640739c295b9208a0bb3c6ce (patch) | |
tree | 0aac3a09abd8dd6f41ff16b774cb398e7d457ec1 /test/ext/mypy/plain_files/async_sessionmaker.py | |
parent | f1dff43a825fe779d52e12d9a823ede0edef9bb0 (diff) | |
download | sqlalchemy-10204576215fad27640739c295b9208a0bb3c6ce.tar.gz |
add contextmanager typing, open run_sync typing
was missing AsyncConnection type for the async
context manager.
fixing that revealed that _SyncConnectionCallable
and _SyncSessionCallable protocols are infeasible because
the given callable can have a lot of different signatures
that are compatible.
Change-Id: I559aa3dd88a902d0e7681c52223bb4bc0890adc1
Diffstat (limited to 'test/ext/mypy/plain_files/async_sessionmaker.py')
-rw-r--r-- | test/ext/mypy/plain_files/async_sessionmaker.py | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/test/ext/mypy/plain_files/async_sessionmaker.py b/test/ext/mypy/plain_files/async_sessionmaker.py index 01a26d035..e28e9499b 100644 --- a/test/ext/mypy/plain_files/async_sessionmaker.py +++ b/test/ext/mypy/plain_files/async_sessionmaker.py @@ -5,7 +5,9 @@ for asynchronous ORM use. from __future__ import annotations import asyncio +from typing import Any from typing import List +from typing import Optional from typing import TYPE_CHECKING from sqlalchemy import ForeignKey @@ -16,6 +18,7 @@ from sqlalchemy.orm import DeclarativeBase from sqlalchemy.orm import Mapped from sqlalchemy.orm import mapped_column from sqlalchemy.orm import relationship +from sqlalchemy.orm import Session if TYPE_CHECKING: from sqlalchemy import ScalarResult @@ -40,6 +43,14 @@ class B(Base): data: Mapped[str] +def work_with_a_session_one(sess: Session) -> Any: + pass + + +def work_with_a_session_two(sess: Session, param: Optional[str] = None) -> Any: + pass + + async def async_main() -> None: """Main program function.""" @@ -56,6 +67,9 @@ async def async_main() -> None: async_session = async_sessionmaker(engine, expire_on_commit=False) async with async_session.begin() as session: + await session.run_sync(work_with_a_session_one) + await session.run_sync(work_with_a_session_two, param="foo") + session.add_all( [ A(bs=[B(), B()], data="a1"), |