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 1 python-version output expected output
pypy3.10-v7.3.19-... pypy7.3.19 pypy3.10.16-7.3.19
pypy3.11-v7.3.19-... pypy7.3.19 pypy3.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-latest
    steps:
      - name: Check out code from GitHub
        uses: actions/checkout@v4.2.2
      - name: Set up Python ${{ matrix.python-version }}
        id: python
        uses: actions/setup-python@v5.6.0
        with:
          python-version: ${{ matrix.python-version }}
          check-latest: true
      - run: echo "${{ steps.python.outputs.python-version }}"
      - name: Restore Python venv
        id: cache-venv
        uses: actions/cache@v4.2.3
        with:
          path: venv
          key: >-
            ${{ runner.os }}-${{ runner.arch }}-${{ steps.python.outputs.python-version
            }}-${{ hashFiles('pyproject.toml', 'requirements_test.txt') }}
      - name: Create Python venv
        if: 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 pytest
        run: |
          . venv/bin/activate
          pip install . --no-deps
          pytest tests/

Footnotes

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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