Compare commits

...

33 Commits
v5.1.1 ... main

Author SHA1 Message Date
aparnajyothi-y
e348410e00
Remove Ubuntu 20.04 from workflows due to deprecation from 2025-04-15 (#1065)
Some checks failed
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-22.04, pypy3.11-v7.3.19) (push) Waiting to run
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-22.04, pypy3.9) (push) Waiting to run
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-latest, pypy-2.7) (push) Waiting to run
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-latest, pypy-2.7-v7.3.12rc1) (push) Waiting to run
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-latest, pypy-2.7-v7.3.17) (push) Waiting to run
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-latest, pypy-3.10) (push) Waiting to run
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-latest, pypy-3.10-nightly) (push) Waiting to run
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-latest, pypy-3.10-v7.3.16) (push) Waiting to run
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-latest, pypy-3.10-v7.3.17) (push) Waiting to run
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-latest, pypy-3.10-v7.3.x) (push) Waiting to run
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-latest, pypy-3.10-v7.x) (push) Waiting to run
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-latest, pypy3.10-v7.3.17) (push) Waiting to run
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-latest, pypy3.11-v7.3.19) (push) Waiting to run
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-latest, pypy3.9) (push) Waiting to run
Validate PyPy e2e / Check non-eol ${{ matrix.pypy }} on ${{ matrix.os }} (ubuntu-22.04, pypy-2.7) (push) Waiting to run
Validate PyPy e2e / Check non-eol ${{ matrix.pypy }} on ${{ matrix.os }} (ubuntu-22.04, pypy-3.10) (push) Waiting to run
Validate PyPy e2e / Check non-eol ${{ matrix.pypy }} on ${{ matrix.os }} (ubuntu-22.04, pypy-3.11) (push) Waiting to run
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (ubuntu-22.04, pypy2.7) (push) Waiting to run
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (ubuntu-22.04, pypy3.10-nightly) (push) Waiting to run
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (ubuntu-22.04, pypy3.11) (push) Waiting to run
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (ubuntu-22.04, pypy3.9) (push) Waiting to run
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (ubuntu-latest, pypy2.7) (push) Waiting to run
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (ubuntu-latest, pypy3.10-nightly) (push) Waiting to run
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (ubuntu-latest, pypy3.11) (push) Waiting to run
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (ubuntu-latest, pypy3.9) (push) Waiting to run
Validate PyPy e2e / check-latest (ubuntu-22.04) (push) Waiting to run
Validate PyPy e2e / check-latest (ubuntu-latest) (push) Waiting to run
Validate PyPy e2e / setup-pypy-multiple-versions (ubuntu-22.04) (push) Waiting to run
Validate PyPy e2e / setup-pypy-multiple-versions (ubuntu-latest) (push) Waiting to run
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-22.04, pypy-2.7-v7.3.12rc1) (push) Failing after 3h29m18s
* remove ubuntu-20.04

* check failure fix

* remove spaces

* npm run format-check
2025-04-11 13:36:23 -05:00
priya-kinthali
8d9ed9ac5c
Add e2e Testing for free threaded and Bump @action/cache from 4.0.0 to 4.0.3 (#1056)
Some checks failed
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-latest, pypy-3.10) (push) Failing after 1m32s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-latest, pypy-3.10-nightly) (push) Failing after 1m32s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-latest, pypy-3.10-v7.3.16) (push) Failing after 31s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-latest, pypy-3.10-v7.3.17) (push) Failing after 32s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-latest, pypy-3.10-v7.3.x) (push) Failing after 31s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-latest, pypy-3.10-v7.x) (push) Failing after 32s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-latest, pypy3.10-v7.3.17) (push) Failing after 31s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-latest, pypy3.11-v7.3.19) (push) Failing after 31s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-latest, pypy3.9) (push) Failing after 32s
Validate PyPy e2e / Check non-eol ${{ matrix.pypy }} on ${{ matrix.os }} (ubuntu-22.04, pypy-2.7) (push) Failing after 31s
Validate PyPy e2e / Check non-eol ${{ matrix.pypy }} on ${{ matrix.os }} (ubuntu-22.04, pypy-3.10) (push) Failing after 27s
Validate PyPy e2e / Check non-eol ${{ matrix.pypy }} on ${{ matrix.os }} (ubuntu-22.04, pypy-3.11) (push) Failing after 31s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (ubuntu-20.04, pypy2.7) (push) Failing after 31s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (ubuntu-20.04, pypy3.10-nightly) (push) Failing after 32s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (ubuntu-20.04, pypy3.11) (push) Failing after 31s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (ubuntu-20.04, pypy3.9) (push) Failing after 31s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (ubuntu-22.04, pypy2.7) (push) Failing after 31s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (ubuntu-22.04, pypy3.10-nightly) (push) Failing after 31s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (ubuntu-22.04, pypy3.11) (push) Failing after 31s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (ubuntu-22.04, pypy3.9) (push) Failing after 32s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (ubuntu-latest, pypy2.7) (push) Failing after 31s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (ubuntu-latest, pypy3.10-nightly) (push) Failing after 32s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (ubuntu-latest, pypy3.11) (push) Successful in 6s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (ubuntu-latest, pypy3.9) (push) Successful in 6s
Validate PyPy e2e / check-latest (ubuntu-20.04) (push) Successful in 8s
Validate PyPy e2e / check-latest (ubuntu-22.04) (push) Successful in 8s
Validate PyPy e2e / check-latest (ubuntu-latest) (push) Successful in 23s
Validate PyPy e2e / setup-pypy-multiple-versions (ubuntu-20.04) (push) Successful in 40s
Validate PyPy e2e / setup-pypy-multiple-versions (ubuntu-22.04) (push) Successful in 9s
Validate PyPy e2e / setup-pypy-multiple-versions (ubuntu-latest) (push) Successful in 59s
* include freethread e2e testing and upgrade cache from 4.0.0 to 4.0.2

* include verify gil step and validated python version

* Rename files

* include ubuntu-arm runners for testing
2025-03-24 11:19:17 -05:00
mahabaleshwars
19e4675e06
Add support for .tool-versions file in setup-python (#1043)
Some checks failed
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-20.04, pypy-2.7-v7.3.17) (push) Failing after 1m31s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-20.04, pypy-3.10) (push) Successful in 8s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-20.04, pypy-3.10-nightly) (push) Successful in 4m13s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-20.04, pypy-3.10-v7.3.16) (push) Successful in 2m8s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-20.04, pypy-3.10-v7.3.17) (push) Successful in 4m14s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-20.04, pypy-3.10-v7.3.x) (push) Successful in 8s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-20.04, pypy-3.10-v7.x) (push) Successful in 7s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-20.04, pypy3.10-v7.3.17) (push) Successful in 31m54s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-20.04, pypy3.9) (push) Successful in 7s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-latest, pypy-2.7) (push) Successful in 8s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-latest, pypy-2.7-v7.3.12rc1) (push) Successful in 1h10m26s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-latest, pypy-2.7-v7.3.17) (push) Successful in 4m57s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-latest, pypy-3.10) (push) Successful in 8s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-latest, pypy-3.10-nightly) (push) Successful in 42s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-latest, pypy-3.10-v7.3.16) (push) Successful in 10m29s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-latest, pypy-3.10-v7.3.17) (push) Successful in 48m55s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-latest, pypy-3.10-v7.3.x) (push) Failing after 6m42s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-latest, pypy-3.10-v7.x) (push) Failing after 1m31s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-latest, pypy3.10-v7.3.17) (push) Failing after 1m32s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-latest, pypy3.9) (push) Failing after 1m32s
Validate PyPy e2e / Check non-eol ${{ matrix.pypy }} on ${{ matrix.os }} (ubuntu-22.04, pypy-2.7) (push) Failing after 26s
Validate PyPy e2e / Check non-eol ${{ matrix.pypy }} on ${{ matrix.os }} (ubuntu-22.04, pypy-3.10) (push) Successful in 8s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (ubuntu-20.04, pypy2.7) (push) Successful in 5s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (ubuntu-20.04, pypy3.10-nightly) (push) Failing after 14m7s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (ubuntu-20.04, pypy3.9) (push) Failing after 1m31s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (ubuntu-latest, pypy2.7) (push) Failing after 1m32s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (ubuntu-latest, pypy3.10-nightly) (push) Successful in 3m23s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (ubuntu-latest, pypy3.9) (push) Failing after 1m32s
Validate PyPy e2e / check-latest (ubuntu-latest) (push) Failing after 31s
Validate PyPy e2e / setup-pypy-multiple-versions (ubuntu-latest) (push) Failing after 31s
* add support for .tool-versions file

* update regex

* optimize code

* update test-python.yml for .tool-versions

* fix format-check errors

* fix formatting in test-python.yml

* Fix test-python.yml error

* workflow update with latest versions

* update test cases

* fix lint issue
2025-03-13 10:21:27 -05:00
dependabot[bot]
6fd11e170a
Bump @actions/glob from 0.4.0 to 0.5.0 (#1015)
Some checks failed
Validate PyPy e2e / Check non-eol ${{ matrix.pypy }} on ${{ matrix.os }} (ubuntu-24.04-arm, pypy-3.10) (push) Has been cancelled
Validate PyPy e2e / Check non-eol ${{ matrix.pypy }} on ${{ matrix.os }} (windows-2019, pypy-2.7) (push) Has been cancelled
Validate PyPy e2e / Check non-eol ${{ matrix.pypy }} on ${{ matrix.os }} (windows-2019, pypy-3.10) (push) Has been cancelled
Validate PyPy e2e / Check non-eol ${{ matrix.pypy }} on ${{ matrix.os }} (windows-2022, pypy-2.7) (push) Has been cancelled
Validate PyPy e2e / Check non-eol ${{ matrix.pypy }} on ${{ matrix.os }} (windows-2022, pypy-3.10) (push) Has been cancelled
Validate PyPy e2e / Check non-eol ${{ matrix.pypy }} on ${{ matrix.os }} (windows-2025, pypy-2.7) (push) Has been cancelled
Validate PyPy e2e / Check non-eol ${{ matrix.pypy }} on ${{ matrix.os }} (windows-2025, pypy-3.10) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (macos-13, pypy2.7) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (macos-13, pypy3.10-nightly) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (macos-13, pypy3.9) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (macos-latest, pypy2.7) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (macos-latest, pypy3.10-nightly) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (macos-latest, pypy3.9) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (ubuntu-20.04, pypy2.7) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (ubuntu-20.04, pypy3.10-nightly) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (ubuntu-20.04, pypy3.9) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (ubuntu-latest, pypy2.7) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (ubuntu-latest, pypy3.10-nightly) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (ubuntu-latest, pypy3.9) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (windows-latest, pypy2.7) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (windows-latest, pypy3.10-nightly) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (windows-latest, pypy3.9) (push) Has been cancelled
Validate PyPy e2e / check-latest (macos-13) (push) Has been cancelled
Validate PyPy e2e / check-latest (macos-latest) (push) Has been cancelled
Validate PyPy e2e / check-latest (ubuntu-latest) (push) Has been cancelled
Validate PyPy e2e / check-latest (windows-latest) (push) Has been cancelled
Validate PyPy e2e / setup-pypy-multiple-versions (macos-13) (push) Has been cancelled
Validate PyPy e2e / setup-pypy-multiple-versions (macos-latest) (push) Has been cancelled
Validate PyPy e2e / setup-pypy-multiple-versions (ubuntu-latest) (push) Has been cancelled
Validate PyPy e2e / setup-pypy-multiple-versions (windows-latest) (push) Has been cancelled
* Bump @actions/glob from 0.4.0 to 0.5.0

Bumps [@actions/glob](https://github.com/actions/toolkit/tree/HEAD/packages/glob) from 0.4.0 to 0.5.0.
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/glob/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/glob)

---
updated-dependencies:
- dependency-name: "@actions/glob"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* fix for check failures

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Aparna Jyothi <aparnajyothi-y@github.com>
2025-03-12 12:00:26 -05:00
Sam Gross
9e62be81b2
Support free threaded Python versions like '3.13t' (#973)
Some checks failed
Validate PyPy e2e / Check non-eol ${{ matrix.pypy }} on ${{ matrix.os }} (windows-2019, pypy-2.7) (push) Has been cancelled
Validate PyPy e2e / Check non-eol ${{ matrix.pypy }} on ${{ matrix.os }} (windows-2019, pypy-3.10) (push) Has been cancelled
Validate PyPy e2e / Check non-eol ${{ matrix.pypy }} on ${{ matrix.os }} (windows-2022, pypy-2.7) (push) Has been cancelled
Validate PyPy e2e / Check non-eol ${{ matrix.pypy }} on ${{ matrix.os }} (windows-2022, pypy-3.10) (push) Has been cancelled
Validate PyPy e2e / Check non-eol ${{ matrix.pypy }} on ${{ matrix.os }} (windows-2025, pypy-2.7) (push) Has been cancelled
Validate PyPy e2e / Check non-eol ${{ matrix.pypy }} on ${{ matrix.os }} (windows-2025, pypy-3.10) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (macos-13, pypy2.7) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (macos-13, pypy3.10-nightly) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (macos-13, pypy3.9) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (macos-latest, pypy2.7) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (macos-latest, pypy3.10-nightly) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (macos-latest, pypy3.9) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (ubuntu-20.04, pypy2.7) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (ubuntu-20.04, pypy3.10-nightly) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (ubuntu-20.04, pypy3.9) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (ubuntu-latest, pypy2.7) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (ubuntu-latest, pypy3.10-nightly) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (ubuntu-latest, pypy3.9) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (windows-latest, pypy2.7) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (windows-latest, pypy3.10-nightly) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (windows-latest, pypy3.9) (push) Has been cancelled
Validate PyPy e2e / check-latest (macos-13) (push) Has been cancelled
Validate PyPy e2e / check-latest (macos-latest) (push) Has been cancelled
Validate PyPy e2e / check-latest (ubuntu-latest) (push) Has been cancelled
Validate PyPy e2e / check-latest (windows-latest) (push) Has been cancelled
Validate PyPy e2e / setup-pypy-multiple-versions (macos-13) (push) Has been cancelled
Validate PyPy e2e / setup-pypy-multiple-versions (macos-latest) (push) Has been cancelled
Validate PyPy e2e / setup-pypy-multiple-versions (ubuntu-latest) (push) Has been cancelled
Validate PyPy e2e / setup-pypy-multiple-versions (windows-latest) (push) Has been cancelled
Update configuration files / Update configuration files (push) Has been cancelled
* Support free threaded Python versions like '3.13t'

Python wheels, pyenv, and a number of other tools use 't' in the Python
version number to identify free threaded builds. For example, '3.13t',
'3.14.0a1', '3.14t-dev'.

This PR supports that syntax in `actions/setup-python`, strips the "t",
and adds "-freethreading" to the architecture to select the correct
Python version.

See #771

* Add free threading to advanced usage documentation

* Fix desugaring of `3.13.1t` and add test case.

* Add freethreaded input and fix handling of prerelease versions

* Fix lint

* Add 't' suffix to python-version output

* Use distinct cache key for free threaded Python

* Remove support for syntax like '3.14.0a1'

* Clarify use of 't' suffix

* Improve error message when trying to use free threaded Python versions before 3.13
2025-03-04 16:49:43 -06:00
dependabot[bot]
6ca8e8598f
Bump @vercel/ncc from 0.38.1 to 0.38.3 (#1016)
Some checks failed
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-20.04, pypy-2.7-v7.3.17) (push) Successful in 2h45m25s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-20.04, pypy-3.10) (push) Successful in 8s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-20.04, pypy-3.10-nightly) (push) Successful in 2m18s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-20.04, pypy-3.10-v7.3.16) (push) Successful in 1h17m47s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-20.04, pypy-3.10-v7.3.17) (push) Failing after 12s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-20.04, pypy-3.10-v7.3.x) (push) Failing after 31s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-20.04, pypy-3.10-v7.x) (push) Failing after 32s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-20.04, pypy3.10-v7.3.17) (push) Failing after 31s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-20.04, pypy3.9) (push) Failing after 31s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-latest, pypy-2.7) (push) Failing after 31s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-latest, pypy-2.7-v7.3.12rc1) (push) Failing after 31s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-latest, pypy-2.7-v7.3.17) (push) Failing after 32s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-latest, pypy-3.10) (push) Failing after 31s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-latest, pypy-3.10-nightly) (push) Failing after 32s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-latest, pypy-3.10-v7.3.16) (push) Failing after 31s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-latest, pypy-3.10-v7.3.17) (push) Failing after 31s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-latest, pypy-3.10-v7.3.x) (push) Failing after 12s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-latest, pypy-3.10-v7.x) (push) Failing after 11s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-latest, pypy3.10-v7.3.17) (push) Failing after 26s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-latest, pypy3.9) (push) Failing after 11s
Validate PyPy e2e / Check non-eol ${{ matrix.pypy }} on ${{ matrix.os }} (ubuntu-22.04, pypy-2.7) (push) Failing after 32s
Validate PyPy e2e / Check non-eol ${{ matrix.pypy }} on ${{ matrix.os }} (ubuntu-22.04, pypy-3.10) (push) Failing after 31s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (ubuntu-20.04, pypy2.7) (push) Failing after 32s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (ubuntu-20.04, pypy3.10-nightly) (push) Failing after 31s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (ubuntu-20.04, pypy3.9) (push) Failing after 31s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (ubuntu-latest, pypy2.7) (push) Failing after 31s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (ubuntu-latest, pypy3.10-nightly) (push) Successful in 2m51s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (ubuntu-latest, pypy3.9) (push) Failing after 12s
Validate PyPy e2e / check-latest (ubuntu-latest) (push) Failing after 6m33s
Validate PyPy e2e / setup-pypy-multiple-versions (ubuntu-latest) (push) Successful in 35m5s
* Bump @vercel/ncc from 0.38.1 to 0.38.3

Bumps [@vercel/ncc](https://github.com/vercel/ncc) from 0.38.1 to 0.38.3.
- [Release notes](https://github.com/vercel/ncc/releases)
- [Commits](https://github.com/vercel/ncc/compare/0.38.1...0.38.3)

---
updated-dependencies:
- dependency-name: "@vercel/ncc"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* check failure fix

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Aparna Jyothi <aparnajyothi-y@github.com>
2025-02-18 15:23:52 -06:00
Matthieu Darbois
8039c45ed9
fix: install PyPy on Linux ARM64 (#1011)
Some checks failed
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-20.04, pypy-2.7-v7.3.17) (push) Successful in 1h8m1s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-20.04, pypy-3.10) (push) Successful in 7s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-20.04, pypy-3.10-nightly) (push) Successful in 21m27s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-20.04, pypy-3.10-v7.3.16) (push) Successful in 46m43s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-20.04, pypy-3.10-v7.3.17) (push) Successful in 1h4m32s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-20.04, pypy-3.10-v7.3.x) (push) Successful in 8s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-20.04, pypy-3.10-v7.x) (push) Successful in 7s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-20.04, pypy3.10-v7.3.17) (push) Successful in 7s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-20.04, pypy3.9) (push) Successful in 7s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-latest, pypy-2.7) (push) Successful in 7s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-latest, pypy-2.7-v7.3.12rc1) (push) Failing after 3h17m30s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-latest, pypy-2.7-v7.3.17) (push) Successful in 9s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-latest, pypy-3.10) (push) Successful in 7s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-latest, pypy-3.10-nightly) (push) Successful in 5m29s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-latest, pypy-3.10-v7.3.16) (push) Failing after 1h8m39s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-latest, pypy-3.10-v7.3.17) (push) Successful in 53m59s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-latest, pypy-3.10-v7.3.x) (push) Successful in 9s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-latest, pypy-3.10-v7.x) (push) Successful in 10s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-latest, pypy3.10-v7.3.17) (push) Successful in 9s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-latest, pypy3.9) (push) Successful in 9s
Validate PyPy e2e / Check non-eol ${{ matrix.pypy }} on ${{ matrix.os }} (ubuntu-22.04, pypy-2.7) (push) Successful in 10s
Validate PyPy e2e / Check non-eol ${{ matrix.pypy }} on ${{ matrix.os }} (ubuntu-22.04, pypy-3.10) (push) Successful in 9s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (ubuntu-20.04, pypy2.7) (push) Successful in 7s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (ubuntu-20.04, pypy3.10-nightly) (push) Successful in 27m46s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (ubuntu-20.04, pypy3.9) (push) Successful in 6s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (ubuntu-latest, pypy2.7) (push) Successful in 6s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (ubuntu-latest, pypy3.10-nightly) (push) Successful in 54m2s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (ubuntu-latest, pypy3.9) (push) Successful in 6s
Validate PyPy e2e / check-latest (ubuntu-latest) (push) Failing after 16m5s
Validate PyPy e2e / setup-pypy-multiple-versions (ubuntu-latest) (push) Failing after 6m30s
* ci: check non-eol versions of PyPy are available on all runners

* fix: install PyPy on Linux ARM64

