diff --git a/duckdb_engine/__init__.py b/duckdb_engine/__init__.py index e6b1680e2..0f1abb9cc 100644 --- a/duckdb_engine/__init__.py +++ b/duckdb_engine/__init__.py @@ -44,6 +44,7 @@ duckdb_version: str = duckdb.__version__ supports_attach: bool = duckdb_version >= "0.7.0" supports_user_agent: bool = duckdb_version >= "0.9.2" +returns_complex_description = duckdb_version >= "1.4.0" if TYPE_CHECKING: from sqlalchemy.base import Connection @@ -166,6 +167,14 @@ def connection(self) -> "Connection": def close(self) -> None: pass # closing cursors is not supported in duckdb + @property + def description(self) -> tuple: + descr = self.__c.description + if returns_complex_description and descr is not None: + return [(name, typ.id, *rest) for (name, typ, *rest) in descr] + else: + return descr + def __getattr__(self, name: str) -> Any: return getattr(self.__c, name) diff --git a/noxfile.py b/noxfile.py index 53db72843..35195317b 100644 --- a/noxfile.py +++ b/noxfile.py @@ -24,7 +24,7 @@ def group(title: str) -> Generator[None, None, None]: # TODO: "0.5.1", "0.6.1", "0.7.1", "0.8.1" # TODO: 3.11, 3.12, 3.13 @nox.session(py=["3.9", "3.10"]) -@nox.parametrize("duckdb", ["0.9.2", "1.0.0", "1.2.2", "1.3.2"]) +@nox.parametrize("duckdb", ["0.9.2", "1.0.0", "1.2.2", "1.3.2", "1.4.1"]) @nox.parametrize("sqlalchemy", ["1.3", "1.4", "2.0.35"]) def tests(session: nox.Session, duckdb: str, sqlalchemy: str) -> None: tests_core(session, duckdb, sqlalchemy)