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: 3 additions & 2 deletions .github/workflows/on_push.yml
Original file line number Diff line number Diff line change
Expand Up @@ -64,12 +64,12 @@ jobs:
- '3.11'
- '3.12'
- '3.13'
- '3.14'
clickhouse-version:
- '25.3' # LTS
- '25.6' # Stable
- '25.7' # Stable
- '25.8' # LTS
- '25.9' # Stable
- '25.10' # Stable
- latest

name: Local Tests Py=${{ matrix.python-version }} CH=${{ matrix.clickhouse-version }}
Expand Down Expand Up @@ -208,6 +208,7 @@ jobs:
- '3.11'
- '3.12'
- '3.13'
- '3.14'

steps:
- name: Checkout
Expand Down
33 changes: 20 additions & 13 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,19 +11,18 @@ on:
- test
- release
- build
env:
CIBW_SKIP: 'cp36-* cp37-* cp38-* pp37-* pp38-*'

jobs:
build_x86_manylinux_wheels:
name: Build x86 manylinux wheels on Linux
runs-on: ubuntu-latest
env:
CIBW_SKIP: 'cp36-* cp37-* cp38-* pp37-* pp38-* *-musllinux*'
CIBW_SKIP: '*-musllinux* pp38-* pp311-* cp38-* cp314t-*'
CIBW_ENABLE: 'pypy pypy-eol'
steps:
- uses: actions/checkout@v4
- name: Build wheels
uses: pypa/cibuildwheel@v2.22.0
uses: pypa/cibuildwheel@v3.2.1
- uses: actions/upload-artifact@v4
with:
name: build-x86-manylinux
Expand All @@ -33,11 +32,12 @@ jobs:
name: Build x86 musllinux wheels on Linux
runs-on: ubuntu-latest
env:
CIBW_SKIP: 'cp36-* cp37-* cp38-* pp37-* pp38-* *-manylinux*'
CIBW_SKIP: '*-manylinux* pp38-* pp311-* cp38-* cp314t-*'
CIBW_ENABLE: 'pypy pypy-eol'
steps:
- uses: actions/checkout@v4
- name: Build wheels
uses: pypa/cibuildwheel@v2.22.0
uses: pypa/cibuildwheel@v3.2.1
- uses: actions/upload-artifact@v4
with:
name: build-x86-musllinux
Expand All @@ -48,15 +48,15 @@ jobs:
runs-on: ubuntu-latest
env:
CIBW_ARCHS_LINUX: aarch64
CIBW_SKIP: 'cp36-* cp37-* cp38-* pp* *-musllinux*'
CIBW_SKIP: '*-musllinux* cp38-* cp314t-*'
steps:
- uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
with:
platforms: all
- name: Build wheels
uses: pypa/cibuildwheel@v2.22.0
uses: pypa/cibuildwheel@v3.2.1
- uses: actions/upload-artifact@v4
with:
name: build-aarch64-manylinux
Expand All @@ -67,15 +67,15 @@ jobs:
runs-on: ubuntu-latest
env:
CIBW_ARCHS_LINUX: aarch64
CIBW_SKIP: 'cp36-* cp37-* cp38-* pp* *-manylinux*'
CIBW_SKIP: '*-manylinux* cp38-* cp314t-*'
steps:
- uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
with:
platforms: all
- name: Build wheels
uses: pypa/cibuildwheel@v2.22.0
uses: pypa/cibuildwheel@v3.2.1
- uses: actions/upload-artifact@v4
with:
name: build-aarch64-musllinux
Expand All @@ -87,14 +87,15 @@ jobs:
env:
CIBW_ARCHS_LINUX: aarch64
CIBW_BUILD: 'pp39-* pp310-*'
CIBW_ENABLE: 'pypy pypy-eol'
steps:
- uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
with:
platforms: all
- name: Build wheels
uses: pypa/cibuildwheel@v2.22.0
uses: pypa/cibuildwheel@v3.2.1
- uses: actions/upload-artifact@v4
with:
name: build-aarch64-pypy
Expand All @@ -103,10 +104,14 @@ jobs:
build_macos_wheels:
name: Build wheels on macos
runs-on: macos-14
env:
CIBW_ARCHS_MACOS: x86_64 arm64
CIBW_ENABLE: 'pypy pypy-eol'
CIBW_SKIP: 'pp38-* pp311-* cp38-* cp314t-*'
steps:
- uses: actions/checkout@v4
- name: Build wheels
uses: pypa/cibuildwheel@v2.22.0
uses: pypa/cibuildwheel@v3.2.1
env:
CIBW_ARCHS_MACOS: x86_64 arm64
Comment on lines 115 to 116
Copy link

