Skip to content
Draft
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
18 changes: 12 additions & 6 deletions .github/workflows/actions.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ jobs:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ ubuntu-20.04 , windows-2019, macos-12 ]
os: [ ubuntu-22.04 , windows-2022, macos-13 ]
steps:
- uses: actions/checkout@v4
- name: Get proton-python-driver tag
Expand Down Expand Up @@ -36,7 +36,9 @@ jobs:
image: tonistiigi/binfmt:latest
platforms: all
- name: Build wheels
uses: pypa/cibuildwheel@v2.21.3
# v3.4.1 is the first stable line with CPython 3.14 (incl. cp314t) wheel support.
# v2.21.3 predates 3.14 and would silently skip cp314/cp314t targets.
uses: pypa/cibuildwheel@v3.4.1
with:
package-dir: .
output-dir: wheelhouse
Expand All @@ -50,9 +52,10 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.GH_ACCESS_TOKEN }}
- name: Store the distribution packages
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: python-package-distributions
# v4 requires unique artifact names per job; matrix.os keeps them distinct.
name: python-package-distributions-${{ matrix.os }}
path: wheelhouse/*.whl

publish-to-pypi:
Expand All @@ -67,9 +70,12 @@ jobs:
id-token: write # IMPORTANT: mandatory for trusted publishing
steps:
- name: Download all the dists
uses: actions/download-artifact@v3
uses: actions/download-artifact@v4
with:
name: python-package-distributions
# v4 download without a name arg fetches every matching artifact; the pattern
# joins the per-OS uploads from build_wheels back into a single dist/ tree.
pattern: python-package-distributions-*
merge-multiple: true
path: dist/
- name: Publish distribution to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
Expand Down
33 changes: 33 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ jobs:
- "3.11"
- "3.12"
- "3.13"
- "3.14"
- "pypy-3.9"
- "pypy-3.10"
proton-version:
Expand Down Expand Up @@ -91,6 +92,38 @@ jobs:
COVERALLS_PARALLEL: true
COVERALLS_FLAG_NAME: ${{ matrix.python-version }} CH=${{ matrix.proton-version }} NUMPY=${{ matrix.use-numpy }}

# Free-threaded 3.14 (cp314t) smoke. We don't run the full driver test matrix
# here because the driver's module init emits Py_MOD_GIL_USED under FT, so a
# real test run would just prove the driver falls back to GIL mode. This job
# locks in that (a) the wheel builds on 3.14t, and (b) every compiled
# extension imports into a free-threaded interpreter with the stdlib
# compression modules (zlib / bz2 / compression.zstd / lzma) artificially
# blocked — which is the invariant CYTHON_COMPRESS_STRINGS=0 in setup.py
# exists to guarantee. The shared blocker script lives at
# tests/smoke_no_compression.py.
smoke-ft:
name: 3.14t FT build + import smoke
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- name: Set up free-threaded Python 3.14
uses: actions/setup-python@v5
with:
python-version: "3.14t"
- name: Install driver (pulls pytz/tzlocal and compiles extensions under 3.14t)
run: |
python -m pip install --upgrade pip
python -m pip install cython setuptools wheel
# Install into site-packages so the smoke script resolves proton_driver
# unambiguously regardless of cwd. A plain `build_ext --inplace` would
# leave the driver package importable only when cwd==project root.
python -m pip install .
- name: Report FT runtime state
run: |
python -c "import sys; print('python', sys.version); print('GIL enabled at startup:', getattr(sys, '_is_gil_enabled', lambda: True)())"
- name: Block-import smoke (zlib / bz2 / compression.zstd / lzma)
run: python tests/smoke_no_compression.py

coveralls-finished:
name: Indicate completion to coveralls.io
needs: tests
Expand Down
4 changes: 3 additions & 1 deletion README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,9 @@ This project provides python driver to interact with Timeplus Proton or Timeplus

Installation
------------
Timeplus Python Driver currently supports the following versions of Python: 3.8, 3.9, 3.10, 3.11, 3.12 and 3.13.
Timeplus Python Driver currently supports the following versions of Python: 3.8, 3.9, 3.10, 3.11, 3.12, 3.13, and 3.14.

The driver is also *compatible* with the free-threaded ``3.14t`` interpreter — the extensions build and import cleanly — but the current module init still declares ``Py_MOD_GIL_USED``, which causes CPython to re-enable the GIL for the interpreter at import time. A proper free-threading audit (allowing ``Py_MOD_GIL_NOT_USED``) is tracked separately.

Installing with pip
We recommend creating a virtual environment when installing Python dependencies. For more information on setting up a virtual environment, see the `Python documentation <https://docs.python.org/3.9/tutorial/venv.html>`_.
Expand Down
Loading
Loading