summaryrefslogtreecommitdiff
path: root/test/ext/mypy/plain_files/async_sessionmaker.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2022-07-18 08:48:55 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2022-07-18 11:03:31 -0400
commit10204576215fad27640739c295b9208a0bb3c6ce (patch)
tree0aac3a09abd8dd6f41ff16b774cb398e7d457ec1 /test/ext/mypy/plain_files/async_sessionmaker.py
parentf1dff43a825fe779d52e12d9a823ede0edef9bb0 (diff)
downloadsqlalchemy-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.py14
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"),