]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
Added fix for `AsyncConnection.run_sync`.
authorFrancisco R. Del Roio <francipvb@hotmail.com>
Sun, 25 Feb 2024 01:49:04 +0000 (22:49 -0300)
committerFrancisco R. Del Roio <francipvb@hotmail.com>
Sun, 25 Feb 2024 01:49:04 +0000 (22:49 -0300)
lib/sqlalchemy/ext/asyncio/engine.py

index 2b3a85465d3b96062bbe7eeacd64b1ad06cbb4d6..236cc1865a58ddd18d17229470cc68edf6d0b517 100644 (file)
@@ -21,6 +21,9 @@ from typing import TYPE_CHECKING
 from typing import TypeVar
 from typing import Union
 
+from typing_extensions import Concatenate
+from typing_extensions import ParamSpec
+
 from . import exc as async_exc
 from .base import asyncstartablecontext
 from .base import GeneratorStartableContext
@@ -63,6 +66,7 @@ if TYPE_CHECKING:
     from ...sql.base import Executable
     from ...sql.selectable import TypedReturnsRows
 
+_P = ParamSpec("_P")
 _T = TypeVar("_T", bound=Any)
 _Ts = TypeVarTuple("_Ts")
 
@@ -815,7 +819,10 @@ class AsyncConnection(
             yield result.scalars()
 
     async def run_sync(
-        self, fn: Callable[..., _T], *arg: Any, **kw: Any
+        self,
+        fn: Callable[Concatenate[Connection, _P], _T],
+        *arg: _P.args,
+        **kw: _P.kwargs,
     ) -> _T:
         """Invoke the given synchronous (i.e. not async) callable,
         passing a synchronous-style :class:`_engine.Connection` as the first
@@ -879,7 +886,9 @@ class AsyncConnection(
 
         """  # noqa: E501
 
-        return await greenlet_spawn(fn, self._proxied, *arg, **kw)
+        return await greenlet_spawn(
+            fn, self._proxied, *arg, _require_await=False, **kw
+        )
 
     def __await__(self) -> Generator[Any, None, AsyncConnection]:
         return self.start().__await__()