Skip to content

Commit 3cd70bf

Browse files
authored
chore: dropped python 3.9 support, added python 3.14 and 3.14t support (#120)
1 parent b795f0b commit 3cd70bf

File tree

5 files changed

+29
-12
lines changed

5 files changed

+29
-12
lines changed

CHANGELOG.rst

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,13 @@ Bug fixes
135135
behavior, where ``None`` values have always been supported to represent NULL
136136
values.
137137

138+
Python Version Support
139+
~~~~~~~~~~~~~~~~~~~~~~
140+
141+
* Added support for Python 3.14 on all platforms and 3.14t (free threaded) on
142+
all platforms except Windows.
143+
* Dropped support for Python 3.9 (end of life).
144+
138145
4.0.0 (2025-10-17)
139146
------------------
140147

ci/pip_install_deps.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,12 +88,17 @@ def main(args):
8888
is_64bits = sys.maxsize > 2 ** 32
8989
is_cpython = platform.python_implementation() == 'CPython'
9090
is_final = sys.version_info.releaselevel == 'final'
91+
py_version = (sys.version_info.major, sys.version_info.minor)
9192
if on_linux_is_glibc and is_64bits and is_cpython and is_final:
9293
# Ensure that we've managed to install the expected dependencies.
9394
import pandas
9495
import numpy
9596
import pyarrow
96-
import fastparquet
97+
98+
# Temporarily don't require fastparquet on 3.14
99+
# Compat will still be tested on older releases.
100+
if py_version < (3, 14):
101+
import fastparquet
97102

98103

99104
if __name__ == "__main__":

ci/run_tests_pipeline.yaml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -82,17 +82,17 @@ stages:
8282
submodules: true
8383
- task: UsePythonVersion@0
8484
inputs:
85-
versionSpec: "3.9"
85+
versionSpec: "3.10"
8686
- script: |
8787
python3 --version
8888
python3 -m pip install uv
8989
sudo apt-get install -y libopenblas-dev pkg-config
9090
displayName: "Install uv"
91-
- script: uv run --with 'numpy==1.21.0' test/test.py -v TestBufferProtocolVersionV2
91+
- script: uv run --python python --with 'numpy==1.21.0' test/test.py -v TestBufferProtocolVersionV2
9292
displayName: "Test vs numpy 1.21"
93-
- script: uv run --with 'numpy==1.24.0' test/test.py -v TestBufferProtocolVersionV2
93+
- script: uv run --python python --with 'numpy==1.24.0' test/test.py -v TestBufferProtocolVersionV2
9494
displayName: "Test vs numpy 1.24"
95-
- script: uv run --with 'numpy==1.26.0' test/test.py -v TestBufferProtocolVersionV2
95+
- script: uv run --python python --with 'numpy==1.26.0' test/test.py -v TestBufferProtocolVersionV2
9696
displayName: "Test vs numpy 1.26"
9797
- job: TestsAgainstVariousNumpyVersion2x
9898
pool:
@@ -112,9 +112,9 @@ stages:
112112
python3 -m pip install uv
113113
sudo apt-get install -y libopenblas-dev pkg-config
114114
displayName: "Install uv"
115-
- script: uv run --with 'numpy==2.0.0' test/test.py -v TestBufferProtocolVersionV2
115+
- script: uv run --python python --with 'numpy==2.0.0' test/test.py -v TestBufferProtocolVersionV2
116116
displayName: "Test vs numpy 2.0"
117-
- script: uv run --with 'numpy==2.2.0' test/test.py -v TestBufferProtocolVersionV2
117+
- script: uv run --python python --with 'numpy==2.2.0' test/test.py -v TestBufferProtocolVersionV2
118118
displayName: "Test vs numpy 2.2"
119-
- script: uv run --with 'numpy==2.3.0' test/test.py -v TestBufferProtocolVersionV2
119+
- script: uv run --python python --with 'numpy==2.3.0' test/test.py -v TestBufferProtocolVersionV2
120120
displayName: "Test vs numpy 2.3"

pyproject.toml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[project]
22
# See: https://packaging.python.org/en/latest/specifications/declaring-project-metadata/
33
name = "questdb"
4-
requires-python = ">=3.9"
4+
requires-python = ">=3.10"
55
version = "4.1.0"
66
description = "QuestDB client library for Python"
77
readme = "README.rst"
@@ -66,9 +66,9 @@ skip = [
6666
# Those builds are named `*win32*` in cibuildwheel.
6767
"*i686*",
6868

69-
# Skip Python 3.14 builds until the dependencies catch up
70-
"cp314-*",
71-
"cp314t-*"
69+
# Temporarily skip the 3.14 free-threaded built on Windows.
70+
# Pandas dependencies missing.
71+
"*314t-win*"
7272
]
7373

7474
# [tool.cibuildwheel.windows]

test/test.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1478,6 +1478,11 @@ class TestBufferProtocolVersionV2(TestBases.TestBuffer):
14781478
version = 2
14791479

14801480

1481+
class TestBufferProtocolVersionV3(TestBases.TestBuffer):
1482+
name = 'protocol version 3'
1483+
version = 3
1484+
1485+
14811486
if __name__ == '__main__':
14821487
if os.environ.get('TEST_QUESTDB_PROFILE') == '1':
14831488
import cProfile

0 commit comments

Comments
 (0)