Skip to content
Merged
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
7 changes: 7 additions & 0 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,13 @@ Bug fixes
behavior, where ``None`` values have always been supported to represent NULL
values.

Python Version Support
~~~~~~~~~~~~~~~~~~~~~~

* 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)
------------------

Expand Down
7 changes: 6 additions & 1 deletion ci/pip_install_deps.py
Original file line number Diff line number Diff line change
Expand Up @@ -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__":
Expand Down
14 changes: 7 additions & 7 deletions ci/run_tests_pipeline.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand All @@ -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 --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"
8 changes: 4 additions & 4 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -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"
Expand Down Expand Up @@ -66,9 +66,9 @@ skip = [
# Those builds are named `*win32*` in cibuildwheel.
"*i686*",

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

# [tool.cibuildwheel.windows]
Expand Down
5 changes: 5 additions & 0 deletions test/test.py
Original file line number Diff line number Diff line change
Expand Up @@ -1478,6 +1478,11 @@ class TestBufferProtocolVersionV2(TestBases.TestBuffer):
version = 2


class TestBufferProtocolVersionV3(TestBases.TestBuffer):
name = 'protocol version 3'
version = 3


if __name__ == '__main__':
if os.environ.get('TEST_QUESTDB_PROFILE') == '1':
import cProfile
Expand Down