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
135
136
137
138
139
140
|
name: python tests+artifacts+release
on:
pull_request:
push:
branches:
- main
tags:
- "v*"
release:
types: [published]
jobs:
test:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
python_version: [ '3.6', '3.7', '3.8', '3.9', '3.10-dev', 'pypy3' ]
os: [windows-latest, ubuntu-latest] #, macos-latest]
include:
- os: windows-latest
python_version: 'msys2'
name: ${{ matrix.os }} - Python ${{ matrix.python_version }}
steps:
- uses: actions/checkout@v1
- name: Setup python
uses: actions/setup-python@v2
if: matrix.python_version != 'msys2'
with:
python-version: ${{ matrix.python_version }}
architecture: x64
- name: Setup MSYS2
uses: msys2/setup-msys2@v2
if: matrix.python_version == 'msys2'
with:
msystem: MINGW64
install: git mingw-w64-x86_64-python mingw-w64-x86_64-python-setuptools
update: true
- run: pip install -U 'setuptools>=45'
if: matrix.python_version != 'msys2'
- run: pip install -e .[toml,test]
# pip2 is needed because Mercurial uses python2 on Ubuntu 20.04
- run: |
curl https://bootstrap.pypa.io/pip/2.7/get-pip.py --output get-pip.py
sudo python2 get-pip.py
$(hg debuginstall --template "{pythonexe}") -m pip install hg-git --user
if: matrix.os == 'ubuntu-latest'
- run: pytest
test_legacy_setuptools:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Setup python
uses: actions/setup-python@v2
with:
python-version: "3.6"
architecture: x64
- run: pip install -e .[toml,test] pytest virtualenv
- run: pytest --test-legacy testing/test_setuptools_support.py || true # ignore fail flaky on ci
check_selfinstall:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python_version: [ '3.6', '3.9', 'pypy3' ]
installer: ["pip install"]
name: check self install - Python ${{ matrix.python_version }} via ${{ matrix.installer }}
steps:
- uses: actions/checkout@v1
- name: Setup python
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python_version }}
architecture: x64
# self install testing needs some clarity
# so its being executed without any other tools running
# setuptools smaller 52 is needed to do easy_install
- run: pip install -U "setuptools<52" tomli packaging
- run: python setup.py egg_info
- run: python setup.py sdist
- run: ${{ matrix.installer }} dist/*
- run: python testing/check_self_install.py
dist:
runs-on: ubuntu-latest
needs: [test]
name: Python sdist/wheel
steps:
- uses: actions/checkout@v1
- uses: actions/setup-python@v2
with:
python-version: "3.8"
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install --upgrade wheel setuptools build
- name: Build package
run: python -m build -o dist/
- uses: actions/upload-artifact@v2
with:
name: dist
path: dist
dist_check:
runs-on: ubuntu-latest
needs: [dist]
steps:
- uses: actions/setup-python@v2
with:
python-version: "3.8"
- name: Install dependencies
run: pip install twine
- uses: actions/download-artifact@v2
with:
name: dist
path: dist
- run: twine check --strict dist/*
dist_upload:
runs-on: ubuntu-latest
if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags')
needs: [dist_check]
steps:
- uses: actions/download-artifact@v2
with:
name: dist
path: dist
- name: Publish package to PyPI
uses: pypa/gh-action-pypi-publish@master
with:
user: __token__
password: ${{ secrets.pypi_token }}
|