-
Notifications
You must be signed in to change notification settings - Fork 161
134 lines (108 loc) · 4.26 KB
/
python-publish.yml
File metadata and controls
134 lines (108 loc) · 4.26 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
# This workflow will upload a Python Package using Twine when a release is created
# For more information see: https://help.github.com/en/actions/language-and-framework-guides/using-python-with-github-actions#publishing-to-package-registries
# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.
name: upload
on:
release:
types: [published]
env:
LIMIT_NUMPY_VERSION: 2.0.0
jobs:
build-wheels:
name: Building on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [windows-latest, ubuntu-22.04, macos-latest]
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
steps:
- uses: actions/checkout@v4
- name: Setup Python ${{ matrix.python-version }}
if: ${{ (matrix.os != 'macos-latest') || ((matrix.os == 'macos-latest') && (matrix.python-version != '3.9')) }}
uses: actions/setup-python@v5
id: pysetup
with:
python-version: ${{ matrix.python-version }}
cache: 'pip'
- name: Setup Python 3.9 - macos-arm
if: ${{ (matrix.os == 'macos-latest') && (matrix.python-version == '3.9') }}
run: |
brew update
brew install python@${{ matrix.python-version }}
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python${{ matrix.python-version }} get-pip.py
- name: Create Python alias for Windows
if: matrix.os == 'windows-latest'
run: |
$newPath = "${{ steps.pysetup.outputs.python-path }}".Replace("python.exe", "python${{ matrix.python-version }}.exe")
New-Item -ItemType HardLink -Path "$newPath" -Value "${{ steps.pysetup.outputs.python-path }}"
- name: Display Python and Pip versions
run: |
python${{ matrix.python-version }} -c "import sys; print(sys.version)"
pip --version
- name: Display GLIBCXX versions
if: matrix.os == 'ubuntu-22.04'
run: |
ls /lib/x86_64-linux-gnu/libstdc*
strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX
- name: Upgrade pip wheel setuptools
run: python${{ matrix.python-version }} -m pip install wheel setuptools pip --upgrade
- name: Install numpy, scipy
run: pip install "numpy>${{ env.LIMIT_NUMPY_VERSION }}" scipy
- name: Install other dependencies
run: |
pip install Cython wheel
- name: Display numpy version
run: python${{ matrix.python-version }} -c "import numpy; print(numpy.__version__)"
- name: Build wheels
run: python${{ matrix.python-version }} setup.py bdist_wheel
- name: Rename Linux wheels to supported platform of PyPI
if: matrix.os == 'ubuntu-22.04'
run: for f in dist/*.whl; do mv "$f" "$(echo "$f" | sed s/linux/manylinux1/)"; done
- name: Publish wheels to GitHub artifacts
uses: actions/upload-artifact@v4
with:
name: wheels-${{ matrix.os }}-${{ matrix.python-version }}
path: ./dist/*.whl
publish-pypi:
needs: [build-wheels]
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
path: dist
pattern: wheels-*
merge-multiple: true
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.10"
- name: Display Python version
run: python -c "import sys; print(sys.version)"
- name: Display GLIBCXX versions
run: |
ls /lib/x86_64-linux-gnu/libstdc*
strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX
- name: Install numpy, scipy
run: |
python -m pip install "numpy>${{ env.LIMIT_NUMPY_VERSION }}" scipy
python -c "import numpy; print(numpy.__version__)"
- name: Install other dependencies
run: |
python -m pip install Cython wheel
- name: Build source tar file
run: python setup.py sdist
- name: Publish to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
user: __token__
password: ${{ secrets.PYPI_API_TOKEN }}
packages-dir: ./dist/
verify-metadata: false
skip-existing: true
verbose: true