From 2114db402f949045d45bf21c983007acb7b621e7 Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Tue, 11 Aug 2026 17:19:13 +0200 Subject: [PATCH 1/2] add support for Python 3.15, remove Python 3.10 - pyproject.toml: requires-python >= 3.11, update classifiers, tox env_list. - CI: replace the oldest-version job (3.10) with 3.11, add a 3.15-dev job. 3.15 is not released yet, so that job is non-blocking (continue-on-error via the matrix' allow-failure flag). Co-Authored-By: Claude Fable 5 --- .github/workflows/ci.yml | 13 ++++++++++--- pyproject.toml | 6 +++--- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0620bc4..d0865dd 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -31,17 +31,24 @@ jobs: fail-fast: true matrix: include: - - os: ubuntu-22.04 - python-version: '3.10' - toxenv: py310 + - os: ubuntu-24.04 + python-version: '3.11' + toxenv: py311 - os: ubuntu-24.04 python-version: '3.14' toxenv: py314 + - os: ubuntu-latest + python-version: '3.15-dev' + toxenv: py315 + # 3.15 is not released yet, so do not fail the whole matrix if it + # (or Cython not supporting it yet) breaks. + allow-failure: true env: TOXENV: ${{ matrix.toxenv }} runs-on: ${{ matrix.os }} + continue-on-error: ${{ matrix.allow-failure || false }} steps: - uses: actions/checkout@v4 diff --git a/pyproject.toml b/pyproject.toml index 59378ef..2b1ef0a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,18 +6,18 @@ maintainers = [ {name="Thomas Waldmann", email="tw@waldmann-edv.de"}, ] description = "Memory-efficient hash table (implemented in Cython)" -requires-python = ">=3.10" +requires-python = ">=3.11" keywords = ["hashtable", "memory", "efficient", "dense"] classifiers = [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "Programming Language :: Python", "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.14", + "Programming Language :: Python :: 3.15", "Topic :: Software Development :: Libraries", "Topic :: Software Development :: Libraries :: Python Modules", ] @@ -43,7 +43,7 @@ markers = [] [tool.tox] -env_list = ["py310", "py311", "py312", "py313", "py314"] +env_list = ["py311", "py312", "py313", "py314", "py315"] [tool.tox.env] From 5010ea6b56d5d41e5b994ca84d5c876b8f86afc4 Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Tue, 11 Aug 2026 16:41:27 +0200 Subject: [PATCH 2/2] update CHANGES --- CHANGES.rst | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/CHANGES.rst b/CHANGES.rst index 8fb649a..29fda79 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -1,15 +1,18 @@ Changelog ========= -Version 0.2.0 (unreleased) +Version 0.2.0 (2026-08-11) -------------------------- - ``HashTable.items()`` / ``HashTableNT.items()``: add optional ``prefix_bits`` / - ``prefix`` arguments to iterate only over the items whose key starts with the + ``prefix`` arguments to iterate over only the items whose keys start with the given bit prefix. As the keys are random bytes, this partitions the items into - ``2 ** prefix_bits`` roughly equally sized, disjoint sets, e.g. to process a - huge hash table in batches with a small memory footprint, #49. + ``2 ** prefix_bits`` roughly equally sized, disjoint sets, so a huge hash table + can be processed in batches with a small memory footprint, #49. - Require ``key_size >= 4`` to avoid out-of-bounds reads in ``_get_index``, #42. +- Add support for Python 3.15, remove 3.10. +- Cythonize with the latest Cython release. + Version 0.1.1 (2026-02-09) --------------------------