* ci: remove eol ubuntu-20.04
2025-02-05 13:58:38 -06:00
Stephen Karl Larroque
42375524e2
Improve Advanced Usage examples (#645)
* docs: fix outputs python-version example and description

Description was lacking words, example was misleading (id was set to cp310 which clearly was a reference to CPython 3.10, but the id is referring to the setup-python action!

* docs: copy-editing in advanced-usage.md

Signed-off-by: Stephen L. <lrq3000@gmail.com>

* docs: add example if statement in advanced-usage.md

Signed-off-by: Stephen L. <lrq3000@gmail.com>

* docs: implement changes suggested by @mahabaleshwars (deprecate pypy2.7, 3.7, 3.8, tweak example, remove wildcard *)

Signed-off-by: Stephen L. <LRQ3000@gmail.com>

---------

Signed-off-by: Stephen L. <lrq3000@gmail.com>
Signed-off-by: Stephen L. <LRQ3000@gmail.com>
2025-01-27 13:04:33 -06:00
dependabot[bot]
709bfa58ba
Bump requests from 2.24.0 to 2.32.2 in /__tests__/data (#1019)
Bumps [requests](https://github.com/psf/requests) from 2.24.0 to 2.32.2.
- [Release notes](https://github.com/psf/requests/releases)
- [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md)
- [Commits](https://github.com/psf/requests/compare/v2.24.0...v2.32.2)

---
updated-dependencies:
- dependency-name: requests
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-27 13:01:28 -06:00
dependabot[bot]
ceb20b242d
Bump @actions/http-client from 2.2.1 to 2.2.3 (#1020)
* Bump @actions/http-client from 2.2.1 to 2.2.3

Bumps [@actions/http-client](https://github.com/actions/toolkit/tree/HEAD/packages/http-client) from 2.2.1 to 2.2.3.
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/http-client/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/http-client)

---
updated-dependencies:
- dependency-name: "@actions/http-client"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* fix for licensed and check-dist checks failures

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Aparna Jyothi <aparnajyothi-y@github.com>
2025-01-27 13:00:34 -06:00
dependabot[bot]
0dc2d2cf0c
Bump actions/publish-immutable-action from 0.0.3 to 0.0.4 (#1014)
Bumps [actions/publish-immutable-action](https://github.com/actions/publish-immutable-action) from 0.0.3 to 0.0.4.
- [Release notes](https://github.com/actions/publish-immutable-action/releases)
- [Commits](https://github.com/actions/publish-immutable-action/compare/0.0.3...v0.0.4)

---
updated-dependencies:
- dependency-name: actions/publish-immutable-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-27 12:05:51 -06:00
dependabot[bot]
feb9c6e7c6
Bump urllib3 from 1.25.9 to 1.26.19 in /__tests__/data (#895)
Bumps [urllib3](https://github.com/urllib3/urllib3) from 1.25.9 to 1.26.19.
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/1.26.19/CHANGES.rst)
- [Commits](https://github.com/urllib3/urllib3/compare/1.25.9...1.26.19)

---
updated-dependencies:
- dependency-name: urllib3
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-27 12:04:31 -06:00
dependabot[bot]
d0b4fc497a
Bump undici from 5.28.4 to 5.28.5 (#1012)
Some checks failed
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (windows-latest, pypy-3.10-nightly) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (windows-latest, pypy-3.10-v7.3.16) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (windows-latest, pypy-3.10-v7.3.17) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (windows-latest, pypy-3.10-v7.3.x) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (windows-latest, pypy-3.10-v7.x) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (windows-latest, pypy3.10-v7.3.17) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (windows-latest, pypy3.9) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (macos-13, pypy2.7) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (macos-13, pypy3.10-nightly) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (macos-13, pypy3.9) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (macos-latest, pypy2.7) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (macos-latest, pypy3.10-nightly) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (macos-latest, pypy3.9) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (ubuntu-20.04, pypy2.7) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (ubuntu-20.04, pypy3.10-nightly) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (ubuntu-20.04, pypy3.9) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (ubuntu-latest, pypy2.7) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (ubuntu-latest, pypy3.10-nightly) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (ubuntu-latest, pypy3.9) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (windows-latest, pypy2.7) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (windows-latest, pypy3.10-nightly) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (windows-latest, pypy3.9) (push) Has been cancelled
Validate PyPy e2e / check-latest (macos-13) (push) Has been cancelled
Validate PyPy e2e / check-latest (macos-latest) (push) Has been cancelled
Validate PyPy e2e / check-latest (ubuntu-latest) (push) Has been cancelled
Validate PyPy e2e / check-latest (windows-latest) (push) Has been cancelled
Validate PyPy e2e / setup-pypy-multiple-versions (macos-13) (push) Has been cancelled
Validate PyPy e2e / setup-pypy-multiple-versions (macos-latest) (push) Has been cancelled
Validate PyPy e2e / setup-pypy-multiple-versions (ubuntu-latest) (push) Has been cancelled
Validate PyPy e2e / setup-pypy-multiple-versions (windows-latest) (push) Has been cancelled
* Bump undici from 5.28.4 to 5.28.5

Bumps [undici](https://github.com/nodejs/undici) from 5.28.4 to 5.28.5.
- [Release notes](https://github.com/nodejs/undici/releases)
- [Commits](https://github.com/nodejs/undici/compare/v5.28.4...v5.28.5)

---
updated-dependencies:
- dependency-name: undici
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* fix for chec-dist and license check failures

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Aparna Jyothi <aparnajyothi-y@github.com>
2025-01-22 14:29:59 -06:00
HarithaVattikuti
e3dfaac0fd
Configure Dependabot settings (#1008)
* Create dependabot.yml

* Update e2e-cache.yml
2025-01-22 12:59:38 -06:00
Priya Gupta
b8cf3eb1eb
Use the new cache service: upgrade @actions/cache to ^4.0.0 (#1007)
Some checks failed
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (macos-latest, pypy-3.10-v7.3.x) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (macos-latest, pypy-3.10-v7.x) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (macos-latest, pypy3.10-v7.3.17) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (macos-latest, pypy3.9) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (windows-latest, pypy-2.7) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (windows-latest, pypy-2.7-v7.3.12rc1) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (windows-latest, pypy-2.7-v7.3.17) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (windows-latest, pypy-3.10) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (windows-latest, pypy-3.10-nightly) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (windows-latest, pypy-3.10-v7.3.16) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (windows-latest, pypy-3.10-v7.3.17) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (windows-latest, pypy-3.10-v7.3.x) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (windows-latest, pypy-3.10-v7.x) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (windows-latest, pypy3.10-v7.3.17) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (windows-latest, pypy3.9) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (macos-13, pypy2.7) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (macos-13, pypy3.10-nightly) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (macos-13, pypy3.9) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (macos-latest, pypy2.7) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (macos-latest, pypy3.10-nightly) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (macos-latest, pypy3.9) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (windows-latest, pypy2.7) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (windows-latest, pypy3.10-nightly) (push) Has been cancelled
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (windows-latest, pypy3.9) (push) Has been cancelled
Validate PyPy e2e / check-latest (macos-13) (push) Has been cancelled
Validate PyPy e2e / check-latest (macos-latest) (push) Has been cancelled
Validate PyPy e2e / check-latest (windows-latest) (push) Has been cancelled
Validate PyPy e2e / setup-pypy-multiple-versions (macos-13) (push) Has been cancelled
Validate PyPy e2e / setup-pypy-multiple-versions (macos-latest) (push) Has been cancelled
Validate PyPy e2e / setup-pypy-multiple-versions (windows-latest) (push) Has been cancelled
* Upgrade-actions/cache

* Review licenses & update types

* Fixed poetry install command in e2e-cache.yml

* Updated package-lock.json
2025-01-21 15:57:07 -06:00
Ben Wells
1928ae624d
Update README.md (#1009) 2025-01-16 08:50:08 -06:00
priya-kinthali
3fddbee787
Enhance Workflows: Add Ubuntu-24, Remove Python 3.8 (#985)
Some checks failed
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-20.04, pypy-2.7) (push) Failing after 32s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-20.04, pypy-2.7-v7.3.12rc1) (push) Failing after 31s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-20.04, pypy-2.7-v7.3.17) (push) Failing after 31s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-20.04, pypy-3.10) (push) Failing after 32s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-20.04, pypy-3.10-nightly) (push) Failing after 31s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-20.04, pypy-3.10-v7.3.16) (push) Failing after 32s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-20.04, pypy-3.10-v7.3.17) (push) Failing after 32s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-20.04, pypy-3.10-v7.3.x) (push) Failing after 31s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-20.04, pypy-3.10-v7.x) (push) Failing after 32s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-20.04, pypy3.10-v7.3.17) (push) Failing after 31s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-20.04, pypy3.9) (push) Failing after 31s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-latest, pypy-2.7) (push) Failing after 32s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-latest, pypy-2.7-v7.3.12rc1) (push) Failing after 31s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-latest, pypy-2.7-v7.3.17) (push) Failing after 32s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-latest, pypy-3.10) (push) Failing after 31s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-latest, pypy-3.10-nightly) (push) Failing after 31s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-latest, pypy-3.10-v7.3.16) (push) Failing after 32s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-latest, pypy-3.10-v7.3.17) (push) Failing after 31s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-latest, pypy-3.10-v7.3.x) (push) Failing after 31s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-latest, pypy-3.10-v7.x) (push) Failing after 32s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-latest, pypy3.10-v7.3.17) (push) Failing after 31s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (ubuntu-latest, pypy3.9) (push) Failing after 32s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (ubuntu-20.04, pypy2.7) (push) Failing after 32s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (ubuntu-20.04, pypy3.10-nightly) (push) Failing after 31s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (ubuntu-20.04, pypy3.9) (push) Failing after 31s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (ubuntu-latest, pypy2.7) (push) Failing after 32s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (ubuntu-latest, pypy3.10-nightly) (push) Failing after 31s
Validate PyPy e2e / Setup PyPy ${{ matrix.pypy }} ${{ matrix.os }} (noenv) (ubuntu-latest, pypy3.9) (push) Failing after 32s
Validate PyPy e2e / check-latest (ubuntu-latest) (push) Failing after 31s
Validate PyPy e2e / setup-pypy-multiple-versions (ubuntu-latest) (push) Failing after 31s
* included ubuntu24 testing

