Skip to content

Python-version output for PyPy isn't unique across different versions #1109

Description

@cdce8p

Description:
At the moment the python-version output for PyPy only includes the PyPy release version. In our workflow we use the python-version output to calculate a custom cache key. This breaks if the output for different minor version is the same. PyPy itself uses a combination of python version and internal version to identify each release.

PyPy file name 1python-version outputexpected output
pypy3.10-v7.3.19-...pypy7.3.19pypy3.10.16-7.3.19
pypy3.11-v7.3.19-...pypy7.3.19pypy3.11.11-7.3.19

core.setOutput('python-version','pypy'+resolvedPyPyVersion);

It would be great if the output could be adjusted to include the python version as well. For it's own caching key, the action already uses a combine version identifier.

pythonVersion=`${installed.resolvedPyPyVersion}-${installed.resolvedPythonVersion}`;

--
AFAICT this also affects graalpy. In that case it isn't an issue though as a particular release only supports one minor python version.

Expected behavior:
The python-version output for PyPy contains both the fully resolved python version as well as the resolved PyPy version. E.g.

`pypy${resolvedPythonVersion}-${resolvedPyPyVersion}`

Actual behavior:

'pypy'+resolvedPyPyVersion

Action version:
v5.6.0

Platform:

  • Ubuntu
  • macOS
  • Windows

Runner type:

  • Hosted
  • Self-hosted

Tools version:
PyPy

Repro steps:

tests:
name: "Test ${{ matrix.python-version }}"strategy:
matrix:
python-version: ["3.10", "3.11", "3.12", "pypy-3.10", "pypy-3.11"]runs-on: ubuntu-lateststeps:
- name: Check out code from GitHubuses: actions/checkout@v4.2.2
- name: Set up Python ${{ matrix.python-version }}id: pythonuses: actions/setup-python@v5.6.0with:
python-version: ${{ matrix.python-version }}check-latest: true
- run: echo "${{ steps.python.outputs.python-version }}"
- name: Restore Python venvid: cache-venvuses: actions/cache@v4.2.3with:
path: venvkey: >- ${{ runner.os }}-${{ runner.arch }}-${{ steps.python.outputs.python-version }}-${{ hashFiles('pyproject.toml', 'requirements_test.txt') }} - name: Create Python venvif: steps.cache-venv.outputs.cache-hit != 'true'run: | python -m venv venv . venv/bin/activate pip install -r requirements_test.txt pip install . - name: Run pytestrun: | . venv/bin/activate pip install . --no-deps pytest tests/

Footnotes

  1. https://downloads.python.org/pypy/versions.json

Metadata

Metadata

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions