From f1dcc7215978648a0492c669d794b589d0ad5d69 Mon Sep 17 00:00:00 2001 From: Adam Cimarosti Date: Fri, 28 Nov 2025 13:37:38 +0000 Subject: [PATCH 1/6] chore: dropped python 3.9 support --- CHANGELOG.rst | 5 +++++ pyproject.toml | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 013fd348..7e1b4cf1 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -135,6 +135,11 @@ Bug fixes behavior, where ``None`` values have always been supported to represent NULL values. +Python Version Support +~~~~~~~~~~~~~~~~~~~~~~ + +* Dropped support for Python 3.9, since it is now end of life. + 4.0.0 (2025-10-17) ------------------ diff --git a/pyproject.toml b/pyproject.toml index ff4377ea..2b3591ab 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [project] # See: https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ name = "questdb" -requires-python = ">=3.9" +requires-python = ">=3.10" version = "4.1.0" description = "QuestDB client library for Python" readme = "README.rst" From 13bff66e07932207760bc7ab044cfad906ff379e Mon Sep 17 00:00:00 2001 From: Adam Cimarosti Date: Fri, 28 Nov 2025 16:31:21 +0000 Subject: [PATCH 2/6] Enabled Python 3.14 and 3.14t builds --- CHANGELOG.rst | 3 ++- ci/pip_install_deps.py | 7 ++++++- pyproject.toml | 4 ---- test/test.py | 5 +++++ 4 files changed, 13 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 7e1b4cf1..58c86c5f 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -138,7 +138,8 @@ Bug fixes Python Version Support ~~~~~~~~~~~~~~~~~~~~~~ -* Dropped support for Python 3.9, since it is now end of life. +* Added support for Python 3.14 and 3.14t (free threaded). +* Dropped support for Python 3.9 (end of life). 4.0.0 (2025-10-17) ------------------ diff --git a/ci/pip_install_deps.py b/ci/pip_install_deps.py index 2d35ddc9..b3168dae 100644 --- a/ci/pip_install_deps.py +++ b/ci/pip_install_deps.py @@ -88,12 +88,17 @@ def main(args): is_64bits = sys.maxsize > 2 ** 32 is_cpython = platform.python_implementation() == 'CPython' is_final = sys.version_info.releaselevel == 'final' + py_version = (sys.version_info.major, sys.version_info.minor) if on_linux_is_glibc and is_64bits and is_cpython and is_final: # Ensure that we've managed to install the expected dependencies. import pandas import numpy import pyarrow - import fastparquet + + # Temporarily don't require fastparquet on 3.14 + # Compat will still be tested on older releases. + if py_version < (3, 14): + import fastparquet if __name__ == "__main__": diff --git a/pyproject.toml b/pyproject.toml index 2b3591ab..cdcabab1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -65,10 +65,6 @@ skip = [ # Skip all 32-bit builds, except for Windows. # Those builds are named `*win32*` in cibuildwheel. "*i686*", - - # Skip Python 3.14 builds until the dependencies catch up - "cp314-*", - "cp314t-*" ] # [tool.cibuildwheel.windows] diff --git a/test/test.py b/test/test.py index 095b70f7..898ea14c 100755 --- a/test/test.py +++ b/test/test.py @@ -1478,6 +1478,11 @@ class TestBufferProtocolVersionV2(TestBases.TestBuffer): version = 2 +class TestBufferProtocolVersionV3(TestBases.TestBuffer): + name = 'protocol version 3' + version = 2 + + if __name__ == '__main__': if os.environ.get('TEST_QUESTDB_PROFILE') == '1': import cProfile From 715dfc288f40d3ac1f9331a65c7330151195f813 Mon Sep 17 00:00:00 2001 From: Adam Cimarosti Date: Fri, 28 Nov 2025 16:34:55 +0000 Subject: [PATCH 3/6] fixed a test error --- test/test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/test.py b/test/test.py index 898ea14c..f32c5034 100755 --- a/test/test.py +++ b/test/test.py @@ -1480,7 +1480,7 @@ class TestBufferProtocolVersionV2(TestBases.TestBuffer): class TestBufferProtocolVersionV3(TestBases.TestBuffer): name = 'protocol version 3' - version = 2 + version = 3 if __name__ == '__main__': From deceb89357d4e12f473c0fb8742a53fd9437bd5c Mon Sep 17 00:00:00 2001 From: Adam Cimarosti Date: Fri, 28 Nov 2025 16:55:54 +0000 Subject: [PATCH 4/6] attempting to fix a compat test issue --- ci/run_tests_pipeline.yaml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/ci/run_tests_pipeline.yaml b/ci/run_tests_pipeline.yaml index 96b2134b..6d1077e1 100644 --- a/ci/run_tests_pipeline.yaml +++ b/ci/run_tests_pipeline.yaml @@ -82,17 +82,17 @@ stages: submodules: true - task: UsePythonVersion@0 inputs: - versionSpec: "3.9" + versionSpec: "3.10" - script: | python3 --version python3 -m pip install uv sudo apt-get install -y libopenblas-dev pkg-config displayName: "Install uv" - - script: uv run --with 'numpy==1.21.0' test/test.py -v TestBufferProtocolVersionV2 + - script: uv run --python python --with 'numpy==1.21.0' test/test.py -v TestBufferProtocolVersionV2 displayName: "Test vs numpy 1.21" - - script: uv run --with 'numpy==1.24.0' test/test.py -v TestBufferProtocolVersionV2 + - script: uv run --python python --with 'numpy==1.24.0' test/test.py -v TestBufferProtocolVersionV2 displayName: "Test vs numpy 1.24" - - script: uv run --with 'numpy==1.26.0' test/test.py -v TestBufferProtocolVersionV2 + - script: uv run --python python --with 'numpy==1.26.0' test/test.py -v TestBufferProtocolVersionV2 displayName: "Test vs numpy 1.26" - job: TestsAgainstVariousNumpyVersion2x pool: @@ -112,9 +112,9 @@ stages: python3 -m pip install uv sudo apt-get install -y libopenblas-dev pkg-config displayName: "Install uv" - - script: uv run --with 'numpy==2.0.0' test/test.py -v TestBufferProtocolVersionV2 + - script: uv run --python python run --with 'numpy==2.0.0' test/test.py -v TestBufferProtocolVersionV2 displayName: "Test vs numpy 2.0" - - script: uv run --with 'numpy==2.2.0' test/test.py -v TestBufferProtocolVersionV2 + - script: uv run --python python --with 'numpy==2.2.0' test/test.py -v TestBufferProtocolVersionV2 displayName: "Test vs numpy 2.2" - - script: uv run --with 'numpy==2.3.0' test/test.py -v TestBufferProtocolVersionV2 + - script: uv run --python python --with 'numpy==2.3.0' test/test.py -v TestBufferProtocolVersionV2 displayName: "Test vs numpy 2.3" From 93af17602400c662390334dbc15486f3effab39e Mon Sep 17 00:00:00 2001 From: Adam Cimarosti Date: Fri, 28 Nov 2025 17:14:12 +0000 Subject: [PATCH 5/6] fixed a typo in CI --- ci/run_tests_pipeline.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/run_tests_pipeline.yaml b/ci/run_tests_pipeline.yaml index 6d1077e1..27c8e0df 100644 --- a/ci/run_tests_pipeline.yaml +++ b/ci/run_tests_pipeline.yaml @@ -112,7 +112,7 @@ stages: python3 -m pip install uv sudo apt-get install -y libopenblas-dev pkg-config displayName: "Install uv" - - script: uv run --python python run --with 'numpy==2.0.0' test/test.py -v TestBufferProtocolVersionV2 + - script: uv run --python python --with 'numpy==2.0.0' test/test.py -v TestBufferProtocolVersionV2 displayName: "Test vs numpy 2.0" - script: uv run --python python --with 'numpy==2.2.0' test/test.py -v TestBufferProtocolVersionV2 displayName: "Test vs numpy 2.2" From 5f9048af85235b4b382c855cd4db942900b6b380 Mon Sep 17 00:00:00 2001 From: Adam Cimarosti Date: Fri, 28 Nov 2025 17:49:47 +0000 Subject: [PATCH 6/6] disabled 314t on windows --- CHANGELOG.rst | 3 ++- pyproject.toml | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 58c86c5f..c3deae50 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -138,7 +138,8 @@ Bug fixes Python Version Support ~~~~~~~~~~~~~~~~~~~~~~ -* Added support for Python 3.14 and 3.14t (free threaded). +* Added support for Python 3.14 on all platforms and 3.14t (free threaded) on + all platforms except Windows. * Dropped support for Python 3.9 (end of life). 4.0.0 (2025-10-17) diff --git a/pyproject.toml b/pyproject.toml index cdcabab1..48d8f427 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -65,6 +65,10 @@ skip = [ # Skip all 32-bit builds, except for Windows. # Those builds are named `*win32*` in cibuildwheel. "*i686*", + + # Temporarily skip the 3.14 free-threaded built on Windows. + # Pandas dependencies missing. + "*314t-win*" ] # [tool.cibuildwheel.windows]