dependabot[bot] opened a new pull request, #42669: URL: https://github.com/apache/superset/pull/42669
Updates the requirements on [clickhouse-connect](https://github.com/ClickHouse/clickhouse-connect) to permit the latest version. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/ClickHouse/clickhouse-connect/releases">clickhouse-connect's releases</a>.</em></p> <blockquote> <h2>v1.6.0</h2> <h2>What's Changed</h2> <p>clickhouse-connect 1.6.0 adds an experimental in-process chDB backend, resolves several sync/async client parity bugs, and replaces the <code>zstandard</code> dependency with the standard library/a backport. Internally, the sync and async HTTP clients were unified onto a shared backend core, which is what enables the chDB backend and fixes the async issues below.</p> <h3>Features</h3> <ul> <li>Added an experimental in-process chDB backend. <code>get_client(interface='chdb')</code> or a <code>chdb://</code> DSN returns a standard client that runs queries against an embedded chDB engine instead of a ClickHouse server, supporting the full query, insert, streaming, and Arrow client surface. Use the <code>path</code> argument or a <code>chdb:///on/disk/path</code> DSN for a persistent database. Requires the <code>chdb</code> package, installable with <code>pip install clickhouse-connect[chdb]</code>. chDB allows one engine per process, has no async client, and does not support external data. (<a href="https://redirect.github.com/ClickHouse/clickhouse-connect/pull/872">#872</a>)</li> </ul> <h3>Bug Fixes</h3> <ul> <li><code>AsyncClient</code> initialization no longer overwrites user-supplied session settings with generated defaults which no matches the sync client. (<a href="https://redirect.github.com/ClickHouse/clickhouse-connect/pull/872">#872</a>)</li> <li>An <code>AsyncClient</code> created with both client certificates and an access token now sends the mutual TLS authentication headers and the <code>Authorization: Bearer</code> header together which now also matches the sync client. (<a href="https://redirect.github.com/ClickHouse/clickhouse-connect/pull/872">#872</a>)</li> <li>Dict-valued settings such as <code>additional_table_filters</code> no longer crash with <code>DB::Exception: Cannot parse quoted string</code> when passed through <code>query()</code>'s <code>settings</code> parameter. Closes <a href="https://redirect.github.com/ClickHouse/clickhouse-connect/issues/501">#501</a>.</li> </ul> <h3>Improvements</h3> <ul> <li>Async clients now emit URL query parameters in the same order as the sync client on every request. (<a href="https://redirect.github.com/ClickHouse/clickhouse-connect/pull/872">#872</a>)</li> <li>Client creation no longer fails when the <code>client_protocol_version</code> capability probe errors on the sync client; it now falls back gracefully and logs at debug level, matching the async client.</li> <li>Replaced the <code>zstandard</code> dependency with the stdlib <code>compression.zstd</code> module (Python 3.14+) and <code>backports.zstd</code> (Python 3.10-3.13), giving a single consistent call surface across all supported Python versions. zstd compression remains fully supported on all standard Python installs. Closes <a href="https://redirect.github.com/ClickHouse/clickhouse-connect/issues/577">#577</a>.</li> </ul> <h3>Under the hood</h3> <ul> <li>The sync and async HTTP clients were refactored onto a shared, internal pluggable-backend core (<code>asyncclient.py</code> shrank by roughly 1,200 lines of duplicated logic). This is an internal change with no public API surface, but it's the basis for the chDB backend and the sync/async parity fixes above. (<a href="https://redirect.github.com/ClickHouse/clickhouse-connect/pull/872">#872</a>)</li> </ul> <h2>Installation</h2> <pre lang="bash"><code>pip install clickhouse-connect </code></pre> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/ClickHouse/clickhouse-connect/blob/main/CHANGELOG.md">clickhouse-connect's changelog</a>.</em></p> <blockquote> <h2>1.6.0, 2026-07-23</h2> <h3>Bug Fixes</h3> <ul> <li><code>AsyncClient</code> initialization no longer overwrites user-supplied session settings with generated defaults. A client created with <code>settings={'date_time_input_format': 'basic'}</code> previously had that value replaced by the generated <code>best_effort</code> default. User settings now always win, matching the sync client.</li> <li>An <code>AsyncClient</code> created with both client certificates and an access token now sends the mutual TLS authentication headers and the <code>Authorization: Bearer</code> header together, matching the sync client. The certificates previously suppressed the token at construction, while the <code>token_provider</code> option re-added its token right after initialization, so the two async token paths disagreed with each other. The server resolves the credential precedence.</li> <li>Dict-valued settings such as <code>additional_table_filters</code> no longer crash with <code>DB::Exception: Cannot parse quoted string</code> when passed through <code>query()</code>'s <code>settings</code> parameter. The value was rendered with Python's own <code>str()</code>/<code>repr()</code> of the dict, which mixes single and double quotes and is not valid ClickHouse map-literal syntax; it is now rendered as a properly single-quoted, escaped ClickHouse map literal. Closes <a href="https://redirect.github.com/ClickHouse/clickhouse-connect/issues/501">#501</a>.</li> </ul> <h3>Improvements</h3> <ul> <li>Async clients now emit URL query parameters in the same order as the sync client on every request. The parameter names and values are unchanged, so this is only visible to systems that match or sign the exact request URL.</li> <li>Client creation no longer fails when the <code>client_protocol_version</code> capability probe errors on the sync client. The client falls back to running without the newer native protocol features and logs the probe failure at debug level, matching the async client.</li> <li>Added an experimental in-process chDB backend. <code>get_client(interface='chdb')</code> or a <code>chdb://</code> DSN returns a standard client that runs queries against an embedded chDB engine instead of a ClickHouse server, supporting the full query, insert, streaming, and Arrow client surface. Use the <code>path</code> argument or a <code>chdb:///on/disk/path</code> DSN for a persistent database. Requires the <code>chdb</code> package, installable with <code>pip install clickhouse-connect[chdb]</code>. chDB allows one engine per process, has no async client, and does not support external data.</li> <li>Replaced the <code>zstandard</code> dependency with the stdlib <code>compression.zstd</code> module (Python 3.14+) and <code>backports.zstd</code> (Python 3.10-3.13), which provides the same API as the stdlib module. This gives a single consistent call surface across all supported Python versions and removes a dependency that diverges from the standard library. zstd compression remains fully supported on all standard Python installs. In the rare case of a custom CPython 3.14+ interpreter compiled without zstd support, the driver now still imports, drops zstd from the advertised compression methods, and raises a clear error only if zstd is explicitly requested. Closes <a href="https://redirect.github.com/ClickHouse/clickhouse-connect/issues/577">#577</a>.</li> </ul> <h2>1.5.0, 2026-07-15</h2> <h3>Bug Fixes</h3> <ul> <li>SQLAlchemy: the Alembic <code>op.rename_table</code> now emits <code>RENAME TABLE old TO new</code>. It previously emitted the standard <code>ALTER TABLE old RENAME TO new</code>, which ClickHouse rejects. Standard SQLAlchemy indexes are now filtered from ClickHouse autogenerate output, and <code>Column(index=True)</code>, <code>Index(...)</code>, <code>op.create_index</code>, and <code>op.drop_index</code> raise a clear Alembic error before partially applying DDL. Use the ClickHouse-specific <code>op.add_clickhouse_index</code> and <code>op.drop_clickhouse_index</code> helpers for data-skipping indexes. Part of <a href="https://redirect.github.com/ClickHouse/clickhouse-connect/issues/839">#839</a>.</li> <li>SQLAlchemy: fixed several Alembic ClickHouse DDL helper edge cases. Raw SQL fragments containing <code>:name</code> are no longer parsed as SQLAlchemy bind parameters, dictionary comments now escape backslashes correctly, explicit schemas are honored for legal dotted table names, <code>CREATE MATERIALIZED VIEW</code> no longer accepts a misleading <code>clickhouse_settings</code> suffix that ClickHouse stores inside the SELECT definition, and custom ClickHouse operation objects now render through Alembic autogenerate instead of raising <code>ValueError</code>. Part of <a href="https://redirect.github.com/ClickHouse/clickhouse-connect/issues/839">#839</a>.</li> <li>SQLAlchemy: <code>ClickHouseSelect</code> now keeps its typed ClickHouse chainables after column-shape methods such as <code>add_columns()</code>, <code>with_only_columns()</code>, <code>column()</code>, and <code>reduce_columns()</code>. <code>cc_sqlalchemy.select()</code> also works on SQLAlchemy 1.4. Closes <a href="https://redirect.github.com/ClickHouse/clickhouse-connect/issues/844">#844</a>.</li> <li>SQLAlchemy: wrapping a ClickHouse type in a SQLAlchemy <code>TypeDecorator</code> no longer raises <code>TypeError: result_processor() takes 0 positional arguments but 2 were given</code> when reading results. Closes <a href="https://redirect.github.com/ClickHouse/clickhouse-connect/issues/847">#847</a>.</li> <li>SQLAlchemy: MergeTree engine key clauses (<code>order_by</code>, <code>partition_by</code>, <code>primary_key</code>, <code>sample_by</code>, <code>ttl</code>) now accept arbitrary SQL expressions such as <code>col.desc()</code>, <code>func.cityHash64(a, b)</code>, <code>tuple_(...)</code>, and interval TTL expressions, in scalar and list forms. Expressions were previously either rejected with a <code>TypeError</code> in list form or rendered through the wrong dialect in scalar form. Plain strings, <code>text()</code>, and bare <code>Column</code> inputs render exactly as before, and expression engines round-trip through <code>repr()</code> for Alembic autogeneration. Closes <a href="https://redirect.github.com/ClickHouse/clickhouse-connect/issues/845">#845</a>.</li> <li>SQLAlchemy: <code>has_database()</code> now uses <code>EXISTS DATABASE</code> instead of querying <code>system.databases</code>. On ClickHouse servers from 25.10 through 26.4 <code>system.databases</code> omitted DataLakeCatalog and other remote databases by default, so <code>has_database()</code> reported <code>False</code> for databases that actually exist and broke schema-existence checks. <code>EXISTS DATABASE</code> consults the database catalog directly and is correct on every server version. Closes <a href="https://redirect.github.com/ClickHouse/clickhouse-connect/issues/849">#849</a>.</li> <li>SQLAlchemy: <code>MATERIALIZED</code> and <code>ALIAS</code> columns now keep their <code>comment</code>, <code>codec</code>, and <code>ttl</code> options in generated DDL. Column clauses are also now emitted in the order ClickHouse requires, <code>COMMENT</code> then <code>CODEC</code> then <code>TTL</code>, which fixes a separate pre-existing case where any column that combined a codec with a comment produced invalid SQL that the server rejected. <code>DEFAULT</code>, <code>MATERIALIZED</code>, and <code>ALIAS</code> remain mutually exclusive. Closes <a href="https://redirect.github.com/ClickHouse/clickhouse-connect/issues/856">#856</a>.</li> <li>DB API <code>Cursor.executemany</code> no longer silently falls off the bulk insert fast path when an INSERT names backtick-quoted dotted columns, the wire form of <code>Nested</code> sub-columns such as <code>`directory`.`id`</code>. <code>unescape_identifier</code> stripped only the outermost backtick pair, so the normalized column names kept their inner backticks and never matched the row dict keys. The comparison always failed, so the operation degraded to slow per-row execution, and with dict rows and pyformat placeholders it could raise <code>ProgrammingError</code>. <code>unescape_identifier</code> now removes backtick quoting from compound identifiers correctly. Closes <a href="https://redirect.github.com/ClickHouse/clickhouse-connect/issues/820">#820</a>.</li> <li>The compiled Cython response buffer now decodes LEB128 varint values of 2^31 and larger correctly. Each 7-bit group was shifted in signed 32-bit arithmetic before being widened to the 64-bit accumulator, so any varint of 2^31 or more was truncated or corrupted. This affected string and nullable string column lengths and every other varint read on the compiled path. The pure Python reader was already correct. Closes <a href="https://redirect.github.com/ClickHouse/clickhouse-connect/issues/828">#828</a>.</li> <li><code>command()</code> now returns an empty string for a read that produces an empty result set, instead of a truthy <code>QuerySummary</code> that made <code>if result:</code> misleading. Closes <a href="https://redirect.github.com/ClickHouse/clickhouse-connect/issues/865">#865</a>.</li> <li>Native inserts and reads of <code>QBit</code> columns with a dimension greater than 8 no longer corrupt the vector. Data written by earlier clients was stored incorrectly and should be re-inserted. Closes <a href="https://redirect.github.com/ClickHouse/clickhouse-connect/issues/866">#866</a>.</li> </ul> <h3>Improvements</h3> <ul> <li>SQLAlchemy: added runtime Alembic operations for ClickHouse-specific DDL. The new helpers cover skip indexes, projections, table settings, materialized views, and dictionaries, including plural add/drop helpers for indexes and projections. The plural index and projection helpers emit a single comma-joined <code>ALTER TABLE</code>, so replicated deployments avoid the <code>Code: 517 CANNOT_ASSIGN_ALTER</code> race that separate statements can trigger. Helpers render valid SQL in offline <code>--sql</code> mode, and helpers whose signature includes <code>clickhouse_settings</code> render that mapping as an inline <code>SETTINGS</code> clause. Closes <a href="https://redirect.github.com/ClickHouse/clickhouse-connect/issues/839">#839</a>.</li> <li>SQLAlchemy: added a chainable <code>Select.ch_join()</code> so ClickHouse JOIN modifiers can be written in normal SQLAlchemy chaining style instead of nesting the <code>ch_join()</code> helper inside <code>select_from()</code>. It takes the strictness modifiers ALL, ANY, ASOF, SEMI, and ANTI, the GLOBAL distribution modifier, plus USING and CROSS, all as keyword arguments, and chains so multi-join queries stay readable. The existing <code>ch_join()</code> factory is unchanged. Closes <a href="https://redirect.github.com/ClickHouse/clickhouse-connect/issues/827">#827</a>.</li> <li>SQLAlchemy: added <code>cc_sqlalchemy.select()</code> which returns a <code>ClickHouseSelect</code>. It exposes the ClickHouse chainable modifiers such as <code>ch_join</code>, <code>final</code>, <code>sample</code>, <code>array_join</code>, <code>prewhere</code>, and <code>limit_by</code> as typed methods so static type checkers accept them without suppressions. The existing <code>sqlalchemy.select()</code> path keeps working unchanged. Closes <a href="https://redirect.github.com/ClickHouse/clickhouse-connect/issues/837">#837</a>.</li> <li>SQLAlchemy: <code>execution_options(settings={...})</code> now forwards per-query ClickHouse settings through the dialect and DB-API cursor instead of silently ignoring them. This works for Core and <code>text()</code> statements, connection-level execution options, <code>execute</code>, <code>executemany</code>, and the bulk-insert path, while continuing to use the existing client settings validation. Settings set at the connection or engine level compose with per-statement settings, with the per-statement value taking precedence for any key set at both levels, so a connection or engine level default applies to every execution including implicit ORM queries such as <code>selectinload</code> and lazy attribute loads without overriding explicit per-query settings. Closes <a href="https://redirect.github.com/ClickHouse/clickhouse-connect/issues/838">#838</a> and <a href="https://redirect.github.com/ClickHouse/clickhouse-connect/issues/846">#846</a>.</li> <li>Added a <code>typed</code> read format for <code>Variant</code> columns. When two members of a <code>Variant</code> share a Python type, such as <code>Variant(DateTime, DateTime64(3))</code> or <code>Variant(Float32, Float64)</code>, the decoded value alone did not record which member produced it, so the originating ClickHouse type was unrecoverable. Reading with the <code>typed</code> format wraps each value as a <code>TypedVariant</code> carrying both the value and its <code>type_name</code>, and these values feed straight back into inserts. The default read format stays <code>native</code> and returns bare values as before, so existing behavior is unchanged. Enable it per query with <code>query_formats={'Variant': 'typed'}</code> or globally with <code>set_read_format('Variant', 'typed')</code>. Closes <a href="https://redirect.github.com/ClickHouse/clickhouse-connect/issues/825">#825</a>.</li> </ul> <h2>1.4.2, 2026-07-06</h2> <h3>Bug Fixes</h3> <ul> <li>Async inserts and queries with an in-memory body larger than 1 MiB no longer emit an aiohttp <code>ResourceWarning</code> about sending a large body directly with raw bytes. Closes <a href="https://redirect.github.com/ClickHouse/clickhouse-connect/issues/850">#850</a>.</li> </ul> <h2>1.4.1, 2026-06-30</h2> <h3>Bug Fixes</h3> <ul> <li>SQLAlchemy: importing the ClickHouse Alembic integration no longer changes Alembic autogenerate output for other database dialects. The ClickHouse renderers for <code>CreateTableOp</code>, <code>AddColumnOp</code>, and <code>DropTableOp</code> were registered as process-wide replacements with no dialect guard, because Alembic renderers have no per-dialect dispatch. Any non-ClickHouse autogenerate run in the same process then used the ClickHouse renderers, which dropped the <code>nullable</code> argument from columns whose nullability was not set explicitly and injected <code>cc_sqlalchemy</code> imports. The renderers now fall back to Alembic's built-in rendering for non-ClickHouse dialects. Closes <a href="https://redirect.github.com/ClickHouse/clickhouse-connect/issues/832">#832</a>.</li> <li>Several public <code>AsyncClient</code> methods now carry the return-type annotations their sync <code>Client</code> counterparts already had. <code>close</code>, <code>close_connections</code>, <code>query_np</code>, <code>query_df</code>, <code>query_arrow</code>, <code>set_client_setting</code>, and <code>set_access_token</code> were missing them, so downstream projects running mypy with <code>--disallow-untyped-calls</code> got <code>no-untyped-call</code> errors on calls like <code>await client.close()</code> once the package began shipping <code>py.typed</code> in 1.4.0. The async client surface is now fully annotated. This is a type-only change with no runtime effect. Closes <a href="https://redirect.github.com/ClickHouse/clickhouse-connect/issues/831">#831</a>.</li> </ul> <h2>1.4.0, 2026-06-29</h2> <h3>Bug Fixes</h3> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/ClickHouse/clickhouse-connect/commit/2417137490e56b9564d128f124c45278cffb1504"><code>2417137</code></a> release prep for v1.6.0 (<a href="https://redirect.github.com/ClickHouse/clickhouse-connect/issues/893">#893</a>)</li> <li><a href="https://github.com/ClickHouse/clickhouse-connect/commit/437a7d6f598ca4df62d21bc6c1ebf09aade3cb64"><code>437a7d6</code></a> docs refresh (<a href="https://redirect.github.com/ClickHouse/clickhouse-connect/issues/891">#891</a>)</li> <li><a href="https://github.com/ClickHouse/clickhouse-connect/commit/98371b78b7dd2b7a37cb3a28271f804472ffad26"><code>98371b7</code></a> Replace zstandard with backports.zstd / stdlib compression.zstd (<a href="https://redirect.github.com/ClickHouse/clickhouse-connect/issues/577">#577</a>) (<a href="https://redirect.github.com/ClickHouse/clickhouse-connect/issues/877">#877</a>)</li> <li><a href="https://github.com/ClickHouse/clickhouse-connect/commit/a29cf10f0b0f53cb0bd461a8a1af07f46cff91e3"><code>a29cf10</code></a> publish wheels to PyPI with trusted publishing instead of API tokens (<a href="https://redirect.github.com/ClickHouse/clickhouse-connect/issues/888">#888</a>)</li> <li><a href="https://github.com/ClickHouse/clickhouse-connect/commit/f57a134e276c9603a9ccb0f09c66eba2b0dd6efb"><code>f57a134</code></a> Refactor: implement pluggable backend architecture (<a href="https://redirect.github.com/ClickHouse/clickhouse-connect/issues/872">#872</a>)</li> <li><a href="https://github.com/ClickHouse/clickhouse-connect/commit/47dbad3d09996438f701b68e48ffd8dd7da133f8"><code>47dbad3</code></a> fix test failing on head (<a href="https://redirect.github.com/ClickHouse/clickhouse-connect/issues/876">#876</a>)</li> <li><a href="https://github.com/ClickHouse/clickhouse-connect/commit/91c8ef9479fe031174d7cb77aab09699ba64590d"><code>91c8ef9</code></a> Docs: move integration metadata from index.mdx comment to docs/_meta.yml (<a href="https://redirect.github.com/ClickHouse/clickhouse-connect/issues/875">#875</a>)</li> <li><a href="https://github.com/ClickHouse/clickhouse-connect/commit/8a60e116e55a29abb42fadc58f9f15f95e0bcbbb"><code>8a60e11</code></a> fix: escape dict-valued settings as ClickHouse map literals (<a href="https://redirect.github.com/ClickHouse/clickhouse-connect/issues/501">#501</a>) (<a href="https://redirect.github.com/ClickHouse/clickhouse-connect/issues/874">#874</a>)</li> <li><a href="https://github.com/ClickHouse/clickhouse-connect/commit/44ec5604c45fb270c309ee6515f9c1449f39097a"><code>44ec560</code></a> adding metadata comment for website usage (<a href="https://redirect.github.com/ClickHouse/clickhouse-connect/issues/873">#873</a>)</li> <li><a href="https://github.com/ClickHouse/clickhouse-connect/commit/4c7f046b0aa6fe9798d95605a66e8d9544d93554"><code>4c7f046</code></a> Update additional-options.mdx (<a href="https://redirect.github.com/ClickHouse/clickhouse-connect/issues/871">#871</a>)</li> <li>Additional commits viewable in <a href="https://github.com/ClickHouse/clickhouse-connect/compare/v1.4.2...v1.6.0">compare view</a></li> </ul> </details> <br /> Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
