8
8
# Runs on every merge to main to upload .dev0 wheels to anaconda.org
9
9
- main
10
10
- v1.**
11
+ - py313-wheels
11
12
# Make it possible to upload wheels manually if needed (for anaconda.org only, not PyPI)
12
13
workflow_dispatch :
13
14
inputs :
34
35
fail-fast : false
35
36
matrix :
36
37
os : [ubuntu-latest]
37
- cibw_python : ["cp310", "cp311", "cp312 "]
38
+ cibw_python : ["cp310", "cp313 "]
38
39
cibw_arch : ["x86_64"]
39
40
steps :
40
41
- uses : actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2
49
50
with :
50
51
output-dir : dist
51
52
env :
53
+ CIBW_PRERELEASE_PYTHONS : True
54
+ # CIBW_FREE_THREADED_SUPPORT: True
52
55
CIBW_BUILD : ${{ matrix.cibw_python }}-*
53
56
CIBW_ARCHS_LINUX : ${{ matrix.cibw_arch }}
54
57
CIBW_MANYLINUX_X86_64_IMAGE : manylinux2014
@@ -59,219 +62,3 @@ jobs:
59
62
path : ./dist/*.whl
60
63
if-no-files-found : error
61
64
62
- build_linux_aarch64_wheels :
63
- name : Build ${{ matrix.cibw_python }} ${{ matrix.cibw_arch }} ${{ matrix.os }}
64
- runs-on : ${{ matrix.os }}
65
- strategy :
66
- fail-fast : false
67
- matrix :
68
- os : [ubuntu-latest]
69
- cibw_python : ["cp310", "cp311", "cp312"]
70
- cibw_arch : ["aarch64"]
71
- steps :
72
- - uses : actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2
73
- with :
74
- fetch-depth : 0
75
- - uses : actions/setup-python@v5
76
- name : Install Python
77
- with :
78
- python-version : " 3.10"
79
- - name : Set up QEMU
80
- uses : docker/setup-qemu-action@v3
81
- with :
82
- platforms : arm64
83
- - name : Build the wheel
84
- uses : pypa/cibuildwheel@ba8be0d98853f5744f24e7f902c8adef7ae2e7f3 # 2.18.1
85
- with :
86
- output-dir : dist
87
- env :
88
- CIBW_BUILD : ${{ matrix.cibw_python }}-*
89
- CIBW_ARCHS_LINUX : ${{ matrix.cibw_arch }}
90
- CIBW_MANYLINUX_AARCH64_IMAGE : manylinux2014
91
- CIBW_MUSLLINUX_AARCH64_IMAGE : musllinux_1_2
92
- - uses : actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3
93
- with :
94
- name : wheels_linux_${{ matrix.cibw_arch }}_${{ matrix.cibw_python }}
95
- path : ./dist/*.whl
96
-
97
- build_macos_wheels :
98
- name : Build ${{ matrix.cibw_python }} ${{ matrix.cibw_arch }} ${{ matrix.os }}
99
- runs-on : ${{ matrix.os }}
100
- strategy :
101
- fail-fast : false
102
- matrix :
103
- # macos-13 is the last runner that supports Intel (x86_64) architecture
104
- os : [macos-13, macos-14]
105
- cibw_python : ["cp310", "cp311", "cp312"]
106
- cibw_arch : ["x86_64", "arm64"]
107
- exclude :
108
- - os : macos-14
109
- cibw_arch : " x86_64"
110
- - os : macos-13
111
- cibw_arch : " arm64"
112
- steps :
113
- - uses : actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2
114
- with :
115
- fetch-depth : 0
116
-
117
- - uses : actions/setup-python@v5
118
- name : Install Python
119
- with :
120
- python-version : " 3.12"
121
-
122
- - name : Build wheels for CPython (macOS) (x86_64)
123
- if : matrix.cibw_arch == 'x86_64'
124
- uses : pypa/cibuildwheel@ba8be0d98853f5744f24e7f902c8adef7ae2e7f3 # 2.18.1
125
- with :
126
- output-dir : dist
127
- env :
128
- CIBW_BUILD : ${{ matrix.cibw_python }}-*
129
- CIBW_ARCHS_MACOS : ${{ matrix.cibw_arch }}
130
-
131
- - name : Build wheels for CPython (macOS) (arm64)
132
- if : matrix.cibw_arch == 'arm64'
133
- uses : pypa/cibuildwheel@ba8be0d98853f5744f24e7f902c8adef7ae2e7f3 # 2.18.1
134
- with :
135
- output-dir : dist
136
- env :
137
- CIBW_BUILD : ${{ matrix.cibw_python }}-*
138
- CIBW_ARCHS_MACOS : ${{ matrix.cibw_arch }}
139
-
140
- - uses : actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3
141
- with :
142
- name : wheels_macos_${{ matrix.cibw_arch }}_${{ matrix.cibw_python }}
143
- path : ./dist/*.whl
144
- if-no-files-found : error
145
-
146
- build_windows_wheels :
147
- name : Build ${{ matrix.cibw_python }} ${{ matrix.cibw_arch }} ${{ matrix.os }}
148
- runs-on : ${{ matrix.os }}
149
- strategy :
150
- fail-fast : false
151
- matrix :
152
- os : [windows-latest]
153
- cibw_arch : ["AMD64", "x86"]
154
- cibw_python : ["cp310", "cp311", "cp312"]
155
- steps :
156
- - uses : actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2
157
- with :
158
- fetch-depth : 0
159
-
160
- - uses : actions/setup-python@v5
161
- name : Install Python
162
- with :
163
- python-version : " 3.10"
164
-
165
- - name : Setup MSVC (32-bit)
166
- if : matrix.cibw_arch == 'x86'
167
- uses : bus1/cabuild/action/msdevshell@e22aba57d6e74891d059d66501b6b5aed8123c4d # v1
168
- with :
169
- architecture : x86
170
-
171
- - name : Setup MSVC (64-bit)
172
- if : matrix.cibw_arch == 'AMD64'
173
- uses : bus1/cabuild/action/msdevshell@e22aba57d6e74891d059d66501b6b5aed8123c4d # v1
174
- with :
175
- architecture : x64
176
-
177
- - name : Build Windows wheels for CPython
178
- uses : pypa/cibuildwheel@ba8be0d98853f5744f24e7f902c8adef7ae2e7f3 # 2.18.1
179
- with :
180
- output-dir : dist
181
- env :
182
- CIBW_BUILD : ${{ matrix.cibw_python }}-*
183
- CIBW_ARCHS_WINDOWS : ${{ matrix.cibw_arch }}
184
-
185
- - uses : actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3
186
- with :
187
- name : wheels_windows_${{ matrix.cibw_arch }}_${{ matrix.cibw_python }}
188
- path : ./dist/*.whl
189
- if-no-files-found : error
190
-
191
- deploy_pypi :
192
- name : Release (PyPI)
193
- needs :
194
- [
195
- build_linux_x86_64_wheels,
196
- build_linux_aarch64_wheels,
197
- build_macos_wheels,
198
- build_windows_wheels,
199
- ]
200
- # Run only on tags pushed to the repository
201
- if : github.repository == 'PyWavelets/pywt' && startsWith(github.ref, 'refs/tags/v')
202
- runs-on : ubuntu-latest
203
- steps :
204
- - uses : actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2
205
- with :
206
- fetch-depth : 0
207
-
208
- - uses : actions/setup-python@v5
209
- name : Install Python
210
- with :
211
- python-version : " 3.10"
212
-
213
- - name : Install Twine
214
- run : |
215
- python -m pip install --upgrade pip
216
- pip install twine
217
- pip install cython numpy build
218
-
219
- - uses : actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e # v4.1.7
220
- id : download
221
- with :
222
- pattern : " wheels_*"
223
- path : ./dist
224
- merge-multiple : true
225
-
226
- - name : Publish the source distribution on PyPI
227
- run : |
228
- PYWT_VERSION=$(git describe --tags)
229
- python -m build --sdist
230
- ls -la ${{ github.workspace }}/dist
231
- # We prefer to release wheels before source because otherwise there is a
232
- # small window during which users who pip install pywt will require compilation.
233
- twine upload ${{ github.workspace }}/dist/*.whl
234
- twine upload ${{ github.workspace }}/dist/pywavelets-${PYWT_VERSION:1}.tar.gz
235
- env :
236
- TWINE_USERNAME : __token__
237
- TWINE_PASSWORD : ${{ secrets.TWINE_TOKEN }}
238
-
239
- - name : Github release
240
- uses : softprops/action-gh-release@a74c6b72af54cfa997e81df42d94703d6313a2d0 # v2.0.6
241
- env :
242
- GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
243
- GITHUB_REPOSITORY : ${{ github.repository }}
244
-
245
- deploy_anaconda :
246
- name : Release (Anaconda)
247
- needs :
248
- [
249
- build_linux_x86_64_wheels,
250
- build_linux_aarch64_wheels,
251
- build_macos_wheels,
252
- build_windows_wheels,
253
- ]
254
- # Run only on pushes to the main branch, on schedule, or when triggered manually
255
- if : >-
256
- github.repository == 'PyWavelets/pywt' &&
257
- (github.event_name == 'push' && github.ref == 'refs/heads/main') ||
258
- (github.event_name == 'workflow_dispatch' && github.event.inputs.push_wheels == 'true') ||
259
- (github.event_name == 'schedule')
260
- runs-on : ubuntu-latest
261
- steps :
262
- - uses : actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2
263
- with :
264
- fetch-depth : 0
265
-
266
- - uses : actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e # v4.1.7
267
- id : download
268
- with :
269
- pattern : " wheels_*"
270
- path : dist/
271
- merge-multiple : true
272
-
273
- - name : Push to Anaconda PyPI index
274
- uses : scientific-python/upload-nightly-action@b67d7fcc0396e1128a474d1ab2b48aa94680f9fc # v0.5.0
275
- with :
276
- artifacts_path : dist/
277
- anaconda_nightly_upload_token : ${{ secrets.ANACONDA_ORG_UPLOAD_TOKEN }}
0 commit comments