Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore(deps): update pre-commit hook astral-sh/ruff-pre-commit to v0.8.3 - autoclosed #1167

Merged
merged 1 commit into from
Dec 13, 2024

chore(deps): update pre-commit hook astral-sh/ruff-pre-commit to v0.8.3

4edbcec
Select commit
Loading
Failed to load commit list.
Sign in for the full log view
Merged

chore(deps): update pre-commit hook astral-sh/ruff-pre-commit to v0.8.3 - autoclosed #1167

chore(deps): update pre-commit hook astral-sh/ruff-pre-commit to v0.8.3
4edbcec
Select commit
Loading
Failed to load commit list.
GitHub Actions / Test Results - 3.8 failed Dec 13, 2024 in 0s

2 fail, 5 skipped, 91 pass in 14s

98 tests  +1   91 ✅ ±0   14s ⏱️ -5s
 1 suites ±0    5 💤 ±0 
 1 files   ±0    2 ❌ +1 

Results for commit 4edbcec. ± Comparison against earlier commit dea4eea.

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.8

test_get_schema_names (duckdb_engine.tests.test_basic) failed

results.xml [took 0s]
Raw output
assert ['"daffy duck..._schema', ...] == ['"daffy duck...ry.main', ...]
  
  At index 0 diff: #x1B[0m#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.main#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[90m#x1B[39;49;00m != #x1B[0m#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.information_schema#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
  Right contains 3 more items, first extra item: #x1B[0m#x1B[33m'#x1B[39;49;00m#x1B[33msystem.main#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
  
  Full diff:
  #x1B[0m#x1B[90m #x1B[39;49;00m [#x1B[90m#x1B[39;49;00m
  #x1B[91m-     '"daffy duck".information_schema',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
  #x1B[90m #x1B[39;49;00m     '"daffy duck".main',#x1B[90m#x1B[39;49;00m
  #x1B[90m #x1B[39;49;00m     '"daffy duck"."quack quack"',#x1B[90m#x1B[39;49;00m
  #x1B[90m #x1B[39;49;00m     '"daffy duck"."you\'re "" despicable"',#x1B[90m#x1B[39;49;00m
  #x1B[91m-     'memory.information_schema',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
  #x1B[90m #x1B[39;49;00m     'memory.main',#x1B[90m#x1B[39;49;00m
  #x1B[90m #x1B[39;49;00m     'memory."quack quack"',#x1B[90m#x1B[39;49;00m
  #x1B[90m #x1B[39;49;00m     'system.information_schema',#x1B[90m#x1B[39;49;00m
  #x1B[90m #x1B[39;49;00m     'system.main',#x1B[90m#x1B[39;49;00m
  #x1B[91m-     'temp.information_schema',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
  #x1B[90m #x1B[39;49;00m     'temp.main',#x1B[90m#x1B[39;49;00m
  #x1B[90m #x1B[39;49;00m ]#x1B[90m#x1B[39;49;00m
inspector = <duckdb_engine.DuckDBInspector object at 0x7fa01c497f10>
session = <sqlalchemy.orm.session.Session object at 0x7fa01c4972e0>

    #x1B[0m#x1B[37m@mark#x1B[39;49;00m.skipif(#x1B[90m#x1B[39;49;00m
        supports_attach #x1B[95mis#x1B[39;49;00m #x1B[94mFalse#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        reason=#x1B[33m"#x1B[39;49;00m#x1B[33mATTACH is not supported for DuckDB version < 0.7.0#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_schema_names#x1B[39;49;00m(inspector: Inspector, session: Session) -> #x1B[94mNone#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
        #x1B[90m# Using multi-line strings because of all the single and double quotes flying around...#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        cmds = [#x1B[90m#x1B[39;49;00m
    #x1B[90m        #x1B[39;49;00m#x1B[33m"""CREATE SCHEMA "quack quack" """#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
    #x1B[90m        #x1B[39;49;00m#x1B[33m"""CREATE SCHEMA "daffy duck"."you're "" despicable" """#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        ]#x1B[90m#x1B[39;49;00m
        #x1B[94mfor#x1B[39;49;00m cmd #x1B[95min#x1B[39;49;00m cmds:#x1B[90m#x1B[39;49;00m
            session.execute(text(cmd))#x1B[90m#x1B[39;49;00m
            session.commit()#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# Deliberately excluding pg_catalog schema (to align with Postgres)#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        names = inspector.get_schema_names()#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m supports_attach:#x1B[90m#x1B[39;49;00m
