11import datetime
2+ import sys
23from pathlib import Path
34
5+ import adbc_driver_manager .dbapi
46import numpy as np
7+ import pyarrow
58import pytest
69
7- import duckdb
10+ import adbc_driver_duckdb . dbapi
811
9- adbc_driver_manager = pytest .importorskip ("adbc_driver_manager.dbapi" )
10- adbc_driver_manager_lib = pytest .importorskip ("adbc_driver_manager._lib" )
11-
12- pyarrow = pytest .importorskip ("pyarrow" )
13-
14- # When testing local, if you build via BUILD_PYTHON=1 make, you need to manually set up the
15- # dylib duckdb path.
16- driver_path = duckdb .duckdb .__file__
12+ xfail = pytest .mark .xfail
13+ driver_path = adbc_driver_duckdb .driver_path ()
1714
1815
1916@pytest .fixture
2017def duck_conn ():
21- with adbc_driver_manager .connect (driver = driver_path , entrypoint = "duckdb_adbc_init" ) as conn :
18+ with adbc_driver_manager .dbapi . connect (driver = driver_path , entrypoint = "duckdb_adbc_init" ) as conn :
2219 yield conn
2320
2421
@@ -32,7 +29,7 @@ def example_table():
3229 )
3330
3431
35- @pytest . mark . xfail
32+ @xfail ( sys . platform == "win32" , reason = "adbc-driver-manager.adbc_get_info() returns an empty dict on windows" )
3633def test_connection_get_info (duck_conn ):
3734 assert duck_conn .adbc_get_info () != {}
3835
@@ -45,6 +42,9 @@ def test_connection_get_table_types(duck_conn):
4542 assert duck_conn .adbc_get_table_types () == ["BASE TABLE" ]
4643
4744
45+ @xfail (
46+ sys .platform == "win32" , reason = "adbc-driver-manager.adbc_get_objects() returns an invalid schema dict on windows"
47+ )
4848def test_connection_get_objects (duck_conn ):
4949 with duck_conn .cursor () as cursor :
5050 cursor .execute ("CREATE TABLE getobjects (ints BIGINT PRIMARY KEY)" )
@@ -66,6 +66,9 @@ def test_connection_get_objects(duck_conn):
6666 assert depth_all .schema == depth_catalogs .schema
6767
6868
69+ @xfail (
70+ sys .platform == "win32" , reason = "adbc-driver-manager.adbc_get_objects() returns an invalid schema dict on windows"
71+ )
6972def test_connection_get_objects_filters (duck_conn ):
7073 with duck_conn .cursor () as cursor :
7174 cursor .execute ("CREATE TABLE getobjects (ints BIGINT PRIMARY KEY)" )
@@ -98,7 +101,7 @@ def test_commit(tmp_path):
98101 table = example_table ()
99102 db_kwargs = {"path" : f"{ db } " }
100103 # Start connection with auto-commit off
101- with adbc_driver_manager .connect (
104+ with adbc_driver_manager .dbapi . connect (
102105 driver = driver_path ,
103106 entrypoint = "duckdb_adbc_init" ,
104107 db_kwargs = db_kwargs ,
@@ -108,7 +111,7 @@ def test_commit(tmp_path):
108111 cur .adbc_ingest ("ingest" , table , "create" )
109112
110113 # Check Data is not there
111- with adbc_driver_manager .connect (
114+ with adbc_driver_manager .dbapi . connect (
112115 driver = driver_path ,
113116 entrypoint = "duckdb_adbc_init" ,
114117 db_kwargs = db_kwargs ,
@@ -118,7 +121,7 @@ def test_commit(tmp_path):
118121 with conn .cursor () as cur :
119122 # This errors because the table does not exist
120123 with pytest .raises (
121- adbc_driver_manager_lib .InternalError ,
124+ adbc_driver_manager . _lib .InternalError ,
122125 match = r"Table with name ingest does not exist!" ,
123126 ):
124127 cur .execute ("SELECT count(*) from ingest" )
@@ -127,7 +130,7 @@ def test_commit(tmp_path):
127130
128131 # This now works because we enabled autocommit
129132 with (
130- adbc_driver_manager .connect (
133+ adbc_driver_manager .dbapi . connect (
131134 driver = driver_path ,
132135 entrypoint = "duckdb_adbc_init" ,
133136 db_kwargs = db_kwargs ,
@@ -204,6 +207,7 @@ def test_statement_query(duck_conn):
204207 assert cursor .fetch_arrow_table ().to_pylist () == [{"foo" : 1 }]
205208
206209
210+ @xfail (sys .platform == "win32" , reason = "adbc-driver-manager returns an invalid table schema on windows" )
207211def test_insertion (duck_conn ):
208212 table = example_table ()
209213 reader = table .to_reader ()
@@ -221,7 +225,7 @@ def test_insertion(duck_conn):
221225 # Test Append
222226 with duck_conn .cursor () as cursor :
223227 with pytest .raises (
224- adbc_driver_manager_lib .InternalError ,
228+ adbc_driver_manager .InternalError ,
225229 match = r'Table with name "ingest_table" already exists!' ,
226230 ):
227231 cursor .adbc_ingest ("ingest_table" , table , "create" )
@@ -230,6 +234,7 @@ def test_insertion(duck_conn):
230234 assert cursor .fetch_arrow_table ().to_pydict () == {"count_star()" : [8 ]}
231235
232236
237+ @xfail (sys .platform == "win32" , reason = "adbc-driver-manager returns an invalid table schema on windows" )
233238def test_read (duck_conn ):
234239 with duck_conn .cursor () as cursor :
235240 filename = Path (__file__ ).parent / ".." / "data" / "category.csv"
@@ -299,7 +304,7 @@ def test_large_chunk(tmp_path):
299304 db .unlink ()
300305 db_kwargs = {"path" : f"{ db } " }
301306 with (
302- adbc_driver_manager .connect (
307+ adbc_driver_manager .dbapi . connect (
303308 driver = driver_path ,
304309 entrypoint = "duckdb_adbc_init" ,
305310 db_kwargs = db_kwargs ,
@@ -325,7 +330,7 @@ def test_dictionary_data(tmp_path):
325330 db .unlink ()
326331 db_kwargs = {"path" : f"{ db } " }
327332 with (
328- adbc_driver_manager .connect (
333+ adbc_driver_manager .dbapi . connect (
329334 driver = driver_path ,
330335 entrypoint = "duckdb_adbc_init" ,
331336 db_kwargs = db_kwargs ,
@@ -353,7 +358,7 @@ def test_ree_data(tmp_path):
353358 db .unlink ()
354359 db_kwargs = {"path" : f"{ db } " }
355360 with (
356- adbc_driver_manager .connect (
361+ adbc_driver_manager .dbapi . connect (
357362 driver = driver_path ,
358363 entrypoint = "duckdb_adbc_init" ,
359364 db_kwargs = db_kwargs ,
0 commit comments