Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 8c5ea63

Browse filesBrowse files
dmitry-shibanovMaxim Lobanov
and
Maxim Lobanov
authored
Adding support for more PyPy versions and installing them on-flight (actions#168)
* add support to install pypy * resolved comments, update readme, add e2e tests. * resolve throw error * Add pypy unit tests to cover code * add tests * Update test-pypy.yml * Update test-python.yml * Update test-python.yml * Update README.md * fixing tests * change order Co-authored-by: Maxim Lobanov <v-malob@microsoft.com> * add pypy tests and fix issue with pypy-3-nightly Co-authored-by: Maxim Lobanov <v-malob@microsoft.com>
1 parent 2831efe commit 8c5ea63
Copy full SHA for 8c5ea63

File tree

Expand file treeCollapse file tree

14 files changed

+1896
-34
lines changed
Filter options
Expand file treeCollapse file tree

14 files changed

+1896
-34
lines changed

‎.github/workflows/test-pypy.yml

Copy file name to clipboard
+47Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
name: Validate PyPy e2e
2+
on:
3+
push:
4+
branches:
5+
- main
6+
paths-ignore:
7+
- '**.md'
8+
pull_request:
9+
paths-ignore:
10+
- '**.md'
11+
schedule:
12+
- cron: 30 3 * * *
13+
14+
jobs:
15+
setup-pypy:
16+
name: Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }}
17+
runs-on: ${{ matrix.os }}
18+
strategy:
19+
fail-fast: false
20+
matrix:
21+
os: [macos-latest, windows-latest, ubuntu-18.04, ubuntu-20.04]
22+
pypy:
23+
- 'pypy-2.7'
24+
- 'pypy-3.6'
25+
- 'pypy-3.7'
26+
- 'pypy-2.7-v7.3.2'
27+
- 'pypy-3.6-v7.3.2'
28+
- 'pypy-3.7-v7.3.2'
29+
- 'pypy-3.6-v7.3.x'
30+
- 'pypy-3.7-v7.x'
31+
- 'pypy-3.6-v7.3.3rc1'
32+
- 'pypy-3.7-nightly'
33+
34+
steps:
35+
- name: Checkout
36+
uses: actions/checkout@v2
37+
38+
- name: setup-python ${{ matrix.pypy }}
39+
uses: ./
40+
with:
41+
python-version: ${{ matrix.pypy }}
42+
43+
- name: PyPy and Python version
44+
run: python --version
45+
46+
- name: Run simple code
47+
run: python -c 'import math; print(math.factorial(5))'

‎.github/workflows/test.yml renamed to ‎.github/workflows/test-python.yml

Copy file name to clipboardExpand all lines: .github/workflows/test-python.yml
+7-7Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: Validate 'setup-python'
1+
name: Validate Python e2e
22
on:
33
push:
44
branches:
@@ -9,7 +9,7 @@ on:
99
paths-ignore:
1010
- '**.md'
1111
schedule:
12-
- cron: 0 0 * * *
12+
- cron: 30 3 * * *
1313

1414
jobs:
1515
default-version:
@@ -18,7 +18,7 @@ jobs:
1818
strategy:
1919
fail-fast: false
2020
matrix:
21-
os: [macos-latest, windows-latest, ubuntu-16.04, ubuntu-18.04]
21+
os: [macos-latest, windows-latest, ubuntu-16.04, ubuntu-18.04, ubuntu-20.04]
2222
steps:
2323
- name: Checkout
2424
uses: actions/checkout@v2
@@ -38,7 +38,7 @@ jobs:
3838
strategy:
3939
fail-fast: false
4040
matrix:
41-
os: [macos-latest, windows-latest, ubuntu-16.04, ubuntu-18.04]
41+
os: [macos-latest, windows-latest, ubuntu-16.04, ubuntu-18.04, ubuntu-20.04]
4242
python: [3.5.4, 3.6.7, 3.7.5, 3.8.1]
4343
steps:
4444
- name: Checkout
@@ -68,7 +68,7 @@ jobs:
6868
strategy:
6969
fail-fast: false
7070
matrix:
71-
os: [macos-latest, windows-latest, ubuntu-16.04, ubuntu-18.04]
71+
os: [macos-latest, windows-latest, ubuntu-16.04, ubuntu-18.04, ubuntu-20.04]
7272
steps:
7373
- name: Checkout
7474
uses: actions/checkout@v2
@@ -91,13 +91,13 @@ jobs:
9191
- name: Run simple code
9292
run: python -c 'import math; print(math.factorial(5))'
9393

94-
setup-pypy:
94+
setup-pypy-legacy:
9595
name: Setup PyPy ${{ matrix.os }}
9696
runs-on: ${{ matrix.os }}
9797
strategy:
9898
fail-fast: false
9999
matrix:
100-
os: [macos-latest, windows-latest, ubuntu-16.04, ubuntu-18.04]
100+
os: [macos-latest, windows-latest, ubuntu-16.04, ubuntu-18.04, ubuntu-20.04]
101101
steps:
102102
- name: Checkout
103103
uses: actions/checkout@v2

‎README.md

Copy file name to clipboardExpand all lines: README.md
+53-4Lines changed: 53 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ This action sets up a Python environment for use in actions by:
1717
- Allows for pinning to a specific patch version of Python without the worry of it ever being removed or changed.
1818
- Automatic setup and download of Python packages if using a self-hosted runner.
1919
- Support for pre-release versions of Python.
20+
- Support for installing any version of PyPy on-flight
2021

2122
# Usage
2223

