mirror of
				https://gitea.com/actions/setup-python.git
				synced 2025-10-31 19:58:55 +08:00 
			
		
		
		
	Adding support for more PyPy versions and installing them on-flight (#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>
This commit is contained in:
		
							
								
								
									
										57
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										57
									
								
								README.md
									
									
									
									
									
								
							| @@ -17,6 +17,7 @@ This action sets up a Python environment for use in actions by: | ||||
|   - Allows for pinning to a specific patch version of Python without the worry of it ever being removed or changed. | ||||
| - Automatic setup and download of Python packages if using a self-hosted runner. | ||||
| - Support for pre-release versions of Python. | ||||
| - Support for installing any version of PyPy on-flight | ||||
|  | ||||
| # Usage | ||||
|  | ||||
| @@ -40,7 +41,7 @@ jobs: | ||||
|     runs-on: ubuntu-latest | ||||
|     strategy: | ||||
|       matrix: | ||||
|         python-version: [ '2.x', '3.x', 'pypy2', 'pypy3' ] | ||||
|         python-version: [ '2.x', '3.x', 'pypy-2.7', 'pypy-3.6', 'pypy-3.7' ] | ||||
|     name: Python ${{ matrix.python-version }} sample | ||||
|     steps: | ||||
|       - uses: actions/checkout@v2 | ||||
| @@ -60,7 +61,7 @@ jobs: | ||||
|     strategy: | ||||
|       matrix: | ||||
|         os: [ubuntu-latest, macos-latest, windows-latest] | ||||
|         python-version: [2.7, 3.6, 3.7, 3.8, pypy2, pypy3] | ||||
|         python-version: [2.7, 3.6, 3.7, 3.8, pypy-2.7, pypy-3.6] | ||||
|         exclude: | ||||
|           - os: macos-latest | ||||
|             python-version: 3.8 | ||||
| @@ -91,7 +92,6 @@ jobs: | ||||
|       with: | ||||
|         python-version: ${{ matrix.python-version }} | ||||
|     - run: python my_script.py | ||||
|  | ||||
| ``` | ||||
|  | ||||
| Download and set up an accurate pre-release version of Python: | ||||
| @@ -114,6 +114,27 @@ steps: | ||||
| - run: python my_script.py | ||||
| ``` | ||||
|  | ||||
| Download and set up PyPy:   | ||||
|  | ||||
| ```yaml | ||||
| jobs: | ||||
|   build: | ||||
|     runs-on: ubuntu-latest | ||||
|     strategy: | ||||
|       matrix: | ||||
|         python-version: | ||||
|         - pypy-3.6 # the latest available version of PyPy that supports Python 3.6 | ||||
|         - pypy-3.7 # the latest available version of PyPy that supports Python 3.7 | ||||
|         - pypy-3.7-v7.3.3 # Python 3.7 and PyPy 7.3.3 | ||||
|     steps: | ||||
|     - uses: actions/checkout@v2 | ||||
|     - uses: actions/setup-python@v2 | ||||
|       with: | ||||
|         python-version: ${{ matrix.python-version }} | ||||
|     - run: python my_script.py | ||||
| ``` | ||||
| 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. | ||||
|  | ||||
| # Getting started with Python + Actions | ||||
|  | ||||
| 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. | ||||
|     - 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. | ||||
| - Downloadable Python versions from GitHub Releases ([actions/python-versions](https://github.com/actions/python-versions/releases)). | ||||
|     - All available versions are listed in the [version-manifest.json](https://github.com/actions/python-versions/blob/main/versions-manifest.json) file. | ||||
|     - If there is a specific version of Python that is not available, you can open an issue here. | ||||
|     - If there is a specific version of Python that is not available, you can open an issue here | ||||
|      | ||||
|  # Available versions of PyPy | ||||
|   | ||||
|  `setup-python` is able to configure PyPy from two sources: | ||||
|   | ||||
| - Preinstalled versions of PyPy in the tools cache on GitHub-hosted runners | ||||
|   - 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). | ||||
|   - For the latest PyPy release, all versions of Python are cached. | ||||
|   - 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`. | ||||
|  | ||||
| - Downloadable PyPy versions from the [official PyPy site](https://downloads.python.org/pypy/). | ||||
|   - All available versions that we can download are listed in [versions.json](https://downloads.python.org/pypy/versions.json) file. | ||||
|   - PyPy < 7.3.3 are not available to install on-flight. | ||||
|   - If some versions are not available, you can open an issue in https://foss.heptapod.net/pypy/pypy/ | ||||
|  | ||||
| # Hosted Tool Cache | ||||
|  | ||||
| @@ -155,6 +190,20 @@ You should specify only a major and minor version if you are okay with the most | ||||
|   - There will be a single patch version already installed on each runner for every minor version of Python that is supported. | ||||
|   - 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. | ||||
|   - 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. | ||||
|    | ||||
| # Specifying a PyPy version | ||||
| The version of PyPy should be specified in the format `pypy-<python_version>[-v<pypy_version>]`.   | ||||
| The `<pypy_version>` parameter is optional and can be skipped. The latest version will be used in this case. | ||||
|  | ||||
| ``` | ||||
| pypy-3.6 # the latest available version of PyPy that supports Python 3.6 | ||||
| pypy-3.7 # the latest available version of PyPy that supports Python 3.7 | ||||
| pypy-2.7 # the latest available version of PyPy that supports Python 2.7 | ||||
| pypy-3.7-v7.3.3 # Python 3.7 and PyPy 7.3.3 | ||||
| pypy-3.7-v7.x # Python 3.7 and the latest available PyPy 7.x | ||||
| pypy-3.7-v7.3.3rc1 # Python 3.7 and preview version of PyPy | ||||
| pypy-3.7-nightly # Python 3.7 and nightly PyPy | ||||
| ``` | ||||
|  | ||||
| # Using `setup-python` with a self hosted runner | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Dmitry Shibanov
					Dmitry Shibanov