* Remove Python 3.8 testing from workflows due to end of life (EOL)
2024-12-19 12:03:44 -06:00
aparnajyothi-y
55aad42e46
Update error message for no dependencies to cache (#968) 2024-11-04 19:27:40 -06:00
priya-kinthali
0b93645e9f
Enhance workflows: Add macOS 13 support, upgrade publish-action, and update documentation for arm64 and latest versions (#965)
* update ci workflows with latest versions and added macos-13

* updated document with latest versions
2024-10-24 08:38:22 -05:00
aparnajyothi-y
9c76e71650
Bump pillow from 7.2 to 10.2.0 in /__tests__/data (#956)
* Update e2e-cache.yml

* Update basic-validation.yml

* Pyinstaller upgrade to 5.13.1

* pyinstaller-update

* Update basic-validation.yml

* Update e2e-cache.yml

* fix-db-alert-164-165-166

* upgrade pillow
2024-10-21 15:39:11 -05:00
John Wesley Walker III
f4c5a1183d
Revise isGhes logic (#963)
* Revise `isGhes` logic

* ran `npm run format`

* add unit test

* ran `npm run format`
2024-10-21 11:42:17 -05:00
Jeff Widman
19dfb7b659
Bump default versions to latest (#905)
People copy/paste these values all the time... might as well start them off on the right foot with a modern default.
2024-10-04 11:28:10 -05:00
Joel Ambass
e9675cc634
Merge pull request #943 from actions/Jcambass-patch-1
Upgrade IA publish
2024-09-26 08:24:10 +02:00
Joel Ambass
3226af69c0
Upgrade IA publish 2024-09-16 17:18:49 +02:00
Joel Ambass
70dcb22d26
Merge pull request #941 from actions/Jcambass-patch-1
Add workflow file for publishing releases to immutable action package
2024-09-10 17:03:13 +02:00
Joel Ambass
65b48c7115
Create publish-immutable-actions.yml
This workflow file publishes new action releases to the immutable action package of the same name as this repo.

This is part of the Immutable Actions project which is not yet fully released to the public. First party actions like this one are part of our initial testing of this feature.
2024-09-10 16:54:46 +02:00
priya-kinthali
29a37be0a3
initial commit (#938) 2024-09-06 11:40:29 -05:00
aparnajyothi-y
f677139bbe
Bump pyinstaller from 3.6 to 5.13.1 in /__tests__/data (#923)
* Update e2e-cache.yml

* Update basic-validation.yml

* Pyinstaller upgrade to 5.13.1

* pyinstaller-update

* Update basic-validation.yml

* Update e2e-cache.yml
2024-08-13 14:03:23 -05:00
gowridurgad
2bd53f9a4d
Documentation update for caching poetry dependencies (#908)
* Create testing.yml

* Update testing.yml

* Fix for parsing version number from TOML 1.0.0 pyproject.toml file

* Delete .github/workflows/testing.yml

* fixed license issue

* updated the Note

* updated doc

* updated the doc

* npm run build

* Mark up corrections

---------

Co-authored-by: gowridurgad <gowridurga@github.com>
Co-authored-by: HarithaVattikuti <73516759+HarithaVattikuti@users.noreply.github.com>
2024-08-08 12:54:56 -05:00
Zxilly
80b49d3ed8
fix: add arch to cache key (#896)
* fix: add arch to cache key

* test: update tests accordingly
2024-08-07 15:12:32 -05:00
Priya Gupta
036a523674
Fix: Add .zip extension to Windows package downloads for Expand-Archive Compatibility (#916)
* Fix: specify filename during Windows package download

* Changed unit test download urls
2024-08-05 12:23:34 -05:00
sciencewhiz
04c1311429
Fix display of emojis in contributors doc (#899) 2024-07-23 09:16:08 -05:00
priya-kinthali
cb68456441
Updated @iarna/toml version to 3.0.0 (#912) 2024-07-22 13:50:49 -05:00
51 changed files with 18278 additions and 5532 deletions

22
.github/dependabot.yml vendored Normal file
View File

@ -0,0 +1,22 @@
# To get started with Dependabot version updates, you'll need to specify which
# package ecosystems to update and where the package manifests are located.
# Please see the documentation for all configuration options:
# https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file
version: 2
updates:
# Enable version updates for npm
- package-ecosystem: 'npm'
# Look for `package.json` and `lock` files in the `root` directory
directory: '/'
# Check the npm registry for updates every day (weekdays)
schedule:
interval: 'weekly'
# Enable version updates for GitHub Actions
- package-ecosystem: 'github-actions'
# Workflow files stored in the default location of `.github/workflows`
# You don't need to specify `/.github/workflows` for `directory`. You can use `directory: "/"`.
directory: '/'
schedule:
interval: 'weekly'

View File

@ -0,0 +1,164 @@
name: e2e-cache freethread
on:
pull_request:
paths-ignore:
- '**.md'
push:
branches:
- main
- releases/*
paths-ignore:
- '**.md'
workflow_dispatch:
permissions:
contents: read
jobs:
python-pip-dependencies-caching:
name: Test pip (Python ${{ matrix.python-version}}, ${{ matrix.os }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
[
ubuntu-latest,
ubuntu-22.04,
ubuntu-24.04-arm,
ubuntu-22.04-arm,
windows-latest,
macos-latest,
macos-13
]
python-version: [3.13.0t, 3.13.1t, 3.13.2t]
steps:
- uses: actions/checkout@v4
- name: Setup Python
uses: ./
with:
python-version: ${{ matrix.python-version }}
cache: 'pip'
- name: Install dependencies
run: pip install numpy pandas requests
python-pipenv-dependencies-caching:
name: Test pipenv (Python ${{ matrix.python-version}}, ${{ matrix.os }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
[
ubuntu-latest,
ubuntu-24.04-arm,
ubuntu-22.04,
ubuntu-22.04-arm,
windows-latest,
macos-latest,
macos-13
]
python-version: [3.13.0t, 3.13.1t, 3.13.2t]
steps:
- uses: actions/checkout@v4
- name: Setup Python
id: cache-pipenv
uses: ./
with:
python-version: ${{ matrix.python-version }}
cache: 'pipenv'
- name: Install pipenv
run: curl https://raw.githubusercontent.com/pypa/pipenv/master/get-pipenv.py | python
- name: Install dependencies
run: pipenv install requests
python-poetry-dependencies-caching:
name: Test poetry (Python ${{ matrix.python-version}}, ${{ matrix.os }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
[
ubuntu-latest,
ubuntu-22.04,
ubuntu-24.04-arm,
ubuntu-22.04-arm,
windows-latest,
macos-latest,
macos-13
]
python-version: [3.13.0, 3.13.1, 3.13.2]
steps:
- uses: actions/checkout@v4
- name: Install poetry
run: pipx install poetry
- name: Init pyproject.toml
run: mv ./__tests__/data/pyproject.toml .
- name: Setup Python
uses: ./
with:
python-version: ${{ matrix.python-version }}
freethreaded: true
cache: 'poetry'
- name: Install dependencies
run: poetry install --no-root
python-pip-dependencies-caching-path:
name: Test pip (Python ${{ matrix.python-version}}, ${{ matrix.os }}, caching path)
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
[
ubuntu-latest,
ubuntu-22.04,
ubuntu-24.04-arm,
ubuntu-22.04-arm,
windows-latest,
macos-latest,
macos-13
]
python-version: [3.13.0t, 3.13.1t, 3.13.2t]
steps:
- uses: actions/checkout@v4
- name: Setup Python
uses: ./
with:
python-version: ${{ matrix.python-version }}
cache: 'pip'
cache-dependency-path: __tests__/data/requirements.txt
- name: Install dependencies
run: pip install numpy pandas requests
python-pipenv-dependencies-caching-path:
name: Test pipenv (Python ${{ matrix.python-version}}, ${{ matrix.os }}, caching path)
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
[
ubuntu-latest,
ubuntu-22.04,
ubuntu-24.04-arm,
ubuntu-22.04-arm,
windows-latest,
macos-latest,
macos-13
]
python-version: [3.13.0t, 3.13.1t, 3.13.2t]
steps:
- uses: actions/checkout@v4
- name: Setup Python
id: cache-pipenv
uses: ./
with:
python-version: ${{ matrix.python-version }}
cache: 'pipenv'
cache-dependency-path: '**/pipenv-requirements.txt'
- name: Install pipenv
run: curl https://raw.githubusercontent.com/pypa/pipenv/master/get-pipenv.py | python
- name: Install dependencies
run: pipenv install requests

View File

@ -21,8 +21,30 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
python-version: ['3.9', 'pypy-3.9-v7.x']
os:
[
ubuntu-latest,
ubuntu-24.04-arm,
ubuntu-22.04,
ubuntu-22.04-arm,
windows-latest,
macos-latest,
macos-13
]
python-version:
[
'3.9',
'pypy-3.9-v7.x',
'3.10',
'pypy-3.10-v7.x',
'3.11',
'pypy-3.11-v7.x',
'3.12',
'3.13'
]
exclude:
- os: windows-latest
python-version: pypy-3.11-v7.x
steps:
- uses: actions/checkout@v4
- name: Setup Python
@ -39,8 +61,27 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
python-version: ['3.9', 'pypy-3.9-v7.x']
os:
[
ubuntu-latest,
ubuntu-24.04-arm,
ubuntu-22.04,
ubuntu-22.04-arm,
windows-latest,
macos-latest,
macos-13
]
python-version:
['3.10', 'pypy-3.10-v7.x', '3.11', 'pypy-3.11-v7.x', '3.12', '3.13']
exclude:
- os: windows-latest
python-version: pypy-3.11-v7.x
- os: ubuntu-22.04
python-version: pypy-3.11-v7.x
- os: ubuntu-22.04-arm
python-version: pypy-3.10-v7.x
- os: ubuntu-22.04-arm
python-version: pypy-3.11-v7.x
steps:
- uses: actions/checkout@v4
- name: Setup Python
@ -75,8 +116,27 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
python-version: ['3.9', 'pypy-3.9']
os:
[
ubuntu-latest,
ubuntu-24.04-arm,
ubuntu-22.04,
ubuntu-22.04-arm,
windows-latest,
macos-latest,
macos-13
]
python-version:
[
'3.9',
'pypy-3.9-v7.x',
'3.10',
'pypy-3.10-v7.x',
'3.11',
'pypy-3.11-v7.x',
'3.12',
'3.13'
]
steps:
- uses: actions/checkout@v4
- name: Install poetry
@ -89,7 +149,7 @@ jobs:
python-version: ${{ matrix.python-version }}
cache: 'poetry'
- name: Install dependencies
run: poetry install
run: poetry install --no-root
python-pip-dependencies-caching-path:
name: Test pip (Python ${{ matrix.python-version}}, ${{ matrix.os }}, caching path)
@ -97,8 +157,30 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
python-version: ['3.9', 'pypy-3.9-v7.x']
os:
[
ubuntu-latest,
ubuntu-24.04-arm,
ubuntu-22.04,
ubuntu-22.04-arm,
windows-latest,
macos-latest,
macos-13
]
python-version:
[
'3.9',
'pypy-3.9-v7.x',
'3.10',
'pypy-3.10-v7.x',
'3.11',
'pypy-3.11-v7.x',
'3.12',
'3.13'
]
exclude:
- os: windows-latest
python-version: pypy-3.11-v7.x
steps:
- uses: actions/checkout@v4
- name: Setup Python
@ -116,8 +198,27 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
python-version: ['3.9', 'pypy-3.9-v7.x']
os:
[
ubuntu-latest,
ubuntu-24.04-arm,
ubuntu-22.04,
ubuntu-22.04-arm,
windows-latest,
macos-latest,
macos-13
]
python-version:
['3.10', 'pypy-3.10-v7.x', '3.11', 'pypy-3.11-v7.x', '3.12', '3.13']
exclude:
- os: windows-latest
python-version: pypy-3.11-v7.x
- os: ubuntu-22.04
python-version: pypy-3.11-v7.x
- os: ubuntu-22.04-arm
python-version: pypy-3.10-v7.x
- os: ubuntu-22.04-arm
python-version: pypy-3.11-v7.x
steps:
- uses: actions/checkout@v4
- name: Setup Python

View File

@ -17,25 +17,20 @@ jobs:
runs-on: ${{ matrix.operating-system }}
strategy:
matrix:
operating-system: [ubuntu-20.04, windows-latest]
operating-system:
[
windows-latest,
ubuntu-22.04,
ubuntu-22.04-arm,
ubuntu-latest,
ubuntu-24.04-arm,
macos-latest,
macos-13
]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Run with setup-python 3.8
uses: ./
with:
python-version: 3.8
- name: Verify 3.8
run: python __tests__/verify-python.py 3.8
- name: Run with setup-python 3.8.10
uses: ./
with:
python-version: 3.8.10
- name: Verify 3.8.10
run: python __tests__/verify-python.py 3.8.10
- name: Run with setup-python 3.9.13
uses: ./
with:
@ -57,36 +52,43 @@ jobs:
- name: Verify 3.11.9
run: python __tests__/verify-python.py 3.11.9
- name: Run with setup-python 3.12.4
- name: Run with setup-python 3.12.7
uses: ./
with:
python-version: 3.12.4
- name: Verify 3.12.4
run: python __tests__/verify-python.py 3.12.4
python-version: 3.12.7
- name: Verify 3.12.7
run: python __tests__/verify-python.py 3.12.7
- name: Run with setup-python 3.10
id: cp310
- name: Run with setup-python 3.13.0
uses: ./
with:
python-version: '3.10'
- name: Verify 3.10
run: python __tests__/verify-python.py 3.10
- name: Run python-path sample 3.10
run: pipx run --python '${{ steps.cp310.outputs.python-path }}' nox --version
python-version: 3.13.0
- name: Verify 3.13.0
run: python __tests__/verify-python.py 3.13.0
- name: Run with setup-python ==3.8
- name: Run with setup-python 3.13
id: cp313
uses: ./
with:
python-version: '==3.8'
- name: Verify ==3.8
run: python __tests__/verify-python.py 3.8
python-version: '3.13'
- name: Verify 3.13
run: python __tests__/verify-python.py 3.13
- name: Run python-path sample 3.13
run: pipx run --python '${{ steps.cp313.outputs.python-path }}' nox --version
- name: Run with setup-python <3.11
- name: Run with setup-python ==3.13
uses: ./
with:
python-version: '<3.11'
- name: Verify <3.11
run: python __tests__/verify-python.py 3.10
python-version: '==3.13'
- name: Verify ==3.13
run: python __tests__/verify-python.py 3.13
- name: Run with setup-python <3.13
uses: ./
with:
python-version: '<3.13'
- name: Verify <3.13
run: python __tests__/verify-python.py 3.12
- name: Test Raw Endpoint Access
run: |
curl -L https://raw.githubusercontent.com/actions/python-versions/main/versions-manifest.json | jq empty

View File

@ -0,0 +1,20 @@
name: 'Publish Immutable Action Version'
on:
release:
types: [published]
jobs:
publish:
runs-on: ubuntu-latest
permissions:
contents: read
id-token: write
packages: write
steps:
- name: Checking out
uses: actions/checkout@v4
- name: Publish
id: publish
uses: actions/publish-immutable-action@v0.0.4

View File

@ -22,7 +22,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Update the ${{ env.TAG_NAME }} tag
uses: actions/publish-action@v0.2.2
uses: actions/publish-action@v0.3.0
with:
source-tag: ${{ env.TAG_NAME }}
slack-webhook: ${{ secrets.SLACK_WEBHOOK }}

View File

@ -18,10 +18,20 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [macos-latest, ubuntu-20.04, ubuntu-latest]
os:
[
macos-latest,
ubuntu-22.04,
ubuntu-22.04-arm,
ubuntu-24.04-arm,
ubuntu-latest,
macos-13
]
graalpy:
- 'graalpy-23.0'
- 'graalpy-22.3'
- 'graalpy-23.0'
- 'graalpy-23.1'
- 'graalpy-24.1'
steps:
- name: Checkout
@ -63,8 +73,16 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [macos-latest, ubuntu-20.04, ubuntu-latest]
graalpy: ['graalpy23.0', 'graalpy22.3']
os:
[
macos-latest,
ubuntu-22.04,
ubuntu-22.04-arm,
ubuntu-24.04-arm,
ubuntu-latest,
macos-13
]
graalpy: ['graalpy22.3', 'graalpy23.0', 'graalpy23.1', 'graalpy24.1']
steps:
- name: Checkout
@ -88,14 +106,14 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest]
os: [ubuntu-latest, macos-latest, macos-13]
steps:
- uses: actions/checkout@v4
- name: Setup GraalPy and check latest
uses: ./
id: graalpy
with:
python-version: 'graalpy-23.x'
python-version: 'graalpy-24.x'
check-latest: true
- name: GraalPy and Python version
run: python --version

View File

@ -20,19 +20,82 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [macos-latest, windows-latest, ubuntu-20.04, ubuntu-latest]
os:
[
macos-latest,
windows-latest,
ubuntu-22.04,
ubuntu-22.04-arm,
ubuntu-24.04-arm,
ubuntu-latest,
macos-13
]
pypy:
- 'pypy-2.7'
- 'pypy-3.10'
- 'pypy3.9'
- 'pypy-2.7-v7.3.14'
- 'pypy-3.10-v7.3.15'
- 'pypy-3.10-v7.3.14'
- 'pypy-2.7-v7.3.17'
- 'pypy-3.10-v7.3.17'
- 'pypy-3.10-v7.3.16'
- 'pypy-3.10-v7.3.x'
- 'pypy-3.10-v7.x'
- 'pypy-2.7-v7.3.12rc1'
- 'pypy-3.10-nightly'
- 'pypy3.10-v7.3.15'
- 'pypy3.10-v7.3.17'
- 'pypy3.11-v7.3.19'
steps:
- name: Checkout
uses: actions/checkout@v4
- name: setup-python ${{ matrix.pypy }}
id: setup-python
uses: ./
with:
python-version: ${{ matrix.pypy }}
- name: Check python-path
run: ./__tests__/check-python-path.sh '${{ steps.setup-python.outputs.python-path }}'
shell: bash
- name: PyPy and Python version
run: python --version
- name: Run simple code
run: python -c 'import math; print(math.factorial(5))'
- name: Assert PyPy is running
run: |
import platform
assert platform.python_implementation().lower() == "pypy"
shell: python
- name: Assert expected binaries (or symlinks) are present
run: |
EXECUTABLE=${{ matrix.pypy }}
EXECUTABLE=${EXECUTABLE/pypy-/pypy} # remove the first '-' in "pypy-X.Y" -> "pypyX.Y" to match executable name
EXECUTABLE=${EXECUTABLE%%-*} # remove any -* suffixe
${EXECUTABLE} --version
shell: bash
check-non-eol:
name: Check non-eol ${{ matrix.pypy }} on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
- macos-13
- macos-14
- macos-15
- windows-2019
- windows-2022
- windows-2025
- ubuntu-22.04
- ubuntu-24.04
- ubuntu-22.04-arm
- ubuntu-24.04-arm
pypy: ['pypy-2.7', 'pypy-3.10', 'pypy-3.11']
steps:
- name: Checkout
@ -74,8 +137,17 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [macos-latest, windows-latest, ubuntu-20.04, ubuntu-latest]
pypy: ['pypy2.7', 'pypy3.9', 'pypy3.10-nightly']
os:
[
macos-latest,
windows-latest,
ubuntu-22.04,
ubuntu-22.04-arm,
ubuntu-24.04-arm,
ubuntu-latest,
macos-13
]
pypy: ['pypy2.7', 'pypy3.9', 'pypy3.10-nightly', 'pypy3.11']
steps:
- name: Checkout
@ -99,13 +171,22 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
os:
[
macos-latest,
windows-latest,
ubuntu-22.04,
ubuntu-22.04-arm,
ubuntu-24.04-arm,
ubuntu-latest,
macos-13
]
steps:
- uses: actions/checkout@v4
- name: Setup PyPy and check latest
uses: ./
with:
python-version: 'pypy-3.10-v7.3.x'
python-version: 'pypy-3.11-v7.3.x'
check-latest: true
- name: PyPy and Python version
run: python --version
@ -121,7 +202,7 @@ jobs:
- name: Assert expected binaries (or symlinks) are present
run: |
EXECUTABLE="pypy-3.10-v7.3.x"
EXECUTABLE="pypy-3.11-v7.3.x"
EXECUTABLE=${EXECUTABLE/-/} # remove the first '-' in "pypy-X.Y" -> "pypyX.Y" to match executable name
EXECUTABLE=${EXECUTABLE%%-*} # remove any -* suffixe
${EXECUTABLE} --version
@ -132,13 +213,23 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
os:
[
macos-latest,
windows-latest,
ubuntu-22.04,
ubuntu-22.04-arm,
ubuntu-24.04-arm,
ubuntu-latest,
macos-13
]
steps:
- uses: actions/checkout@v4
- name: Setup PyPy and check latest
uses: ./
with:
python-version: |
pypy-3.11-v7.3.x
pypy-3.10-v7.3.x
pypy3.9
check-latest: true
@ -156,7 +247,7 @@ jobs:
- name: Assert expected binaries (or symlinks) are present
run: |
EXECUTABLE="pypy-3.10-v7.3.x"
EXECUTABLE="pypy-3.11-v7.3.x"
EXECUTABLE=${EXECUTABLE/-/} # remove the first '-' in "pypy-X.Y" -> "pypyX.Y" to match executable name
EXECUTABLE=${EXECUTABLE%%-*} # remove any -* suffixe
${EXECUTABLE} --version

View File

@ -0,0 +1,486 @@
name: Validate Python e2e freethread
on:
push:
branches:
- main
paths-ignore:
- '**.md'
pull_request:
paths-ignore:
- '**.md'
schedule:
- cron: 30 3 * * *
workflow_dispatch:
jobs:
setup-versions-from-manifest:
name: Setup ${{ matrix.python }} ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
[
macos-latest,
windows-latest,
ubuntu-20.04,
ubuntu-22.04,
ubuntu-22.04-arm,
macos-13,
ubuntu-latest,
ubuntu-24.04-arm
]
python: [3.13.0t, 3.13.1t, 3.13.2t]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: setup-python ${{ matrix.python }}
id: setup-python
uses: ./
with:
python-version: ${{ matrix.python }}
- name: Check python-path
run: ./__tests__/check-python-path.sh '${{ steps.setup-python.outputs.python-path }}'
shell: bash
- name: Verify Python version
run: ${{ steps.setup-python.outputs.python-path }} -VVV
- name: Run simple code
run: python -c 'import math; print(math.factorial(5))'
setup-versions-from-file:
name: Setup ${{ matrix.python }} ${{ matrix.os }} version file
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
[
macos-latest,
windows-latest,
ubuntu-20.04,
ubuntu-22.04,
ubuntu-22.04-arm,
macos-13,
ubuntu-latest,
ubuntu-24.04-arm
]
python: [3.13.0t, 3.13.1t, 3.13.2t]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: build-version-file ${{ matrix.python }}
run: echo ${{ matrix.python }} > .python-version
- name: setup-python ${{ matrix.python }}
id: setup-python
uses: ./
with:
python-version-file: .python-version
- name: Check python-path
run: ./__tests__/check-python-path.sh '${{ steps.setup-python.outputs.python-path }}'
shell: bash
- name: Verify Python version
run: ${{ steps.setup-python.outputs.python-path }} -VVV
- name: Run simple code
run: python -c 'import math; print(math.factorial(5))'
setup-versions-from-file-without-parameter:
name: Setup ${{ matrix.python }} ${{ matrix.os }} version file without parameter
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
[
macos-latest,
windows-latest,
ubuntu-20.04,
ubuntu-22.04,
ubuntu-22.04-arm,
macos-13,
ubuntu-latest,
ubuntu-24.04-arm
]
python: [3.13.0t, 3.13.1t, 3.13.2t]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: build-version-file ${{ matrix.python }}
run: echo ${{ matrix.python }} > .python-version
- name: setup-python ${{ matrix.python }}
id: setup-python
uses: ./
- name: Check python-path
run: ./__tests__/check-python-path.sh '${{ steps.setup-python.outputs.python-path }}'
shell: bash
- name: Verify Python version
run: ${{ steps.setup-python.outputs.python-path }} -VVV
- name: Run simple code
run: python -c 'import math; print(math.factorial(5))'
setup-versions-from-standard-pyproject-file:
name: Setup ${{ matrix.python }} ${{ matrix.os }} standard pyproject file
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
[
macos-latest,
windows-latest,
ubuntu-20.04,
ubuntu-22.04,
ubuntu-22.04-arm,
macos-13,
ubuntu-latest,
ubuntu-24.04-arm
]
python: [3.13.0, 3.13.1, 3.13.2]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: build-version-file ${{ matrix.python }}
run: |
echo '[project]
requires-python = "${{ matrix.python }}"
' > pyproject.toml
- name: setup-python ${{ matrix.python }}
id: setup-python
uses: ./
with:
python-version-file: pyproject.toml
freethreaded: true
- name: Check python-path
run: ./__tests__/check-python-path.sh '${{ steps.setup-python.outputs.python-path }}'
shell: bash
- name: Run simple code
run: python -c 'import math; print(math.factorial(5))'
setup-versions-from-poetry-pyproject-file:
name: Setup ${{ matrix.python }} ${{ matrix.os }} poetry pyproject file
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
[
macos-latest,
windows-latest,
ubuntu-20.04,
ubuntu-22.04,
ubuntu-22.04-arm,
macos-13,
ubuntu-latest,
ubuntu-24.04-arm
]
python: [3.13.0, 3.13.1, 3.13.2]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: build-version-file ${{ matrix.python }}
run: |
echo '[tool.poetry.dependencies]
python = "${{ matrix.python }}"
' > pyproject.toml
- name: setup-python ${{ matrix.python }}
id: setup-python
uses: ./
with:
python-version-file: pyproject.toml
freethreaded: true
- name: Check python-path
run: ./__tests__/check-python-path.sh '${{ steps.setup-python.outputs.python-path }}'
shell: bash
- name: Run simple code
run: python -c 'import math; print(math.factorial(5))'
setup-versions-from-tool-versions-file:
name: Setup ${{ matrix.python }} ${{ matrix.os }} .tool-versions file
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
[
macos-latest,
windows-latest,
ubuntu-20.04,
ubuntu-22.04,
ubuntu-22.04-arm,
macos-13,
ubuntu-latest,
ubuntu-24.04-arm
]
python: [3.13.0t, 3.13.1t, 3.13.2t, 3.14t-dev]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: build-tool-versions-file ${{ matrix.python }}
run: |
echo "python ${{ matrix.python }}" > .tool-versions
- name: setup-python using .tool-versions ${{ matrix.python }}
id: setup-python-tool-versions
uses: ./
with:
python-version-file: .tool-versions
setup-pre-release-version-from-manifest:
name: Setup 3.14.0-alpha.6 ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
[
macos-latest,
windows-latest,
ubuntu-20.04,
ubuntu-22.04,
ubuntu-22.04-arm,
macos-13,
ubuntu-latest,
ubuntu-24.04-arm
]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: setup-python 3.14.0-alpha.6
id: setup-python
uses: ./
with:
python-version: '3.14.0-alpha.6'
freethreaded: true
- name: Check python-path
run: ./__tests__/check-python-path.sh '${{ steps.setup-python.outputs.python-path }}'
shell: bash
- name: Verify Python version
run: ${{ steps.setup-python.outputs.python-path }} -VVV
- name: Run simple code
run: python -c 'import math; print(math.factorial(5))'
setup-dev-version:
name: Setup 3.14t-dev ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
[
macos-latest,
windows-latest,
ubuntu-22.04,
ubuntu-22.04-arm,
ubuntu-24.04-arm,
ubuntu-latest,
macos-13
]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: setup-python 3.14t-dev
id: setup-python
uses: ./
with:
python-version: '3.14t-dev'
- name: Check python-path
run: ./__tests__/check-python-path.sh '${{ steps.setup-python.outputs.python-path }}'
shell: bash
- name: Validate version
run: ${{ startsWith(steps.setup-python.outputs.python-version, '3.14.') }}
shell: bash
- name: Run simple code
run: python -c 'import math; print(math.factorial(5))'
setup-prerelease-version:
name: Setup 3.14t ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
[
macos-latest,
windows-latest,
ubuntu-22.04,
ubuntu-22.04-arm,
ubuntu-24.04-arm,
ubuntu-latest,
macos-13
]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: setup-python 3.14t
id: setup-python
uses: ./
with:
python-version: '3.14t'
allow-prereleases: true
- name: Check python-path
run: ./__tests__/check-python-path.sh '${{ steps.setup-python.outputs.python-path }}'
shell: bash
- name: Validate version
run: ${{ startsWith(steps.setup-python.outputs.python-version, '3.14.') }}
shell: bash
- name: Run simple code
run: python -c 'import math; print(math.factorial(5))'
setup-versions-noenv:
name: Setup ${{ matrix.python }} ${{ matrix.os }} (noenv)
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
[
macos-latest,
windows-latest,
ubuntu-20.04,
ubuntu-22.04,
ubuntu-22.04-arm,
macos-13,
ubuntu-latest,
ubuntu-24.04-arm
]
python: [3.13.0t, 3.13.1t, 3.13.2t]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: setup-python ${{ matrix.python }}
id: setup-python
uses: ./
with:
python-version: ${{ matrix.python }}
update-environment: false
- name: Verify Python version
run: ${{ steps.setup-python.outputs.python-path }} -VVV
- name: Run simple code
run: ${{ steps.setup-python.outputs.python-path }} -c 'import math; print(math.factorial(5))'
check-latest:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
[
macos-latest,
windows-latest,
ubuntu-22.04,
ubuntu-22.04-arm,
ubuntu-24.04-arm,
ubuntu-latest,
macos-13
]
python-version: [3.13t, 3.14t-dev]
steps:
- uses: actions/checkout@v4
- name: Setup Python and check latest
id: setup-python
uses: ./
with:
python-version: ${{ matrix.python-version }}
check-latest: true
- name: Verify Python version
run: ${{ steps.setup-python.outputs.python-path }} -VVV
setup-python-multiple-python-versions:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
[
macos-latest,
windows-latest,
ubuntu-22.04,
ubuntu-22.04-arm,
ubuntu-24.04-arm,
ubuntu-latest,
macos-13
]
steps:
- uses: actions/checkout@v4
- name: Setup Python and check latest
id: setup-python
uses: ./
with:
python-version: |
3.13.1t
3.13.2t
3.14t-dev
- name: Verify Python version
run: ${{ steps.setup-python.outputs.python-path }} -VVV
setup-versions-with-freethread-input:
name: Setup ${{ matrix.python }} ${{ matrix.os }} using freethread input parameter
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
[
macos-latest,
windows-latest,
ubuntu-20.04,
ubuntu-22.04,
ubuntu-22.04-arm,
macos-13,
ubuntu-latest,
ubuntu-24.04-arm
]
python: [3.13.1, 3.13.2, 3.14-dev, 3.14.0-alpha.6]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: setup-python ${{ matrix.python }}
id: setup-python
uses: ./
with:
python-version: ${{ matrix.python }}
freethreaded: true
- name: Check python-path
run: ./__tests__/check-python-path.sh '${{ steps.setup-python.outputs.python-path }}'
shell: bash
- name: Validate GIL
run: python ./__tests__/verify-freethreaded.py

View File

@ -20,11 +20,17 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [macos-latest, windows-latest, ubuntu-20.04, ubuntu-22.04]
python: [3.8.10, 3.9.13, 3.10.11, 3.11.9, 3.12.3]
exclude:
- os: ubuntu-22.04
python: 3.8.10
os:
[
macos-latest,
windows-latest,
ubuntu-22.04,
ubuntu-22.04-arm,
macos-13,
ubuntu-latest,
ubuntu-24.04-arm
]
python: [3.9.13, 3.10.11, 3.11.9, 3.12.3, 3.13.2]
steps:
- name: Checkout
uses: actions/checkout@v4
@ -58,11 +64,17 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [macos-latest, windows-latest, ubuntu-20.04, ubuntu-22.04]
python: [3.8.10, 3.9.13, 3.10.11, 3.11.9, 3.12.3]
exclude:
- os: ubuntu-22.04
python: 3.8.10
os:
[
macos-latest,
windows-latest,
ubuntu-22.04,
ubuntu-22.04-arm,
macos-13,
ubuntu-latest,
ubuntu-24.04-arm
]
python: [3.9.13, 3.10.11, 3.11.9, 3.12.3, 3.13.2]
steps:
- name: Checkout
uses: actions/checkout@v4
@ -99,11 +111,17 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [macos-latest, windows-latest, ubuntu-20.04, ubuntu-22.04]
python: [3.8.10, 3.9.13, 3.10.11, 3.11.9, 3.12.3]
exclude:
- os: ubuntu-22.04
python: 3.8.10
os:
[
macos-latest,
windows-latest,
ubuntu-22.04,
ubuntu-22.04-arm,
macos-13,
ubuntu-latest,
ubuntu-24.04-arm
]
python: [3.9.13, 3.10.11, 3.11.9, 3.12.3, 3.13.2]
steps:
- name: Checkout
uses: actions/checkout@v4
@ -138,11 +156,17 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [macos-latest, windows-latest, ubuntu-20.04, ubuntu-22.04]
python: [3.8.10, 3.9.13, 3.10.11, 3.11.9, '==3.12.3']
exclude:
- os: ubuntu-22.04
python: 3.8.10
os:
[
macos-latest,
windows-latest,
ubuntu-22.04,
ubuntu-22.04-arm,
macos-13,
ubuntu-latest,
ubuntu-24.04-arm
]
python: [3.9.13, 3.10.11, 3.11.9, '==3.12.3', 3.13.2]
steps:
- name: Checkout
uses: actions/checkout@v4
@ -182,11 +206,17 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [macos-latest, windows-latest, ubuntu-20.04, ubuntu-22.04]
python: [3.8.10, 3.9.13, 3.10.11, 3.11.9, 3.12.3]
exclude:
- os: ubuntu-22.04
python: 3.8.10
os:
[
macos-latest,
windows-latest,
ubuntu-22.04,
ubuntu-22.04-arm,
macos-13,
ubuntu-latest,
ubuntu-24.04-arm
]
python: [3.9.13, 3.10.11, 3.11.9, 3.12.3, 3.13.2]
steps:
- name: Checkout
uses: actions/checkout@v4
@ -220,22 +250,65 @@ jobs:
- name: Run simple code
run: python -c 'import math; print(math.factorial(5))'
setup-pre-release-version-from-manifest:
name: Setup 3.13.0-alpha.6 ${{ matrix.os }}
setup-versions-from-tool-versions-file:
name: Setup ${{ matrix.python }} ${{ matrix.os }} .tool-versions file
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [macos-latest, windows-latest, ubuntu-20.04, ubuntu-22.04]
os:
[
macos-latest,
windows-latest,
ubuntu-22.04,
ubuntu-22.04-arm,
macos-13,
ubuntu-latest,
ubuntu-24.04-arm
]
python: [pypy3.11-7.3.18, graalpy-24.1.2, 3.13.2, 3.14-dev]
exclude:
- os: windows-latest
python: graalpy-24.1.2
steps:
- name: Checkout
uses: actions/checkout@v4
- name: setup-python 3.13.0-alpha.6
- name: build-tool-versions-file ${{ matrix.python }}
run: |
echo "python ${{ matrix.python }}" > .tool-versions
- name: setup-python using .tool-versions ${{ matrix.python }}
id: setup-python-tool-versions
uses: ./
with:
python-version-file: .tool-versions
setup-pre-release-version-from-manifest:
name: Setup 3.14.0-alpha.6 ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
[
macos-latest,
windows-latest,
ubuntu-22.04,
ubuntu-22.04-arm,
macos-13,
ubuntu-latest,
ubuntu-24.04-arm
]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: setup-python 3.14.0-alpha.6
id: setup-python
uses: ./
with:
python-version: '3.13.0-alpha.6'
python-version: '3.14.0-alpha.6'
- name: Check python-path
run: ./__tests__/check-python-path.sh '${{ steps.setup-python.outputs.python-path }}'
@ -244,8 +317,8 @@ jobs:
- name: Validate version
run: |
$pythonVersion = (python --version)
if ("Python 3.13.0a6" -ne "$pythonVersion"){
Write-Host "The current version is $pythonVersion; expected version is 3.13.0a6"
if ("Python 3.14.0a6" -ne "$pythonVersion"){
Write-Host "The current version is $pythonVersion; expected version is 3.14.0a6"
exit 1
}
$pythonVersion
@ -255,49 +328,67 @@ jobs:
run: python -c 'import math; print(math.factorial(5))'
setup-dev-version:
name: Setup 3.13-dev ${{ matrix.os }}
name: Setup 3.14-dev ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [macos-latest, windows-latest, ubuntu-latest]
os:
[
macos-latest,
windows-latest,
ubuntu-22.04,
ubuntu-22.04-arm,
ubuntu-24.04-arm,
ubuntu-latest,
macos-13
]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: setup-python 3.13-dev
- name: setup-python 3.14-dev
id: setup-python
uses: ./
with:
python-version: '3.13-dev'
python-version: '3.14-dev'
- name: Check python-path
run: ./__tests__/check-python-path.sh '${{ steps.setup-python.outputs.python-path }}'
shell: bash
- name: Validate version
run: ${{ startsWith(steps.setup-python.outputs.python-version, '3.13.') }}
run: ${{ startsWith(steps.setup-python.outputs.python-version, '3.14.') }}
shell: bash
- name: Run simple code
run: python -c 'import math; print(math.factorial(5))'
setup-prerelease-version:
name: Setup 3.13 ${{ matrix.os }}
name: Setup 3.14 ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [macos-latest, windows-latest, ubuntu-latest]
os:
[
macos-latest,
windows-latest,
ubuntu-22.04,
ubuntu-22.04-arm,
ubuntu-24.04-arm,
ubuntu-latest,
macos-13
]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: setup-python 3.13
- name: setup-python 3.14
id: setup-python
uses: ./
with:
python-version: '3.13'
python-version: '3.14'
allow-prereleases: true
- name: Check python-path
@ -305,7 +396,7 @@ jobs:
shell: bash
- name: Validate version
run: ${{ startsWith(steps.setup-python.outputs.python-version, '3.13.') }}
run: ${{ startsWith(steps.setup-python.outputs.python-version, '3.14.') }}
shell: bash
- name: Run simple code
@ -317,8 +408,17 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [macos-latest, windows-latest, ubuntu-20.04, ubuntu-22.04]
python: ['3.8', '3.9', '3.10', '3.11', '3.12']
os:
[
macos-latest,
windows-latest,
ubuntu-22.04,
ubuntu-22.04-arm,
macos-13,
ubuntu-latest,
ubuntu-24.04-arm
]
python: ['3.9', '3.10', '3.11', '3.12', '3.13']
steps:
- name: Checkout
uses: actions/checkout@v4
@ -341,8 +441,17 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
python-version: ['3.8', '3.9', '3.10', '3.11', '3.12']
os:
[
macos-latest,
windows-latest,
ubuntu-22.04,
ubuntu-22.04-arm,
ubuntu-24.04-arm,
ubuntu-latest,
macos-13
]
python-version: ['3.9', '3.10', '3.11', '3.12', '3.13']
steps:
- uses: actions/checkout@v4
- name: Setup Python and check latest
@ -365,24 +474,33 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
os:
[
macos-latest,
windows-latest,
ubuntu-22.04,
ubuntu-22.04-arm,
ubuntu-24.04-arm,
ubuntu-latest,
macos-13
]
steps:
- uses: actions/checkout@v4
- name: Setup Python and check latest
uses: ./
with:
python-version: |
3.8
3.9
3.10
3.11
3.12
3.13
check-latest: true
- name: Validate version
run: |
$pythonVersion = (python --version)
if ("$pythonVersion" -NotMatch "3.12"){
Write-Host "The current version is $pythonVersion; expected version is 3.12"
if ("$pythonVersion" -NotMatch "3.13"){
Write-Host "The current version is $pythonVersion; expected version is 3.13"
exit 1
}
$pythonVersion

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
.licenses/npm/@protobuf-ts/plugin.dep.yml generated Normal file

Binary file not shown.

BIN
.licenses/npm/@protobuf-ts/protoc.dep.yml generated Normal file

Binary file not shown.

Binary file not shown.

BIN
.licenses/npm/@protobuf-ts/runtime.dep.yml generated Normal file

Binary file not shown.

BIN
.licenses/npm/typescript.dep.yml generated Normal file

Binary file not shown.

Binary file not shown.

View File

@ -21,7 +21,7 @@ steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.10'
python-version: '3.13'
- run: python my_script.py
```
@ -31,7 +31,7 @@ steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: 'pypy3.9'
python-version: 'pypy3.10'
- run: python my_script.py
```
@ -41,7 +41,17 @@ steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: 'graalpy-22.3'
python-version: 'graalpy-24.0'
- run: python my_script.py
```
**Free threaded Python**
```yaml
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.13t'
- run: python my_script.py
```
@ -57,7 +67,7 @@ The `python-version` input supports the [Semantic Versioning Specification](http
## Supported architectures
Using `architecture` input it is possible to specify the required Python or PyPy interpreter architecture: `x86` or `x64`. If the input is not specified the architecture defaults to `x64`.
Using the `architecture` input, it is possible to specify the required Python or PyPy interpreter architecture: `x86`, `x64`, or `arm64`. If the input is not specified, the architecture defaults to the host OS architecture.
## Caching packages dependencies
@ -76,7 +86,7 @@ steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.9'
python-version: '3.13'
cache: 'pip' # caching pip dependencies
- run: pip install -r requirements.txt
```
@ -99,6 +109,15 @@ See examples of using `cache` and `cache-dependency-path` for `pipenv` and `poet
- [Using `setup-python` on GHES](docs/advanced-usage.md#using-setup-python-on-ghes)
- [Allow pre-releases](docs/advanced-usage.md#allow-pre-releases)
## Recommended permissions
When using the `setup-python` action in your GitHub Actions workflow, it is recommended to set the following permissions to ensure proper functionality:
```yaml
permissions:
contents: read # access to check out code and install dependencies
```
## License
The scripts and documentation in this project are released under the [MIT License](LICENSE).

View File

@ -184,19 +184,31 @@ virtualenvs.path = "{cache-dir}/virtualenvs" # /Users/patrick/Library/Caches/py
);
}
if (process.platform === 'linux' && packageManager === 'pip') {
expect(infoSpy).toHaveBeenCalledWith(
`Cache restored from key: setup-python-${process.env['RUNNER_OS']}-20.04-Ubuntu-python-${pythonVersion}-${packageManager}-${fileHash}`
);
} else if (packageManager === 'poetry') {
expect(infoSpy).toHaveBeenCalledWith(
`Cache restored from key: setup-python-${process.env['RUNNER_OS']}-python-${pythonVersion}-${packageManager}-v2-${fileHash}`
);
} else {
expect(infoSpy).toHaveBeenCalledWith(
`Cache restored from key: setup-python-${process.env['RUNNER_OS']}-python-${pythonVersion}-${packageManager}-${fileHash}`
);
}
const restoredKeys = restoreCacheSpy.mock.results.map(
result => result.value
);
restoredKeys.forEach(restoredKey => {
if (restoredKey) {
if (process.platform === 'linux' && packageManager === 'pip') {
expect(infoSpy).toHaveBeenCalledWith(
`Cache restored from key: setup-python-${process.env['RUNNER_OS']}-${process.arch}-20.04-Ubuntu-python-${pythonVersion}-${packageManager}-${fileHash}`
);
} else if (packageManager === 'poetry') {
expect(infoSpy).toHaveBeenCalledWith(
`Cache restored from key: setup-python-${process.env['RUNNER_OS']}-${process.arch}-python-${pythonVersion}-${packageManager}-v2-${fileHash}`
);
} else {
expect(infoSpy).toHaveBeenCalledWith(
`Cache restored from key: setup-python-${process.env['RUNNER_OS']}-${process.arch}-python-${pythonVersion}-${packageManager}-${fileHash}`
);
}
} else {
expect(infoSpy).toHaveBeenCalledWith(
`${packageManager} cache is not found`
);
}
});
},
30000
);

View File

@ -5,7 +5,7 @@ name = "pypi"
[packages]
flake8 = "==6.0.0"
numpy = "==1.25.1"
numpy = "==2.2.4"
[dev-packages]

View File

@ -1,7 +1,7 @@
{
"_meta": {
"hash": {
"sha256": "dcea65dabfe8442466b5e9280ecab72cfa7bf555791ee0ad55b6e7255dca1f43"
"sha256": "9d0bc7ff1f9078396b19f05bc5cd57894f3783c68f96fa9d623b1ea5a1b168f5"
},
"pipfile-spec": 6,
"requires": {
@ -22,6 +22,7 @@
"sha256:c61007e76655af75e6785a931f452915b371dc48f56efd765247c8fe68f2b181"
],
"index": "pypi",
"markers": "python_full_version >= '3.8.1'",
"version": "==6.0.0"
},
"mccabe": {
@ -34,34 +35,65 @@
},
"numpy": {
"hashes": [
"sha256:012097b5b0d00a11070e8f2e261128c44157a8689f7dedcf35576e525893f4fe",
"sha256:0d3fe3dd0506a28493d82dc3cf254be8cd0d26f4008a417385cbf1ae95b54004",
"sha256:0def91f8af6ec4bb94c370e38c575855bf1d0be8a8fbfba42ef9c073faf2cf19",
"sha256:1a180429394f81c7933634ae49b37b472d343cccb5bb0c4a575ac8bbc433722f",
"sha256:1d5d3c68e443c90b38fdf8ef40e60e2538a27548b39b12b73132456847f4b631",
"sha256:20e1266411120a4f16fad8efa8e0454d21d00b8c7cee5b5ccad7565d95eb42dd",
"sha256:247d3ffdd7775bdf191f848be8d49100495114c82c2bd134e8d5d075fb386a1c",
"sha256:35a9527c977b924042170a0887de727cd84ff179e478481404c5dc66b4170009",
"sha256:38eb6548bb91c421261b4805dc44def9ca1a6eef6444ce35ad1669c0f1a3fc5d",
"sha256:3d7abcdd85aea3e6cdddb59af2350c7ab1ed764397f8eec97a038ad244d2d105",
"sha256:41a56b70e8139884eccb2f733c2f7378af06c82304959e174f8e7370af112e09",
"sha256:4a90725800caeaa160732d6b31f3f843ebd45d6b5f3eec9e8cc287e30f2805bf",
"sha256:6b82655dd8efeea69dbf85d00fca40013d7f503212bc5259056244961268b66e",
"sha256:6c6c9261d21e617c6dc5eacba35cb68ec36bb72adcff0dee63f8fbc899362588",
"sha256:77d339465dff3eb33c701430bcb9c325b60354698340229e1dff97745e6b3efa",
"sha256:791f409064d0a69dd20579345d852c59822c6aa087f23b07b1b4e28ff5880fcb",
"sha256:9a3a9f3a61480cc086117b426a8bd86869c213fc4072e606f01c4e4b66eb92bf",
"sha256:c1516db588987450b85595586605742879e50dcce923e8973f79529651545b57",
"sha256:c40571fe966393b212689aa17e32ed905924120737194b5d5c1b20b9ed0fb171",
"sha256:d412c1697c3853c6fc3cb9751b4915859c7afe6a277c2bf00acf287d56c4e625",
"sha256:d5154b1a25ec796b1aee12ac1b22f414f94752c5f94832f14d8d6c9ac40bcca6",
"sha256:d736b75c3f2cb96843a5c7f8d8ccc414768d34b0a75f466c05f3a739b406f10b",
"sha256:e8f6049c4878cb16960fbbfb22105e49d13d752d4d8371b55110941fb3b17800",
"sha256:f76aebc3358ade9eacf9bc2bb8ae589863a4f911611694103af05346637df1b7",
"sha256:fd67b306320dcadea700a8f79b9e671e607f8696e98ec255915c0c6d6b818503"
"sha256:05c076d531e9998e7e694c36e8b349969c56eadd2cdcd07242958489d79a7286",
"sha256:0d54974f9cf14acf49c60f0f7f4084b6579d24d439453d5fc5805d46a165b542",
"sha256:11c43995255eb4127115956495f43e9343736edb7fcdb0d973defd9de14cd84f",
"sha256:188dcbca89834cc2e14eb2f106c96d6d46f200fe0200310fc29089657379c58d",
"sha256:1974afec0b479e50438fc3648974268f972e2d908ddb6d7fb634598cdb8260a0",
"sha256:1cf4e5c6a278d620dee9ddeb487dc6a860f9b199eadeecc567f777daace1e9e7",
"sha256:207a2b8441cc8b6a2a78c9ddc64d00d20c303d79fba08c577752f080c4007ee3",
"sha256:218f061d2faa73621fa23d6359442b0fc658d5b9a70801373625d958259eaca3",
"sha256:2aad3c17ed2ff455b8eaafe06bcdae0062a1db77cb99f4b9cbb5f4ecb13c5146",
"sha256:2fa8fa7697ad1646b5c93de1719965844e004fcad23c91228aca1cf0800044a1",
"sha256:31504f970f563d99f71a3512d0c01a645b692b12a63630d6aafa0939e52361e6",
"sha256:3387dd7232804b341165cedcb90694565a6015433ee076c6754775e85d86f1fc",
"sha256:4ba5054787e89c59c593a4169830ab362ac2bee8a969249dc56e5d7d20ff8df9",
"sha256:4f92084defa704deadd4e0a5ab1dc52d8ac9e8a8ef617f3fbb853e79b0ea3592",
"sha256:65ef3468b53269eb5fdb3a5c09508c032b793da03251d5f8722b1194f1790c00",
"sha256:6f527d8fdb0286fd2fd97a2a96c6be17ba4232da346931d967a0630050dfd298",
"sha256:7051ee569db5fbac144335e0f3b9c2337e0c8d5c9fee015f259a5bd70772b7e8",
"sha256:7716e4a9b7af82c06a2543c53ca476fa0b57e4d760481273e09da04b74ee6ee2",
"sha256:79bd5f0a02aa16808fcbc79a9a376a147cc1045f7dfe44c6e7d53fa8b8a79392",
"sha256:7a4e84a6283b36632e2a5b56e121961f6542ab886bc9e12f8f9818b3c266bfbb",
"sha256:8120575cb4882318c791f839a4fd66161a6fa46f3f0a5e613071aae35b5dd8f8",
"sha256:81413336ef121a6ba746892fad881a83351ee3e1e4011f52e97fba79233611fd",
"sha256:8146f3550d627252269ac42ae660281d673eb6f8b32f113538e0cc2a9aed42b9",
"sha256:879cf3a9a2b53a4672a168c21375166171bc3932b7e21f622201811c43cdd3b0",
"sha256:892c10d6a73e0f14935c31229e03325a7b3093fafd6ce0af704be7f894d95687",
"sha256:92bda934a791c01d6d9d8e038363c50918ef7c40601552a58ac84c9613a665bc",
"sha256:9ba03692a45d3eef66559efe1d1096c4b9b75c0986b5dff5530c378fb8331d4f",
"sha256:9eeea959168ea555e556b8188da5fa7831e21d91ce031e95ce23747b7609f8a4",
"sha256:a0258ad1f44f138b791327961caedffbf9612bfa504ab9597157806faa95194a",
"sha256:a761ba0fa886a7bb33c6c8f6f20213735cb19642c580a931c625ee377ee8bd39",
"sha256:a7b9084668aa0f64e64bd00d27ba5146ef1c3a8835f3bd912e7a9e01326804c4",
"sha256:a84eda42bd12edc36eb5b53bbcc9b406820d3353f1994b6cfe453a33ff101775",
"sha256:ab2939cd5bec30a7430cbdb2287b63151b77cf9624de0532d629c9a1c59b1d5c",
"sha256:ac0280f1ba4a4bfff363a99a6aceed4f8e123f8a9b234c89140f5e894e452ecd",
"sha256:adf8c1d66f432ce577d0197dceaac2ac00c0759f573f28516246351c58a85020",
"sha256:b4adfbbc64014976d2f91084915ca4e626fbf2057fb81af209c1a6d776d23e3d",
"sha256:bb649f8b207ab07caebba230d851b579a3c8711a851d29efe15008e31bb4de24",
"sha256:bce43e386c16898b91e162e5baaad90c4b06f9dcbe36282490032cec98dc8ae7",
"sha256:bd3ad3b0a40e713fc68f99ecfd07124195333f1e689387c180813f0e94309d6f",
"sha256:c3f7ac96b16955634e223b579a3e5798df59007ca43e8d451a0e6a50f6bfdfba",
"sha256:cf28633d64294969c019c6df4ff37f5698e8326db68cc2b66576a51fad634880",
"sha256:d0f35b19894a9e08639fd60a1ec1978cb7f5f7f1eace62f38dd36be8aecdef4d",
"sha256:db1f1c22173ac1c58db249ae48aa7ead29f534b9a948bc56828337aa84a32ed6",
"sha256:dbe512c511956b893d2dacd007d955a3f03d555ae05cfa3ff1c1ff6df8851854",
"sha256:df2f57871a96bbc1b69733cd4c51dc33bea66146b8c63cacbfed73eec0883017",
"sha256:e2f085ce2e813a50dfd0e01fbfc0c12bbe5d2063d99f8b29da30e544fb6483b8",
"sha256:e642d86b8f956098b564a45e6f6ce68a22c2c97a04f5acd3f221f57b8cb850ae",
"sha256:e9e0a277bb2eb5d8a7407e14688b85fd8ad628ee4e0c7930415687b6564207a4",
"sha256:ea2bb7e2ae9e37d96835b3576a4fa4b3a97592fbea8ef7c3587078b0068b8f09",
"sha256:ee4d528022f4c5ff67332469e10efe06a267e32f4067dc76bb7e2cddf3cd25ff",
"sha256:f05d4198c1bacc9124018109c5fba2f3201dbe7ab6e92ff100494f236209c960",
"sha256:f34dc300df798742b3d06515aa2a0aee20941c13579d7a2f2e10af01ae4901ee",
"sha256:f4162988a360a29af158aeb4a2f4f09ffed6a969c9776f8f3bdee9b06a8ab7e5",
"sha256:f486038e44caa08dbd97275a9a35a283a8f1d2f0ee60ac260a1790e76660833c",
"sha256:f7de08cbe5551911886d1ab60de58448c6df0f67d9feb7d1fb21e9875ef95e91"
],
"index": "pypi",
"version": "==1.25.1"
"markers": "python_version >= '3.10'",
"version": "==2.2.4"
},
"pycodestyle": {
"hashes": [
@ -81,4 +113,4 @@
}
},
"develop": {}
}
}

View File

@ -1,2 +1,2 @@
numpy==1.22.3
numpy==2.2.4
flake8==6.0.0

View File

@ -1,413 +1,226 @@
# This file is automatically @generated by Poetry 1.8.5 and should not be changed by hand.
[[package]]
name = "altgraph"
version = "0.17.2"
version = "0.17.4"
description = "Python graph (network) package"
category = "main"
optional = false
python-versions = "*"
files = [
{file = "altgraph-0.17.4-py2.py3-none-any.whl", hash = "sha256:642743b4750de17e655e6711601b077bc6598dbfa3ba5fa2b2a35ce12b508dff"},
{file = "altgraph-0.17.4.tar.gz", hash = "sha256:1b5afbb98f6c4dcadb2e2ae6ab9fa994bbb8c1d75f4fa96d340f9437ae454406"},
]
[[package]]
name = "certifi"
version = "2020.6.20"
description = "Python package for providing Mozilla's CA Bundle."
category = "main"
name = "flake8"
version = "4.0.1"
description = "the modular source code checker: pep8 pyflakes and co"
optional = false
python-versions = "*"
[[package]]
name = "chardet"
version = "3.0.4"
description = "Universal encoding detector for Python 2 and 3"
category = "main"
optional = false
python-versions = "*"
[[package]]
name = "dis3"
version = "0.1.3"
description = "Python 2.7 backport of the \"dis\" module from Python 3.5+"
category = "main"
optional = false
python-versions = "*"
[[package]]
name = "docutils"
version = "0.16"
description = "Docutils -- Python Documentation Utilities"
category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
[[package]]
name = "future"
version = "0.18.2"
description = "Clean single-source support for Python 3 and 2"
category = "main"
optional = false
python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
[[package]]
name = "idna"
version = "2.9"
description = "Internationalized Domain Names in Applications (IDNA)"
category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
[[package]]
name = "itsdangerous"
version = "1.1.0"
description = "Various helpers to pass data to untrusted environments and back."
category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
[[package]]
name = "kivy"
version = "1.11.1"
description = "A software library for rapid development of hardware-accelerated multitouch applications."
category = "main"
optional = false
python-versions = "*"
python-versions = ">=3.6"
files = [
{file = "flake8-4.0.1-py2.py3-none-any.whl", hash = "sha256:479b1304f72536a55948cb40a32dce8bb0ffe3501e26eaf292c7e60eb5e0428d"},
{file = "flake8-4.0.1.tar.gz", hash = "sha256:806e034dda44114815e23c16ef92f95c91e4c71100ff52813adf7132a6ad870d"},
]
[package.dependencies]
docutils = "*"
Kivy-Garden = ">=0.1.4"
pygments = "*"
mccabe = ">=0.6.0,<0.7.0"
pycodestyle = ">=2.8.0,<2.9.0"
pyflakes = ">=2.4.0,<2.5.0"
[[package]]
name = "importlib-metadata"
version = "8.5.0"
description = "Read metadata from Python packages"
optional = false
python-versions = ">=3.8"
files = [
{file = "importlib_metadata-8.5.0-py3-none-any.whl", hash = "sha256:45e54197d28b7a7f1559e60b95e7c567032b602131fbd588f1497f47880aa68b"},
{file = "importlib_metadata-8.5.0.tar.gz", hash = "sha256:71522656f0abace1d072b9e5481a48f07c138e00f079c38c8f883823f9c26bd7"},
]
[package.dependencies]
zipp = ">=3.20"
[package.extras]
tuio = ["oscpy"]
check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)"]
cover = ["pytest-cov"]
doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"]
enabler = ["pytest-enabler (>=2.2)"]
perf = ["ipython"]
test = ["flufl.flake8", "importlib-resources (>=1.3)", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6,!=8.1.*)", "pytest-perf (>=0.9.2)"]
type = ["pytest-mypy"]
[[package]]
name = "kivy-deps.angle"
version = "0.3.0"
description = "Repackaged binary dependency of Kivy."
category = "main"
optional = false
python-versions = "*"
[[package]]
name = "kivy-deps.glew"
version = "0.1.12"
description = "Repackaged binary dependency of Kivy."
category = "main"
optional = false
python-versions = "*"
[[package]]
name = "kivy-deps.gstreamer"
version = "0.1.17"
description = "Repackaged binary dependency of Kivy."
category = "main"
optional = false
python-versions = "*"
[[package]]
name = "kivy-deps.sdl2"
version = "0.1.22"
description = "Repackaged binary dependency of Kivy."
category = "main"
optional = false
python-versions = "*"
[[package]]
name = "kivy-garden"
version = "0.1.4"
description = "Garden tool for kivy flowers."
category = "main"
name = "macholib"
version = "1.16.3"
description = "Mach-O header analysis and editing"
optional = false
python-versions = "*"
files = [
{file = "macholib-1.16.3-py2.py3-none-any.whl", hash = "sha256:0e315d7583d38b8c77e815b1ecbdbf504a8258d8b3e17b61165c6feb60d18f2c"},
{file = "macholib-1.16.3.tar.gz", hash = "sha256:07ae9e15e8e4cd9a788013d81f5908b3609aa76f9b1421bae9c4d7606ec86a30"},
]
[package.dependencies]
requests = "*"
altgraph = ">=0.17"
[[package]]
name = "mccabe"
version = "0.6.1"
description = "McCabe checker, plugin for flake8"
optional = false
python-versions = "*"
files = [
{file = "mccabe-0.6.1-py2.py3-none-any.whl", hash = "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42"},
{file = "mccabe-0.6.1.tar.gz", hash = "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"},
]
[[package]]
name = "packaging"
version = "21.0"
version = "24.2"
description = "Core utilities for Python packages"
category = "main"
optional = false
python-versions = ">=3.6"
[package.dependencies]
pyparsing = ">=2.0.2"
[[package]]
name = "pdf2image"
version = "1.12.1"
description = "A wrapper around the pdftoppm and pdftocairo command line tools to convert PDF to a PIL Image list."
category = "main"
optional = false
python-versions = "*"
[package.dependencies]
pillow = "*"
python-versions = ">=3.8"
files = [
{file = "packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"},
{file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"},
]
[[package]]
name = "pefile"
version = "2021.9.3"
version = "2024.8.26"
description = "Python PE parsing module"
category = "main"
optional = false
python-versions = ">=3.6.0"
[package.dependencies]
future = "*"
files = [
{file = "pefile-2024.8.26-py3-none-any.whl", hash = "sha256:76f8b485dcd3b1bb8166f1128d395fa3d87af26360c2358fb75b80019b957c6f"},
{file = "pefile-2024.8.26.tar.gz", hash = "sha256:3ff6c5d8b43e8c37bb6e6dd5085658d658a7a0bdcd20b6a07b1fcfc1c4e9d632"},
]
[[package]]
name = "pillow"
version = "7.2.0"
description = "Python Imaging Library (Fork)"
category = "main"
name = "pycodestyle"
version = "2.8.0"
description = "Python style guide checker"
optional = false
python-versions = ">=3.5"
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
files = [
{file = "pycodestyle-2.8.0-py2.py3-none-any.whl", hash = "sha256:720f8b39dde8b293825e7ff02c475f3077124006db4f440dcbc9a20b76548a20"},
{file = "pycodestyle-2.8.0.tar.gz", hash = "sha256:eddd5847ef438ea1c7870ca7eb78a9d47ce0cdb4851a5523949f2601d0cbbe7f"},
]
[[package]]
name = "pygments"
version = "2.6.1"
description = "Pygments is a syntax highlighting package written in Python."
category = "main"
name = "pyflakes"
version = "2.4.0"
description = "passive checker of Python programs"
optional = false
python-versions = ">=3.5"
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
files = [
{file = "pyflakes-2.4.0-py2.py3-none-any.whl", hash = "sha256:3bb3a3f256f4b7968c9c788781e4ff07dce46bdf12339dcda61053375426ee2e"},
{file = "pyflakes-2.4.0.tar.gz", hash = "sha256:05a85c2872edf37a4ed30b0cce2f6093e1d0581f8c19d7393122da7e25b2b24c"},
]
[[package]]
name = "pyinstaller"
version = "3.6"
version = "6.10.0"
description = "PyInstaller bundles a Python application and all its dependencies into a single package."
category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
python-versions = "<3.14,>=3.8"
files = [
{file = "pyinstaller-6.10.0-py3-none-macosx_10_13_universal2.whl", hash = "sha256:d60fb22859e11483af735aec115fdde09467cdbb29edd9844839f2c920b748c0"},
{file = "pyinstaller-6.10.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:46d75359668993ddd98630a3669dc5249f3c446e35239b43bc7f4155bc574748"},
{file = "pyinstaller-6.10.0-py3-none-manylinux2014_i686.whl", hash = "sha256:3398a98fa17d47ccb31f8779ecbdacec025f7adb2f22757a54b706ac8b4fe906"},
{file = "pyinstaller-6.10.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:e9989f354ae4ed8a3bec7bdb37ae0d170751d6520e500f049c7cd0632d31d5c3"},
{file = "pyinstaller-6.10.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:b7c90c91921b3749083115b28f30f40abf2bb481ceff196d2b2ce0eaa2b3d429"},
{file = "pyinstaller-6.10.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:6cf876d7d93b8b4f28d1ad57fa24645cf43119c79e985dd5e5f7a801245e6f53"},
{file = "pyinstaller-6.10.0-py3-none-musllinux_1_1_aarch64.whl", hash = "sha256:db05e3f2f10f9f78c56f1fb163d9cb453433429fe4281218ebaf1ebfd39ba942"},
{file = "pyinstaller-6.10.0-py3-none-musllinux_1_1_x86_64.whl", hash = "sha256:28eca3817f176fdc19747e1afcf434f13bb9f17a644f611be2c5a61b1f498ed7"},
{file = "pyinstaller-6.10.0-py3-none-win32.whl", hash = "sha256:703e041718987e46ba0568a2c71ecf2459fddef57cf9edf3efeed4a53e3dae3f"},
{file = "pyinstaller-6.10.0-py3-none-win_amd64.whl", hash = "sha256:95b55966e563e8b8f31a43882aea10169e9a11fdf38e626d86a2907b640c0701"},
{file = "pyinstaller-6.10.0-py3-none-win_arm64.whl", hash = "sha256:308e0a8670c9c9ac0cebbf1bbb492e71b6675606f2ec78bc4adfc830d209e087"},
{file = "pyinstaller-6.10.0.tar.gz", hash = "sha256:143840f8056ff7b910bf8f16f6cd92cc10a6c2680bb76d0a25d558d543d21270"},
]
[package.dependencies]
altgraph = "*"
dis3 = "*"
importlib-metadata = {version = ">=4.6", markers = "python_version < \"3.10\""}
macholib = {version = ">=1.8", markers = "sys_platform == \"darwin\""}
packaging = ">=22.0"
pefile = {version = ">=2022.5.30", markers = "sys_platform == \"win32\""}
pyinstaller-hooks-contrib = ">=2024.8"
pywin32-ctypes = {version = ">=0.2.1", markers = "sys_platform == \"win32\""}
setuptools = ">=42.0.0"
[package.extras]
completion = ["argcomplete"]
hook-testing = ["execnet (>=1.5.0)", "psutil", "pytest (>=2.7.3)"]
[[package]]
name = "pyparsing"
version = "2.4.7"
description = "Python parsing module"
category = "main"
name = "pyinstaller-hooks-contrib"
version = "2025.1"
description = "Community maintained hooks for PyInstaller"
optional = false
python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
python-versions = ">=3.8"
files = [
{file = "pyinstaller_hooks_contrib-2025.1-py3-none-any.whl", hash = "sha256:d3c799470cbc0bda60dcc8e6b4ab976777532b77621337f2037f558905e3a8e9"},
{file = "pyinstaller_hooks_contrib-2025.1.tar.gz", hash = "sha256:130818f9e9a0a7f2261f1fd66054966a3a50c99d000981c5d1db11d3ad0c6ab2"},
]
[package.dependencies]
importlib_metadata = {version = ">=4.6", markers = "python_version < \"3.10\""}
packaging = ">=22.0"
setuptools = ">=42.0.0"
[[package]]
name = "pywin32-ctypes"
version = "0.2.0"
description = ""
category = "main"
version = "0.2.3"
description = "A (partial) reimplementation of pywin32 using ctypes/cffi"
optional = false
python-versions = "*"
python-versions = ">=3.6"
files = [
{file = "pywin32-ctypes-0.2.3.tar.gz", hash = "sha256:d162dc04946d704503b2edc4d55f3dba5c1d539ead017afa00142c38b9885755"},
{file = "pywin32_ctypes-0.2.3-py3-none-any.whl", hash = "sha256:8a1513379d709975552d202d942d9837758905c8d01eb82b8bcc30918929e7b8"},
]
[[package]]
name = "requests"
version = "2.24.0"
description = "Python HTTP for Humans."
category = "main"
name = "setuptools"
version = "75.3.2"
description = "Easily download, build, install, upgrade, and uninstall Python packages"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
[package.dependencies]
certifi = ">=2017.4.17"
chardet = ">=3.0.2,<4"
idna = ">=2.5,<3"
urllib3 = ">=1.21.1,<1.25.0 || >1.25.0,<1.25.1 || >1.25.1,<1.26"
python-versions = ">=3.8"
files = [
{file = "setuptools-75.3.2-py3-none-any.whl", hash = "sha256:90ab613b6583fc02d5369cbca13ea26ea0e182d1df2d943ee9cbe81d4c61add9"},
{file = "setuptools-75.3.2.tar.gz", hash = "sha256:3c1383e1038b68556a382c1e8ded8887cd20141b0eb5708a6c8d277de49364f5"},
]
[package.extras]
security = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)"]
socks = ["PySocks (>=1.5.6,!=1.5.7)", "win-inet-pton"]
check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)", "ruff (>=0.5.2)"]
core = ["importlib-metadata (>=6)", "importlib-resources (>=5.10.2)", "jaraco.collections", "jaraco.functools", "jaraco.text (>=3.7)", "more-itertools", "more-itertools (>=8.8)", "packaging", "packaging (>=24)", "platformdirs (>=4.2.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"]
cover = ["pytest-cov"]
doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier", "towncrier (<24.7)"]
enabler = ["pytest-enabler (>=2.2)"]
test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test (>=5.5)", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "ruff (<=0.7.1)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"]
type = ["importlib-metadata (>=7.0.2)", "jaraco.develop (>=7.21)", "mypy (==1.12.*)", "pytest-mypy"]
[[package]]
name = "urllib3"
version = "1.25.9"
description = "HTTP library with thread-safe connection pooling, file post, and more."
category = "main"
name = "zipp"
version = "3.20.2"
description = "Backport of pathlib-compatible object wrapper for zip files"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4"
python-versions = ">=3.8"
files = [
{file = "zipp-3.20.2-py3-none-any.whl", hash = "sha256:a817ac80d6cf4b23bf7f2828b7cabf326f15a001bea8b1f9b49631780ba28350"},
{file = "zipp-3.20.2.tar.gz", hash = "sha256:bc9eb26f4506fda01b81bcde0ca78103b6e62f991b381fec825435c836edbc29"},
]
[package.extras]
brotli = ["brotlipy (>=0.6.0)"]
secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "pyOpenSSL (>=0.14)", "ipaddress"]
socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"]
[[package]]
name = "xlrd"
version = "1.2.0"
description = "Library for developers to extract data from Microsoft Excel (tm) spreadsheet files"
category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)"]
cover = ["pytest-cov"]
doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"]
enabler = ["pytest-enabler (>=2.2)"]
test = ["big-O", "importlib-resources", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-itertools", "pytest (>=6,!=8.1.*)", "pytest-ignore-flaky"]
type = ["pytest-mypy"]
[metadata]
lock-version = "1.1"
python-versions = "^3.8"
content-hash = "b3d607363c6daf2b5448aa5ee676cff28606af6200d8e9b42e89937a190a3d46"
[metadata.files]
altgraph = [
{file = "altgraph-0.17.2-py2.py3-none-any.whl", hash = "sha256:743628f2ac6a7c26f5d9223c91ed8ecbba535f506f4b6f558885a8a56a105857"},
{file = "altgraph-0.17.2.tar.gz", hash = "sha256:ebf2269361b47d97b3b88e696439f6e4cbc607c17c51feb1754f90fb79839158"},
]
certifi = [
{file = "certifi-2020.6.20-py2.py3-none-any.whl", hash = "sha256:8fc0819f1f30ba15bdb34cceffb9ef04d99f420f68eb75d901e9560b8749fc41"},
{file = "certifi-2020.6.20.tar.gz", hash = "sha256:5930595817496dd21bb8dc35dad090f1c2cd0adfaf21204bf6732ca5d8ee34d3"},
]
chardet = [
{file = "chardet-3.0.4-py2.py3-none-any.whl", hash = "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691"},
{file = "chardet-3.0.4.tar.gz", hash = "sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae"},
]
dis3 = [
{file = "dis3-0.1.3-py2-none-any.whl", hash = "sha256:61f7720dd0d8749d23fda3d7227ce74d73da11c2fade993a67ab2f9852451b14"},
{file = "dis3-0.1.3-py3-none-any.whl", hash = "sha256:30b6412d33d738663e8ded781b138f4b01116437f0872aa56aa3adba6aeff218"},
{file = "dis3-0.1.3.tar.gz", hash = "sha256:9259b881fc1df02ed12ac25f82d4a85b44241854330b1a651e40e0c675cb2d1e"},
]
docutils = [
{file = "docutils-0.16-py2.py3-none-any.whl", hash = "sha256:0c5b78adfbf7762415433f5515cd5c9e762339e23369dbe8000d84a4bf4ab3af"},
{file = "docutils-0.16.tar.gz", hash = "sha256:c2de3a60e9e7d07be26b7f2b00ca0309c207e06c100f9cc2a94931fc75a478fc"},
]
future = [
{file = "future-0.18.2.tar.gz", hash = "sha256:b1bead90b70cf6ec3f0710ae53a525360fa360d306a86583adc6bf83a4db537d"},
]
idna = [
{file = "idna-2.9-py2.py3-none-any.whl", hash = "sha256:a068a21ceac8a4d63dbfd964670474107f541babbd2250d61922f029858365fa"},
{file = "idna-2.9.tar.gz", hash = "sha256:7588d1c14ae4c77d74036e8c22ff447b26d0fde8f007354fd48a7814db15b7cb"},
]
itsdangerous = [
{file = "itsdangerous-1.1.0-py2.py3-none-any.whl", hash = "sha256:b12271b2047cb23eeb98c8b5622e2e5c5e9abd9784a153e9d8ef9cb4dd09d749"},
{file = "itsdangerous-1.1.0.tar.gz", hash = "sha256:321b033d07f2a4136d3ec762eac9f16a10ccd60f53c0c91af90217ace7ba1f19"},
]
kivy = [
{file = "Kivy-1.11.1-cp27-cp27m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:11e85eaf6efbfa2362a3334ffdad179a1b0ca8d255cca79eaa6a2765560d4982"},
{file = "Kivy-1.11.1-cp27-cp27m-win32.whl", hash = "sha256:5c3d0f2749522d62e9cce09cd54b2d823bf1b6b644ff1f627be49de6f3e3cba0"},
{file = "Kivy-1.11.1-cp27-cp27m-win_amd64.whl", hash = "sha256:f835462dd9aa491272552ef079b948a088598e2e95d68bb1d885d2c3f3d4e2c3"},
{file = "Kivy-1.11.1-cp35-cp35m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:090d3ded9835a17477cd93fbdaf0a7c42ff2218981cf198ded5ad8795bc74391"},
{file = "Kivy-1.11.1-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:b85ccf165050cbf2ee8447671eebbc222b369b40f0e0038dd9547d49a5e37373"},
{file = "Kivy-1.11.1-cp35-cp35m-win32.whl", hash = "sha256:4a5480cbf837d3780c77a4f61b32b56d22ae9f03845e7a89dd3eaef1ae5fd037"},
{file = "Kivy-1.11.1-cp35-cp35m-win_amd64.whl", hash = "sha256:a687602d90c4629dd036f577ca39acb76ba581370f9d915f3cab99be818ba8ad"},
{file = "Kivy-1.11.1-cp36-cp36m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:c36652caa7f6c327dee834cfc699d5962d346b7a53e54bd81abc17c314226d89"},
{file = "Kivy-1.11.1-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:b7ef6aad43a86d8df3fb865db864e354f2155a748019f8517f69f65c1a29cb64"},
{file = "Kivy-1.11.1-cp36-cp36m-win32.whl", hash = "sha256:f3bea6e4a21991827885d04127fc6d09a0e974ecfa12da7bf5faae93562ea102"},
{file = "Kivy-1.11.1-cp36-cp36m-win_amd64.whl", hash = "sha256:ece170514db3f49844a41e4c910ad9ce9bc46da6f47a49158e11266bdcc6e479"},
{file = "Kivy-1.11.1-cp37-cp37m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:8819a27a09871af451760cb69486ced52e830c8a0a37480f22ef5e692f12c05b"},
{file = "Kivy-1.11.1-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:1a1ff32f8a95f1e175198cbab81fcd2596783b180d4eafe63e87d171aa7fdb5e"},
{file = "Kivy-1.11.1-cp37-cp37m-win32.whl", hash = "sha256:815a5c0b3b72fcd81ca7b2aa0744087163ed03e4cf9ab4e7c9733cea99fc1571"},
{file = "Kivy-1.11.1-cp37-cp37m-win_amd64.whl", hash = "sha256:1d28b198a64c30db8d94a0488e85f3037af60d514ab0d7ad5ab45add3ab77090"},
{file = "Kivy-1.11.1.tar.gz", hash = "sha256:4d0e596f74271e901b551f77661dde238df4765484fce9f5d1c72e8022984e84"},
]
"kivy-deps.angle" = [
{file = "kivy_deps.angle-0.3.0-cp310-cp310-win32.whl", hash = "sha256:7b56477c726e361592f794d49b2fdd96d579b7efd7225a8aadf7fd01d4e8cb80"},
{file = "kivy_deps.angle-0.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:a4b78fd9d47c76e5ff52fcbaa040920a2f97bff038f4c534346dd833dc8f3145"},
{file = "kivy_deps.angle-0.3.0-cp36-cp36m-win32.whl", hash = "sha256:a2cea09e8a5e899629466403fbd540459f1cdef8d08c6c479b6607b95309be02"},
{file = "kivy_deps.angle-0.3.0-cp36-cp36m-win_amd64.whl", hash = "sha256:b167e19b3eea55a9a8c606a607bb909ec1bedda88deee40347c780b310155a79"},
{file = "kivy_deps.angle-0.3.0-cp37-cp37m-win32.whl", hash = "sha256:d0e7b7b9eb9669837a5d70808a7ea45f2b61961b56f9f69a233bad6bd36ce260"},
{file = "kivy_deps.angle-0.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:b9d07976b0bf6bac724a42aa8ed5a8c7caa95609046db30c8f15bb731f8e4d36"},
{file = "kivy_deps.angle-0.3.0-cp38-cp38-win32.whl", hash = "sha256:99c40d53582a958748e251dfbd61aa67fb85963e27529ca08a21f2f5eeed04e1"},
{file = "kivy_deps.angle-0.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:50605fdd4c9fdbe9f717069734a598a9aba0afe5d3f0412afbe2ecff0326e92d"},
{file = "kivy_deps.angle-0.3.0-cp39-cp39-win32.whl", hash = "sha256:64ac7f33c000585dc30194e604aed925972c6b7c3848b5c3b073ae916fb0b55c"},
{file = "kivy_deps.angle-0.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:bb4d53f15a093214adbbe205c108ede5cc0f6af6eff104c1b8c468ddaaf6400a"},
]
"kivy-deps.glew" = [
{file = "kivy_deps.glew-0.1.12-cp27-cp27m-win32.whl", hash = "sha256:92e72fa2c425887987d1aa861c99537033dc20d68ae1c54864871f0401682586"},
{file = "kivy_deps.glew-0.1.12-cp27-cp27m-win_amd64.whl", hash = "sha256:c843104690c0c8f3a58105c53c57f31506f6f90562c18de00bd19317cc1045a7"},
{file = "kivy_deps.glew-0.1.12-cp35-cp35m-win32.whl", hash = "sha256:ee8ab67abb2c98d84feede657cae472e7723e529af07394244bdd33caafb1a38"},
{file = "kivy_deps.glew-0.1.12-cp35-cp35m-win_amd64.whl", hash = "sha256:ab81783a82bef88a8d2bcf8a93bc21df6b8b0db6ee551eb802727d18f9074b17"},
{file = "kivy_deps.glew-0.1.12-cp36-cp36m-win32.whl", hash = "sha256:45aa7f0e8d9bcf5fc1810c9c38bc20edf7dee61df81ecf62102e0f84153f924a"},
{file = "kivy_deps.glew-0.1.12-cp36-cp36m-win_amd64.whl", hash = "sha256:ef1116d99bd9cc737cb8c0e13e676955c17d6e4d6d1af5cfccef089a430071bb"},
{file = "kivy_deps.glew-0.1.12-cp37-cp37m-win32.whl", hash = "sha256:1e28e40017af9d081fc0fc95b4fadaf31d15e9f63478dcee1c4257d67079894e"},
{file = "kivy_deps.glew-0.1.12-cp37-cp37m-win_amd64.whl", hash = "sha256:6bb435620c3187d2c61054adb9ec277ed487256b457a0a7b1491bc0cb7247e18"},
{file = "kivy_deps.glew-0.1.12-cp38-cp38-win32.whl", hash = "sha256:09f72ee5ef33ff273332e2a229dc97d650d29818a0189339421949e4e0f63d93"},
{file = "kivy_deps.glew-0.1.12-cp38-cp38-win_amd64.whl", hash = "sha256:cf351aad171796f8051af8e49ec430a9aa128d8557d8643e73f2bb1e5f9c2dab"},
]
"kivy-deps.gstreamer" = [
{file = "kivy_deps.gstreamer-0.1.17-cp27-cp27m-win32.whl", hash = "sha256:309eca64dee5939f16f8465e5cbb08bdde7c90ded1af6a00690c7e928326af79"},
{file = "kivy_deps.gstreamer-0.1.17-cp27-cp27m-win_amd64.whl", hash = "sha256:0d9598d2d31c0e780adf4b767fa3a691123621fd0ffef94b83cf82c2da84341b"},
{file = "kivy_deps.gstreamer-0.1.17-cp35-cp35m-win32.whl", hash = "sha256:4f2ddd61d185310258d338ae80a646df7822efdd7d67e57f49dc7b87555c5d7e"},
{file = "kivy_deps.gstreamer-0.1.17-cp35-cp35m-win_amd64.whl", hash = "sha256:6fa9f76afe600baa221abee31ce7dc63e653d0affe0f6c558bfc4f35af96396f"},
{file = "kivy_deps.gstreamer-0.1.17-cp36-cp36m-win32.whl", hash = "sha256:c4709765e2b17c6c96b46a92207b0457def147544d825654077603eaf0d424de"},
{file = "kivy_deps.gstreamer-0.1.17-cp36-cp36m-win_amd64.whl", hash = "sha256:c29cfc63fe70a58dad889e631f1ba4711c9ea80103f2b2b8d670a97f093076c8"},
{file = "kivy_deps.gstreamer-0.1.17-cp37-cp37m-win32.whl", hash = "sha256:4d996377111e854b3dea90846f9b2f98766a44529fd8b72125e18c552381d928"},
{file = "kivy_deps.gstreamer-0.1.17-cp37-cp37m-win_amd64.whl", hash = "sha256:739cd331b9f33a822d700273674a79a3157054e9358a01a0d553f094a5f4a8c9"},
{file = "kivy_deps.gstreamer-0.1.17-cp38-cp38-win_amd64.whl", hash = "sha256:3d53d2c84c0a997c4cac6c239b1e0a6486e533836321003dc365ec42b97a664b"},
]
"kivy-deps.sdl2" = [
{file = "kivy_deps.sdl2-0.1.22-cp27-cp27m-win32.whl", hash = "sha256:1b987bdd4fbbcb31baf0d7fc9584ad99912179b8968311bb7e30fbeb14e98e0d"},
{file = "kivy_deps.sdl2-0.1.22-cp27-cp27m-win_amd64.whl", hash = "sha256:228128cdd8112dc7505ac43027a770476e9ef282e0b84ca68037133cd025960b"},
{file = "kivy_deps.sdl2-0.1.22-cp35-cp35m-win32.whl", hash = "sha256:053f26e8c05d5545bdbc7eeb8c450b8e4410ee355792e9345af536110fe247e2"},
{file = "kivy_deps.sdl2-0.1.22-cp35-cp35m-win_amd64.whl", hash = "sha256:5ce23f1a3286d6288751a12b0eaefd02f947ea101bb807e9781b964e496fc3f3"},
{file = "kivy_deps.sdl2-0.1.22-cp36-cp36m-win32.whl", hash = "sha256:96e1fa89fd8b5351f2d3c26bbffd50df8d554b03fba4025ecc941d773d241698"},
{file = "kivy_deps.sdl2-0.1.22-cp36-cp36m-win_amd64.whl", hash = "sha256:c3ace0ddde0e59cdcaf260eda1daa0c05ca9bf8cd0c4ea404539de25a5dcaec7"},
{file = "kivy_deps.sdl2-0.1.22-cp37-cp37m-win32.whl", hash = "sha256:7928746eaed51944c10d1bb36fcefebe3d1aff1b97ba32359c2c97ba74707e1b"},
{file = "kivy_deps.sdl2-0.1.22-cp37-cp37m-win_amd64.whl", hash = "sha256:2c2fd5a12a7a9afe3bb962b273561099a180edae91bb9c8f8386b72253fcae4a"},
{file = "kivy_deps.sdl2-0.1.22-cp38-cp38-win32.whl", hash = "sha256:9270fa8ed5130074b167a7a3a9c85efc3cfe3c04584ab084cb6ae9e4edfa8168"},
{file = "kivy_deps.sdl2-0.1.22-cp38-cp38-win_amd64.whl", hash = "sha256:92ed97d3247bc8ce98f336cbc940bb889310199326e9ccf251c49ae7e4b80de8"},
]
kivy-garden = [
{file = "Kivy Garden-0.1.4.tar.gz", hash = "sha256:9b7d9de5efacbcd0c4b3dd873b30622a86093c9965aa47b523c7a32f3eb34610"},
{file = "kivy-garden-0.1.4.tar.gz", hash = "sha256:c256f42788421273a08fbb0a228f0fb0e80dd86b629fb8c0920507f645be6c72"},
]
packaging = [
{file = "packaging-21.0-py3-none-any.whl", hash = "sha256:c86254f9220d55e31cc94d69bade760f0847da8000def4dfe1c6b872fd14ff14"},
{file = "packaging-21.0.tar.gz", hash = "sha256:7dc96269f53a4ccec5c0670940a4281106dd0bb343f47b7471f779df49c2fbe7"},
]
pdf2image = [
{file = "pdf2image-1.12.1.tar.gz", hash = "sha256:a0d9906f5507192210a8d5d7ead63145e9dec4bccc4564b1fb644e923913c31c"},
]
pefile = [
{file = "pefile-2021.9.3.tar.gz", hash = "sha256:344a49e40a94e10849f0fe34dddc80f773a12b40675bf2f7be4b8be578bdd94a"},
]
pillow = [
{file = "Pillow-7.2.0-cp35-cp35m-macosx_10_10_intel.whl", hash = "sha256:1ca594126d3c4def54babee699c055a913efb01e106c309fa6b04405d474d5ae"},
{file = "Pillow-7.2.0-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:c92302a33138409e8f1ad16731568c55c9053eee71bb05b6b744067e1b62380f"},
{file = "Pillow-7.2.0-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:8dad18b69f710bf3a001d2bf3afab7c432785d94fcf819c16b5207b1cfd17d38"},
{file = "Pillow-7.2.0-cp35-cp35m-manylinux2014_aarch64.whl", hash = "sha256:431b15cffbf949e89df2f7b48528be18b78bfa5177cb3036284a5508159492b5"},
{file = "Pillow-7.2.0-cp35-cp35m-win32.whl", hash = "sha256:09d7f9e64289cb40c2c8d7ad674b2ed6105f55dc3b09aa8e4918e20a0311e7ad"},
{file = "Pillow-7.2.0-cp35-cp35m-win_amd64.whl", hash = "sha256:0295442429645fa16d05bd567ef5cff178482439c9aad0411d3f0ce9b88b3a6f"},
{file = "Pillow-7.2.0-cp36-cp36m-macosx_10_10_x86_64.whl", hash = "sha256:ec29604081f10f16a7aea809ad42e27764188fc258b02259a03a8ff7ded3808d"},
{file = "Pillow-7.2.0-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:612cfda94e9c8346f239bf1a4b082fdd5c8143cf82d685ba2dba76e7adeeb233"},
{file = "Pillow-7.2.0-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:0a80dd307a5d8440b0a08bd7b81617e04d870e40a3e46a32d9c246e54705e86f"},
{file = "Pillow-7.2.0-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:06aba4169e78c439d528fdeb34762c3b61a70813527a2c57f0540541e9f433a8"},
{file = "Pillow-7.2.0-cp36-cp36m-win32.whl", hash = "sha256:f7e30c27477dffc3e85c2463b3e649f751789e0f6c8456099eea7ddd53be4a8a"},
{file = "Pillow-7.2.0-cp36-cp36m-win_amd64.whl", hash = "sha256:ffe538682dc19cc542ae7c3e504fdf54ca7f86fb8a135e59dd6bc8627eae6cce"},
{file = "Pillow-7.2.0-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:94cf49723928eb6070a892cb39d6c156f7b5a2db4e8971cb958f7b6b104fb4c4"},
{file = "Pillow-7.2.0-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:6edb5446f44d901e8683ffb25ebdfc26988ee813da3bf91e12252b57ac163727"},
{file = "Pillow-7.2.0-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:52125833b070791fcb5710fabc640fc1df07d087fc0c0f02d3661f76c23c5b8b"},
{file = "Pillow-7.2.0-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:9ad7f865eebde135d526bb3163d0b23ffff365cf87e767c649550964ad72785d"},
{file = "Pillow-7.2.0-cp37-cp37m-win32.whl", hash = "sha256:c79f9c5fb846285f943aafeafda3358992d64f0ef58566e23484132ecd8d7d63"},
{file = "Pillow-7.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:d350f0f2c2421e65fbc62690f26b59b0bcda1b614beb318c81e38647e0f673a1"},
{file = "Pillow-7.2.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:6d7741e65835716ceea0fd13a7d0192961212fd59e741a46bbed7a473c634ed6"},
{file = "Pillow-7.2.0-cp38-cp38-manylinux1_i686.whl", hash = "sha256:edf31f1150778abd4322444c393ab9c7bd2af271dd4dafb4208fb613b1f3cdc9"},
{file = "Pillow-7.2.0-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:d08b23fdb388c0715990cbc06866db554e1822c4bdcf6d4166cf30ac82df8c41"},
{file = "Pillow-7.2.0-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:5e51ee2b8114def244384eda1c82b10e307ad9778dac5c83fb0943775a653cd8"},
{file = "Pillow-7.2.0-cp38-cp38-win32.whl", hash = "sha256:725aa6cfc66ce2857d585f06e9519a1cc0ef6d13f186ff3447ab6dff0a09bc7f"},
{file = "Pillow-7.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:a060cf8aa332052df2158e5a119303965be92c3da6f2d93b6878f0ebca80b2f6"},
{file = "Pillow-7.2.0-pp36-pypy36_pp73-macosx_10_10_x86_64.whl", hash = "sha256:9c87ef410a58dd54b92424ffd7e28fd2ec65d2f7fc02b76f5e9b2067e355ebf6"},
{file = "Pillow-7.2.0-pp36-pypy36_pp73-manylinux2010_x86_64.whl", hash = "sha256:e901964262a56d9ea3c2693df68bc9860b8bdda2b04768821e4c44ae797de117"},
{file = "Pillow-7.2.0-pp36-pypy36_pp73-win32.whl", hash = "sha256:25930fadde8019f374400f7986e8404c8b781ce519da27792cbe46eabec00c4d"},
{file = "Pillow-7.2.0.tar.gz", hash = "sha256:97f9e7953a77d5a70f49b9a48da7776dc51e9b738151b22dacf101641594a626"},
]
pygments = [
{file = "Pygments-2.6.1-py3-none-any.whl", hash = "sha256:ff7a40b4860b727ab48fad6360eb351cc1b33cbf9b15a0f689ca5353e9463324"},
{file = "Pygments-2.6.1.tar.gz", hash = "sha256:647344a061c249a3b74e230c739f434d7ea4d8b1d5f3721bc0f3558049b38f44"},
]
pyinstaller = [
{file = "PyInstaller-3.6.tar.gz", hash = "sha256:3730fa80d088f8bb7084d32480eb87cbb4ddb64123363763cf8f2a1378c1c4b7"},
]
pyparsing = [
{file = "pyparsing-2.4.7-py2.py3-none-any.whl", hash = "sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b"},
{file = "pyparsing-2.4.7.tar.gz", hash = "sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1"},
]
pywin32-ctypes = [
{file = "pywin32-ctypes-0.2.0.tar.gz", hash = "sha256:24ffc3b341d457d48e8922352130cf2644024a4ff09762a2261fd34c36ee5942"},
{file = "pywin32_ctypes-0.2.0-py2.py3-none-any.whl", hash = "sha256:9dc2d991b3479cc2df15930958b674a48a227d5361d413827a4cfd0b5876fc98"},
]
requests = [
{file = "requests-2.24.0-py2.py3-none-any.whl", hash = "sha256:fe75cc94a9443b9246fc7049224f75604b113c36acb93f87b80ed42c44cbb898"},
{file = "requests-2.24.0.tar.gz", hash = "sha256:b3559a131db72c33ee969480840fff4bb6dd111de7dd27c8ee1f820f4f00231b"},
]
urllib3 = [
{file = "urllib3-1.25.9-py2.py3-none-any.whl", hash = "sha256:88206b0eb87e6d677d424843ac5209e3fb9d0190d0ee169599165ec25e9d9115"},
{file = "urllib3-1.25.9.tar.gz", hash = "sha256:3018294ebefce6572a474f0604c2021e33b3fd8006ecd11d62107a5d2a963527"},
]
xlrd = [
{file = "xlrd-1.2.0-py2.py3-none-any.whl", hash = "sha256:e551fb498759fa3a5384a94ccd4c3c02eb7c00ea424426e212ac0c57be9dfbde"},
{file = "xlrd-1.2.0.tar.gz", hash = "sha256:546eb36cee8db40c3eaa46c351e67ffee6eeb5fa2650b71bc4c758a29a1b29b2"},
]
lock-version = "2.0"
python-versions = ">=3.8,<3.14"
content-hash = "6db8fff0987f3dadb02cbf0e510a2d04b01ab2dc6d7b0fb32a0e33a8d30b3a58"

View File

@ -5,11 +5,13 @@ description = ""
authors = ["Your Name <you@example.com>"]
[tool.poetry.dependencies]
python = "^3.8"
python = ">=3.8,<3.14"
flake8 = "^4.0.1"
pyinstaller = "6.10.0"
[tool.poetry.dev-dependencies]
[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"
build-backend = "poetry.core.masonry.api"

View File

@ -7,6 +7,6 @@ Kivy-Garden==0.1.4
packaging==20.7
pdf2image==1.12.1
Pygments==2.6.1
requests==2.24.0
urllib3==1.25.10
requests==2.32.2
urllib3==1.26.19
xlrd==1.2.0

View File

@ -30,18 +30,18 @@ pdf2image==1.12.1
pefile==2021.9.3; python_full_version >= '3.6.0'
pillow==7.2
pillow>=10.2.0
pygments==2.6.1
pyinstaller==3.6
pyinstaller==6.10.0
pyparsing==2.4.7; python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2'
pywin32-ctypes==0.2.0
requests==2.24.0
requests==2.32.2
urllib3==1.25.9
urllib3==1.26.19
xlrd==1.2.0

View File

@ -0,0 +1,43 @@
import {desugarVersion, pythonVersionToSemantic} from '../src/find-python';
describe('desugarVersion', () => {
it.each([
['3.13', {version: '3.13', freethreaded: false}],
['3.13t', {version: '3.13', freethreaded: true}],
['3.13.1', {version: '3.13.1', freethreaded: false}],
['3.13.1t', {version: '3.13.1', freethreaded: true}],
['3.14-dev', {version: '~3.14.0-0', freethreaded: false}],
['3.14t-dev', {version: '~3.14.0-0', freethreaded: true}]
])('%s -> %s', (input, expected) => {
expect(desugarVersion(input)).toEqual(expected);
});
});
// Test the combined desugarVersion and pythonVersionToSemantic functions
describe('pythonVersions', () => {
it.each([
['3.13', {version: '3.13', freethreaded: false}],
['3.13t', {version: '3.13', freethreaded: true}],
['3.13.1', {version: '3.13.1', freethreaded: false}],
['3.13.1t', {version: '3.13.1', freethreaded: true}],
['3.14-dev', {version: '~3.14.0-0', freethreaded: false}],
['3.14t-dev', {version: '~3.14.0-0', freethreaded: true}]
])('%s -> %s', (input, expected) => {
const {version, freethreaded} = desugarVersion(input);
const semanticVersionSpec = pythonVersionToSemantic(version, false);
expect({version: semanticVersionSpec, freethreaded}).toEqual(expected);
});
it.each([
['3.13', {version: '~3.13.0-0', freethreaded: false}],
['3.13t', {version: '~3.13.0-0', freethreaded: true}],
['3.13.1', {version: '3.13.1', freethreaded: false}],
['3.13.1t', {version: '3.13.1', freethreaded: true}],
['3.14-dev', {version: '~3.14.0-0', freethreaded: false}],
['3.14t-dev', {version: '~3.14.0-0', freethreaded: true}]
])('%s (allowPreReleases=true) -> %s', (input, expected) => {
const {version, freethreaded} = desugarVersion(input);
const semanticVersionSpec = pythonVersionToSemantic(version, true);
expect({version: semanticVersionSpec, freethreaded}).toEqual(expected);
});
});

View File

@ -56,7 +56,7 @@ describe('Finder tests', () => {
await io.mkdirP(pythonDir);
fs.writeFileSync(`${pythonDir}.complete`, 'hello');
// This will throw if it doesn't find it in the cache and in the manifest (because no such version exists)
await finder.useCpythonVersion('3.x', 'x64', true, false, false);
await finder.useCpythonVersion('3.x', 'x64', true, false, false, false);
expect(spyCoreAddPath).toHaveBeenCalled();
expect(spyCoreExportVariable).toHaveBeenCalledWith(
'pythonLocation',
@ -73,7 +73,7 @@ describe('Finder tests', () => {
await io.mkdirP(pythonDir);
fs.writeFileSync(`${pythonDir}.complete`, 'hello');
// This will throw if it doesn't find it in the cache and in the manifest (because no such version exists)
await finder.useCpythonVersion('3.x', 'x64', false, false, false);
await finder.useCpythonVersion('3.x', 'x64', false, false, false, false);
expect(spyCoreAddPath).not.toHaveBeenCalled();
expect(spyCoreExportVariable).not.toHaveBeenCalled();
});
@ -96,7 +96,7 @@ describe('Finder tests', () => {
});
// This will throw if it doesn't find it in the cache and in the manifest (because no such version exists)
await expect(
finder.useCpythonVersion('1.2.3', 'x64', true, false, false)
finder.useCpythonVersion('1.2.3', 'x64', true, false, false, false)
).resolves.toEqual({
impl: 'CPython',
version: '1.2.3'
@ -135,7 +135,14 @@ describe('Finder tests', () => {
});
// This will throw if it doesn't find it in the manifest (because no such version exists)
await expect(
finder.useCpythonVersion('1.2.4-beta.2', 'x64', false, false, false)
finder.useCpythonVersion(
'1.2.4-beta.2',
'x64',
false,
false,
false,
false
)
).resolves.toEqual({
impl: 'CPython',
version: '1.2.4-beta.2'
@ -186,7 +193,7 @@ describe('Finder tests', () => {
fs.writeFileSync(`${pythonDir}.complete`, 'hello');
// This will throw if it doesn't find it in the cache and in the manifest (because no such version exists)
await finder.useCpythonVersion('1.2', 'x64', true, true, false);
await finder.useCpythonVersion('1.2', 'x64', true, true, false, false);
expect(infoSpy).toHaveBeenCalledWith("Resolved as '1.2.3'");
expect(infoSpy).toHaveBeenCalledWith(
@ -197,7 +204,14 @@ describe('Finder tests', () => {
);
expect(installSpy).toHaveBeenCalled();
expect(addPathSpy).toHaveBeenCalledWith(expPath);
await finder.useCpythonVersion('1.2.4-beta.2', 'x64', false, true, false);
await finder.useCpythonVersion(
'1.2.4-beta.2',
'x64',
false,
true,
false,
false
);
expect(spyCoreAddPath).toHaveBeenCalled();
expect(spyCoreExportVariable).toHaveBeenCalledWith(
'pythonLocation',
@ -224,7 +238,7 @@ describe('Finder tests', () => {
});
// This will throw if it doesn't find it in the cache and in the manifest (because no such version exists)
await expect(
finder.useCpythonVersion('1.2', 'x64', false, false, false)
finder.useCpythonVersion('1.2', 'x64', false, false, false, false)
).resolves.toEqual({
impl: 'CPython',
version: '1.2.3'
@ -251,17 +265,17 @@ describe('Finder tests', () => {
});
// This will throw if it doesn't find it in the cache and in the manifest (because no such version exists)
await expect(
finder.useCpythonVersion('1.1', 'x64', false, false, false)
finder.useCpythonVersion('1.1', 'x64', false, false, false, false)
).rejects.toThrow();
await expect(
finder.useCpythonVersion('1.1', 'x64', false, false, true)
finder.useCpythonVersion('1.1', 'x64', false, false, true, false)
).resolves.toEqual({
impl: 'CPython',
version: '1.1.0-beta.2'
});
// Check 1.1.0 version specifier does not fallback to '1.1.0-beta.2'
await expect(
finder.useCpythonVersion('1.1.0', 'x64', false, false, true)
finder.useCpythonVersion('1.1.0', 'x64', false, false, true, false)
).rejects.toThrow();
});
@ -269,7 +283,14 @@ describe('Finder tests', () => {
// This will throw if it doesn't find it in the cache and in the manifest (because no such version exists)
let thrown = false;
try {
await finder.useCpythonVersion('3.300000', 'x64', true, false, false);
await finder.useCpythonVersion(
'3.300000',
'x64',
true,
false,
false,
false
);
} catch {
thrown = true;
}

View File

@ -12,7 +12,11 @@ import {
getVersionInputFromFile,
getVersionInputFromPlainFile,
getVersionInputFromTomlFile,
getNextPageUrl
getNextPageUrl,
isGhes,
IS_WINDOWS,
getDownloadFileName,
getVersionInputFromToolVersions
} from '../src/utils';
jest.mock('@actions/cache');
@ -136,6 +140,82 @@ describe('Version from file test', () => {
expect(_fn(pythonVersionFilePath)).toEqual([]);
}
);
it.each([getVersionInputFromToolVersions])(
'Version from .tool-versions',
async _fn => {
const toolVersionFileName = '.tool-versions';
const toolVersionFilePath = path.join(tempDir, toolVersionFileName);
const toolVersionContent = 'python 3.9.10\nnodejs 16';
fs.writeFileSync(toolVersionFilePath, toolVersionContent);
expect(_fn(toolVersionFilePath)).toEqual(['3.9.10']);
}
);
it.each([getVersionInputFromToolVersions])(
'Version from .tool-versions with comment',
async _fn => {
const toolVersionFileName = '.tool-versions';
const toolVersionFilePath = path.join(tempDir, toolVersionFileName);
const toolVersionContent = '# python 3.8\npython 3.9';
fs.writeFileSync(toolVersionFilePath, toolVersionContent);
expect(_fn(toolVersionFilePath)).toEqual(['3.9']);
}
);
it.each([getVersionInputFromToolVersions])(
'Version from .tool-versions with whitespace',
async _fn => {
const toolVersionFileName = '.tool-versions';
const toolVersionFilePath = path.join(tempDir, toolVersionFileName);
const toolVersionContent = ' python 3.10 ';
fs.writeFileSync(toolVersionFilePath, toolVersionContent);
expect(_fn(toolVersionFilePath)).toEqual(['3.10']);
}
);
it.each([getVersionInputFromToolVersions])(
'Version from .tool-versions with v prefix',
async _fn => {
const toolVersionFileName = '.tool-versions';
const toolVersionFilePath = path.join(tempDir, toolVersionFileName);
const toolVersionContent = 'python v3.9.10';
fs.writeFileSync(toolVersionFilePath, toolVersionContent);
expect(_fn(toolVersionFilePath)).toEqual(['3.9.10']);
}
);
it.each([getVersionInputFromToolVersions])(
'Version from .tool-versions with pypy version',
async _fn => {
const toolVersionFileName = '.tool-versions';
const toolVersionFilePath = path.join(tempDir, toolVersionFileName);
const toolVersionContent = 'python pypy3.10-7.3.14';
fs.writeFileSync(toolVersionFilePath, toolVersionContent);
expect(_fn(toolVersionFilePath)).toEqual(['pypy3.10-7.3.14']);
}
);
it.each([getVersionInputFromToolVersions])(
'Version from .tool-versions with alpha Releases',
async _fn => {
const toolVersionFileName = '.tool-versions';
const toolVersionFilePath = path.join(tempDir, toolVersionFileName);
const toolVersionContent = 'python 3.14.0a5t';
fs.writeFileSync(toolVersionFilePath, toolVersionContent);
expect(_fn(toolVersionFilePath)).toEqual(['3.14.0a5t']);
}
);
it.each([getVersionInputFromToolVersions])(
'Version from .tool-versions with dev suffix',
async _fn => {
const toolVersionFileName = '.tool-versions';
const toolVersionFilePath = path.join(tempDir, toolVersionFileName);
const toolVersionContent = 'python 3.14t-dev';
fs.writeFileSync(toolVersionFilePath, toolVersionContent);
expect(_fn(toolVersionFilePath)).toEqual(['3.14t-dev']);
}
);
});
describe('getNextPageUrl', () => {
@ -159,3 +239,75 @@ describe('getNextPageUrl', () => {
expect(getNextPageUrl(generateResponse(page2Links))).toBeNull();
});
});
describe('getDownloadFileName', () => {
const originalEnv = process.env;
const tempDir = path.join(__dirname, 'runner', 'temp');
beforeEach(() => {
process.env = {...originalEnv};
});
afterEach(() => {
process.env = originalEnv;
});
it('should return the correct path on Windows', () => {
if (IS_WINDOWS) {
process.env['RUNNER_TEMP'] = tempDir;
const downloadUrl =
'https://github.com/actions/sometool/releases/tag/1.2.3-20200402.6/sometool-1.2.3-win32-x64.zip';
const expectedPath = path.join(
process.env.RUNNER_TEMP,
path.basename(downloadUrl)
);
expect(getDownloadFileName(downloadUrl)).toBe(expectedPath);
}
});
it('should return undefined on non-Windows', () => {
if (!IS_WINDOWS) {
const downloadUrl =
'https://github.com/actions/sometool/releases/tag/1.2.3-20200402.6/sometool-1.2.3-linux-x64.tar.gz';
expect(getDownloadFileName(downloadUrl)).toBeUndefined();
}
});
});
describe('isGhes', () => {
const pristineEnv = process.env;
beforeEach(() => {
jest.resetModules();
process.env = {...pristineEnv};
});
afterAll(() => {
process.env = pristineEnv;
});
it('returns false when the GITHUB_SERVER_URL environment variable is not defined', async () => {
delete process.env['GITHUB_SERVER_URL'];
expect(isGhes()).toBeFalsy();
});
it('returns false when the GITHUB_SERVER_URL environment variable is set to github.com', async () => {
process.env['GITHUB_SERVER_URL'] = 'https://github.com';
expect(isGhes()).toBeFalsy();
});
it('returns false when the GITHUB_SERVER_URL environment variable is set to a GitHub Enterprise Cloud-style URL', async () => {
process.env['GITHUB_SERVER_URL'] = 'https://contoso.ghe.com';
expect(isGhes()).toBeFalsy();
});
it('returns false when the GITHUB_SERVER_URL environment variable has a .localhost suffix', async () => {
process.env['GITHUB_SERVER_URL'] = 'https://mock-github.localhost';
expect(isGhes()).toBeFalsy();
});
it('returns true when the GITHUB_SERVER_URL environment variable is set to some other URL', async () => {
process.env['GITHUB_SERVER_URL'] = 'https://src.onpremise.fabrikam.com';
expect(isGhes()).toBeTruthy();
});
});

View File

@ -0,0 +1,3 @@
import sys
if __name__ == '__main__':
print(f"Using GIL: {sys._is_gil_enabled()}\n")

View File

@ -11,7 +11,7 @@ inputs:
description: "Used to specify a package manager for caching in the default directory. Supported values: pip, pipenv, poetry."
required: false
architecture:
description: "The target architecture (x86, x64) of the Python or PyPy interpreter."
description: "The target architecture (x86, x64, arm64) of the Python or PyPy interpreter."
check-latest:
description: "Set this option if you want the action to check for the latest available version that satisfies the version spec."
default: false
@ -26,6 +26,9 @@ inputs:
allow-prereleases:
description: "When 'true', a version range passed to 'python-version' input will match prerelease versions if no GA versions are found. Only 'x.y' version range is supported for CPython."
default: false
freethreaded:
description: "When 'true', use the freethreaded version of Python."
default: false
outputs:
python-version:
description: "The installed Python or PyPy version. Useful when given a version range as input."

9908
dist/cache-save/index.js vendored

File diff suppressed because one or more lines are too long

10971
dist/setup/index.js vendored

File diff suppressed because one or more lines are too long

View File

@ -27,14 +27,14 @@
### Specifying a Python version
If there is a specific version of Python that you need and you don't want to worry about any potential breaking changes due to patch updates (going from `3.7.5` to `3.7.6` for example), you should specify the **exact major, minor, and patch version** (such as `3.7.5`):
If there is a specific version of Python that you need and you don't want to worry about any potential breaking changes due to patch updates (going from `3.12.6` to `3.12.7` for example), you should specify the **exact major, minor, and patch version** (such as `3.12.6`):
```yaml
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.7.5'
python-version: '3.12.6'
- run: python my_script.py
```
@ -48,7 +48,7 @@ steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.7'
python-version: '3.13'
- run: python my_script.py
```
- There will be a single patch version already installed on each runner for every minor version of Python that is supported.
@ -62,7 +62,7 @@ steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.12.0-alpha.1'
python-version: '3.14.0-alpha.1'
- run: python my_script.py
```
@ -73,7 +73,32 @@ steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.12-dev'
python-version: '3.14-dev'
- run: python my_script.py
```
You can specify the [free threading](https://docs.python.org/3/howto/free-threading-python.html) version of Python by setting the `freethreaded` input to `true` or by using the special **t** suffix in some cases.
You can use the **t** suffix when specifying the major and minor version (e.g., `3.13t`), with a patch version (e.g., `3.13.1t`), or with the **x.y-dev syntax** (e.g., `3.14t-dev`).
Free threaded Python is only available starting with the 3.13 release.
```yaml
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.13t'
- run: python my_script.py
```
Note that the **t** suffix is not `semver` syntax. If you wish to specify a range, you must use the `freethreaded` input instead of the `t` suffix.
```yaml
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '>=3.13'
freethreaded: true
- run: python my_script.py
```
@ -86,7 +111,7 @@ steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '>=3.9 <3.10'
python-version: '>=3.9 <3.14'
- run: python my_script.py
```
@ -97,11 +122,11 @@ steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.12.0-alpha - 3.12.0'
python-version: '3.13.0-alpha - 3.13.0'
- run: python my_script.py
```
- **[x-ranges](https://github.com/npm/node-semver#x-ranges-12x-1x-12-)** to specify the latest stable version of Python (for specified major version):
- **[x-ranges](https://github.com/npm/node-semver#x-ranges-12x-1x-12-)** to specify the latest stable version of Python (for the specified major version):
```yaml
steps:
@ -118,8 +143,8 @@ The version of PyPy should be specified in the format `pypy<python_version>[-v<p
The `-v<pypy_version>` parameter is optional and can be skipped. The latest PyPy version will be used in this case.
```
pypy3.10 or pypy-3.10 # the latest available version of PyPy that supports Python 3.10
pypy3.9 or pypy-3.9 # the latest available version of PyPy that supports Python 3.9
pypy2.7 or pypy-2.7 # the latest available version of PyPy that supports Python 2.7
pypy3.7-v7.3.3 or pypy-3.7-v7.3.3 # Python 3.7 and PyPy 7.3.3
pypy3.7-v7.x or pypy-3.7-v7.x # Python 3.7 and the latest available PyPy 7.x
pypy3.7-v7.3.3rc1 or pypy-3.7-v7.3.3rc1 # Python 3.7 and preview version of PyPy
@ -135,8 +160,8 @@ jobs:
strategy:
matrix:
python-version:
- 'pypy3.7' # the latest available version of PyPy that supports Python 3.7
- 'pypy3.7-v7.3.3' # Python 3.7 and PyPy 7.3.3
- 'pypy3.10' # the latest available version of PyPy that supports Python 3.10
- 'pypy3.10-v7.3.17' # Python 3.10 and PyPy 7.3.17
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
@ -144,7 +169,7 @@ jobs:
python-version: ${{ matrix.python-version }}
- run: python my_script.py
```
More details on PyPy syntax can be found in the [Available versions of PyPy](#pypy) section.
More details on the syntax for PyPy can be found in the [Available versions of PyPy](#pypy) section.
### Specifying multiple Python/PyPy versions
The python-version input can get multiple python/pypy versions. The last specified version will be used as a default one.
@ -160,9 +185,9 @@ jobs:
- uses: actions/setup-python@v5
with:
python-version: |
3.8
3.9
3.10
3.11
3.12
3.13
- run: python my_script.py
```
@ -177,9 +202,9 @@ jobs:
- uses: actions/setup-python@v5
with:
python-version: |
pypy-3.7-v7.3.x
pypy3.9-nightly
pypy3.8
pypy-3.10-v7.3.x
pypy3.10-nightly
pypy3.9
- run: python my_script.py
```
@ -194,17 +219,17 @@ jobs:
- uses: actions/setup-python@v5
with:
python-version: |
3.8
3.9
pypy3.9-nightly
pypy3.8
3.10
3.11
3.12
pypy3.10-nightly
pypy3.10
3.13
- run: python my_script.py
```
### Matrix Testing
Using `setup-python` it's possible to use [matrix syntax](https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstrategymatrix) to install several versions of Python or PyPy:
Using `setup-python` it's possible to use the [matrix syntax](https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstrategymatrix) to install several versions of Python or PyPy:
```yaml
jobs:
@ -212,7 +237,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: [ '2.x', '3.x', 'pypy2.7', 'pypy3.8', 'pypy3.9' ]
python-version: ['3.x', 'pypy3.8', 'pypy3.9' ]
name: Python ${{ matrix.python-version }} sample
steps:
- uses: actions/checkout@v4
@ -231,14 +256,15 @@ jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
python-version: ['2.7', '3.7', '3.8', '3.9', '3.10', 'pypy2.7', 'pypy3.9']
python-version: ['3.9', '3.10', '3.11', 'pypy3.9']
exclude:
- os: macos-latest
python-version: '3.8'
python-version: '3.9'
- os: windows-latest
python-version: '3.6'
python-version: '3.9'
steps:
- uses: actions/checkout@v4
- name: Set up Python
@ -246,6 +272,7 @@ jobs:
with:
python-version: ${{ matrix.python-version }}
- name: Display Python version
if: ${{ matrix.python-version != 'pypy3.9' }} # Use single quotes in expressions for input `python-version`
run: python --version
```
@ -253,7 +280,7 @@ jobs:
`setup-python` action can read Python or PyPy version from a version file. `python-version-file` input is used for specifying the path to the version file. If the file that was supplied to `python-version-file` input doesn't exist, the action will fail with error.
>In case both `python-version` and `python-version-file` inputs are supplied, the `python-version-file` input will be ignored due to its lower priority.
>In case both `python-version` and `python-version-file` inputs are supplied, the `python-version-file` input will be ignored due to its lower priority. The .tool-versions file supports version specifications in accordance with asdf standards, adhering to Semantic Versioning ([semver](https://semver.org)).
```yaml
steps:
@ -273,6 +300,15 @@ steps:
- run: python my_script.py
```
```yaml
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version-file: '.tool-versions' # Read python version from a file .tool-versions
- run: python my_script.py
```
## Check latest version
The `check-latest` flag defaults to `false`. Use the default or set `check-latest` to `false` if you prefer stability and if you want to ensure a specific `Python or PyPy` version is always used.
@ -284,11 +320,11 @@ steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.7'
python-version: '3.13'
check-latest: true
- run: python my_script.py
```
> Setting `check-latest` to `true` has performance implications as downloading `Python or PyPy` versions is slower than using cached versions.
> Setting `check-latest` to `true` impacts performance as downloading `Python or PyPy` versions is slower than using cached versions.
## Caching packages
@ -299,7 +335,7 @@ steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.9'
python-version: '3.13'
cache: 'pipenv'
- name: Install pipenv
run: curl https://raw.githubusercontent.com/pypa/pipenv/master/get-pipenv.py | python
@ -314,11 +350,12 @@ steps:
run: pipx install poetry
- uses: actions/setup-python@v5
with:
python-version: '3.9'
python-version: '3.13'
cache: 'poetry'
- run: poetry install
- run: poetry run pytest
```
>**Note:** If the `setup-python` version does not match the version specified in `pyproject.toml` and the python version in `pyproject.toml` is less than the runner's python version, `poetry install` will default to using the runner's Python version.
**Using a list of file paths to cache dependencies**
```yaml
@ -326,7 +363,7 @@ steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.9'
python-version: '3.13'
cache: 'pipenv'
cache-dependency-path: |
server/app/Pipfile.lock
@ -341,7 +378,7 @@ steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.9'
python-version: '3.13'
cache: 'pip'
cache-dependency-path: '**/requirements-dev.txt'
- run: pip install -r subdirectory/requirements-dev.txt
@ -353,7 +390,7 @@ steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.10'
python-version: '3.13'
cache: 'pip'
cache-dependency-path: |
**/setup.cfg
@ -368,7 +405,7 @@ steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.11'
python-version: '3.13'
cache: 'pip'
cache-dependency-path: setup.py
- run: pip install -e .
@ -381,7 +418,7 @@ steps:
### `python-version`
Using **python-version** output it's possible to get the installed by action Python or PyPy version. This output is useful when the input `python-version` is given as a range (e.g. 3.8.0 - 3.10.0 ), but down in a workflow you need to operate with the exact installed version (e.g. 3.10.1).
Using **python-version** output, it's possible to get the precise Python or PyPy version installed by the action. This output is useful when the input `python-version` is given as a range (e.g. 3.9.0 - 3.12.0, 3.x ), but down the line you need to operate (such as in an `if:` statement) with the exact installed version (e.g. 3.12.0).
```yaml
jobs:
@ -390,15 +427,15 @@ jobs:
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
id: cp310
id: cp312
with:
python-version: "3.8.0 - 3.10.0"
- run: echo '${{ steps.cp310.outputs.python-version }}'
python-version: "3.9.0 - 3.12.0"
- run: echo '${{ steps.cp312.outputs.python-version }}'
```
### `python-path`
**python-path** output is available with the absolute path of the Python or PyPy interpreter executable if you need it:
**python-path** output is available to get the absolute path of the Python or PyPy interpreter executable:
```yaml
jobs:
@ -407,10 +444,10 @@ jobs:
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
id: cp310
id: cp313
with:
python-version: "3.10"
- run: pipx run --python '${{ steps.cp310.outputs.python-path }}' nox --version
python-version: "3.13"
- run: pipx run --python '${{ steps.cp313.outputs.python-path }}' nox --version
```
### `cache-hit`
@ -423,11 +460,11 @@ jobs:
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
id: cp310
id: cp313
with:
python-version: "3.8.0"
python-version: "3.13.0"
cache: "poetry"
- run: echo '${{ steps.cp310.outputs.cache-hit }}' # true if cache-hit occurred on the primary key
- run: echo '${{ steps.cp313.outputs.cache-hit }}' # true if cache-hit occurred on the primary key
```
## Environment variables
@ -447,18 +484,18 @@ The `update-environment` flag defaults to `true`.
With this setting, the action will add/update environment variables (e.g. `PATH`, `PKG_CONFIG_PATH`, `pythonLocation`) for Python or PyPy to just work out of the box.
If `update-environment` is set to `false`, the action will not add/update environment variables.
This can prove useful if you want the only side-effect to be to ensure Python or PyPy is installed and rely on the `python-path` output to run executable.
This can prove useful if you only want the side-effect to ensure that Python or PyPy is installed and rely on the `python-path` output to run the executable.
Such a requirement on side-effect could be because you don't want your composite action messing with your user's workflows.
```yaml
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
id: cp310
id: cp313
with:
python-version: '3.10'
python-version: '3.13'
update-environment: false
- run: ${{ steps.cp310.outputs.python-path }} my_script.py
- run: ${{ steps.cp313.outputs.python-path }} my_script.py
```
## Available versions of Python, PyPy and GraalPy
### Python
@ -467,10 +504,10 @@ Such a requirement on side-effect could be because you don't want your composite
- Preinstalled versions of Python in the tool cache on GitHub-hosted runners.
- For detailed information regarding the available versions of Python that are installed, see [Supported software](https://docs.github.com/en/actions/reference/specifications-for-github-hosted-runners#supported-software).
- For every minor version of Python, expect only the latest patch to be preinstalled.
- If `3.8.1` is installed for example, and `3.8.2` is released, expect `3.8.1` to be removed and replaced by `3.8.2` in the tool cache.
- If the exact patch version doesn't matter to you, specifying just the major and minor versions 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.
- Use `-dev` instead of a patch number (e.g., `3.12-dev`) to install the latest patch version release for a given minor version, *alpha and beta releases included*.
- For every minor versions of Python, expect only the latest patch to be preinstalled.
- If `3.12.1` is installed for example, and `3.12.2` is released, expect `3.12.1` to be removed and replaced by `3.12.2` in the tool cache.
- If the exact patch version doesn't matter to you, specifying just the major and minor versions will get you the latest preinstalled patch version. In the previous example, the version spec `3.12` will use the `3.12.2` Python version found in the cache.
- Use `-dev` instead of a patch number (e.g., `3.14-dev`) to install the latest patch version release for a given minor version, *alpha and beta releases included*.
- 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
@ -484,7 +521,7 @@ Such a requirement on side-effect could be because you don't want your composite
- Preinstalled versions of PyPy in the tool 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 `pypy3.7` or `pypy-3.7`, 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 `pypy3.7-v7.3.3` or `pypy-3.7-v7.3.3`.
- Cache is updated with a 1-2 week delay. If you specify the PyPy version as `pypy3.10` or `pypy-3.10`, 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 `pypy3.10-v7.3.17` or `pypy-3.10-v7.3.17`.
- 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.
@ -532,11 +569,11 @@ If you have a supported self-hosted runner and you would like to use `setup-pyth
### Linux
By default runner downloads and installs tools into the folder set up by `RUNNER_TOOL_CACHE` environment variable. The environment variable called `AGENT_TOOLSDIRECTORY` can be set to change this location for Linux self-hosted runners:
By default, the runner downloads and installs tools into the folder set up by `RUNNER_TOOL_CACHE` environment variable. The environment variable called `AGENT_TOOLSDIRECTORY` can be set to change this location for Linux self-hosted runners:
- In the same shell that your runner is using, type `export AGENT_TOOLSDIRECTORY=/path/to/folder`.
- More permanent way of setting the environment variable is to create an `.env` file in the same directory as your runner and to add `AGENT_TOOLSDIRECTORY=/path/to/folder`. This ensures the variable is always set if your runner is configured as a service.
If you're using a non-default tool cache directory be sure that the user starting the runner has write permission to the new tool cache directory. To check the current user and group that the runner belongs type `ls -l` inside the runner's root directory.
If you're using a non-default tool cache directory be sure that the user starting the runner has write permission to the new tool cache directory. To check the current user and group that the runner belongs, type `ls -l` inside the runner's root directory.
The runner can be granted write access to any directory using a few techniques:
- The user starting the runner is the owner, and the owner has write permission.
@ -595,7 +632,7 @@ jobs:
fail-fast: false
matrix:
os: [Ubuntu, Windows, macOS]
python_version: ["3.11", "3.12"]
python_version: ["3.11", "3.12", "3.13"]
steps:
- uses: actions/checkout@v4

View File

@ -6,13 +6,13 @@ We have prepared a short guide so that the process of making your contribution i
## How can I contribute...
* [Contribute Documentation:green_book:](#contribute-documentation)
* [Contribute Documentation :green_book:](#contribute-documentation)
* [Contribute Code :computer:](#contribute-code)
* [Provide Support on Issues:pencil:](#provide-support-on-issues)
* [Provide Support on Issues :pencil:](#provide-support-on-issues)
* [Review Pull Requests:mag:](#review-pull-requests)
* [Review Pull Requests :mag:](#review-pull-requests)
## Contribute documentation

389
package-lock.json generated
View File

@ -9,14 +9,14 @@
"version": "5.0.0",
"license": "MIT",
"dependencies": {
"@actions/cache": "^3.2.4",
"@actions/cache": "^4.0.3",
"@actions/core": "^1.10.0",
"@actions/exec": "^1.1.0",
"@actions/glob": "^0.4.0",
"@actions/http-client": "^2.2.1",
"@actions/glob": "^0.5.0",
"@actions/http-client": "^2.2.3",
"@actions/io": "^1.0.2",
"@actions/tool-cache": "^2.0.1",
"@iarna/toml": "^2.2.5",
"@iarna/toml": "^3.0.0",
"semver": "^7.6.0"
},
"devDependencies": {
@ -25,7 +25,7 @@
"@types/semver": "^7.5.8",
"@typescript-eslint/eslint-plugin": "^5.54.0",
"@typescript-eslint/parser": "^5.54.0",
"@vercel/ncc": "^0.38.0",
"@vercel/ncc": "^0.38.3",
"eslint": "^8.57.0",
"eslint-config-prettier": "^8.6.0",
"eslint-plugin-jest": "^27.9.0",
@ -47,11 +47,11 @@
}
},
"node_modules/@actions/cache": {
"version": "3.2.4",
"resolved": "https://registry.npmjs.org/@actions/cache/-/cache-3.2.4.tgz",
"integrity": "sha512-RuHnwfcDagtX+37s0ZWy7clbOfnZ7AlDJQ7k/9rzt2W4Gnwde3fa/qjSjVuz4vLcLIpc7fUob27CMrqiWZytYA==",
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/@actions/cache/-/cache-4.0.3.tgz",
"integrity": "sha512-SvrqFtYJ7I48A/uXNkoJrnukx5weQv1fGquhs3+4nkByZThBH109KTIqj5x/cGV7JGNvb8dLPVywUOqX1fjiXg==",
"dependencies": {
"@actions/core": "^1.10.0",
"@actions/core": "^1.11.1",
"@actions/exec": "^1.0.1",
"@actions/glob": "^0.1.0",
"@actions/http-client": "^2.1.1",
@ -59,8 +59,8 @@
"@azure/abort-controller": "^1.1.0",
"@azure/ms-rest-js": "^2.6.0",
"@azure/storage-blob": "^12.13.0",
"semver": "^6.3.1",
"uuid": "^3.3.3"
"@protobuf-ts/plugin": "^2.9.4",
"semver": "^6.3.1"
}
},
"node_modules/@actions/cache/node_modules/@actions/glob": {
@ -81,20 +81,12 @@
}
},
"node_modules/@actions/core": {
"version": "1.10.1",
"resolved": "https://registry.npmjs.org/@actions/core/-/core-1.10.1.tgz",
"integrity": "sha512-3lBR9EDAY+iYIpTnTIXmWcNbX3T2kCkAEQGIQx4NVQ0575nk2k3GRZDTPQG+vVtS2izSLmINlxXf0uLtnrTP+g==",
"version": "1.11.1",
"resolved": "https://registry.npmjs.org/@actions/core/-/core-1.11.1.tgz",
"integrity": "sha512-hXJCSrkwfA46Vd9Z3q4cpEpHB1rL5NG04+/rbqW9d3+CSvtB1tYe8UTpAlixa1vj0m/ULglfEK2UKxMGxCxv5A==",
"dependencies": {
"@actions/http-client": "^2.0.1",
"uuid": "^8.3.2"
}
},
"node_modules/@actions/core/node_modules/uuid": {
"version": "8.3.2",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
"integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
"bin": {
"uuid": "dist/bin/uuid"
"@actions/exec": "^1.1.1",
"@actions/http-client": "^2.0.1"
}
},
"node_modules/@actions/exec": {
@ -106,18 +98,20 @@
}
},
"node_modules/@actions/glob": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/@actions/glob/-/glob-0.4.0.tgz",
"integrity": "sha512-+eKIGFhsFa4EBwaf/GMyzCdWrXWymGXfFmZU3FHQvYS8mPcHtTtZONbkcqqUMzw9mJ/pImEBFET1JNifhqGsAQ==",
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/@actions/glob/-/glob-0.5.0.tgz",
"integrity": "sha512-tST2rjPvJLRZLuT9NMUtyBjvj9Yo0MiJS3ow004slMvm8GFM+Zv9HvMJ7HWzfUyJnGrJvDsYkWBaaG3YKXRtCw==",
"license": "MIT",
"dependencies": {
"@actions/core": "^1.9.1",
"minimatch": "^3.0.4"
}
},
"node_modules/@actions/http-client": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.2.1.tgz",
"integrity": "sha512-KhC/cZsq7f8I4LfZSJKgCvEwfkE8o1538VoBeoGzokVLLnbFDEAdFD3UhoMklxo2un9NJVBdANOresx7vTHlHw==",
"version": "2.2.3",
"resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.2.3.tgz",
"integrity": "sha512-mx8hyJi/hjFvbPokCg4uRd4ZX78t+YyRPtnKWwIl+RzNaVuFpQHfmlGVfsKEJN8LwTCvL+DfVgAM04XaHkm6bA==",
"license": "MIT",
"dependencies": {
"tunnel": "^0.0.6",
"undici": "^5.25.4"
@ -338,89 +332,19 @@
}
},
"node_modules/@babel/code-frame": {
"version": "7.22.13",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz",
"integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==",
"version": "7.26.2",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz",
"integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==",
"dev": true,
"dependencies": {
"@babel/highlight": "^7.22.13",
"chalk": "^2.4.2"
"@babel/helper-validator-identifier": "^7.25.9",
"js-tokens": "^4.0.0",
"picocolors": "^1.0.0"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/code-frame/node_modules/ansi-styles": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
"dev": true,
"dependencies": {
"color-convert": "^1.9.0"
},
"engines": {
"node": ">=4"
}
},
"node_modules/@babel/code-frame/node_modules/chalk": {
"version": "2.4.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
"dev": true,
"dependencies": {
"ansi-styles": "^3.2.1",
"escape-string-regexp": "^1.0.5",
"supports-color": "^5.3.0"
},
"engines": {
"node": ">=4"
}
},
"node_modules/@babel/code-frame/node_modules/color-convert": {
"version": "1.9.3",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
"dev": true,
"dependencies": {
"color-name": "1.1.3"
}
},
"node_modules/@babel/code-frame/node_modules/color-name": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
"integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
"dev": true
},
"node_modules/@babel/code-frame/node_modules/escape-string-regexp": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
"integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
"dev": true,
"engines": {
"node": ">=0.8.0"
}
},
"node_modules/@babel/code-frame/node_modules/has-flag": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
"integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
"dev": true,
"engines": {
"node": ">=4"
}
},
"node_modules/@babel/code-frame/node_modules/supports-color": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
"dev": true,
"dependencies": {
"has-flag": "^3.0.0"
},
"engines": {
"node": ">=4"
}
},
"node_modules/@babel/compat-data": {
"version": "7.23.3",
"resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.3.tgz",
@ -608,18 +532,18 @@
}
},
"node_modules/@babel/helper-string-parser": {
"version": "7.22.5",
"resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz",
"integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==",
"version": "7.25.9",
"resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz",
"integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==",
"dev": true,
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-validator-identifier": {
"version": "7.22.20",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
"integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==",
"version": "7.25.9",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz",
"integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==",
"dev": true,
"engines": {
"node": ">=6.9.0"
@ -635,109 +559,26 @@
}
},
"node_modules/@babel/helpers": {
"version": "7.23.2",
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.2.tgz",
"integrity": "sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==",
"version": "7.26.10",
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.10.tgz",
"integrity": "sha512-UPYc3SauzZ3JGgj87GgZ89JVdC5dj0AoetR5Bw6wj4niittNyFh6+eOGonYvJ1ao6B8lEa3Q3klS7ADZ53bc5g==",
"dev": true,
"dependencies": {
"@babel/template": "^7.22.15",
"@babel/traverse": "^7.23.2",
"@babel/types": "^7.23.0"
"@babel/template": "^7.26.9",
"@babel/types": "^7.26.10"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/highlight": {
"version": "7.22.20",
"resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz",
"integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==",
"dev": true,
"dependencies": {
"@babel/helper-validator-identifier": "^7.22.20",
"chalk": "^2.4.2",
"js-tokens": "^4.0.0"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/highlight/node_modules/ansi-styles": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
"dev": true,
"dependencies": {
"color-convert": "^1.9.0"
},
"engines": {
"node": ">=4"
}
},
"node_modules/@babel/highlight/node_modules/chalk": {
"version": "2.4.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
"dev": true,
"dependencies": {
"ansi-styles": "^3.2.1",
"escape-string-regexp": "^1.0.5",
"supports-color": "^5.3.0"
},
"engines": {
"node": ">=4"
}
},
"node_modules/@babel/highlight/node_modules/color-convert": {
"version": "1.9.3",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
"dev": true,
"dependencies": {
"color-name": "1.1.3"
}
},
"node_modules/@babel/highlight/node_modules/color-name": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
"integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
"dev": true
},
"node_modules/@babel/highlight/node_modules/escape-string-regexp": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
"integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
"dev": true,
"engines": {
"node": ">=0.8.0"
}
},
"node_modules/@babel/highlight/node_modules/has-flag": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
"integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
"dev": true,
"engines": {
"node": ">=4"
}
},
"node_modules/@babel/highlight/node_modules/supports-color": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
"dev": true,
"dependencies": {
"has-flag": "^3.0.0"
},
"engines": {
"node": ">=4"
}
},
"node_modules/@babel/parser": {
"version": "7.23.3",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.3.tgz",
"integrity": "sha512-uVsWNvlVsIninV2prNz/3lHCb+5CJ+e+IUBfbjToAHODtfGYLfCFuY4AU7TskI+dAKk+njsPiBjq1gKTvZOBaw==",
"version": "7.26.10",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.10.tgz",
"integrity": "sha512-6aQR2zGE/QFi8JpDLjUZEPYOs7+mhKXm86VaKFiLP35JQwQb6bwUE+XbvkH0EptsYhbNBSUGaUBLKqxH1xSgsA==",
"dev": true,
"dependencies": {
"@babel/types": "^7.26.10"
},
"bin": {
"parser": "bin/babel-parser.js"
},
@ -923,14 +764,14 @@
}
},
"node_modules/@babel/template": {
"version": "7.22.15",
"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz",
"integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==",
"version": "7.26.9",
"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.26.9.tgz",
"integrity": "sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==",
"dev": true,
"dependencies": {
"@babel/code-frame": "^7.22.13",
"@babel/parser": "^7.22.15",
"@babel/types": "^7.22.15"
"@babel/code-frame": "^7.26.2",
"@babel/parser": "^7.26.9",
"@babel/types": "^7.26.9"
},
"engines": {
"node": ">=6.9.0"
@ -967,14 +808,13 @@
}
},
"node_modules/@babel/types": {
"version": "7.23.3",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.3.tgz",
"integrity": "sha512-OZnvoH2l8PK5eUvEcUyCt/sXgr/h+UWpVuBbOljwcrAgUl6lpchoQ++PHGyQy1AtYnVA6CEq3y5xeEI10brpXw==",
"version": "7.26.10",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.10.tgz",
"integrity": "sha512-emqcG3vHrpxUKTrxcblR36dcrcoRDvKmnL/dCL6ZsHaShW80qxCAcNhzQZrpeM765VzEos+xOi4s+r4IXzTwdQ==",
"dev": true,
"dependencies": {
"@babel/helper-string-parser": "^7.22.5",
"@babel/helper-validator-identifier": "^7.22.20",
"to-fast-properties": "^2.0.0"
"@babel/helper-string-parser": "^7.25.9",
"@babel/helper-validator-identifier": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@ -1084,9 +924,9 @@
"dev": true
},
"node_modules/@iarna/toml": {
"version": "2.2.5",
"resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz",
"integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg=="
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-3.0.0.tgz",
"integrity": "sha512-td6ZUkz2oS3VeleBcN+m//Q6HlCFCPrnI0FZhrt/h4XqLEdOyYp2u21nd8MdsR+WJy5r9PTDaHTDDfhf4H4l6Q=="
},
"node_modules/@istanbuljs/load-nyc-config": {
"version": "1.1.0",
@ -1565,6 +1405,76 @@
"node": ">=8.0.0"
}
},
"node_modules/@protobuf-ts/plugin": {
"version": "2.9.5",
"resolved": "https://registry.npmjs.org/@protobuf-ts/plugin/-/plugin-2.9.5.tgz",
"integrity": "sha512-KCzNRTFye837XdfPjS85gGzxgPGVDR3W8Px2G3etXuouNog9W+Cr+U0IBTFADrRWXC2x+OSNjXxrdZEiw+H5Cw==",
"dependencies": {
"@protobuf-ts/plugin-framework": "^2.9.5",
"@protobuf-ts/protoc": "^2.9.5",
"@protobuf-ts/runtime": "^2.9.5",
"@protobuf-ts/runtime-rpc": "^2.9.5",
"typescript": "^3.9"
},
"bin": {
"protoc-gen-dump": "bin/protoc-gen-dump",
"protoc-gen-ts": "bin/protoc-gen-ts"
}
},
"node_modules/@protobuf-ts/plugin-framework": {
"version": "2.9.5",
"resolved": "https://registry.npmjs.org/@protobuf-ts/plugin-framework/-/plugin-framework-2.9.5.tgz",
"integrity": "sha512-DYNQ8Ga3xwPZMfaZGRCnDOcEdQZK9MorTXngVoFLnHWEE8zLhUjFVtdkChZtTih6rl8Z6akyA7hRgj/GrJF58Q==",
"dependencies": {
"@protobuf-ts/runtime": "^2.9.5",
"typescript": "^3.9"
}
},
"node_modules/@protobuf-ts/plugin-framework/node_modules/typescript": {
"version": "3.9.10",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz",
"integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==",
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
},
"engines": {
"node": ">=4.2.0"
}
},
"node_modules/@protobuf-ts/plugin/node_modules/typescript": {
"version": "3.9.10",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz",
"integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==",
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
},
"engines": {
"node": ">=4.2.0"
}
},
"node_modules/@protobuf-ts/protoc": {
"version": "2.9.5",
"resolved": "https://registry.npmjs.org/@protobuf-ts/protoc/-/protoc-2.9.5.tgz",
"integrity": "sha512-n6a7OHfr/Ubw483L6kNJB0wBCe/Ops0A652zB6J6nR2x1o+pjVFrMCeeQQsqxkYpQwQ8FCIETSxrMpfOBKTIvQ==",
"bin": {
"protoc": "protoc.js"
}
},
"node_modules/@protobuf-ts/runtime": {
"version": "2.9.5",
"resolved": "https://registry.npmjs.org/@protobuf-ts/runtime/-/runtime-2.9.5.tgz",
"integrity": "sha512-SsumigRe3IqNTCQvVZUqDQExsKF72eyAMiWlYb5Jwj3eU4z8UH7JLlSfb/Wjidz4b/chTN6zh5AXBSKl0Asm3A=="
},
"node_modules/@protobuf-ts/runtime-rpc": {
"version": "2.9.5",
"resolved": "https://registry.npmjs.org/@protobuf-ts/runtime-rpc/-/runtime-rpc-2.9.5.tgz",
"integrity": "sha512-NWAb1TaV4CR+BknZr1WRVT5Ws2AupVwGgRNes4oPAFrgLNXQotDFl2E6pmsjPwME8sAgJVzeSr7bUqQVyoAK2A==",
"dependencies": {
"@protobuf-ts/runtime": "^2.9.5"
}
},
"node_modules/@sinclair/typebox": {
"version": "0.27.8",
"resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz",
@ -1939,10 +1849,11 @@
"dev": true
},
"node_modules/@vercel/ncc": {
"version": "0.38.1",
"resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.38.1.tgz",
"integrity": "sha512-IBBb+iI2NLu4VQn3Vwldyi2QwaXt5+hTyh58ggAMoCGE6DJmPvwL3KPBWcJl1m9LYPChBLE980Jw+CS4Wokqxw==",
"version": "0.38.3",
"resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.38.3.tgz",
"integrity": "sha512-rnK6hJBS6mwc+Bkab+PGPs9OiS0i/3kdTO+CkI8V0/VrW3vmz7O2Pxjw/owOlmo6PKEIxRSeZKv/kuL9itnpYA==",
"dev": true,
"license": "MIT",
"bin": {
"ncc": "dist/ncc/cli.js"
}
@ -2456,9 +2367,9 @@
}
},
"node_modules/cross-spawn": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
"integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
"version": "7.0.6",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
"integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
"dev": true,
"dependencies": {
"path-key": "^3.1.0",
@ -4284,12 +4195,12 @@
}
},
"node_modules/micromatch": {
"version": "4.0.5",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
"integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
"version": "4.0.8",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
"integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
"dev": true,
"dependencies": {
"braces": "^3.0.2",
"braces": "^3.0.3",
"picomatch": "^2.3.1"
},
"engines": {
@ -5137,15 +5048,6 @@
"integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==",
"dev": true
},
"node_modules/to-fast-properties": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
"integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
"dev": true,
"engines": {
"node": ">=4"
}
},
"node_modules/to-regex-range": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
@ -5287,9 +5189,10 @@
}
},
"node_modules/undici": {
"version": "5.28.4",
"resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz",
"integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==",
"version": "5.28.5",
"resolved": "https://registry.npmjs.org/undici/-/undici-5.28.5.tgz",
"integrity": "sha512-zICwjrDrcrUE0pyyJc1I2QzBkLM8FINsgOrt6WjA+BgajVq9Nxu2PbFFXUrAggLfDXlZGZBVZYw7WNV5KiBiBA==",
"license": "MIT",
"dependencies": {
"@fastify/busboy": "^2.0.0"
},

View File

@ -25,14 +25,14 @@
"author": "GitHub",
"license": "MIT",
"dependencies": {
"@actions/cache": "^3.2.4",
"@actions/cache": "^4.0.3",
"@actions/core": "^1.10.0",
"@actions/exec": "^1.1.0",
"@actions/glob": "^0.4.0",
"@actions/http-client": "^2.2.1",
"@actions/glob": "^0.5.0",
"@actions/http-client": "^2.2.3",
"@actions/io": "^1.0.2",
"@actions/tool-cache": "^2.0.1",
"@iarna/toml": "^2.2.5",
"@iarna/toml": "^3.0.0",
"semver": "^7.6.0"
},
"devDependencies": {
@ -41,7 +41,7 @@
"@types/semver": "^7.5.8",
"@typescript-eslint/eslint-plugin": "^5.54.0",
"@typescript-eslint/parser": "^5.54.0",
"@vercel/ncc": "^0.38.0",
"@vercel/ncc": "^0.38.3",
"eslint": "^8.57.0",
"eslint-config-prettier": "^8.6.0",
"eslint-plugin-jest": "^27.9.0",

View File

@ -67,11 +67,11 @@ class PipCache extends CacheDistributor {
if (IS_LINUX) {
const osInfo = await getLinuxInfo();
primaryKey = `${this.CACHE_KEY_PREFIX}-${process.env['RUNNER_OS']}-${osInfo.osVersion}-${osInfo.osName}-python-${this.pythonVersion}-${this.packageManager}-${hash}`;
restoreKey = `${this.CACHE_KEY_PREFIX}-${process.env['RUNNER_OS']}-${osInfo.osVersion}-${osInfo.osName}-python-${this.pythonVersion}-${this.packageManager}`;
primaryKey = `${this.CACHE_KEY_PREFIX}-${process.env['RUNNER_OS']}-${process.arch}-${osInfo.osVersion}-${osInfo.osName}-python-${this.pythonVersion}-${this.packageManager}-${hash}`;
restoreKey = `${this.CACHE_KEY_PREFIX}-${process.env['RUNNER_OS']}-${process.arch}-${osInfo.osVersion}-${osInfo.osName}-python-${this.pythonVersion}-${this.packageManager}`;
} else {
primaryKey = `${this.CACHE_KEY_PREFIX}-${process.env['RUNNER_OS']}-python-${this.pythonVersion}-${this.packageManager}-${hash}`;
restoreKey = `${this.CACHE_KEY_PREFIX}-${process.env['RUNNER_OS']}-python-${this.pythonVersion}-${this.packageManager}`;
primaryKey = `${this.CACHE_KEY_PREFIX}-${process.env['RUNNER_OS']}-${process.arch}-python-${this.pythonVersion}-${this.packageManager}-${hash}`;
restoreKey = `${this.CACHE_KEY_PREFIX}-${process.env['RUNNER_OS']}-${process.arch}-python-${this.pythonVersion}-${this.packageManager}`;
}
return {

View File

@ -32,7 +32,7 @@ class PipenvCache extends CacheDistributor {
protected async computeKeys() {
const hash = await glob.hashFiles(this.patterns);
const primaryKey = `${this.CACHE_KEY_PREFIX}-${process.env['RUNNER_OS']}-python-${this.pythonVersion}-${this.packageManager}-${hash}`;
const primaryKey = `${this.CACHE_KEY_PREFIX}-${process.env['RUNNER_OS']}-${process.arch}-python-${this.pythonVersion}-${this.packageManager}-${hash}`;
const restoreKey = undefined;
return {
primaryKey,

View File

@ -47,7 +47,7 @@ class PoetryCache extends CacheDistributor {
protected async computeKeys() {
const hash = await glob.hashFiles(this.patterns);
// "v2" is here to invalidate old caches of this cache distributor, which were created broken:
const primaryKey = `${this.CACHE_KEY_PREFIX}-${process.env['RUNNER_OS']}-python-${this.pythonVersion}-${this.packageManager}-v2-${hash}`;
const primaryKey = `${this.CACHE_KEY_PREFIX}-${process.env['RUNNER_OS']}-${process.arch}-python-${this.pythonVersion}-${this.packageManager}-v2-${hash}`;
const restoreKey = undefined;
return {
primaryKey,

View File

@ -41,7 +41,7 @@ async function saveCache(packageManager: string) {
throw new Error(
`Cache folder path is retrieved for ${packageManager} but doesn't exist on disk: ${cachePaths.join(
', '
)}`
)}. This likely indicates that there are no dependencies to cache. Consider removing the cache step if it is not needed.`
);
}

View File

@ -35,16 +35,28 @@ export async function useCpythonVersion(
architecture: string,
updateEnvironment: boolean,
checkLatest: boolean,
allowPreReleases: boolean
allowPreReleases: boolean,
freethreaded: boolean
): Promise<InstalledVersion> {
let manifest: tc.IToolRelease[] | null = null;
const desugaredVersionSpec = desugarDevVersion(version);
const {version: desugaredVersionSpec, freethreaded: versionFreethreaded} =
desugarVersion(version);
let semanticVersionSpec = pythonVersionToSemantic(
desugaredVersionSpec,
allowPreReleases
);
if (versionFreethreaded) {
// Use the freethreaded version if it was specified in the input, e.g., 3.13t
freethreaded = true;
}
core.debug(`Semantic version spec of ${version} is ${semanticVersionSpec}`);
if (freethreaded) {
// Free threaded versions use an architecture suffix like `x64-freethreaded`
core.debug(`Using freethreaded version of ${semanticVersionSpec}`);
architecture += '-freethreaded';
}
if (checkLatest) {
manifest = await installer.getManifest();
const resolvedVersion = (
@ -90,16 +102,22 @@ export async function useCpythonVersion(
if (!installDir) {
const osInfo = await getOSInfo();
throw new Error(
[
`The version '${version}' with architecture '${architecture}' was not found for ${
osInfo
? `${osInfo.osName} ${osInfo.osVersion}`
: 'this operating system'
}.`,
`The list of all available versions can be found here: ${installer.MANIFEST_URL}`
].join(os.EOL)
const msg = [
`The version '${version}' with architecture '${architecture}' was not found for ${
osInfo
? `${osInfo.osName} ${osInfo.osVersion}`
: 'this operating system'
}.`
];
if (freethreaded) {
msg.push(
`Free threaded versions are only available for Python 3.13.0 and later.`
);
}
msg.push(
`The list of all available versions can be found here: ${installer.MANIFEST_URL}`
);
throw new Error(msg.join(os.EOL));
}
const _binDir = binDir(installDir);
@ -153,10 +171,38 @@ export async function useCpythonVersion(
}
const installed = versionFromPath(installDir);
core.setOutput('python-version', installed);
let pythonVersion = installed;
if (freethreaded) {
// Add the freethreaded suffix to the version (e.g., 3.13.1t)
pythonVersion += 't';
}
core.setOutput('python-version', pythonVersion);
core.setOutput('python-path', pythonPath);
return {impl: 'CPython', version: installed};
return {impl: 'CPython', version: pythonVersion};
}
/* Desugar free threaded and dev versions */
export function desugarVersion(versionSpec: string) {
const {version, freethreaded} = desugarFreeThreadedVersion(versionSpec);
return {version: desugarDevVersion(version), freethreaded};
}
/* Identify freethreaded versions like, 3.13t, 3.13.1t, 3.13t-dev.
* Returns the version without the `t` and the architectures suffix, if freethreaded */
function desugarFreeThreadedVersion(versionSpec: string) {
const majorMinor = /^(\d+\.\d+(\.\d+)?)(t)$/;
if (majorMinor.test(versionSpec)) {
return {version: versionSpec.replace(majorMinor, '$1'), freethreaded: true};
}
const devVersion = /^(\d+\.\d+)(t)(-dev)$/;
if (devVersion.test(versionSpec)) {
return {
version: versionSpec.replace(devVersion, '$1$3'),
freethreaded: true
};
}
return {version: versionSpec, freethreaded: false};
}
/** Convert versions like `3.8-dev` to a version like `~3.8.0-0`. */

View File

@ -8,13 +8,15 @@ import * as exec from '@actions/exec';
import fs from 'fs';
import {
IS_LINUX,
IS_WINDOWS,
WINDOWS_PLATFORMS,
IPyPyManifestRelease,
createSymlinkInFolder,
isNightlyKeyword,
writeExactPyPyVersionFile,
getBinaryDirectory
getBinaryDirectory,
getDownloadFileName
} from './utils';
export async function installPyPy(
@ -69,7 +71,8 @@ export async function installPyPy(
core.info(`Downloading PyPy from "${downloadUrl}" ...`);
try {
const pypyPath = await tc.downloadTool(downloadUrl);
const fileName = getDownloadFileName(downloadUrl);
const pypyPath = await tc.downloadTool(downloadUrl, fileName);
core.info('Extracting downloaded archive...');
if (IS_WINDOWS) {
@ -244,7 +247,7 @@ export function pypyVersionToSemantic(versionSpec: string) {
}
export function isArchPresentForWindows(item: any, architecture: string) {
architecture = replaceX32toX86(architecture);
architecture = pypyArchitecture(architecture);
return item.files.some(
(file: any) =>
WINDOWS_PLATFORMS.includes(file.platform) && file.arch === architecture
@ -256,13 +259,14 @@ export function isArchPresentForMacOrLinux(
architecture: string,
platform: string
) {
architecture = pypyArchitecture(architecture);
return item.files.some(
(file: any) => file.arch === architecture && file.platform === platform
);
}
export function findAssetForWindows(releases: any, architecture: string) {
architecture = replaceX32toX86(architecture);
architecture = pypyArchitecture(architecture);
return releases.files.find(
(item: any) =>
WINDOWS_PLATFORMS.includes(item.platform) && item.arch === architecture
@ -274,15 +278,18 @@ export function findAssetForMacOrLinux(
architecture: string,
platform: string
) {
architecture = pypyArchitecture(architecture);
return releases.files.find(
(item: any) => item.arch === architecture && item.platform === platform
);
}
function replaceX32toX86(architecture: string): string {
// convert x32 to x86 because os.arch() returns x32 for 32-bit systems but PyPy releases json has x86 arch value.
if (architecture === 'x32') {
function pypyArchitecture(architecture: string): string {
if (IS_WINDOWS && architecture === 'x32') {
// convert x32 to x86 because os.arch() returns x32 for 32-bit systems but PyPy releases json has x86 arch value.
architecture = 'x86';
} else if (IS_LINUX && architecture === 'arm64') {
architecture = 'aarch64';
}
return architecture;
}

View File

@ -4,7 +4,7 @@ import * as tc from '@actions/tool-cache';
import * as exec from '@actions/exec';
import * as httpm from '@actions/http-client';
import {ExecOptions} from '@actions/exec/lib/interfaces';
import {IS_WINDOWS, IS_LINUX} from './utils';
import {IS_WINDOWS, IS_LINUX, getDownloadFileName} from './utils';
const TOKEN = core.getInput('token');
const AUTH = !TOKEN ? undefined : `token ${TOKEN}`;
@ -98,7 +98,8 @@ export async function installCpythonFromRelease(release: tc.IToolRelease) {
core.info(`Download from "${downloadUrl}"`);
let pythonPath = '';
try {
pythonPath = await tc.downloadTool(downloadUrl, undefined, AUTH);
const fileName = getDownloadFileName(downloadUrl);
pythonPath = await tc.downloadTool(downloadUrl, fileName, AUTH);
core.info('Extract downloaded archive');
let pythonExtractedFolder;
if (IS_WINDOWS) {

View File

@ -92,6 +92,7 @@ async function run() {
const versions = resolveVersionInput();
const checkLatest = core.getBooleanInput('check-latest');
const allowPreReleases = core.getBooleanInput('allow-prereleases');
const freethreaded = core.getBooleanInput('freethreaded');
if (versions.length) {
let pythonVersion = '';
@ -132,7 +133,8 @@ async function run() {
arch,
updateEnvironment,
checkLatest,
allowPreReleases
allowPreReleases,
freethreaded
);
pythonVersion = installed.version;
core.info(`Successfully set up ${installed.impl} (${pythonVersion})`);

View File

@ -116,7 +116,13 @@ export function isGhes(): boolean {
const ghUrl = new URL(
process.env['GITHUB_SERVER_URL'] || 'https://github.com'
);
return ghUrl.hostname.toUpperCase() !== 'GITHUB.COM';
const hostname = ghUrl.hostname.trimEnd().toUpperCase();
const isGitHubHost = hostname === 'GITHUB.COM';
const isGitHubEnterpriseCloudHost = hostname.endsWith('.GHE.COM');
const isLocalHost = hostname.endsWith('.LOCALHOST');
return !isGitHubHost && !isGitHubEnterpriseCloudHost && !isLocalHost;
}
export function isCacheFeatureAvailable(): boolean {
@ -224,7 +230,10 @@ function extractValue(obj: any, keys: string[]): string | undefined {
export function getVersionInputFromTomlFile(versionFile: string): string[] {
core.debug(`Trying to resolve version form ${versionFile}`);
const pyprojectFile = fs.readFileSync(versionFile, 'utf8');
let pyprojectFile = fs.readFileSync(versionFile, 'utf8');
// Normalize the line endings in the pyprojectFile
pyprojectFile = pyprojectFile.replace(/\r\n/g, '\n');
const pyprojectConfig = toml.parse(pyprojectFile);
let keys = [];
@ -270,11 +279,45 @@ export function getVersionInputFromPlainFile(versionFile: string): string[] {
}
/**
* Python version extracted from a plain or TOML file.
* Python version extracted from a .tool-versions file.
*/
export function getVersionInputFromToolVersions(versionFile: string): string[] {
if (!fs.existsSync(versionFile)) {
core.warning(`File ${versionFile} does not exist.`);
return [];
}
try {
const fileContents = fs.readFileSync(versionFile, 'utf8');
const lines = fileContents.split('\n');
for (const line of lines) {
// Skip commented lines
if (line.trim().startsWith('#')) {
continue;
}
const match = line.match(/^\s*python\s*v?\s*(?<version>[^\s]+)\s*$/);
if (match) {
return [match.groups?.version.trim() || ''];
}
}
core.warning(`No Python version found in ${versionFile}`);
return [];
} catch (error) {
core.error(`Error reading ${versionFile}: ${(error as Error).message}`);
return [];
}
}
/**
* Python version extracted from a plain, .tool-versions or TOML file.
*/
export function getVersionInputFromFile(versionFile: string): string[] {
if (versionFile.endsWith('.toml')) {
return getVersionInputFromTomlFile(versionFile);
} else if (versionFile.match('.tool-versions')) {
return getVersionInputFromToolVersions(versionFile);
} else {
return getVersionInputFromPlainFile(versionFile);
}
@ -310,3 +353,17 @@ export function getNextPageUrl<T>(response: ifm.TypedResponse<T>) {
}
return null;
}
/**
* Add temporary fix for Windows
* On Windows, it is necessary to retain the .zip extension for proper extraction.
* because the tc.extractZip() failure due to tc.downloadTool() not adding .zip extension.
* Related issue: https://github.com/actions/toolkit/issues/1179
* Related issue: https://github.com/actions/setup-python/issues/819
*/
export function getDownloadFileName(downloadUrl: string): string | undefined {
const tempDir = process.env.RUNNER_TEMP || '.';
return IS_WINDOWS
? path.join(tempDir, path.basename(downloadUrl))
: undefined;
}