>           #x1B[94massert#x1B[39;49;00m names == [#x1B[90m#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.information_schema#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m,#x1B[90m#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.main#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m,#x1B[90m#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[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[33myou#x1B[39;49;00m#x1B[33m\'#x1B[39;49;00m#x1B[33mre #x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33m despicable#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
                #x1B[33m"#x1B[39;49;00m#x1B[33mmemory.information_schema#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
                #x1B[33m"#x1B[39;49;00m#x1B[33mmemory.main#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
                #x1B[33m'#x1B[39;49;00m#x1B[33mmemory.#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[33m"#x1B[39;49;00m#x1B[33msystem.information_schema#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
                #x1B[33m"#x1B[39;49;00m#x1B[33msystem.main#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
                #x1B[33m"#x1B[39;49;00m#x1B[33mtemp.information_schema#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
                #x1B[33m"#x1B[39;49;00m#x1B[33mtemp.main#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
            ]#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE           assert ['"daffy duck..._schema', ...] == ['"daffy duck...ry.main', ...]#x1B[0m
#x1B[1m#x1B[31mE             #x1B[0m
#x1B[1m#x1B[31mE             At index 0 diff: #x1B[0m#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.main#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[90m#x1B[39;49;00m != #x1B[0m#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.information_schema#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[90m#x1B[39;49;00m#x1B[0m
#x1B[1m#x1B[31mE             Right contains 3 more items, first extra item: #x1B[0m#x1B[33m'#x1B[39;49;00m#x1B[33msystem.main#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[90m#x1B[39;49;00m#x1B[0m
#x1B[1m#x1B[31mE             #x1B[0m
#x1B[1m#x1B[31mE             Full diff:#x1B[0m
#x1B[1m#x1B[31mE             #x1B[0m#x1B[90m #x1B[39;49;00m [#x1B[90m#x1B[39;49;00m#x1B[0m
#x1B[1m#x1B[31mE             #x1B[91m-     '"daffy duck".information_schema',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m#x1B[0m
#x1B[1m#x1B[31mE             #x1B[90m #x1B[39;49;00m     '"daffy duck".main',#x1B[90m#x1B[39;49;00m#x1B[0m
#x1B[1m#x1B[31mE             #x1B[90m #x1B[39;49;00m     '"daffy duck"."quack quack"',#x1B[90m#x1B[39;49;00m#x1B[0m
#x1B[1m#x1B[31mE             #x1B[90m #x1B[39;49;00m     '"daffy duck"."you\'re "" despicable"',#x1B[90m#x1B[39;49;00m#x1B[0m
#x1B[1m#x1B[31mE             #x1B[91m-     'memory.information_schema',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m#x1B[0m
#x1B[1m#x1B[31mE             #x1B[90m #x1B[39;49;00m     'memory.main',#x1B[90m#x1B[39;49;00m#x1B[0m
#x1B[1m#x1B[31mE             #x1B[90m #x1B[39;49;00m     'memory."quack quack"',#x1B[90m#x1B[39;49;00m#x1B[0m
#x1B[1m#x1B[31mE             #x1B[90m #x1B[39;49;00m     'system.information_schema',#x1B[90m#x1B[39;49;00m#x1B[0m
#x1B[1m#x1B[31mE             #x1B[90m #x1B[39;49;00m     'system.main',#x1B[90m#x1B[39;49;00m#x1B[0m
#x1B[1m#x1B[31mE             #x1B[91m-     'temp.information_schema',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m#x1B[0m
#x1B[1m#x1B[31mE             #x1B[90m #x1B[39;49;00m     'temp.main',#x1B[90m#x1B[39;49;00m#x1B[0m
#x1B[1m#x1B[31mE             #x1B[90m #x1B[39;49;00m ]#x1B[90m#x1B[39;49;00m#x1B[0m