@@ -40,7 +41,7 @@ jobs:
4041
runs-on: ubuntu-latest
4142
strategy:
4243
matrix:
43-
python-version: [ '2.x', '3.x', 'pypy2', 'pypy3' ]
44+
python-version: [ '2.x', '3.x', 'pypy-2.7', 'pypy-3.6', 'pypy-3.7' ]
4445
name: Python ${{ matrix.python-version }} sample
4546
steps:
4647
- uses: actions/checkout@v2
@@ -60,7 +61,7 @@ jobs:
6061
strategy:
6162
matrix:
6263
os: [ubuntu-latest, macos-latest, windows-latest]
63-
python-version: [2.7, 3.6, 3.7, 3.8, pypy2, pypy3]
64+
python-version: [2.7, 3.6, 3.7, 3.8, pypy-2.7, pypy-3.6]
6465
exclude:
6566
- os: macos-latest
6667
python-version: 3.8
@@ -91,7 +92,6 @@ jobs:
9192
with:
9293
python-version: ${{ matrix.python-version }}
9394
- run: python my_script.py
94-
9595
```
9696
9797
Download and set up an accurate pre-release version of Python:
@@ -114,6 +114,27 @@ steps:
114114
- run: python my_script.py
115115
```
116116
117+
Download and set up PyPy:
118+
119+
```yaml
120+
jobs:
121+
build:
122+
runs-on: ubuntu-latest
123+
strategy:
124+
matrix:
125+
python-version:
126+
- pypy-3.6 # the latest available version of PyPy that supports Python 3.6
127+
- pypy-3.7 # the latest available version of PyPy that supports Python 3.7
128+
- pypy-3.7-v7.3.3 # Python 3.7 and PyPy 7.3.3
129+
steps:
130+
- uses: actions/checkout@v2
131+
- uses: actions/setup-python@v2
132+
with:
133+
python-version: ${{ matrix.python-version }}
134+
- run: python my_script.py
135+
```
136+
More details on PyPy syntax and examples of using preview / nightly versions of PyPy can be found in the [Available versions of PyPy](#available-versions-of-pypy) section.
137+
117138
# Getting started with Python + Actions
118139
119140
Check out our detailed guide on using [Python with GitHub Actions](https://help.github.com/en/actions/automating-your-workflow-with-github-actions/using-python-with-github-actions).
@@ -129,7 +150,21 @@ Check out our detailed guide on using [Python with GitHub Actions](https://help.
129150
- If the exact patch version doesn't matter to you, specifying just the major and minor version will get you the latest preinstalled patch version. In the previous example, the version spec `3.8` will use the `3.8.2` Python version found in the cache.
130151
- Downloadable Python versions from GitHub Releases ([actions/python-versions](https://github.com/actions/python-versions/releases)).
131152
- All available versions are listed in the [version-manifest.json](https://github.com/actions/python-versions/blob/main/versions-manifest.json) file.
132-
- If there is a specific version of Python that is not available, you can open an issue here.
153+
- If there is a specific version of Python that is not available, you can open an issue here
154+
155+
# Available versions of PyPy
156+
157+
`setup-python` is able to configure PyPy from two sources:
158+
159+
- Preinstalled versions of PyPy in the tools cache on GitHub-hosted runners
160+
- For detailed information regarding the available versions of PyPy that are installed see [Supported software](https://docs.github.com/en/actions/reference/specifications-for-github-hosted-runners#supported-software).
161+
- For the latest PyPy release, all versions of Python are cached.
162+
- Cache is updated with a 1-2 week delay. If you specify the PyPy version as `pypy-3.6`, the cached version will be used although a newer version is available. If you need to start using the recently released version right after release, you should specify the exact PyPy version using `pypy-3.6-v7.3.3`.
163+
164+
- Downloadable PyPy versions from the [official PyPy site](https://downloads.python.org/pypy/).
165+
- All available versions that we can download are listed in [versions.json](https://downloads.python.org/pypy/versions.json) file.
166+
- PyPy < 7.3.3 are not available to install on-flight.
167+
- If some versions are not available, you can open an issue in https://foss.heptapod.net/pypy/pypy/
133168

134169
# Hosted Tool Cache
135170

@@ -155,6 +190,20 @@ You should specify only a major and minor version if you are okay with the most
155190
- There will be a single patch version already installed on each runner for every minor version of Python that is supported.
156191
- The patch version that will be preinstalled, will generally be the latest and every time there is a new patch released, the older version that is preinstalled will be replaced.
157192
- Using the most recent patch version will result in a very quick setup since no downloads will be required since a locally installed version Python on the runner will be used.
193+
194+
# Specifying a PyPy version
195+
The version of PyPy should be specified in the format `pypy-<python_version>[-v<pypy_version>]`.
196+
The `<pypy_version>` parameter is optional and can be skipped. The latest version will be used in this case.
197+
198+
```
199+
pypy-3.6 # the latest available version of PyPy that supports Python 3.6
200+
pypy-3.7 # the latest available version of PyPy that supports Python 3.7
201+
pypy-2.7 # the latest available version of PyPy that supports Python 2.7
202+
pypy-3.7-v7.3.3 # Python 3.7 and PyPy 7.3.3
203+
pypy-3.7-v7.x # Python 3.7 and the latest available PyPy 7.x
204+
pypy-3.7-v7.3.3rc1 # Python 3.7 and preview version of PyPy
205+
pypy-3.7-nightly # Python 3.7 and nightly PyPy
206+
```
158207
159208
# Using `setup-python` with a self hosted runner
160209

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.