Copilot AI Nov 9, 2025

Choose a reason for hiding this comment

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

The environment variable CIBW_ARCHS_MACOS is defined both in the job's env section (line 108) and again in the step's env section (line 116). This creates duplicate configuration that could lead to confusion. Remove the redundant definition at line 116 since the job-level setting already specifies the same value.

Suggested change
env:
CIBW_ARCHS_MACOS: x86_64 arm64

Copilot uses AI. Check for mistakes.
- uses: actions/upload-artifact@v4
Expand All @@ -119,10 +124,12 @@ jobs:
runs-on: windows-latest
env:
CIBW_BUILD_VERBOSITY: 2
CIBW_ENABLE: 'pypy pypy-eol'
CIBW_SKIP: 'pp38-* pp311-* cp38-* cp314t-*'
steps:
- uses: actions/checkout@v4
- name: Build wheels
uses: pypa/cibuildwheel@v2.22.0
uses: pypa/cibuildwheel@v3.2.1
- uses: actions/upload-artifact@v4
with:
name: build-windows
Expand Down
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ The supported method of passing ClickHouse server settings is to prefix such arg
- Fixed issue with JSON key dot escaping. Closes [#571](https://github.com/ClickHouse/clickhouse-connect/issues/571)

### Improvements
- Added Python 3.14 support (non-free-threaded build only; free-threaded builds are not yet supported). Closes [#574](https://github.com/ClickHouse/clickhouse-connect/issues/574)
- Added `utc_tz_aware` parameter to client and query methods to opt in to returning timezone-aware UTC objects for DateTime/DateTime64 columns. Default behavior remains the same and returns tz naive objects for backward compatibility. Note: this parameter will likely be removed and only return tz-aware dts in some future release. Closes [#566](https://github.com/ClickHouse/clickhouse-connect/issues/566)

## 0.9.2, 2025-09-25
Expand Down
3 changes: 3 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@ requires = ["setuptools", "cython==3.0.11"]

build-backend = "setuptools.build_meta"

[tool.cibuildwheel]
skip = "cp38-* pp38-* cp314t-*"

[tool.pytest.ini_options]
log_cli = true
log_cli_level = "INFO"
Expand Down
11 changes: 7 additions & 4 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,21 +54,23 @@ def run_setup(try_c: bool = True):
package_data={'clickhouse_connect': ['VERSION', 'py.typed']},
url='https://github.com/ClickHouse/clickhouse-connect',
packages=find_packages(exclude=['tests*']),
python_requires='>=3.9,<3.14',
python_requires='>=3.9,<3.15',
license='Apache License 2.0',
install_requires=[
'certifi',
'urllib3>=1.26',
'pytz',
'zstandard',
'lz4'
'zstandard; python_version<"3.14"',
'zstandard>=0.25.0; python_version>="3.14"',
'lz4; python_version<"3.14"',
'lz4>=4.4.5; python_version>="3.14"'
],
extras_require={
'sqlalchemy': ['sqlalchemy>=1.4.40,<3.0'],
'numpy': ['numpy'],
'pandas': ['pandas'],
'polars': ['polars>=1.0'],
'arrow': ['pyarrow'],
'arrow': ['pyarrow>=22.0; python_version>="3.14"', 'pyarrow; python_version<"3.14"'],
'orjson': ['orjson'],
'tzlocal': ['tzlocal>=4.0'],
},
Expand All @@ -86,6 +88,7 @@ def run_setup(try_c: bool = True):
'Programming Language :: Python :: 3.11',
'Programming Language :: Python :: 3.12',
'Programming Language :: Python :: 3.13',
'Programming Language :: Python :: 3.14',
],
**kwargs
)
Expand Down
6 changes: 4 additions & 2 deletions tests/test_requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ numpy~=1.26.0; python_version >= '3.11' and python_version <= '3.12'
numpy~=2.1.0; python_version >= '3.13'
pandas>=2.0,<3.0
polars>=1.0
zstandard
lz4
zstandard; python_version < "3.14"
zstandard>=0.25.0; python_version >= "3.14"
lz4; python_version < "3.14"
lz4>=4.4.5; python_version >= "3.14"
pyjwt[crypto]==2.10.1