Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,11 @@ release (0.9.0), unrecognized arguments/keywords for these methods of creating a
instead of being passed as ClickHouse server settings. This is in conjunction with some refactoring in Client construction.
The supported method of passing ClickHouse server settings is to prefix such arguments/query parameters with`ch_`.

## 1.0.0

### Breaking Changes
- Removed the deprecated `utc_tz_aware` parameter entirely. Use `tz_mode` instead: `"naive_utc"` (default, was `False`), `"aware"` (was `True`), or `"schema"` (unchanged). Closes [#654](https://github.com/ClickHouse/clickhouse-connect/issues/654), [#665](https://github.com/ClickHouse/clickhouse-connect/issues/665)

Comment on lines +24 to +28
Copy link

Copilot AI Mar 12, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CHANGELOG structure is inconsistent: a "1.0.0" section is placed above "UNRELEASED" even though subsequent entries are still under UNRELEASED. Typically UNRELEASED should remain the top section until the release is cut; consider moving this breaking-change entry under UNRELEASED (or moving the 1.0.0 header below UNRELEASED) until 1.0.0 is actually released/dated.

Copilot uses AI. Check for mistakes.
## UNRELEASED

### Breaking Changes
Expand Down
2 changes: 0 additions & 2 deletions clickhouse_connect/driver/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,6 @@ def create_client(*,
naive UTC timestamps. "aware" forces timezone-aware UTC datetimes. "schema" returns datetimes that
match the server's column definition which means timezone-aware when the column defines a timezone and naive
for bare DateTime columns.
:param utc_tz_aware Deprecated. Use tz_mode instead.
:param autogenerate_session_id If set, this will override the 'autogenerate_session_id' common setting.
:param form_encode_query_params If True, query parameters will be sent as form-encoded data in the request body
instead of as URL parameters. This is useful for queries with large parameter sets that might exceed URL length
Expand Down Expand Up @@ -212,7 +211,6 @@ async def create_async_client(*,
naive UTC timestamps. "aware" forces timezone-aware UTC datetimes. "schema" returns datetimes that
match the server's column definition which means timezone-aware when the column defines a timezone and naive
for bare DateTime columns.
:param utc_tz_aware Deprecated. Use tz_mode instead.
:param autogenerate_session_id If set, this will override the 'autogenerate_session_id' common setting.
:param form_encode_query_params If True, query parameters will be sent as form-encoded data in the request body
instead of as URL parameters. This is useful for queries with large parameter sets that might exceed URL length
Expand Down
25 changes: 9 additions & 16 deletions clickhouse_connect/driver/asyncclient.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import os
from concurrent.futures.thread import ThreadPoolExecutor
from datetime import tzinfo
from typing import Literal, Optional, Union, Dict, Any, Sequence, Iterable, Generator, BinaryIO, TYPE_CHECKING
from typing import Optional, Union, Dict, Any, Sequence, Iterable, Generator, BinaryIO, TYPE_CHECKING

from clickhouse_connect.driver.client import Client
from clickhouse_connect.driver.query import TzMode
Expand Down Expand Up @@ -116,7 +116,6 @@ async def query(self,
context: QueryContext = None,
query_tz: Optional[Union[str, tzinfo]] = None,
column_tzs: Optional[Dict[str, Union[str, tzinfo]]] = None,
utc_tz_aware: Optional[Union[bool, Literal["schema"]]] = None,
external_data: Optional[ExternalData] = None,
transport_settings: Optional[Dict[str, str]] = None,
tz_mode: Optional[TzMode] = None) -> QueryResult:
Expand All @@ -131,7 +130,7 @@ def _query():
column_formats=column_formats, encoding=encoding, use_none=use_none,
column_oriented=column_oriented, use_numpy=use_numpy, max_str_len=max_str_len,
context=context, query_tz=query_tz, column_tzs=column_tzs,
tz_mode=tz_mode, utc_tz_aware=utc_tz_aware,
tz_mode=tz_mode,
external_data=external_data, transport_settings=transport_settings)

loop = asyncio.get_running_loop()
Expand All @@ -149,7 +148,6 @@ async def query_column_block_stream(self,
context: QueryContext = None,
query_tz: Optional[Union[str, tzinfo]] = None,
column_tzs: Optional[Dict[str, Union[str, tzinfo]]] = None,
utc_tz_aware: Optional[Union[bool, Literal["schema"]]] = None,
external_data: Optional[ExternalData] = None,
transport_settings: Optional[Dict[str, str]] = None,
tz_mode: Optional[TzMode] = None,
Expand All @@ -165,7 +163,7 @@ def _query_column_block_stream():
query_formats=query_formats, column_formats=column_formats,
encoding=encoding, use_none=use_none, context=context,
query_tz=query_tz, column_tzs=column_tzs,
tz_mode=tz_mode, utc_tz_aware=utc_tz_aware,
tz_mode=tz_mode,
external_data=external_data, transport_settings=transport_settings)

loop = asyncio.get_running_loop()
Expand All @@ -183,7 +181,6 @@ async def query_row_block_stream(self,
context: QueryContext = None,
query_tz: Optional[Union[str, tzinfo]] = None,
column_tzs: Optional[Dict[str, Union[str, tzinfo]]] = None,
utc_tz_aware: Optional[Union[bool, Literal["schema"]]] = None,
external_data: Optional[ExternalData] = None,
transport_settings: Optional[Dict[str, str]] = None,
tz_mode: Optional[TzMode] = None) -> StreamContext:
Expand All @@ -198,7 +195,7 @@ def _query_row_block_stream():
query_formats=query_formats, column_formats=column_formats,
encoding=encoding, use_none=use_none, context=context,
query_tz=query_tz, column_tzs=column_tzs,
tz_mode=tz_mode, utc_tz_aware=utc_tz_aware,
tz_mode=tz_mode,
external_data=external_data, transport_settings=transport_settings)

loop = asyncio.get_running_loop()
Expand All @@ -216,7 +213,6 @@ async def query_rows_stream(self,
context: QueryContext = None,
query_tz: Optional[Union[str, tzinfo]] = None,
column_tzs: Optional[Dict[str, Union[str, tzinfo]]] = None,
utc_tz_aware: Optional[Union[bool, Literal["schema"]]] = None,
external_data: Optional[ExternalData] = None,
transport_settings: Optional[Dict[str, str]] = None,
tz_mode: Optional[TzMode] = None) -> StreamContext:
Expand All @@ -231,7 +227,7 @@ def _query_rows_stream():
query_formats=query_formats, column_formats=column_formats,
encoding=encoding, use_none=use_none, context=context,
query_tz=query_tz, column_tzs=column_tzs,
tz_mode=tz_mode, utc_tz_aware=utc_tz_aware,
tz_mode=tz_mode,
external_data=external_data, transport_settings=transport_settings)

