Skip to content

Commit 40d2fec

Browse files
Support python3.14 and release 4.1.0
Signed-off-by: Ayan Sinha Mahapatra <[email protected]>
1 parent a9c23e0 commit 40d2fec

File tree

6 files changed

+10307
-8915
lines changed

6 files changed

+10307
-8915
lines changed

.github/workflows/pypi-release.yml

Lines changed: 162 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,162 @@
1+
2+
# Derived in part from https://github.com/google/brotli-wheels
3+
#
4+
# Copyright (c) 2009, 2010, 2013-2016 by the Brotli Authors.
5+
#
6+
# Permission is hereby granted, free of charge, to any person obtaining a copy
7+
# of this software and associated documentation files (the "Software"), to deal
8+
# in the Software without restriction, including without limitation the rights
9+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10+
# copies of the Software, and to permit persons to whom the Software is
11+
# furnished to do so, subject to the following conditions:
12+
#
13+
# The above copyright notice and this permission notice shall be included in
14+
# all copies or substantial portions of the Software.
15+
#
16+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22+
# THE SOFTWARE.
23+
24+
25+
name: Create library release archives, create a GH release and publish PyPI wheel and sdist on tag push
26+
27+
on:
28+
workflow_dispatch:
29+
push:
30+
tags:
31+
- "v*.*.*"
32+
33+
jobs:
34+
build-wheels:
35+
name: Build unicode wheels ${{ matrix.type }} ${{ matrix.arch }} on ${{ matrix.os }}
36+
runs-on: ${{ matrix.os }}
37+
defaults:
38+
run:
39+
shell: bash
40+
strategy:
41+
fail-fast: false
42+
matrix:
43+
os: [macos-latest, windows-latest]
44+
arch: [auto64]
45+
build: ["cp{310,311,312,313,314}-*"]
46+
47+
include:
48+
- os: ubuntu-latest
49+
arch: auto64
50+
type: manylinux2014
51+
build: "cp{310,311,312,313,314}-*"
52+
CIBW_MANYLINUX_X86_64_IMAGE: manylinux2014
53+
54+
- os: macos-latest
55+
arch: universal2
56+
build: "cp{310,311,312,313,314}-*"
57+
58+
- os: windows-latest
59+
arch: auto64
60+
build: "cp{310,311,312,313,314}-*"
61+
62+
steps:
63+
- uses: actions/checkout@v4
64+
65+
- name: Build wheels and run tests
66+
uses: pypa/[email protected]
67+
env:
68+
CIBW_BUILD: ${{ matrix.build }}
69+
CIBW_MANYLINUX_I686_IMAGE: ${{ matrix.CIBW_MANYLINUX_I686_IMAGE }}
70+
CIBW_MANYLINUX_X86_64_IMAGE: ${{ matrix.CIBW_MANYLINUX_X86_64_IMAGE }}
71+
CIBW_ARCHS: ${{ matrix.arch }}
72+
73+
- name: Collect built wheels
74+
uses: actions/upload-artifact@v4
75+
with:
76+
name: intbitset-wheels-${{ matrix.os }}-${{ strategy.job-index }}
77+
path: ./wheelhouse/*.whl
78+
79+
build-sdist:
80+
name: Build source distribution
81+
runs-on: ubuntu-24.04
82+
83+
steps:
84+
- uses: actions/checkout@v4
85+
86+
- name: Checkout and install reqs
87+
run: |
88+
pip install --upgrade --user build twine pkginfo packaging pip setuptools cython
89+
90+
- name: Build sdist
91+
run: |
92+
python setup.py sdist
93+
twine check dist/*
94+
95+
- name: Collect built sdist
96+
uses: actions/upload-artifact@v4
97+
with:
98+
name: intbitset-sdist
99+
path: dist/*.tar.gz
100+
101+
merge:
102+
runs-on: ubuntu-latest
103+
needs: [build-sdist, build-wheels]
104+
steps:
105+
- name: Merge created wheels and sdist in a single zip
106+
uses: actions/upload-artifact/merge@v4
107+
with:
108+
name: intbitset-build
109+
pattern: intbitset-*
110+
111+
check-dist:
112+
name: Check distributions are PyPi-correct
113+
needs: merge
114+
runs-on: ubuntu-22.04
115+
steps:
116+
- uses: actions/download-artifact@v4
117+
with:
118+
path: intbitset-build
119+
- run: find . -ls
120+
- run: pipx run twine check --strict intbitset-build/*/*
121+
122+
create-gh-release:
123+
name: Create GH release
124+
needs:
125+
- check-dist
126+
runs-on: ubuntu-24.04
127+
128+
steps:
129+
- name: Download builds
130+
uses: actions/download-artifact@v4
131+
with:
132+
name: intbitset-build
133+
path: intbitset-build
134+
135+
- name: Create GH release
136+
uses: softprops/action-gh-release@v2
137+
with:
138+
draft: true
139+
files: intbitset-build/*
140+
141+
create-pypi-release:
142+
name: Create PyPI release
143+
needs:
144+
- create-gh-release
145+
runs-on: ubuntu-24.04
146+
permissions:
147+
id-token: write
148+
149+
steps:
150+
- name: Download builds
151+
uses: actions/download-artifact@v4
152+
with:
153+
name: intbitset-build
154+
path: dist/
155+
156+
- name: Mock PyPI upload
157+
run: |
158+
ls -al dist
159+
160+
- name: Publish to PyPI
161+
if: startsWith(github.ref, 'refs/tags')
162+
uses: pypa/gh-action-pypi-publish@release/v1

.github/workflows/test-and-build.yml

Lines changed: 14 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -36,44 +36,30 @@ jobs:
3636
strategy:
3737
fail-fast: false
3838
matrix:
39-
#os: [macos-latest, windows-latest]
40-
#arch: [auto64]
41-
#build: ["cp{39,310,311,312,312}-*"]
39+
os: [macos-latest, windows-latest]
40+
arch: [auto64]
41+
build: ["cp{310,311,312,313,314}-*"]
4242

4343
include:
44-
- os: ubuntu-latest
45-
arch: auto64
46-
type: manylinux1
47-
build: "cp39-*"
48-
CIBW_MANYLINUX_X86_64_IMAGE: manylinux1
49-
50-
- os: ubuntu-latest
51-
arch: auto64
52-
type: manylinux2010
53-
build: "cp310-*"
54-
CIBW_MANYLINUX_X86_64_IMAGE: manylinux2010
55-
56-
# the manylinux2014 image also contains python 3.11, 3.12,
57-
# and 3.13
5844
- os: ubuntu-latest
5945
arch: auto64
6046
type: manylinux2014
61-
build: "cp{311,cp312,313}-*"
47+
build: "cp{310,311,cp312,313,314}-*"
6248
CIBW_MANYLINUX_X86_64_IMAGE: manylinux2014
6349

6450
- os: macos-latest
6551
arch: universal2
66-
build: "cp{39,310,311,312,313}-*"
52+
build: "cp{310,311,312,313,314}-*"
6753

6854
- os: windows-latest
6955
arch: auto64
70-
build: "cp{39,310,311,312,313}-*"
56+
build: "cp{310,311,312,313,314}-*"
7157

7258
steps:
7359
- uses: actions/checkout@v4
7460

7561
- name: Build wheels and run tests
76-
uses: pypa/cibuildwheel@v2.21.3
62+
uses: pypa/cibuildwheel@v3.2.1
7763
env:
7864
CIBW_BUILD: ${{ matrix.build }}
7965
CIBW_MANYLINUX_X86_64_IMAGE: ${{ matrix.CIBW_MANYLINUX_X86_64_IMAGE }}
@@ -84,19 +70,19 @@ jobs:
8470
- name: Collect built wheels
8571
uses: actions/upload-artifact@v4
8672
with:
87-
name: intbitset-wheels-${{ matrix.os }}-${{ matrix.ach }}-${{ matrix.type }}
73+
name: intbitset-wheels-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.type }}
8874
path: wheelhouse/*.whl
8975

9076
build_sdist:
9177
name: Build source distribution
92-
runs-on: ubuntu-22.04
78+
runs-on: ubuntu-24.04
9379

9480
steps:
9581
- uses: actions/checkout@v4
9682

9783
- name: Checkout and install reqs
9884
run: |
99-
pip install --upgrade --user build twine pip setuptools
85+
pip install --upgrade --user build twine pip setuptools packaging
10086
10187
- name: Build sdist
10288
run: |
@@ -110,7 +96,7 @@ jobs:
11096
path: dist/*.tar.gz
11197

11298
merge:
113-
runs-on: ubuntu-latest
99+
runs-on: ubuntu-24.04
114100
needs: [build_sdist, build_wheels]
115101
steps:
116102
- name: Merge created wheels and sdist in a single zip
@@ -122,7 +108,7 @@ jobs:
122108
check_dist:
123109
name: Check distributions are PyPi-correct
124110
needs: merge
125-
runs-on: ubuntu-22.04
111+
runs-on: ubuntu-24.04
126112
steps:
127113
- uses: actions/download-artifact@v4
128114
with:
@@ -140,18 +126,8 @@ jobs:
140126
strategy:
141127
fail-fast: false
142128
matrix:
143-
os: [ubuntu-20.04, ubuntu-22.04, macos-12, macos-13, windows-2019, windows-2022]
144-
python: ["3.9", "3.10", "3.11", "3.12", "3.13"]
145-
146-
include:
147-
- os: macos-14
148-
python: "3.10"
149-
- os: macos-14
150-
python: "3.11"
151-
- os: macos-14
152-
python: "3.12"
153-
- os: macos-14
154-
python: "3.13"
129+
os: [ubuntu-22.04, ubuntu-24.04, macos-13, macos-14, windows-2022, windows-2025]
130+
python: ["3.10", "3.11", "3.12", "3.13", "3.14"]
155131

156132
steps:
157133
- name: Set up Python

CHANGELOG.rst

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,14 @@ Changes
33

44
Here you can see the list of key changes between each intbitset release.
55

6+
7+
Version 4.1.0
8+
------------------
9+
10+
- Support Python 3.14 and regenerate C code accordingly
11+
- Drop support for Python 3.9
12+
13+
614
Version 4.0.0
715
------------------
816

0 commit comments

Comments
 (0)