Skip to content

build: add duckdb 1.3.2 to test matrix - #1351

Open
Mause wants to merge 1 commit into
mainfrom
duckdb-1.3
Open

build: add duckdb 1.3.2 to test matrix#1351
Mause wants to merge 1 commit into
mainfrom
duckdb-1.3

build: add duckdb 1.3.2 to test matrix

e10e86a
Select commit
Loading
Failed to load commit list.
Sign in for the full log view
GitHub Actions / Test Results - 3.9 failed Sep 28, 2025 in 0s

4 fail, 36 skipped, 61 pass in 13s

101 tests   61 ✅  13s ⏱️
  1 suites  36 💤
  1 files     4 ❌

Results for commit e10e86a.

Annotations

Check warning on line 0 in duckdb_engine.tests.test_basic

See this annotation in the file changed.

@github-actions github-actions / Test Results - 3.9

test_get_columns (duckdb_engine.tests.test_basic) failed

results.xml [took 0s]
Raw output
sqlalchemy.exc.NoSuchTableError: t1
inspector = <duckdb_engine.DuckDBInspector object at 0x7f21c8c15d00>
session = <sqlalchemy.orm.session.Session object at 0x7f21a24f5f40>

    #x1B[0m#x1B[94mdef#x1B[39;49;00m #x1B[92mtest_get_columns#x1B[39;49;00m(inspector: Inspector, session: Session) -> #x1B[94mNone#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
        cols = inspector.get_columns(#x1B[33m"#x1B[39;49;00m#x1B[33mtest#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m, #x1B[94mNone#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
        #x1B[94massert#x1B[39;49;00m #x1B[96mlen#x1B[39;49;00m(cols) == #x1B[94m1#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[94massert#x1B[39;49;00m cols[#x1B[94m0#x1B[39;49;00m][#x1B[33m"#x1B[39;49;00m#x1B[33mname#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m] == #x1B[33m"#x1B[39;49;00m#x1B[33mid#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[94massert#x1B[39;49;00m inspector.has_table(#x1B[33m"#x1B[39;49;00m#x1B[33mt1#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m, #x1B[33m'#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33mdaffy duck#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33m.#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33mquack quack#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
>       cols1 = inspector.get_columns(#x1B[33m"#x1B[39;49;00m#x1B[33mt1#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m, #x1B[94mNone#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mduckdb_engine/tests/test_basic.py#x1B[0m:304: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m.nox/tests-3-9-sqlalchemy-2-0-35-duckdb-1-3-2/lib/python3.9/site-packages/sqlalchemy/engine/reflection.py#x1B[0m:868: in get_columns
    #x1B[0mcol_defs = #x1B[96mself#x1B[39;49;00m.dialect.get_columns(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m<string>#x1B[0m:2: in get_columns
    #x1B[0m#x1B[04m#x1B[91m?#x1B[39;49;00m#x1B[04m#x1B[91m?#x1B[39;49;00m#x1B[04m#x1B[91m?#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m.nox/tests-3-9-sqlalchemy-2-0-35-duckdb-1-3-2/lib/python3.9/site-packages/sqlalchemy/engine/reflection.py#x1B[0m:106: in cache
    #x1B[0mret = fn(#x1B[96mself#x1B[39;49;00m, con, *args, **kw)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m.nox/tests-3-9-sqlalchemy-2-0-35-duckdb-1-3-2/lib/python3.9/site-packages/sqlalchemy/dialects/postgresql/base.py#x1B[0m:3548: in get_columns
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m._value_or_raise(data, table_name, schema)#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <duckdb_engine.Dialect object at 0x7f21a24f5250>, data = dict_items([])
table = 't1', schema = None

    #x1B[0m#x1B[94mdef#x1B[39;49;00m #x1B[92m_value_or_raise#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, data, table, schema):#x1B[90m#x1B[39;49;00m
        #x1B[94mtry#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            #x1B[94mreturn#x1B[39;49;00m #x1B[96mdict#x1B[39;49;00m(data)[(schema, table)]#x1B[90m#x1B[39;49;00m
        #x1B[94mexcept#x1B[39;49;00m #x1B[96mKeyError#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
>           #x1B[94mraise#x1B[39;49;00m exc.NoSuchTableError(#x1B[90m#x1B[39;49;00m
                #x1B[33mf#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mschema#x1B[33m}#x1B[39;49;00m#x1B[33m.#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mtable#x1B[33m}#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m #x1B[94mif#x1B[39;49;00m schema #x1B[94melse#x1B[39;49;00m table#x1B[90m#x1B[39;49;00m
            ) #x1B[94mfrom#x1B[39;49;00m #x1B[94mNone#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE           sqlalchemy.exc.NoSuchTableError: t1#x1B[0m

#x1B[1m#x1B[31m.nox/tests-3-9-sqlalchemy-2-0-35-duckdb-1-3-2/lib/python3.9/site-packages/sqlalchemy/dialects/postgresql/base.py#x1B[0m:3516: NoSuchTableError

Check warning on line 0 in duckdb_engine.tests.test_basic

See this annotation in the file changed.

@github-actions github-actions / Test Results - 3.9

test_get_foreign_keys (duckdb_engine.tests.test_basic) failed

results.xml [took 0s]
Raw output
sqlalchemy.exc.NoSuchTableError: "daffy duck"."quack quack".t1
inspector = <duckdb_engine.DuckDBInspector object at 0x7f21a1d90ca0>

    #x1B[0m#x1B[94mdef#x1B[39;49;00m #x1B[92mtest_get_foreign_keys#x1B[39;49;00m(inspector: Inspector) -> #x1B[94mNone#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
        #x1B[94massert#x1B[39;49;00m inspector.get_foreign_keys(#x1B[33m"#x1B[39;49;00m#x1B[33mtest#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m, #x1B[94mNone#x1B[39;49;00m) == []#x1B[90m#x1B[39;49;00m
>       #x1B[94massert#x1B[39;49;00m inspector.get_foreign_keys(#x1B[33m"#x1B[39;49;00m#x1B[33mt1#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m, #x1B[33m'#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33mdaffy duck#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33m.#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33mquack quack#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m) == []#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mduckdb_engine/tests/test_basic.py#x1B[0m:316: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m.nox/tests-3-9-sqlalchemy-2-0-35-duckdb-1-3-2/lib/python3.9/site-packages/sqlalchemy/engine/reflection.py#x1B[0m:1056: in get_foreign_keys
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m.dialect.get_foreign_keys(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m<string>#x1B[0m:2: in get_foreign_keys
    #x1B[0m#x1B[04m#x1B[91m?#x1B[39;49;00m#x1B[04m#x1B[91m?#x1B[39;49;00m#x1B[04m#x1B[91m?#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m.nox/tests-3-9-sqlalchemy-2-0-35-duckdb-1-3-2/lib/python3.9/site-packages/sqlalchemy/engine/reflection.py#x1B[0m:106: in cache
    #x1B[0mret = fn(#x1B[96mself#x1B[39;49;00m, con, *args, **kw)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m.nox/tests-3-9-sqlalchemy-2-0-35-duckdb-1-3-2/lib/python3.9/site-packages/sqlalchemy/dialects/postgresql/base.py#x1B[0m:4159: in get_foreign_keys
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m._value_or_raise(data, table_name, schema)#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <duckdb_engine.Dialect object at 0x7f21ad68be20>, data = dict_items([])
table = 't1', schema = '"daffy duck"."quack quack"'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m #x1B[92m_value_or_raise#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, data, table, schema):#x1B[90m#x1B[39;49;00m
        #x1B[94mtry#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            #x1B[94mreturn#x1B[39;49;00m #x1B[96mdict#x1B[39;49;00m(data)[(schema, table)]#x1B[90m#x1B[39;49;00m
        #x1B[94mexcept#x1B[39;49;00m #x1B[96mKeyError#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
>           #x1B[94mraise#x1B[39;49;00m exc.NoSuchTableError(#x1B[90m#x1B[39;49;00m
                #x1B[33mf#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mschema#x1B[33m}#x1B[39;49;00m#x1B[33m.#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mtable#x1B[33m}#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m #x1B[94mif#x1B[39;49;00m schema #x1B[94melse#x1B[39;49;00m table#x1B[90m#x1B[39;49;00m
            ) #x1B[94mfrom#x1B[39;49;00m #x1B[94mNone#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE           sqlalchemy.exc.NoSuchTableError: "daffy duck"."quack quack".t1#x1B[0m

#x1B[1m#x1B[31m.nox/tests-3-9-sqlalchemy-2-0-35-duckdb-1-3-2/lib/python3.9/site-packages/sqlalchemy/dialects/postgresql/base.py#x1B[0m:3516: NoSuchTableError

Check warning on line 0 in duckdb_engine.tests.test_basic

See this annotation in the file changed.

@github-actions github-actions / Test Results - 3.9

test_get_check_constraints (duckdb_engine.tests.test_basic) failed

results.xml [took 0s]
Raw output
NotImplementedError
self = <duckdb_engine.DuckDBInspector object at 0x7f21a793c550>
table_name = 't1', schema = '"daffy duck"."quack quack"', kw = {}

    #x1B[0m#x1B[94mdef#x1B[39;49;00m #x1B[92mget_check_constraints#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m, table_name: #x1B[96mstr#x1B[39;49;00m, schema: Optional[#x1B[96mstr#x1B[39;49;00m] = #x1B[94mNone#x1B[39;49;00m, **kw: Any#x1B[90m#x1B[39;49;00m
    ) -> List[Dict[#x1B[96mstr#x1B[39;49;00m, Any]]:#x1B[90m#x1B[39;49;00m
        #x1B[94mtry#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
>           #x1B[94mreturn#x1B[39;49;00m #x1B[96msuper#x1B[39;49;00m().get_check_constraints(table_name, schema, **kw)#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mduckdb_engine/__init__.py#x1B[0m:86: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m.nox/tests-3-9-sqlalchemy-2-0-35-duckdb-1-3-2/lib/python3.9/site-packages/sqlalchemy/engine/reflection.py#x1B[0m:1415: in get_check_constraints
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m.dialect.get_check_constraints(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m.nox/tests-3-9-sqlalchemy-2-0-35-duckdb-1-3-2/lib/python3.9/site-packages/sqlalchemy/engine/reflection.py#x1B[0m:106: in cache
    #x1B[0mret = fn(#x1B[96mself#x1B[39;49;00m, con, *args, **kw)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m.nox/tests-3-9-sqlalchemy-2-0-35-duckdb-1-3-2/lib/python3.9/site-packages/sqlalchemy/dialects/postgresql/base.py#x1B[0m:4729: in get_check_constraints
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m._value_or_raise(data, table_name, schema)#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <duckdb_engine.Dialect object at 0x7f21a793c580>, data = dict_items([])
table = 't1', schema = '"daffy duck"."quack quack"'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m #x1B[92m_value_or_raise#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, data, table, schema):#x1B[90m#x1B[39;49;00m
        #x1B[94mtry#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            #x1B[94mreturn#x1B[39;49;00m #x1B[96mdict#x1B[39;49;00m(data)[(schema, table)]#x1B[90m#x1B[39;49;00m
        #x1B[94mexcept#x1B[39;49;00m #x1B[96mKeyError#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
>           #x1B[94mraise#x1B[39;49;00m exc.NoSuchTableError(#x1B[90m#x1B[39;49;00m
                #x1B[33mf#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mschema#x1B[33m}#x1B[39;49;00m#x1B[33m.#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mtable#x1B[33m}#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m #x1B[94mif#x1B[39;49;00m schema #x1B[94melse#x1B[39;49;00m table#x1B[90m#x1B[39;49;00m
            ) #x1B[94mfrom#x1B[39;49;00m #x1B[94mNone#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE           sqlalchemy.exc.NoSuchTableError: "daffy duck"."quack quack".t1#x1B[0m

#x1B[1m#x1B[31m.nox/tests-3-9-sqlalchemy-2-0-35-duckdb-1-3-2/lib/python3.9/site-packages/sqlalchemy/dialects/postgresql/base.py#x1B[0m:3516: NoSuchTableError

#x1B[33mThe above exception was the direct cause of the following exception:#x1B[0m

inspector = <duckdb_engine.DuckDBInspector object at 0x7f21a793c550>

    #x1B[0m#x1B[37m@mark#x1B[39;49;00m.skipif(#x1B[90m#x1B[39;49;00m
        Version(sqlalchemy.__version__) < Version(#x1B[33m"#x1B[39;49;00m#x1B[33m2.0.0#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m),#x1B[90m#x1B[39;49;00m
        reason=#x1B[33m"#x1B[39;49;00m#x1B[33m2-arg pg_getconstraintdef not yet supported in duckdb#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
    )#x1B[90m#x1B[39;49;00m
    #x1B[94mdef#x1B[39;49;00m #x1B[92mtest_get_check_constraints#x1B[39;49;00m(inspector: Inspector) -> #x1B[94mNone#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
        #x1B[94massert#x1B[39;49;00m inspector.get_check_constraints(#x1B[33m"#x1B[39;49;00m#x1B[33mtest#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m, #x1B[94mNone#x1B[39;49;00m) == []#x1B[90m#x1B[39;49;00m
>       #x1B[94massert#x1B[39;49;00m inspector.get_check_constraints(#x1B[33m"#x1B[39;49;00m#x1B[33mt1#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m, #x1B[33m'#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33mdaffy duck#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33m.#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33mquack quack#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m) == []#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mduckdb_engine/tests/test_basic.py#x1B[0m:325: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <duckdb_engine.DuckDBInspector object at 0x7f21a793c550>
table_name = 't1', schema = '"daffy duck"."quack quack"', kw = {}

    #x1B[0m#x1B[94mdef#x1B[39;49;00m #x1B[92mget_check_constraints#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m, table_name: #x1B[96mstr#x1B[39;49;00m, schema: Optional[#x1B[96mstr#x1B[39;49;00m] = #x1B[94mNone#x1B[39;49;00m, **kw: Any#x1B[90m#x1B[39;49;00m
    ) -> List[Dict[#x1B[96mstr#x1B[39;49;00m, Any]]:#x1B[90m#x1B[39;49;00m
        #x1B[94mtry#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            #x1B[94mreturn#x1B[39;49;00m #x1B[96msuper#x1B[39;49;00m().get_check_constraints(table_name, schema, **kw)#x1B[90m#x1B[39;49;00m
        #x1B[94mexcept#x1B[39;49;00m #x1B[96mException#x1B[39;49;00m #x1B[94mas#x1B[39;49;00m e:#x1B[90m#x1B[39;49;00m
>           #x1B[94mraise#x1B[39;49;00m #x1B[96mNotImplementedError#x1B[39;49;00m() #x1B[94mfrom#x1B[39;49;00m #x1B[04m#x1B[96me#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE           NotImplementedError#x1B[0m

#x1B[1m#x1B[31mduckdb_engine/__init__.py#x1B[0m:88: NotImplementedError

Check warning on line 0 in duckdb_engine.tests.test_basic

See this annotation in the file changed.

@github-actions github-actions / Test Results - 3.9

test_get_unique_constraints (duckdb_engine.tests.test_basic) failed

results.xml [took 0s]
Raw output
sqlalchemy.exc.NoSuchTableError: "daffy duck"."quack quack".t1
inspector = <duckdb_engine.DuckDBInspector object at 0x7f21a7bcf2b0>

    #x1B[0m#x1B[94mdef#x1B[39;49;00m #x1B[92mtest_get_unique_constraints#x1B[39;49;00m(inspector: Inspector) -> #x1B[94mNone#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
        inspector.get_unique_constraints(#x1B[33m"#x1B[39;49;00m#x1B[33mtest#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m, #x1B[94mNone#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
>       inspector.get_unique_constraints(#x1B[33m"#x1B[39;49;00m#x1B[33mt1#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m, #x1B[33m'#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33mdaffy duck#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33m.#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33mquack quack#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mduckdb_engine/tests/test_basic.py#x1B[0m:330: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m.nox/tests-3-9-sqlalchemy-2-0-35-duckdb-1-3-2/lib/python3.9/site-packages/sqlalchemy/engine/reflection.py#x1B[0m:1232: in get_unique_constraints
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m.dialect.get_unique_constraints(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m<string>#x1B[0m:2: in get_unique_constraints
    #x1B[0m#x1B[04m#x1B[91m?#x1B[39;49;00m#x1B[04m#x1B[91m?#x1B[39;49;00m#x1B[04m#x1B[91m?#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m.nox/tests-3-9-sqlalchemy-2-0-35-duckdb-1-3-2/lib/python3.9/site-packages/sqlalchemy/engine/reflection.py#x1B[0m:106: in cache
    #x1B[0mret = fn(#x1B[96mself#x1B[39;49;00m, con, *args, **kw)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m.nox/tests-3-9-sqlalchemy-2-0-35-duckdb-1-3-2/lib/python3.9/site-packages/sqlalchemy/dialects/postgresql/base.py#x1B[0m:4624: in get_unique_constraints
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m._value_or_raise(data, table_name, schema)#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <duckdb_engine.Dialect object at 0x7f21a7bcf460>, data = dict_items([])
table = 't1', schema = '"daffy duck"."quack quack"'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m #x1B[92m_value_or_raise#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, data, table, schema):#x1B[90m#x1B[39;49;00m
        #x1B[94mtry#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            #x1B[94mreturn#x1B[39;49;00m #x1B[96mdict#x1B[39;49;00m(data)[(schema, table)]#x1B[90m#x1B[39;49;00m
        #x1B[94mexcept#x1B[39;49;00m #x1B[96mKeyError#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
>           #x1B[94mraise#x1B[39;49;00m exc.NoSuchTableError(#x1B[90m#x1B[39;49;00m
                #x1B[33mf#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mschema#x1B[33m}#x1B[39;49;00m#x1B[33m.#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mtable#x1B[33m}#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m #x1B[94mif#x1B[39;49;00m schema #x1B[94melse#x1B[39;49;00m table#x1B[90m#x1B[39;49;00m
            ) #x1B[94mfrom#x1B[39;49;00m #x1B[94mNone#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE           sqlalchemy.exc.NoSuchTableError: "daffy duck"."quack quack".t1#x1B[0m

#x1B[1m#x1B[31m.nox/tests-3-9-sqlalchemy-2-0-35-duckdb-1-3-2/lib/python3.9/site-packages/sqlalchemy/dialects/postgresql/base.py#x1B[0m:3516: NoSuchTableError