loop = asyncio.get_running_loop()
Expand Down Expand Up @@ -364,7 +360,6 @@ async def query_df(self,
use_na_values: Optional[bool] = None,
query_tz: Optional[str] = None,
column_tzs: Optional[Dict[str, Union[str, tzinfo]]] = None,
utc_tz_aware: Optional[Union[bool, Literal["schema"]]] = None,
context: QueryContext = None,
external_data: Optional[ExternalData] = None,
use_extended_dtypes: Optional[bool] = None,
Expand All @@ -381,7 +376,7 @@ def _query_df():
query_formats=query_formats, column_formats=column_formats, encoding=encoding,
use_none=use_none, max_str_len=max_str_len, use_na_values=use_na_values,
query_tz=query_tz, column_tzs=column_tzs, tz_mode=tz_mode,
utc_tz_aware=utc_tz_aware, context=context,
context=context,
external_data=external_data, use_extended_dtypes=use_extended_dtypes,
transport_settings=transport_settings)

Expand Down Expand Up @@ -441,7 +436,6 @@ async def query_df_stream(self,
use_na_values: Optional[bool] = None,
query_tz: Optional[str] = None,
column_tzs: Optional[Dict[str, Union[str, tzinfo]]] = None,
utc_tz_aware: Optional[Union[bool, Literal["schema"]]] = None,
context: QueryContext = None,
external_data: Optional[ExternalData] = None,
use_extended_dtypes: Optional[bool] = None,
Expand All @@ -459,7 +453,7 @@ def _query_df_stream():
encoding=encoding,
use_none=use_none, max_str_len=max_str_len, use_na_values=use_na_values,
query_tz=query_tz, column_tzs=column_tzs,
tz_mode=tz_mode, utc_tz_aware=utc_tz_aware, context=context,
tz_mode=tz_mode, context=context,
external_data=external_data, use_extended_dtypes=use_extended_dtypes,
transport_settings=transport_settings)

Expand Down Expand Up @@ -526,8 +520,7 @@ def create_query_context(self,
as_pandas: bool = False,
external_data: Optional[ExternalData] = None,
use_extended_dtypes: Optional[bool] = None,
transport_settings: Optional[Dict[str, str]] = None,
utc_tz_aware: Optional[Union[bool, Literal["schema"]]] = None) -> QueryContext:
transport_settings: Optional[Dict[str, str]] = None) -> QueryContext:
"""
Creates or updates a reusable QueryContext object
:param query: Query statement/format string
Expand Down Expand Up @@ -567,7 +560,7 @@ def create_query_context(self,
column_oriented=column_oriented,
use_numpy=use_numpy, max_str_len=max_str_len, context=context,
query_tz=query_tz, column_tzs=column_tzs,
tz_mode=tz_mode, utc_tz_aware=utc_tz_aware,
tz_mode=tz_mode,
use_na_values=use_na_values,
streaming=streaming, as_pandas=as_pandas,
external_data=external_data,
Expand Down
Loading
Loading