#x1B[1m#x1B[31mduckdb_engine/tests/test_basic.py#x1B[0m:189: AssertionError

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.8

test_preload_extension (duckdb_engine.tests.test_basic) failed

results.xml [took 0s]
Raw output
sqlalchemy.exc.OperationalError: (duckdb.duckdb.IOException) IO Error: Extension "/home/runner/.duckdb/extensions/bcd65821a9/linux_amd64_gcc4/httpfs.duckdb_extension" could not be loaded because its signature is either missing or invalid and unsigned extensions are disabled by configuration (allow_unsigned_extensions)
(Background on this error at: https://sqlalche.me/e/14/e3q8)
self = Engine(duckdb:///)
fn = <bound method Pool.connect of <sqlalchemy.pool.impl.QueuePool object at 0x7fa01c50c6a0>>
connection = None

    #x1B[0m#x1B[94mdef#x1B[39;49;00m #x1B[92m_wrap_pool_connect#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, fn, connection):#x1B[90m#x1B[39;49;00m
        dialect = #x1B[96mself#x1B[39;49;00m.dialect#x1B[90m#x1B[39;49;00m
        #x1B[94mtry#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
>           #x1B[94mreturn#x1B[39;49;00m fn()#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31m.nox/nightly-3-8/lib/python3.8/site-packages/sqlalchemy/engine/base.py#x1B[0m:3371: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m.nox/nightly-3-8/lib/python3.8/site-packages/sqlalchemy/pool/base.py#x1B[0m:327: in connect
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m _ConnectionFairy._checkout(#x1B[96mself#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m.nox/nightly-3-8/lib/python3.8/site-packages/sqlalchemy/pool/base.py#x1B[0m:894: in _checkout
    #x1B[0mfairy = _ConnectionRecord.checkout(pool)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m.nox/nightly-3-8/lib/python3.8/site-packages/sqlalchemy/pool/base.py#x1B[0m:493: in checkout
    #x1B[0mrec = pool._do_get()#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m.nox/nightly-3-8/lib/python3.8/site-packages/sqlalchemy/pool/impl.py#x1B[0m:146: in _do_get
    #x1B[0m#x1B[96mself#x1B[39;49;00m._dec_overflow()#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m.nox/nightly-3-8/lib/python3.8/site-packages/sqlalchemy/util/langhelpers.py#x1B[0m:70: in __exit__
    #x1B[0mcompat.raise_(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m.nox/nightly-3-8/lib/python3.8/site-packages/sqlalchemy/util/compat.py#x1B[0m:211: in raise_
    #x1B[0m#x1B[94mraise#x1B[39;49;00m exception#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m.nox/nightly-3-8/lib/python3.8/site-packages/sqlalchemy/pool/impl.py#x1B[0m:143: in _do_get
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m._create_connection()#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m.nox/nightly-3-8/lib/python3.8/site-packages/sqlalchemy/pool/base.py#x1B[0m:273: in _create_connection
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m _ConnectionRecord(#x1B[96mself#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m.nox/nightly-3-8/lib/python3.8/site-packages/sqlalchemy/pool/base.py#x1B[0m:388: in __init__
    #x1B[0m#x1B[96mself#x1B[39;49;00m.__connect()#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m.nox/nightly-3-8/lib/python3.8/site-packages/sqlalchemy/pool/base.py#x1B[0m:691: in __connect
    #x1B[0mpool.logger.debug(#x1B[33m"#x1B[39;49;00m#x1B[33mError on connect(): #x1B[39;49;00m#x1B[33m%s#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m, e)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m.nox/nightly-3-8/lib/python3.8/site-packages/sqlalchemy/util/langhelpers.py#x1B[0m:70: in __exit__
    #x1B[0mcompat.raise_(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m.nox/nightly-3-8/lib/python3.8/site-packages/sqlalchemy/util/compat.py#x1B[0m:211: in raise_
    #x1B[0m#x1B[94mraise#x1B[39;49;00m exception#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m.nox/nightly-3-8/lib/python3.8/site-packages/sqlalchemy/pool/base.py#x1B[0m:686: in __connect
    #x1B[0m#x1B[96mself#x1B[39;49;00m.dbapi_connection = connection = pool._invoke_creator(#x1B[96mself#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m.nox/nightly-3-8/lib/python3.8/site-packages/sqlalchemy/engine/create.py#x1B[0m:574: in connect
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m dialect.connect(*cargs, **cparams)#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <duckdb_engine.Dialect object at 0x7fa01c50c9a0>, cargs = ()
cparams = {'config': {'custom_user_agent': 'duckdb_engine/0.13.7-pre0(sqlalchemy/1.4.54)'}}
preload_extensions = ['httpfs']
ext = {'s3_region': 'ap-southeast-2', 's3_use_ssl': True}
user_agent = 'duckdb_engine/0.13.7-pre0(sqlalchemy/1.4.54)'
conn = <duckdb.duckdb.DuckDBPyConnection object at 0x7fa018c5eeb0>
extension = 'httpfs'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m #x1B[92mconnect#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, *cargs: Any, **cparams: Any) -> #x1B[33m"#x1B[39;49;00m#x1B[33mConnection#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
        core_keys = get_core_config()#x1B[90m#x1B[39;49;00m
        preload_extensions = cparams.pop(#x1B[33m"#x1B[39;49;00m#x1B[33mpreload_extensions#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m, [])#x1B[90m#x1B[39;49;00m
        config = #x1B[96mdict#x1B[39;49;00m(cparams.get(#x1B[33m"#x1B[39;49;00m#x1B[33mconfig#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m, {}))#x1B[90m#x1B[39;49;00m
        cparams[#x1B[33m"#x1B[39;49;00m#x1B[33mconfig#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m] = config#x1B[90m#x1B[39;49;00m
        config.update(cparams.pop(#x1B[33m"#x1B[39;49;00m#x1B[33murl_config#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m, {}))#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        ext = {k: config.pop(k) #x1B[94mfor#x1B[39;49;00m k #x1B[95min#x1B[39;49;00m #x1B[96mlist#x1B[39;49;00m(config) #x1B[94mif#x1B[39;49;00m k #x1B[95mnot#x1B[39;49;00m #x1B[95min#x1B[39;49;00m core_keys}#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m supports_user_agent:#x1B[90m#x1B[39;49;00m
            user_agent = #x1B[33mf#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33mduckdb_engine/#x1B[39;49;00m#x1B[33m{#x1B[39;49;00m__version__#x1B[33m}#x1B[39;49;00m#x1B[33m(sqlalchemy/#x1B[39;49;00m#x1B[33m{#x1B[39;49;00msqlalchemy_version#x1B[33m}#x1B[39;49;00m#x1B[33m)#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
            #x1B[94mif#x1B[39;49;00m #x1B[33m"#x1B[39;49;00m#x1B[33mcustom_user_agent#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m #x1B[95min#x1B[39;49;00m config:#x1B[90m#x1B[39;49;00m
                user_agent = #x1B[33mf#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33m{#x1B[39;49;00muser_agent#x1B[33m}#x1B[39;49;00m#x1B[33m #x1B[39;49;00m#x1B[33m{#x1B[39;49;00mconfig[#x1B[33m'#x1B[39;49;00m#x1B[33mcustom_user_agent#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m]#x1B[33m}#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
            config[#x1B[33m"#x1B[39;49;00m#x1B[33mcustom_user_agent#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m] = user_agent#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        conn = duckdb.connect(*cargs, **cparams)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mfor#x1B[39;49;00m extension #x1B[95min#x1B[39;49;00m preload_extensions:#x1B[90m#x1B[39;49;00m
>           conn.execute(#x1B[33mf#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33mLOAD #x1B[39;49;00m#x1B[33m{#x1B[39;49;00mextension#x1B[33m}#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE           duckdb.duckdb.IOException: IO Error: Extension "/home/runner/.duckdb/extensions/bcd65821a9/linux_amd64_gcc4/httpfs.duckdb_extension" could not be loaded because its signature is either missing or invalid and unsigned extensions are disabled by configuration (allow_unsigned_extensions)#x1B[0m

#x1B[1m#x1B[31mduckdb_engine/__init__.py#x1B[0m:288: IOException

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

    #x1B[0m#x1B[37m@mark#x1B[39;49;00m.skipif(os.uname().machine == #x1B[33m"#x1B[39;49;00m#x1B[33maarch64#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m, reason=#x1B[33m"#x1B[39;49;00m#x1B[33mnot supported on aarch64#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
    #x1B[37m@mark#x1B[39;49;00m.remote_data#x1B[90m#x1B[39;49;00m
    #x1B[94mdef#x1B[39;49;00m #x1B[92mtest_preload_extension#x1B[39;49;00m() -> #x1B[94mNone#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
        duckdb.connect().execute(#x1B[33m"#x1B[39;49;00m#x1B[33mINSTALL httpfs#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
        engine = create_engine(#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mduckdb:///#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
            connect_args={#x1B[90m#x1B[39;49;00m
                #x1B[33m"#x1B[39;49;00m#x1B[33mpreload_extensions#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m: [#x1B[33m"#x1B[39;49;00m#x1B[33mhttpfs#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m],#x1B[90m#x1B[39;49;00m
                #x1B[33m"#x1B[39;49;00m#x1B[33mconfig#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m: {#x1B[33m"#x1B[39;49;00m#x1B[33ms3_region#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m: #x1B[33m"#x1B[39;49;00m#x1B[33map-southeast-2#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m, #x1B[33m"#x1B[39;49;00m#x1B[33ms3_use_ssl#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m: #x1B[94mTrue#x1B[39;49;00m},#x1B[90m#x1B[39;49;00m
            },#x1B[90m#x1B[39;49;00m
        )#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# check that we get an error indicating that the extension was loaded#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
>       #x1B[94mwith#x1B[39;49;00m engine.connect() #x1B[94mas#x1B[39;49;00m conn, raises(#x1B[96mException#x1B[39;49;00m, match=#x1B[33m"#x1B[39;49;00m#x1B[33mHTTP HEAD#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:271: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m.nox/nightly-3-8/lib/python3.8/site-packages/sqlalchemy/engine/base.py#x1B[0m:3325: in connect
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m._connection_cls(#x1B[96mself#x1B[39;49;00m, close_with_result=close_with_result)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m.nox/nightly-3-8/lib/python3.8/site-packages/sqlalchemy/engine/base.py#x1B[0m:96: in __init__
    #x1B[0m#x1B[94melse#x1B[39;49;00m engine.raw_connection()#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m.nox/nightly-3-8/lib/python3.8/site-packages/sqlalchemy/engine/base.py#x1B[0m:3404: in raw_connection
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m._wrap_pool_connect(#x1B[96mself#x1B[39;49;00m.pool.connect, _connection)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m.nox/nightly-3-8/lib/python3.8/site-packages/sqlalchemy/engine/base.py#x1B[0m:3374: in _wrap_pool_connect
    #x1B[0mConnection._handle_dbapi_exception_noconnection(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m.nox/nightly-3-8/lib/python3.8/site-packages/sqlalchemy/engine/base.py#x1B[0m:2208: in _handle_dbapi_exception_noconnection
    #x1B[0mutil.raise_(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m.nox/nightly-3-8/lib/python3.8/site-packages/sqlalchemy/util/compat.py#x1B[0m:211: in raise_
    #x1B[0m#x1B[94mraise#x1B[39;49;00m exception#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m.nox/nightly-3-8/lib/python3.8/site-packages/sqlalchemy/engine/base.py#x1B[0m:3371: in _wrap_pool_connect
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m fn()#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m.nox/nightly-3-8/lib/python3.8/site-packages/sqlalchemy/pool/base.py#x1B[0m:327: in connect
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m _ConnectionFairy._checkout(#x1B[96mself#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m.nox/nightly-3-8/lib/python3.8/site-packages/sqlalchemy/pool/base.py#x1B[0m:894: in _checkout
    #x1B[0mfairy = _ConnectionRecord.checkout(pool)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m.nox/nightly-3-8/lib/python3.8/site-packages/sqlalchemy/pool/base.py#x1B[0m:493: in checkout
    #x1B[0mrec = pool._do_get()#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m.nox/nightly-3-8/lib/python3.8/site-packages/sqlalchemy/pool/impl.py#x1B[0m:146: in _do_get
    #x1B[0m#x1B[96mself#x1B[39;49;00m._dec_overflow()#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m.nox/nightly-3-8/lib/python3.8/site-packages/sqlalchemy/util/langhelpers.py#x1B[0m:70: in __exit__
    #x1B[0mcompat.raise_(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m.nox/nightly-3-8/lib/python3.8/site-packages/sqlalchemy/util/compat.py#x1B[0m:211: in raise_
    #x1B[0m#x1B[94mraise#x1B[39;49;00m exception#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m.nox/nightly-3-8/lib/python3.8/site-packages/sqlalchemy/pool/impl.py#x1B[0m:143: in _do_get
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m._create_connection()#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m.nox/nightly-3-8/lib/python3.8/site-packages/sqlalchemy/pool/base.py#x1B[0m:273: in _create_connection
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m _ConnectionRecord(#x1B[96mself#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m.nox/nightly-3-8/lib/python3.8/site-packages/sqlalchemy/pool/base.py#x1B[0m:388: in __init__
    #x1B[0m#x1B[96mself#x1B[39;49;00m.__connect()#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m.nox/nightly-3-8/lib/python3.8/site-packages/sqlalchemy/pool/base.py#x1B[0m:691: in __connect
    #x1B[0mpool.logger.debug(#x1B[33m"#x1B[39;49;00m#x1B[33mError on connect(): #x1B[39;49;00m#x1B[33m%s#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m, e)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m.nox/nightly-3-8/lib/python3.8/site-packages/sqlalchemy/util/langhelpers.py#x1B[0m:70: in __exit__
    #x1B[0mcompat.raise_(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m.nox/nightly-3-8/lib/python3.8/site-packages/sqlalchemy/util/compat.py#x1B[0m:211: in raise_
    #x1B[0m#x1B[94mraise#x1B[39;49;00m exception#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m.nox/nightly-3-8/lib/python3.8/site-packages/sqlalchemy/pool/base.py#x1B[0m:686: in __connect
    #x1B[0m#x1B[96mself#x1B[39;49;00m.dbapi_connection = connection = pool._invoke_creator(#x1B[96mself#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m.nox/nightly-3-8/lib/python3.8/site-packages/sqlalchemy/engine/create.py#x1B[0m:574: in connect
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m dialect.connect(*cargs, **cparams)#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <duckdb_engine.Dialect object at 0x7fa01c50c9a0>, cargs = ()
cparams = {'config': {'custom_user_agent': 'duckdb_engine/0.13.7-pre0(sqlalchemy/1.4.54)'}}
preload_extensions = ['httpfs']
ext = {'s3_region': 'ap-southeast-2', 's3_use_ssl': True}
user_agent = 'duckdb_engine/0.13.7-pre0(sqlalchemy/1.4.54)'
conn = <duckdb.duckdb.DuckDBPyConnection object at 0x7fa018c5eeb0>
extension = 'httpfs'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m #x1B[92mconnect#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, *cargs: Any, **cparams: Any) -> #x1B[33m"#x1B[39;49;00m#x1B[33mConnection#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
        core_keys = get_core_config()#x1B[90m#x1B[39;49;00m
        preload_extensions = cparams.pop(#x1B[33m"#x1B[39;49;00m#x1B[33mpreload_extensions#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m, [])#x1B[90m#x1B[39;49;00m
        config = #x1B[96mdict#x1B[39;49;00m(cparams.get(#x1B[33m"#x1B[39;49;00m#x1B[33mconfig#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m, {}))#x1B[90m#x1B[39;49;00m
        cparams[#x1B[33m"#x1B[39;49;00m#x1B[33mconfig#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m] = config#x1B[90m#x1B[39;49;00m
        config.update(cparams.pop(#x1B[33m"#x1B[39;49;00m#x1B[33murl_config#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m, {}))#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        ext = {k: config.pop(k) #x1B[94mfor#x1B[39;49;00m k #x1B[95min#x1B[39;49;00m #x1B[96mlist#x1B[39;49;00m(config) #x1B[94mif#x1B[39;49;00m k #x1B[95mnot#x1B[39;49;00m #x1B[95min#x1B[39;49;00m core_keys}#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m supports_user_agent:#x1B[90m#x1B[39;49;00m
            user_agent = #x1B[33mf#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33mduckdb_engine/#x1B[39;49;00m#x1B[33m{#x1B[39;49;00m__version__#x1B[33m}#x1B[39;49;00m#x1B[33m(sqlalchemy/#x1B[39;49;00m#x1B[33m{#x1B[39;49;00msqlalchemy_version#x1B[33m}#x1B[39;49;00m#x1B[33m)#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
            #x1B[94mif#x1B[39;49;00m #x1B[33m"#x1B[39;49;00m#x1B[33mcustom_user_agent#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m #x1B[95min#x1B[39;49;00m config:#x1B[90m#x1B[39;49;00m
                user_agent = #x1B[33mf#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33m{#x1B[39;49;00muser_agent#x1B[33m}#x1B[39;49;00m#x1B[33m #x1B[39;49;00m#x1B[33m{#x1B[39;49;00mconfig[#x1B[33m'#x1B[39;49;00m#x1B[33mcustom_user_agent#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m]#x1B[33m}#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
            config[#x1B[33m"#x1B[39;49;00m#x1B[33mcustom_user_agent#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m] = user_agent#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        conn = duckdb.connect(*cargs, **cparams)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mfor#x1B[39;49;00m extension #x1B[95min#x1B[39;49;00m preload_extensions:#x1B[90m#x1B[39;49;00m
>           conn.execute(#x1B[33mf#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33mLOAD #x1B[39;49;00m#x1B[33m{#x1B[39;49;00mextension#x1B[33m}#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE           sqlalchemy.exc.OperationalError: (duckdb.duckdb.IOException) IO Error: Extension "/home/runner/.duckdb/extensions/bcd65821a9/linux_amd64_gcc4/httpfs.duckdb_extension" could not be loaded because its signature is either missing or invalid and unsigned extensions are disabled by configuration (allow_unsigned_extensions)#x1B[0m
#x1B[1m#x1B[31mE           (Background on this error at: https://sqlalche.me/e/14/e3q8)#x1B[0m

#x1B[1m#x1B[31mduckdb_engine/__init__.py#x1B[0m:288: OperationalError