Skip to content

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

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
4 of 5 tasks
cdce8p opened this issue May 17, 2025 · 1 comment · May be fixed by #1110
Open
4 of 5 tasks

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

cdce8p opened this issue May 17, 2025 · 1 comment · May be fixed by #1110
Assignees
Labels
bug Something isn't working

Comments

@cdce8p
Copy link

cdce8p commented May 17, 2025

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.11-v7.3.19-... pypy7.3.19 pypy3.10.16-7.3.19
pypy3.10-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

@priyagupta108
Copy link
Contributor

Hello @cdce8p 👋,
Thank you for your report. We'll investigate the issue and get back to you with the details!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants