From 239fdab7cb8d482d740dfbafe428f9ee38e961c0 Mon Sep 17 00:00:00 2001 From: Pablo Estevez Date: Sat, 10 May 2025 18:47:00 +0000 Subject: [PATCH] merge branch --- lib/sqlalchemy/dialects/mysql/aiomysql.py | 5 +++-- lib/sqlalchemy/dialects/mysql/pymysql.py | 6 ++++-- lib/sqlalchemy/dialects/mysql/pyodbc.py | 11 ++++++++--- lib/sqlalchemy/engine/interfaces.py | 3 ++- 4 files changed, 17 insertions(+), 8 deletions(-) diff --git a/lib/sqlalchemy/dialects/mysql/aiomysql.py b/lib/sqlalchemy/dialects/mysql/aiomysql.py index 81a1b9762a..d26ab3b4e8 100644 --- a/lib/sqlalchemy/dialects/mysql/aiomysql.py +++ b/lib/sqlalchemy/dialects/mysql/aiomysql.py @@ -33,6 +33,7 @@ from __future__ import annotations from types import ModuleType from typing import Any +from typing import cast from typing import Optional from typing import TYPE_CHECKING @@ -95,10 +96,10 @@ class AsyncAdapt_aiomysql_connection(AsyncAdapt_dbapi_connection): def terminate(self) -> None: # it's not awaitable. - self._connection.close() + cast(AiomysqlConnection, self._connection).close() def close(self) -> None: - await_(self._connection.ensure_closed()) + await_(cast(AiomysqlConnection, self._connection).ensure_closed()) class AsyncAdapt_aiomysql_dbapi: diff --git a/lib/sqlalchemy/dialects/mysql/pymysql.py b/lib/sqlalchemy/dialects/mysql/pymysql.py index 19c11d58c7..83c81be7df 100644 --- a/lib/sqlalchemy/dialects/mysql/pymysql.py +++ b/lib/sqlalchemy/dialects/mysql/pymysql.py @@ -52,6 +52,7 @@ from __future__ import annotations from types import ModuleType from typing import Any +from typing import cast from typing import Literal from typing import Optional from typing import TYPE_CHECKING @@ -116,9 +117,9 @@ class MySQLDialect_pymysql(MySQLDialect_mysqldb): def do_ping(self, dbapi_connection: pymysql.Connection) -> Literal[True]: # type: ignore # noqa: E501 if self._send_false_to_ping: - dbapi_connection.ping(False) + cast("pymysql.Connection[Any]", dbapi_connection).ping(False) else: - dbapi_connection.ping() + cast("pymysql.Connection[Any]", dbapi_connection).ping() return True @@ -131,6 +132,7 @@ class MySQLDialect_pymysql(MySQLDialect_mysqldb): url, _translate_args=_translate_args ) + def is_disconnect( self, e: Exception, connection: Any, cursor: Any ) -> bool: diff --git a/lib/sqlalchemy/dialects/mysql/pyodbc.py b/lib/sqlalchemy/dialects/mysql/pyodbc.py index fd2444baf5..9d95f40c66 100644 --- a/lib/sqlalchemy/dialects/mysql/pyodbc.py +++ b/lib/sqlalchemy/dialects/mysql/pyodbc.py @@ -48,6 +48,7 @@ from __future__ import annotations import datetime import re from typing import Any +from typing import cast from typing import Callable from typing import Optional from typing import TYPE_CHECKING @@ -148,9 +149,13 @@ class MySQLDialect_pyodbc(PyODBCConnector, MySQLDialect): # https://github.com/mkleehammer/pyodbc/wiki/Unicode pyodbc_SQL_CHAR = 1 # pyodbc.SQL_CHAR pyodbc_SQL_WCHAR = -8 # pyodbc.SQL_WCHAR - conn.setdecoding(pyodbc_SQL_CHAR, encoding="utf-8") - conn.setdecoding(pyodbc_SQL_WCHAR, encoding="utf-8") - conn.setencoding(encoding="utf-8") + cast("pyodbc.Connection", conn).setdecoding( + pyodbc_SQL_CHAR, encoding="utf-8" + ) + cast("pyodbc.Connection", conn).setdecoding( + pyodbc_SQL_WCHAR, encoding="utf-8" + ) + cast("pyodbc.Connection", conn).setencoding(encoding="utf-8") return on_connect diff --git a/lib/sqlalchemy/engine/interfaces.py b/lib/sqlalchemy/engine/interfaces.py index 556e49d7f5..05eb2a7518 100644 --- a/lib/sqlalchemy/engine/interfaces.py +++ b/lib/sqlalchemy/engine/interfaces.py @@ -51,6 +51,7 @@ if TYPE_CHECKING: from .base import Engine from .cursor import CursorResult from .url import URL + from ..connectors.asyncio import AsyncIODBAPIConnection from ..event import _ListenerFnType from ..event import dispatcher from ..exc import StatementError @@ -3357,7 +3358,7 @@ class AdaptedConnection: __slots__ = ("_connection",) - _connection: Any + _connection: AsyncIODBAPIConnection @property def driver_connection(self) -> Any: -- 2.47.3