Compare commits

...
22 Commits
Author SHA1 Message Date
Haritha 5fda3b95a4 Pin SHA commits and update docs with latest versions (#1338)
* Update GitHub Actions to use checkout and setup-python actions version 7

* Fix formatting in publish-immutable-actions.yml
2026-07-19 22:02:03 -05:00
Philip Gai 4ab7e95f05 Merge pull request #1337 from actions/philip-gai/bump-actions-cache-6-2-0
chore(deps): bump @actions/cache to 6.2.0
2026-07-16 10:36:07 -05:00
gowridurgadandgowridurgad 0f3a009f47 Remove the pip-install input (#1336)
* Remove the pip-install input

* Resloves merge conflicts

---------

Co-authored-by: gowridurgad <gowridurgad@gmail.com>
2026-07-16 09:59:13 -05:00
Priya Gupta f8cf4291c8 Migrate to ESM and upgrade dependencies (#1330)
* Migrate to ESM and upgrade dependencies

* Add ESM migration note to README for V7

* Remove unnecessary devDependencies: ts-node, @types/jest

* npm audit fix

* Upgrade @types/node to version 26.0.0

* Clarify ESM migration details in README for V7

* Update README and dependencies

* Fix lint issue
2026-07-15 11:40:44 -05:00
Priya Gupta 54baeea5b3 Validate and retry manifest fetch to prevent silent failures (#1332)
* validate and retry manifest fetch

* Refactor error handling in isRateLimitError function for improved clarity
2026-07-14 18:02:48 -05:00
lmvysakhandlmvysakh c7092773a3 Annotation code fix (#1335)
Co-authored-by: lmvysakh <lmvysakh@github.com>
2026-07-13 13:28:55 -05:00
priya-kinthali 6849080452 remove EOL Python versions and Bumps numpy text fixture (#1333)
* remove EOL Python versions

* Fix typo in comments for executable suffix removal in test-pypy.yml
2026-07-13 13:25:11 -05:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 0903b469fb Bump certifi from 2020.6.20 to 2024.7.4 in /__tests__/data (#1328)
Bumps [certifi](https://github.com/certifi/python-certifi) from 2020.6.20 to 2024.7.4.
- [Commits](https://github.com/certifi/python-certifi/compare/2020.06.20...2024.07.04)

---
updated-dependencies:
- dependency-name: certifi
  dependency-version: 2024.7.4
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-10 10:35:36 -05:00
Priya Gupta ece7cb06ca Fix pip cache error handling on Windows. (#1040)
* Add error handling for Windows 'pip cache dir' execution

* Add comments
2026-06-23 13:01:57 -05:00
Nic 1d18d7af5f Update advanced-usage.md (#811)
Fix invalid Url
2026-06-23 12:44:45 -05:00
Harithaandcopilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> d2b357a6a3 Update dependency versions and test workflow configuration (#1322)
* chore: update dependencies in project configuration files

* Add bootstrap step for packaging tools

Added a step to bootstrap packaging tools before installing dependencies.

* Resolve audit issues

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
2026-06-23 11:35:00 -05:00
Bassem Dghaidi 8f639b1e75 Merge pull request #1324 from jasongin/update-actions-cache-5.1.0
Bump @actions/cache to 5.1.0, log cache write denied
2026-06-23 11:21:36 +02:00
Jason Ginchereau 6731c2ba87 Resolve high-severity audit issues 2026-06-18 18:02:00 -07:00
Priya Gupta 0cb1a84326 Add RHEL support and include Linux distro in cache keys (#1323)
* Add RHEL support for manifest matching and OS detection

* update dist

* make cache keys distro-aware and key RHEL by major version

* Normalize RHEL OS detection and improve cache key consistency

* Refactor OS info retrieval to use getOSInfo and handle null cases for improved reliability
2026-06-18 18:47:28 -05:00
Jason Ginchereau dc6eab6194 Update dist 2026-06-18 15:55:40 -07:00
Jason Ginchereau 6f4b74bfa2 Strict equality 2026-06-18 15:46:13 -07:00
Jason Ginchereau fa8bde1a9c Bump @actions/cache to 5.1.0, log cache write denied 2026-06-18 15:19:32 -07:00
Copilotcopilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>gowridurgad
c8813ba1bc Upgrade @actions dependencies and update licenses (#1303)
Agent-Logs-Url: https://github.com/actions/setup-python/sessions/d7501c8f-2fae-40ed-a7fc-e78f5087585a

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: gowridurgad <159780674+gowridurgad@users.noreply.github.com>
2026-04-15 12:25:40 -05:00
dependabot[bot]dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>gowridurgad
28f2168f4d Bump minimatch from 3.1.2 to 3.1.5 (#1281)
* Bump minimatch from 3.1.2 to 3.1.5

Bumps [minimatch](https://github.com/isaacs/minimatch) from 3.1.2 to 3.1.5.
- [Changelog](https://github.com/isaacs/minimatch/blob/main/changelog.md)
- [Commits](https://github.com/isaacs/minimatch/compare/v3.1.2...v3.1.5)

---
updated-dependencies:
- dependency-name: minimatch
  dependency-version: 3.1.5
  dependency-type: indirect
...

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: gowridurgad <gowridurgad@gmail.com>
2026-03-09 10:05:35 -05:00
dependabot[bot]dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>Aparna Jyothimahabaleshwars
a309ff8b42 Bump urllib3 from 2.6.0 to 2.6.3 in /__tests__/data (#1264)
* Bump urllib3 from 2.6.0 to 2.6.3 in /__tests__/data

Bumps [urllib3](https://github.com/urllib3/urllib3) from 2.6.0 to 2.6.3.
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)
- [Commits](https://github.com/urllib3/urllib3/compare/2.6.0...2.6.3)

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

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

* check-failure fix

* check failure fix

* Bump urllib3 from 2.6.0 to 2.6.3 in /__tests__/data

Bumps [urllib3](https://github.com/urllib3/urllib3) from 2.6.0 to 2.6.3.
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)
- [Commits](https://github.com/urllib3/urllib3/compare/2.6.0...2.6.3)

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

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

* fix for e2e-tests.yml failure and version update in packagejson

---------

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>
Co-authored-by: mahabaleshwars <147705296+mahabaleshwars@users.noreply.github.com>
2026-01-21 20:49:33 -06:00
Salman ChishtiandAparna Jyothi bfe8cc55a7 Upgrade @actions dependencies to Node 24 compatible versions (#1259)
* Upgrade @actions dependencies to Node 24 compatible versions

Upgrades the following @actions packages:
- @actions/cache: ^4.0.3 → ^5.0.1
- @actions/core: ^1.10.0 → ^2.0.1
- @actions/exec: ^1.1.0 → ^2.0.0
- @actions/http-client: ^2.2.3 → ^3.0.0
- @actions/io: ^1.0.2 → ^2.0.0

License updates:
- Add blueoak-1.0.0 to allowed licenses (new transitive dependency: sax)
- Add @actions/http-client to reviewed licenses (MIT licensed but detected as 'other')

Also ran npm audit fix to resolve vulnerabilities.

* update patch version

* upgrade actions/checkout from v5 to v6

* check failures fix

* revert the pinned pipenv version

* check failure fix

* npm run build

---------

Co-authored-by: Aparna Jyothi <aparnajyothi-y@github.com>
2026-01-20 09:38:55 -06:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 4f41a90a1f Bump urllib3 from 2.5.0 to 2.6.0 in /__tests__/data (#1253)
Bumps [urllib3](https://github.com/urllib3/urllib3) from 2.5.0 to 2.6.0.
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)
- [Commits](https://github.com/urllib3/urllib3/compare/2.5.0...2.6.0)

---
updated-dependencies:
- dependency-name: urllib3
  dependency-version: 2.6.0
  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-12-29 20:36:41 -06:00
135 changed files with 173249 additions and 161275 deletions
-6
View File
@@ -1,6 +0,0 @@
# Ignore list
/*
# Do not ignore these folders:
!__tests__/
!src/
-51
View File
@@ -1,51 +0,0 @@
// This is a reusable configuration file copied from https://github.com/actions/reusable-workflows/tree/main/reusable-configurations. Please don't make changes to this file as it's the subject of an automatic update.
module.exports = {
extends: [
'eslint:recommended',
'plugin:@typescript-eslint/recommended',
'plugin:eslint-plugin-jest/recommended',
'eslint-config-prettier'
],
parser: '@typescript-eslint/parser',
plugins: ['@typescript-eslint', 'eslint-plugin-node', 'eslint-plugin-jest'],
rules: {
'@typescript-eslint/no-require-imports': 'error',
'@typescript-eslint/no-non-null-assertion': 'off',
'@typescript-eslint/no-explicit-any': 'off',
'@typescript-eslint/no-empty-function': 'off',
'@typescript-eslint/ban-ts-comment': [
'error',
{
'ts-ignore': 'allow-with-description'
}
],
'no-console': 'error',
'yoda': 'error',
'prefer-const': [
'error',
{
destructuring: 'all'
}
],
'no-control-regex': 'off',
'no-constant-condition': ['error', {checkLoops: false}],
'node/no-extraneous-import': 'error'
},
overrides: [
{
files: ['**/*{test,spec}.ts'],
rules: {
'@typescript-eslint/no-unused-vars': 'off',
'jest/no-standalone-expect': 'off',
'jest/no-conditional-expect': 'off',
'no-console': 'off',
}
}
],
env: {
node: true,
es6: true,
'jest/globals': true
}
};
+86 -101
View File
@@ -23,17 +23,20 @@ jobs:
matrix: matrix:
os: os:
[ [
ubuntu-latest,
ubuntu-22.04, ubuntu-22.04,
ubuntu-latest,
ubuntu-24.04-arm, ubuntu-24.04-arm,
ubuntu-22.04-arm,
windows-latest, windows-latest,
macos-latest, windows-11-arm,
macos-15-intel macos-15-intel,
macos-latest
] ]
python-version: [3.13.0t, 3.13.1t, 3.13.2t] python-version: [3.13.14t, 3.14.6t]
exclude:
- os: windows-11-arm
python-version: 3.13.14t
steps: steps:
- uses: actions/checkout@v5 - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Setup Python - name: Setup Python
uses: ./ uses: ./
with: with:
@@ -50,17 +53,20 @@ jobs:
matrix: matrix:
os: os:
[ [
ubuntu-22.04,
ubuntu-latest, ubuntu-latest,
ubuntu-24.04-arm, ubuntu-24.04-arm,
ubuntu-22.04,
ubuntu-22.04-arm,
windows-latest, windows-latest,
macos-latest, windows-11-arm,
macos-15-intel macos-15-intel,
macos-latest
] ]
python-version: [3.13.1t, 3.13.2t, 3.13.5t] python-version: [3.13.14t, 3.14.6t]
exclude:
- os: windows-11-arm
python-version: 3.13.14t
steps: steps:
- uses: actions/checkout@v5 - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Setup Python - name: Setup Python
id: cache-pipenv id: cache-pipenv
uses: ./ uses: ./
@@ -68,9 +74,19 @@ jobs:
python-version: ${{ matrix.python-version }} python-version: ${{ matrix.python-version }}
cache: 'pipenv' cache: 'pipenv'
- name: Install pipenv - name: Install pipenv
run: curl https://raw.githubusercontent.com/pypa/pipenv/master/get-pipenv.py | python run: python -m pip install --upgrade pip pipenv
- name: Install dependencies - name: Install dependencies on Linux/macOS
run: pipenv install requests if: runner.os != 'Windows'
run: |
export PIPENV_PYTHON=$(which python)
pipenv install requests
- name: Install dependencies on Windows
if: runner.os == 'Windows'
run: |
# Remove existing virtualenv if any
python -m pipenv --rm || echo "No existing env"
# Create fresh env using current Python
python -m pipenv install --python $(python -c "import sys; print(sys.executable)") requests
python-poetry-dependencies-caching: python-poetry-dependencies-caching:
name: Test poetry (Python ${{ matrix.python-version}}, ${{ matrix.os }}) name: Test poetry (Python ${{ matrix.python-version}}, ${{ matrix.os }})
@@ -80,17 +96,17 @@ jobs:
matrix: matrix:
os: os:
[ [
ubuntu-latest,
ubuntu-22.04, ubuntu-22.04,
ubuntu-latest,
ubuntu-24.04-arm, ubuntu-24.04-arm,
ubuntu-22.04-arm,
windows-latest, windows-latest,
macos-latest, windows-11-arm,
macos-15-intel macos-15-intel,
macos-latest
] ]
python-version: [3.13.0, 3.13.1, 3.13.2] python-version: [3.13.14, 3.14.6]
steps: steps:
- uses: actions/checkout@v5 - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Install poetry - name: Install poetry
run: pipx install poetry run: pipx install poetry
- name: Init pyproject.toml - name: Init pyproject.toml
@@ -112,17 +128,20 @@ jobs:
matrix: matrix:
os: os:
[ [
ubuntu-latest,
ubuntu-22.04, ubuntu-22.04,
ubuntu-latest,
ubuntu-24.04-arm, ubuntu-24.04-arm,
ubuntu-22.04-arm,
windows-latest, windows-latest,
macos-latest, windows-11-arm,
macos-15-intel macos-15-intel,
macos-latest
] ]
python-version: [3.13.0t, 3.13.1t, 3.13.2t] python-version: [3.13.14t, 3.14.6t]
exclude:
- os: windows-11-arm
python-version: 3.13.14t
steps: steps:
- uses: actions/checkout@v5 - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Setup Python - name: Setup Python
uses: ./ uses: ./
with: with:
@@ -140,17 +159,20 @@ jobs:
matrix: matrix:
os: os:
[ [
ubuntu-latest,
ubuntu-22.04, ubuntu-22.04,
ubuntu-latest,
ubuntu-24.04-arm, ubuntu-24.04-arm,
ubuntu-22.04-arm,
windows-latest, windows-latest,
macos-latest, windows-11-arm,
macos-15-intel macos-15-intel,
macos-latest
] ]
python-version: [3.13.1t, 3.13.2t, 3.13.5t] python-version: [3.13.14t, 3.14.6t]
exclude:
- os: windows-11-arm
python-version: 3.13.14t
steps: steps:
- uses: actions/checkout@v5 - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Setup Python - name: Setup Python
id: cache-pipenv id: cache-pipenv
uses: ./ uses: ./
@@ -159,9 +181,19 @@ jobs:
cache: 'pipenv' cache: 'pipenv'
cache-dependency-path: '**/pipenv-requirements.txt' cache-dependency-path: '**/pipenv-requirements.txt'
- name: Install pipenv - name: Install pipenv
run: curl https://raw.githubusercontent.com/pypa/pipenv/master/get-pipenv.py | python run: python -m pip install --upgrade pip pipenv
- name: Install dependencies - name: Install dependencies on Linux/macOS
run: pipenv install requests if: runner.os != 'Windows'
run: |
export PIPENV_PYTHON=$(which python)
pipenv install requests
- name: Install dependencies on Windows
if: runner.os == 'Windows'
run: |
# Remove existing virtualenv if any
python -m pipenv --rm || echo "No existing env"
# Create fresh env using current Python
python -m pipenv install --python $(python -c "import sys; print(sys.executable)") requests
python-pip-dependencies-caching-with-pip-version: python-pip-dependencies-caching-with-pip-version:
name: Test pip (Python ${{ matrix.python-version}}, ${{ matrix.os }}) name: Test pip (Python ${{ matrix.python-version}}, ${{ matrix.os }})
@@ -171,17 +203,20 @@ jobs:
matrix: matrix:
os: os:
[ [
ubuntu-latest,
ubuntu-22.04, ubuntu-22.04,
ubuntu-latest,
ubuntu-24.04-arm, ubuntu-24.04-arm,
ubuntu-22.04-arm,
windows-latest, windows-latest,
macos-latest, windows-11-arm,
macos-15-intel macos-15-intel,
macos-latest
] ]
python-version: [3.13.0t, 3.13.1t, 3.13.2t] python-version: [3.13.14t, 3.14.6t]
exclude:
- os: windows-11-arm
python-version: 3.13.14t
steps: steps:
- uses: actions/checkout@v5 - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Setup Python - name: Setup Python
uses: ./ uses: ./
with: with:
@@ -199,17 +234,20 @@ jobs:
matrix: matrix:
os: os:
[ [
ubuntu-latest,
ubuntu-22.04, ubuntu-22.04,
ubuntu-latest,
ubuntu-24.04-arm, ubuntu-24.04-arm,
ubuntu-22.04-arm,
windows-latest, windows-latest,
macos-latest, windows-11-arm,
macos-15-intel macos-15-intel,
macos-latest
] ]
python-version: [3.13.0t, 3.13.1t, 3.13.2t] python-version: [3.13.14t, 3.14.6t]
exclude:
- os: windows-11-arm
python-version: 3.13.14t
steps: steps:
- uses: actions/checkout@v5 - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Setup Python - name: Setup Python
uses: ./ uses: ./
with: with:
@@ -219,56 +257,3 @@ jobs:
pip-version: '25.0.1' pip-version: '25.0.1'
- name: Install dependencies - name: Install dependencies
run: pip install numpy pandas requests run: pip install numpy pandas requests
python-pip-dependencies-caching-with-pip-install:
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-15-intel
]
python-version: [3.13.0t, 3.13.1t, 3.13.2t]
steps:
- uses: actions/checkout@v5
- name: Setup Python
uses: ./
with:
python-version: ${{ matrix.python-version }}
cache: 'pip'
pip-install: numpy pandas requests
python-pip-dependencies-caching-path-with-pip-install:
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-15-intel
]
python-version: [3.13.0t, 3.13.1t, 3.13.2t]
steps:
- uses: actions/checkout@v5
- name: Setup Python
uses: ./
with:
python-version: ${{ matrix.python-version }}
cache: 'pip'
cache-dependency-path: __tests__/data/requirements.txt
pip-install: numpy pandas requests
+73 -137
View File
@@ -23,33 +23,26 @@ jobs:
matrix: matrix:
os: os:
[ [
ubuntu-22.04,
ubuntu-latest, ubuntu-latest,
ubuntu-24.04-arm, ubuntu-24.04-arm,
ubuntu-22.04,
ubuntu-22.04-arm,
windows-latest, windows-latest,
macos-latest, windows-11-arm,
macos-15-intel macos-15-intel,
macos-latest
] ]
python-version: python-version:
[ ['3.10', '3.11', 'pypy-3.11-v7.x', '3.12', '3.13', '3.14']
'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: exclude:
- os: windows-latest - os: windows-latest
python-version: pypy-3.11-v7.x python-version: pypy-3.11-v7.x
- os: macos-latest - os: windows-11-arm
python-version: pypy-3.9-v7.x python-version: pypy-3.11-v7.x
- os: windows-11-arm
python-version: '3.10'
steps: steps:
- uses: actions/checkout@v5 - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Setup Python - name: Setup Python
uses: ./ uses: ./
with: with:
@@ -66,29 +59,24 @@ jobs:
matrix: matrix:
os: os:
[ [
ubuntu-22.04,
ubuntu-latest, ubuntu-latest,
ubuntu-24.04-arm, ubuntu-24.04-arm,
ubuntu-22.04,
ubuntu-22.04-arm,
windows-latest, windows-latest,
macos-latest, windows-11-arm,
macos-15-intel macos-15-intel,
macos-latest
] ]
python-version: python-version: ['3.11', 'pypy-3.11-v7.x', '3.12', '3.13', '3.14']
['3.10', 'pypy-3.10-v7.x', '3.11', 'pypy-3.11-v7.x', '3.12', '3.13']
exclude: exclude:
- os: windows-latest - os: windows-latest
python-version: pypy-3.11-v7.x python-version: pypy-3.11-v7.x
- os: ubuntu-22.04 - os: ubuntu-22.04
python-version: pypy-3.11-v7.x python-version: pypy-3.11-v7.x
- os: ubuntu-22.04-arm - os: windows-11-arm
python-version: pypy-3.10-v7.x
- os: ubuntu-22.04-arm
python-version: pypy-3.11-v7.x python-version: pypy-3.11-v7.x
- os: ubuntu-22.04-arm
python-version: pypy-3.10-v7.x
steps: steps:
- uses: actions/checkout@v5 - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Setup Python - name: Setup Python
id: cache-pipenv id: cache-pipenv
uses: ./ uses: ./
@@ -123,29 +111,30 @@ jobs:
matrix: matrix:
os: os:
[ [
ubuntu-22.04,
ubuntu-latest, ubuntu-latest,
ubuntu-24.04-arm, ubuntu-24.04-arm,
ubuntu-22.04,
ubuntu-22.04-arm,
windows-latest, windows-latest,
macos-latest, windows-11-arm,
macos-15-intel macos-15-intel,
macos-latest
] ]
python-version: python-version:
[ ['3.10', '3.11', 'pypy-3.11-v7.x', '3.12', '3.13', '3.14']
'3.9', exclude:
'pypy-3.9-v7.x', - os: windows-latest
'3.10', python-version: pypy-3.11-v7.x
'pypy-3.10-v7.x', - os: ubuntu-22.04
'3.11', python-version: pypy-3.11-v7.x
'pypy-3.11-v7.x', - os: windows-11-arm
'3.12', python-version: pypy-3.11-v7.x
'3.13' - os: windows-11-arm
] python-version: '3.10'
steps: steps:
- uses: actions/checkout@v5 - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Install poetry - name: Install poetry
run: pipx install poetry run: |
pipx install poetry
- name: Init pyproject.toml - name: Init pyproject.toml
run: mv ./__tests__/data/pyproject.toml . run: mv ./__tests__/data/pyproject.toml .
- name: Setup Python - name: Setup Python
@@ -153,6 +142,10 @@ jobs:
with: with:
python-version: ${{ matrix.python-version }} python-version: ${{ matrix.python-version }}
cache: 'poetry' cache: 'poetry'
- name: Bootstrap packaging
run: |
python -m ensurepip --upgrade
python -m pip install --upgrade pip setuptools wheel packaging
- name: Install dependencies - name: Install dependencies
run: poetry install --no-root run: poetry install --no-root
@@ -164,32 +157,25 @@ jobs:
matrix: matrix:
os: os:
[ [
ubuntu-22.04,
ubuntu-latest, ubuntu-latest,
ubuntu-24.04-arm, ubuntu-24.04-arm,
ubuntu-22.04,
ubuntu-22.04-arm,
windows-latest, windows-latest,
macos-latest, windows-11-arm,
macos-15-intel macos-15-intel,
macos-latest
] ]
python-version: python-version:
[ ['3.10', '3.11', 'pypy-3.11-v7.x', '3.12', '3.13', '3.14']
'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: exclude:
- os: windows-latest - os: windows-latest
python-version: pypy-3.11-v7.x python-version: pypy-3.11-v7.x
- os: macos-latest - os: windows-11-arm
python-version: pypy-3.9-v7.x python-version: pypy-3.11-v7.x
- os: windows-11-arm
python-version: '3.10'
steps: steps:
- uses: actions/checkout@v5 - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Setup Python - name: Setup Python
uses: ./ uses: ./
with: with:
@@ -207,27 +193,24 @@ jobs:
matrix: matrix:
os: os:
[ [
ubuntu-22.04,
ubuntu-latest, ubuntu-latest,
ubuntu-24.04-arm, ubuntu-24.04-arm,
ubuntu-22.04,
ubuntu-22.04-arm,
windows-latest, windows-latest,
macos-latest, windows-11-arm,
macos-15-intel macos-15-intel,
macos-latest
] ]
python-version: python-version: ['3.11', 'pypy-3.11-v7.x', '3.12', '3.13', '3.14']
['3.10', 'pypy-3.10-v7.x', '3.11', 'pypy-3.11-v7.x', '3.12', '3.13']
exclude: exclude:
- os: windows-latest - os: windows-latest
python-version: pypy-3.11-v7.x python-version: pypy-3.11-v7.x
- os: ubuntu-22.04 - os: ubuntu-22.04
python-version: pypy-3.11-v7.x python-version: pypy-3.11-v7.x
- os: ubuntu-22.04-arm - os: windows-11-arm
python-version: pypy-3.10-v7.x
- os: ubuntu-22.04-arm
python-version: pypy-3.11-v7.x python-version: pypy-3.11-v7.x
steps: steps:
- uses: actions/checkout@v5 - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Setup Python - name: Setup Python
id: cache-pipenv id: cache-pipenv
uses: ./ uses: ./
@@ -263,17 +246,20 @@ jobs:
matrix: matrix:
os: os:
[ [
ubuntu-22.04,
ubuntu-latest, ubuntu-latest,
ubuntu-24.04-arm, ubuntu-24.04-arm,
ubuntu-22.04,
ubuntu-22.04-arm,
windows-latest, windows-latest,
macos-latest, windows-11-arm,
macos-15-intel macos-15-intel,
macos-latest
] ]
python-version: ['3.9', '3.10', '3.11', '3.12', '3.13'] python-version: ['3.10', '3.11', '3.12', '3.13', '3.14']
exclude:
- os: windows-11-arm
python-version: '3.10'
steps: steps:
- uses: actions/checkout@v5 - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Setup Python - name: Setup Python
uses: ./ uses: ./
with: with:
@@ -291,17 +277,20 @@ jobs:
matrix: matrix:
os: os:
[ [
ubuntu-22.04,
ubuntu-latest, ubuntu-latest,
ubuntu-24.04-arm, ubuntu-24.04-arm,
ubuntu-22.04,
ubuntu-22.04-arm,
windows-latest, windows-latest,
macos-latest, windows-11-arm,
macos-15-intel macos-15-intel,
macos-latest
] ]
python-version: ['3.9', '3.10', '3.11', '3.12', '3.13'] python-version: ['3.10', '3.11', '3.12', '3.13', '3.14']
exclude:
- os: windows-11-arm
python-version: '3.10'
steps: steps:
- uses: actions/checkout@v5 - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Setup Python - name: Setup Python
uses: ./ uses: ./
with: with:
@@ -311,56 +300,3 @@ jobs:
pip-version: '25.0.1' pip-version: '25.0.1'
- name: Install dependencies - name: Install dependencies
run: pip install numpy pandas requests run: pip install numpy pandas requests
python-pip-dependencies-caching-with-pip-install:
name: Test pip (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-15-intel
]
python-version: ['3.9', '3.10', '3.11', '3.12', '3.13']
steps:
- uses: actions/checkout@v5
- name: Setup Python
uses: ./
with:
python-version: ${{ matrix.python-version }}
cache: 'pip'
pip-install: numpy pandas requests
python-pip-dependencies-caching-path-with-pip-install:
name: Test pip (Python ${{ matrix.python-version}}, ${{ matrix.os }}, caching path)
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-15-intel
]
python-version: ['3.9', '3.10', '3.11', '3.12', '3.13']
steps:
- uses: actions/checkout@v5
- name: Setup Python
uses: ./
with:
python-version: ${{ matrix.python-version }}
cache: 'pip'
cache-dependency-path: __tests__/data/requirements.txt
pip-install: numpy pandas requests
+50 -40
View File
@@ -19,30 +19,25 @@ jobs:
matrix: matrix:
operating-system: operating-system:
[ [
windows-latest,
ubuntu-22.04, ubuntu-22.04,
ubuntu-22.04-arm,
ubuntu-latest, ubuntu-latest,
ubuntu-24.04-arm, ubuntu-24.04-arm,
macos-latest, windows-latest,
macos-15-intel windows-11-arm,
macos-15-intel,
macos-latest
] ]
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Run with setup-python 3.9.13
uses: ./
with:
python-version: 3.9.13
- name: Verify 3.9.13
run: python __tests__/verify-python.py 3.9.13
- name: Run with setup-python 3.10.11 - name: Run with setup-python 3.10.11
if: matrix.operating-system != 'windows-11-arm'
uses: ./ uses: ./
with: with:
python-version: 3.10.11 python-version: 3.10.11
- name: Verify 3.10.11 - name: Verify 3.10.11
if: matrix.operating-system != 'windows-11-arm'
run: python __tests__/verify-python.py 3.10.11 run: python __tests__/verify-python.py 3.10.11
- name: Run with setup-python 3.11.9 - name: Run with setup-python 3.11.9
@@ -52,43 +47,58 @@ jobs:
- name: Verify 3.11.9 - name: Verify 3.11.9
run: python __tests__/verify-python.py 3.11.9 run: python __tests__/verify-python.py 3.11.9
- name: Run with setup-python 3.12.7 - name: Run with setup-python 3.12.10
uses: ./ uses: ./
with: with:
python-version: 3.12.7 python-version: 3.12.10
- name: Verify 3.12.7 - name: Verify 3.12.10
run: python __tests__/verify-python.py 3.12.7 run: python __tests__/verify-python.py 3.12.10
- name: Run with setup-python 3.13.0 - name: Run with setup-python 3.13.14
uses: ./ uses: ./
with: with:
python-version: 3.13.0 python-version: 3.13.14
- name: Verify 3.13.0 - name: Verify 3.13.14
run: python __tests__/verify-python.py 3.13.0 run: python __tests__/verify-python.py 3.13.14
- name: Run with setup-python 3.13 - name: Run with setup-python 3.14.6
id: cp313
uses: ./ uses: ./
with: with:
python-version: '3.13' python-version: 3.14.6
- name: Verify 3.13 - name: Verify 3.14.6
run: python __tests__/verify-python.py 3.14.6
- name: Run with setup-python 3.14
id: cp314
uses: ./
with:
python-version: '3.14'
- name: Verify 3.14
run: python __tests__/verify-python.py 3.14
- name: Install pipx (Windows)
if: runner.os == 'Windows'
run: python -m pip install pipx
- name: Run python-path sample 3.14
run: pipx run --python '${{ steps.cp314.outputs.python-path }}' nox --version
env:
PIPX_HOME: '${{ runner.temp }}/pipx'
PIPX_BIN_DIR: '${{ runner.temp }}/pipx/bin'
- name: Run with setup-python ==3.14
uses: ./
with:
python-version: '==3.14'
- name: Verify ==3.14
run: python __tests__/verify-python.py 3.14
- name: Run with setup-python <3.14
uses: ./
with:
python-version: '<3.14'
- name: Verify <3.14
run: python __tests__/verify-python.py 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.13
uses: ./
with:
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 - name: Test Raw Endpoint Access
run: | run: |
@@ -14,7 +14,7 @@ jobs:
steps: steps:
- name: Checking out - name: Checking out
uses: actions/checkout@v5 uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Publish - name: Publish
id: publish id: publish
uses: actions/publish-immutable-action@v0.0.4 uses: actions/publish-immutable-action@4bc8754ffc40f27910afb20287dbbbb675a4e978 # v0.0.4
+7 -8
View File
@@ -28,14 +28,13 @@ jobs:
macos-15-intel macos-15-intel
] ]
graalpy: graalpy:
- 'graalpy-22.3'
- 'graalpy-23.0'
- 'graalpy-23.1' - 'graalpy-23.1'
- 'graalpy-24.1' - 'graalpy-24.2'
- 'graalpy-25.0'
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: setup-python ${{ matrix.graalpy }} - name: setup-python ${{ matrix.graalpy }}
id: setup-python id: setup-python
@@ -82,11 +81,11 @@ jobs:
ubuntu-latest, ubuntu-latest,
macos-15-intel macos-15-intel
] ]
graalpy: ['graalpy22.3', 'graalpy23.0', 'graalpy23.1', 'graalpy24.1'] graalpy: ['graalpy23.1', 'graalpy24.2', 'graalpy25.0']
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: setup-python ${{ matrix.graalpy }} - name: setup-python ${{ matrix.graalpy }}
id: setup-python id: setup-python
@@ -108,12 +107,12 @@ jobs:
matrix: matrix:
os: [ubuntu-latest, windows-latest, macos-latest, macos-15-intel] os: [ubuntu-latest, windows-latest, macos-latest, macos-15-intel]
steps: steps:
- uses: actions/checkout@v5 - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Setup GraalPy and check latest - name: Setup GraalPy and check latest
uses: ./ uses: ./
id: graalpy id: graalpy
with: with:
python-version: 'graalpy-24.x' python-version: 'graalpy-25.x'
check-latest: true check-latest: true
- name: GraalPy and Python version - name: GraalPy and Python version
run: python --version run: python --version
+40 -52
View File
@@ -22,31 +22,24 @@ jobs:
matrix: matrix:
os: os:
[ [
macos-latest,
windows-latest,
ubuntu-22.04, ubuntu-22.04,
ubuntu-22.04-arm,
ubuntu-24.04-arm,
ubuntu-latest, ubuntu-latest,
macos-15-intel ubuntu-24.04-arm,
windows-latest,
macos-15-intel,
macos-latest
] ]
pypy: pypy:
- 'pypy-2.7' - 'pypy-3.11'
- 'pypy-3.10' - 'pypy-3.11-v7.3.23'
- 'pypy3.9' - 'pypy-3.11-v7.3.x'
- 'pypy-2.7-v7.3.17' - 'pypy-3.11-v7.x'
- 'pypy-3.10-v7.3.17' - 'pypy-3.11-nightly'
- 'pypy-3.10-v7.3.16' - 'pypy3.11-v7.3.23'
- '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.17'
- 'pypy3.11-v7.3.19'
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: setup-python ${{ matrix.pypy }} - name: setup-python ${{ matrix.pypy }}
id: setup-python id: setup-python
@@ -85,20 +78,19 @@ jobs:
fail-fast: false fail-fast: false
matrix: matrix:
os: os:
- macos-15-intel [
- macos-14 ubuntu-22.04,
- macos-15 ubuntu-latest,
- windows-2022 ubuntu-24.04-arm,
- windows-2025 windows-latest,
- ubuntu-22.04 macos-15-intel,
- ubuntu-24.04 macos-latest
- ubuntu-22.04-arm ]
- ubuntu-24.04-arm pypy: ['pypy-3.11']
pypy: ['pypy-2.7', 'pypy-3.10', 'pypy-3.11']
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: setup-python ${{ matrix.pypy }} - name: setup-python ${{ matrix.pypy }}
id: setup-python id: setup-python
@@ -138,19 +130,18 @@ jobs:
matrix: matrix:
os: os:
[ [
macos-latest,
windows-latest,
ubuntu-22.04, ubuntu-22.04,
ubuntu-22.04-arm,
ubuntu-24.04-arm,
ubuntu-latest, ubuntu-latest,
macos-15-intel ubuntu-24.04-arm,
windows-latest,
macos-15-intel,
macos-latest
] ]
pypy: ['pypy2.7', 'pypy3.9', 'pypy3.10-nightly', 'pypy3.11'] pypy: ['pypy3.11-nightly', 'pypy3.11']
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: setup-python ${{ matrix.pypy }} - name: setup-python ${{ matrix.pypy }}
id: setup-python id: setup-python
@@ -172,16 +163,15 @@ jobs:
matrix: matrix:
os: os:
[ [
macos-latest,
windows-latest,
ubuntu-22.04, ubuntu-22.04,
ubuntu-22.04-arm,
ubuntu-24.04-arm,
ubuntu-latest, ubuntu-latest,
macos-15-intel ubuntu-24.04-arm,
windows-latest,
macos-15-intel,
macos-latest
] ]
steps: steps:
- uses: actions/checkout@v5 - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Setup PyPy and check latest - name: Setup PyPy and check latest
uses: ./ uses: ./
with: with:
@@ -214,23 +204,21 @@ jobs:
matrix: matrix:
os: os:
[ [
macos-latest,
windows-latest,
ubuntu-22.04, ubuntu-22.04,
ubuntu-22.04-arm,
ubuntu-24.04-arm,
ubuntu-latest, ubuntu-latest,
macos-15-intel ubuntu-24.04-arm,
windows-latest,
macos-15-intel,
macos-latest
] ]
steps: steps:
- uses: actions/checkout@v5 - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Setup PyPy and check latest - name: Setup PyPy and check latest
uses: ./ uses: ./
with: with:
python-version: | python-version: |
pypy-3.11-v7.3.x pypy-3.11-v7.3.x
pypy-3.10-v7.3.x pypy-3.10-v7.3.x
pypy3.9
check-latest: true check-latest: true
- name: PyPy and Python version - name: PyPy and Python version
run: python --version run: python --version
@@ -248,13 +236,13 @@ jobs:
run: | run: |
EXECUTABLE="pypy-3.11-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 the first '-' in "pypy-X.Y" -> "pypyX.Y" to match executable name
EXECUTABLE=${EXECUTABLE%%-*} # remove any -* suffixe EXECUTABLE=${EXECUTABLE%%-*} # remove any -* suffix
${EXECUTABLE} --version ${EXECUTABLE} --version
shell: bash shell: bash
- name: Assert expected binaries (or symlinks) are present - name: Assert expected binaries (or symlinks) are present
run: | run: |
EXECUTABLE='pypy3.9' EXECUTABLE='pypy-3.10-v7.3.x'
EXECUTABLE=${EXECUTABLE/pypy-/pypy} # remove the first '-' in "pypy-X.Y" -> "pypyX.Y" to match executable name EXECUTABLE=${EXECUTABLE/pypy-/pypy} # remove the first '-' in "pypy-X.Y" -> "pypyX.Y" to match executable name
EXECUTABLE=${EXECUTABLE%%-*} # remove any -* suffixe EXECUTABLE=${EXECUTABLE%%-*} # remove any -* suffix
${EXECUTABLE} --version ${EXECUTABLE} --version
shell: bash shell: bash
+116 -116
View File
@@ -22,18 +22,18 @@ jobs:
matrix: matrix:
os: os:
[ [
macos-latest,
windows-latest,
ubuntu-22.04, ubuntu-22.04,
ubuntu-22.04-arm,
macos-15-intel,
ubuntu-latest, ubuntu-latest,
ubuntu-24.04-arm ubuntu-24.04-arm,
windows-latest,
windows-11-arm,
macos-15-intel,
macos-latest
] ]
python: [3.13.0t, 3.13.1t, 3.13.2t] python: [3.13.14t, 3.14.6t]
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: setup-python ${{ matrix.python }} - name: setup-python ${{ matrix.python }}
id: setup-python id: setup-python
@@ -59,18 +59,18 @@ jobs:
matrix: matrix:
os: os:
[ [
macos-latest,
windows-latest,
ubuntu-22.04, ubuntu-22.04,
ubuntu-22.04-arm,
macos-15-intel,
ubuntu-latest, ubuntu-latest,
ubuntu-24.04-arm ubuntu-24.04-arm,
windows-latest,
windows-11-arm,
macos-15-intel,
macos-latest
] ]
python: [3.13.0t, 3.13.1t, 3.13.2t] python: [3.13.14t, 3.14.6t]
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: build-version-file ${{ matrix.python }} - name: build-version-file ${{ matrix.python }}
run: echo ${{ matrix.python }} > .python-version run: echo ${{ matrix.python }} > .python-version
@@ -99,18 +99,18 @@ jobs:
matrix: matrix:
os: os:
[ [
macos-latest,
windows-latest,
ubuntu-22.04, ubuntu-22.04,
ubuntu-22.04-arm,
macos-15-intel,
ubuntu-latest, ubuntu-latest,
ubuntu-24.04-arm ubuntu-24.04-arm,
windows-latest,
windows-11-arm,
macos-15-intel,
macos-latest
] ]
python: [3.13.0t, 3.13.1t, 3.13.2t] python: [3.13.14t, 3.14.6t]
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: build-version-file ${{ matrix.python }} - name: build-version-file ${{ matrix.python }}
run: echo ${{ matrix.python }} > .python-version run: echo ${{ matrix.python }} > .python-version
@@ -137,18 +137,18 @@ jobs:
matrix: matrix:
os: os:
[ [
macos-latest,
windows-latest,
ubuntu-22.04, ubuntu-22.04,
ubuntu-22.04-arm,
macos-15-intel,
ubuntu-latest, ubuntu-latest,
ubuntu-24.04-arm ubuntu-24.04-arm,
windows-latest,
windows-11-arm,
macos-15-intel,
macos-latest
] ]
python: [3.13.0, 3.13.1, 3.13.2] python: [3.13.14, 3.14.6]
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: build-version-file ${{ matrix.python }} - name: build-version-file ${{ matrix.python }}
run: | run: |
@@ -178,18 +178,18 @@ jobs:
matrix: matrix:
os: os:
[ [
macos-latest,
windows-latest,
ubuntu-22.04, ubuntu-22.04,
ubuntu-22.04-arm,
macos-15-intel,
ubuntu-latest, ubuntu-latest,
ubuntu-24.04-arm ubuntu-24.04-arm,
windows-latest,
windows-11-arm,
macos-15-intel,
macos-latest
] ]
python: [3.13.0, 3.13.1, 3.13.2] python: [3.13.14, 3.14.6]
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: build-version-file ${{ matrix.python }} - name: build-version-file ${{ matrix.python }}
run: | run: |
@@ -219,18 +219,18 @@ jobs:
matrix: matrix:
os: os:
[ [
macos-latest,
windows-latest,
ubuntu-22.04, ubuntu-22.04,
ubuntu-22.04-arm,
macos-15-intel,
ubuntu-latest, ubuntu-latest,
ubuntu-24.04-arm ubuntu-24.04-arm,
windows-latest,
windows-11-arm,
macos-15-intel,
macos-latest
] ]
python: [3.13.0t, 3.13.1t, 3.13.2t, 3.14t-dev] python: [3.13.14t, 3.14.6t, 3.15t-dev]
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: build-tool-versions-file ${{ matrix.python }} - name: build-tool-versions-file ${{ matrix.python }}
run: | run: |
@@ -250,18 +250,18 @@ jobs:
matrix: matrix:
os: os:
[ [
macos-latest,
windows-latest,
ubuntu-22.04, ubuntu-22.04,
ubuntu-22.04-arm,
macos-15-intel,
ubuntu-latest, ubuntu-latest,
ubuntu-24.04-arm ubuntu-24.04-arm,
windows-latest,
windows-11-arm,
macos-15-intel,
macos-latest
] ]
python: [3.13t, 3.14t-dev] python: [3.13t, 3.15t-dev]
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: build-version-file ${{ matrix.python }} - name: build-version-file ${{ matrix.python }}
run: | run: |
@@ -290,18 +290,18 @@ jobs:
matrix: matrix:
os: os:
[ [
macos-latest,
windows-latest,
ubuntu-22.04, ubuntu-22.04,
ubuntu-22.04-arm,
macos-15-intel,
ubuntu-latest, ubuntu-latest,
ubuntu-24.04-arm ubuntu-24.04-arm,
windows-latest,
windows-11-arm,
macos-15-intel,
macos-latest
] ]
python: [3.13.0t, 3.13.1t, 3.13.2t, 3.14t-dev] python: [3.13.14t, 3.14.6t, 3.15t-dev]
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: build-version-file ${{ matrix.python }} - name: build-version-file ${{ matrix.python }}
run: | run: |
@@ -323,30 +323,30 @@ jobs:
run: python -c 'import math; print(math.factorial(5))' run: python -c 'import math; print(math.factorial(5))'
setup-pre-release-version-from-manifest: setup-pre-release-version-from-manifest:
name: Setup 3.14.0-alpha.6 ${{ matrix.os }} name: Setup 3.15.0-beta.3 ${{ matrix.os }}
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
os: os:
[ [
macos-latest,
windows-latest,
ubuntu-22.04, ubuntu-22.04,
ubuntu-22.04-arm,
macos-15-intel,
ubuntu-latest, ubuntu-latest,
ubuntu-24.04-arm ubuntu-24.04-arm,
windows-latest,
windows-11-arm,
macos-15-intel,
macos-latest
] ]
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: setup-python 3.14.0-alpha.6 - name: setup-python 3.15.0-beta.3
id: setup-python id: setup-python
uses: ./ uses: ./
with: with:
python-version: '3.14.0-alpha.6' python-version: '3.15.0-beta.3'
freethreaded: true freethreaded: true
- name: Check python-path - name: Check python-path
@@ -360,67 +360,67 @@ jobs:
run: python -c 'import math; print(math.factorial(5))' run: python -c 'import math; print(math.factorial(5))'
setup-dev-version: setup-dev-version:
name: Setup 3.14t-dev ${{ matrix.os }} name: Setup 3.15t-dev ${{ matrix.os }}
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
os: os:
[ [
macos-latest,
windows-latest,
ubuntu-22.04, ubuntu-22.04,
ubuntu-22.04-arm,
ubuntu-24.04-arm,
ubuntu-latest, ubuntu-latest,
macos-15-intel ubuntu-24.04-arm,
windows-latest,
windows-11-arm,
macos-15-intel,
macos-latest
] ]
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: setup-python 3.14t-dev - name: setup-python 3.15t-dev
id: setup-python id: setup-python
uses: ./ uses: ./
with: with:
python-version: '3.14t-dev' python-version: '3.15t-dev'
- name: Check python-path - name: Check python-path
run: ./__tests__/check-python-path.sh '${{ steps.setup-python.outputs.python-path }}' run: ./__tests__/check-python-path.sh '${{ steps.setup-python.outputs.python-path }}'
shell: bash shell: bash
- name: Validate version - name: Validate version
run: ${{ startsWith(steps.setup-python.outputs.python-version, '3.14.') }} run: ${{ startsWith(steps.setup-python.outputs.python-version, '3.15.') }}
shell: bash shell: bash
- name: Run simple code - name: Run simple code
run: python -c 'import math; print(math.factorial(5))' run: python -c 'import math; print(math.factorial(5))'
setup-prerelease-version: setup-prerelease-version:
name: Setup 3.14t ${{ matrix.os }} name: Setup 3.15t ${{ matrix.os }}
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
os: os:
[ [
macos-latest,
windows-latest,
ubuntu-22.04, ubuntu-22.04,
ubuntu-22.04-arm,
ubuntu-24.04-arm,
ubuntu-latest, ubuntu-latest,
macos-15-intel ubuntu-24.04-arm,
windows-latest,
windows-11-arm,
macos-15-intel,
macos-latest
] ]
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: setup-python 3.14t - name: setup-python 3.15t
id: setup-python id: setup-python
uses: ./ uses: ./
with: with:
python-version: '3.14t' python-version: '3.15t'
allow-prereleases: true allow-prereleases: true
- name: Check python-path - name: Check python-path
@@ -428,7 +428,7 @@ jobs:
shell: bash shell: bash
- name: Validate version - name: Validate version
run: ${{ startsWith(steps.setup-python.outputs.python-version, '3.14.') }} run: ${{ startsWith(steps.setup-python.outputs.python-version, '3.15.') }}
shell: bash shell: bash
- name: Run simple code - name: Run simple code
@@ -442,18 +442,18 @@ jobs:
matrix: matrix:
os: os:
[ [
macos-latest,
windows-latest,
ubuntu-22.04, ubuntu-22.04,
ubuntu-22.04-arm,
macos-15-intel,
ubuntu-latest, ubuntu-latest,
ubuntu-24.04-arm ubuntu-24.04-arm,
windows-latest,
windows-11-arm,
macos-15-intel,
macos-latest
] ]
python: [3.13.0t, 3.13.1t, 3.13.2t] python: [3.13.14t, 3.14.6t]
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: setup-python ${{ matrix.python }} - name: setup-python ${{ matrix.python }}
id: setup-python id: setup-python
@@ -475,17 +475,17 @@ jobs:
matrix: matrix:
os: os:
[ [
macos-latest,
windows-latest,
ubuntu-22.04, ubuntu-22.04,
ubuntu-22.04-arm,
ubuntu-24.04-arm,
ubuntu-latest, ubuntu-latest,
macos-15-intel ubuntu-24.04-arm,
windows-latest,
windows-11-arm,
macos-15-intel,
macos-latest
] ]
python-version: [3.13t, 3.14t-dev] python-version: [3.13t, 3.15t-dev]
steps: steps:
- uses: actions/checkout@v5 - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Setup Python and check latest - name: Setup Python and check latest
id: setup-python id: setup-python
uses: ./ uses: ./
@@ -502,24 +502,24 @@ jobs:
matrix: matrix:
os: os:
[ [
macos-latest,
windows-latest,
ubuntu-22.04, ubuntu-22.04,
ubuntu-22.04-arm,
ubuntu-24.04-arm,
ubuntu-latest, ubuntu-latest,
macos-15-intel ubuntu-24.04-arm,
windows-latest,
windows-11-arm,
macos-15-intel,
macos-latest
] ]
steps: steps:
- uses: actions/checkout@v5 - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Setup Python and check latest - name: Setup multiple Python versions
id: setup-python id: setup-python
uses: ./ uses: ./
with: with:
python-version: | python-version: |
3.13.1t 3.13.14t
3.13.2t 3.14.6t
3.14t-dev 3.15t-dev
- name: Verify Python version - name: Verify Python version
run: ${{ steps.setup-python.outputs.python-path }} -VVV run: ${{ steps.setup-python.outputs.python-path }} -VVV
@@ -531,18 +531,18 @@ jobs:
matrix: matrix:
os: os:
[ [
macos-latest,
windows-latest,
ubuntu-22.04, ubuntu-22.04,
ubuntu-22.04-arm,
macos-15-intel,
ubuntu-latest, ubuntu-latest,
ubuntu-24.04-arm ubuntu-24.04-arm,
windows-latest,
windows-11-arm,
macos-15-intel,
macos-latest
] ]
python: [3.13.1, 3.13.2, 3.14-dev, 3.14.0-alpha.6] python: [3.13.14, 3.14.6, 3.15-dev, 3.15.0-beta.3]
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: setup-python ${{ matrix.python }} - name: setup-python ${{ matrix.python }}
id: setup-python id: setup-python
uses: ./ uses: ./
+141 -111
View File
@@ -22,18 +22,21 @@ jobs:
matrix: matrix:
os: os:
[ [
macos-latest,
windows-latest,
ubuntu-22.04, ubuntu-22.04,
ubuntu-22.04-arm,
macos-15-intel,
ubuntu-latest, ubuntu-latest,
ubuntu-24.04-arm ubuntu-24.04-arm,
windows-latest,
windows-11-arm,
macos-15-intel,
macos-latest
] ]
python: [3.9.13, 3.10.11, 3.11.9, 3.12.3, 3.13.2] python: [3.10.11, 3.11.9, 3.12.10, 3.13.14, 3.14.6]
exclude:
- os: windows-11-arm
python: 3.10.11
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: setup-python ${{ matrix.python }} - name: setup-python ${{ matrix.python }}
id: setup-python id: setup-python
@@ -66,18 +69,21 @@ jobs:
matrix: matrix:
os: os:
[ [
macos-latest,
windows-latest,
ubuntu-22.04, ubuntu-22.04,
ubuntu-22.04-arm,
macos-15-intel,
ubuntu-latest, ubuntu-latest,
ubuntu-24.04-arm ubuntu-24.04-arm,
windows-latest,
windows-11-arm,
macos-15-intel,
macos-latest
] ]
python: [3.9.13, 3.10.11, 3.11.9, 3.12.3, 3.13.2] python: [3.10.11, 3.11.9, 3.12.10, 3.13.14, 3.14.6]
exclude:
- os: windows-11-arm
python: 3.10.11
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: build-version-file ${{ matrix.python }} - name: build-version-file ${{ matrix.python }}
run: echo ${{ matrix.python }} > .python-version run: echo ${{ matrix.python }} > .python-version
@@ -113,18 +119,21 @@ jobs:
matrix: matrix:
os: os:
[ [
macos-latest,
windows-latest,
ubuntu-22.04, ubuntu-22.04,
ubuntu-22.04-arm,
macos-15-intel,
ubuntu-latest, ubuntu-latest,
ubuntu-24.04-arm ubuntu-24.04-arm,
windows-latest,
windows-11-arm,
macos-15-intel,
macos-latest
] ]
python: [3.9.13, 3.10.11, 3.11.9, 3.12.3, 3.13.2] python: [3.10.11, 3.11.9, 3.12.10, 3.13.14, 3.14.6]
exclude:
- os: windows-11-arm
python: 3.10.11
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: build-version-file ${{ matrix.python }} - name: build-version-file ${{ matrix.python }}
run: echo ${{ matrix.python }} > .python-version run: echo ${{ matrix.python }} > .python-version
@@ -158,18 +167,21 @@ jobs:
matrix: matrix:
os: os:
[ [
macos-latest,
windows-latest,
ubuntu-22.04, ubuntu-22.04,
ubuntu-22.04-arm,
macos-15-intel,
ubuntu-latest, ubuntu-latest,
ubuntu-24.04-arm ubuntu-24.04-arm,
windows-latest,
windows-11-arm,
macos-15-intel,
macos-latest
] ]
python: [3.9.13, 3.10.11, 3.11.9, '==3.12.3', 3.13.2] python: [3.10.11, 3.11.9, '==3.12.10', 3.13.14, 3.14.6]
exclude:
- os: windows-11-arm
python: 3.10.11
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: build-version-file ${{ matrix.python }} - name: build-version-file ${{ matrix.python }}
run: | run: |
@@ -208,18 +220,21 @@ jobs:
matrix: matrix:
os: os:
[ [
macos-latest,
windows-latest,
ubuntu-22.04, ubuntu-22.04,
ubuntu-22.04-arm,
macos-15-intel,
ubuntu-latest, ubuntu-latest,
ubuntu-24.04-arm ubuntu-24.04-arm,
windows-latest,
windows-11-arm,
macos-15-intel,
macos-latest
] ]
python: [3.9.13, 3.10.11, 3.11.9, 3.12.3, 3.13.2] python: [3.10.11, 3.11.9, 3.12.10, 3.13.14, 3.14.6]
exclude:
- os: windows-11-arm
python: 3.10.11
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: build-version-file ${{ matrix.python }} - name: build-version-file ${{ matrix.python }}
run: | run: |
@@ -258,21 +273,25 @@ jobs:
matrix: matrix:
os: os:
[ [
macos-latest,
windows-latest,
ubuntu-22.04, ubuntu-22.04,
ubuntu-22.04-arm,
macos-15-intel,
ubuntu-latest, ubuntu-latest,
ubuntu-24.04-arm ubuntu-24.04-arm,
windows-latest,
windows-11-arm,
macos-15-intel,
macos-latest
] ]
python: [pypy3.11-7.3.18, graalpy-24.1.2, 3.13.2, 3.14-dev] python: [pypy3.11-7.3.18, graalpy-24.1.2, 3.13.14, 3.15-dev]
exclude: exclude:
- os: windows-latest - os: windows-latest
python: graalpy-24.1.2 python: graalpy-24.1.2
- os: windows-11-arm
python: graalpy-24.1.2
- os: windows-11-arm
python: pypy3.11-7.3.18
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: build-tool-versions-file ${{ matrix.python }} - name: build-tool-versions-file ${{ matrix.python }}
run: | run: |
@@ -292,18 +311,21 @@ jobs:
matrix: matrix:
os: os:
[ [
macos-latest,
windows-latest,
ubuntu-22.04, ubuntu-22.04,
ubuntu-22.04-arm,
macos-15-intel,
ubuntu-latest, ubuntu-latest,
ubuntu-24.04-arm ubuntu-24.04-arm,
windows-latest,
windows-11-arm,
macos-15-intel,
macos-latest
] ]
python: [3.9.13, 3.10.11, 3.11.9, 3.13.2] python: [3.10.11, 3.11.9, 3.13.14, 3.14.6]
exclude:
- os: windows-11-arm
python: 3.10.11
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: build-version-file ${{ matrix.python }} - name: build-version-file ${{ matrix.python }}
run: | run: |
@@ -342,18 +364,21 @@ jobs:
matrix: matrix:
os: os:
[ [
macos-latest,
windows-latest,
ubuntu-22.04, ubuntu-22.04,
ubuntu-22.04-arm,
macos-15-intel,
ubuntu-latest, ubuntu-latest,
ubuntu-24.04-arm ubuntu-24.04-arm,
windows-latest,
windows-11-arm,
macos-15-intel,
macos-latest
] ]
python: [3.9.13, 3.10.11, 3.11.9, 3.13.2] python: [3.10.11, 3.11.9, 3.13.14, 3.14.6]
exclude:
- os: windows-11-arm
python: 3.10.11
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: build-version-file ${{ matrix.python }} - name: build-version-file ${{ matrix.python }}
run: | run: |
@@ -385,30 +410,30 @@ jobs:
run: python -c 'import math; print(math.factorial(5))' run: python -c 'import math; print(math.factorial(5))'
setup-pre-release-version-from-manifest: setup-pre-release-version-from-manifest:
name: Setup 3.14.0-alpha.6 ${{ matrix.os }} name: Setup 3.15.0-beta.3 ${{ matrix.os }}
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
os: os:
[ [
macos-latest,
windows-latest,
ubuntu-22.04, ubuntu-22.04,
ubuntu-22.04-arm,
macos-15-intel,
ubuntu-latest, ubuntu-latest,
ubuntu-24.04-arm ubuntu-24.04-arm,
windows-latest,
windows-11-arm,
macos-15-intel,
macos-latest
] ]
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: setup-python 3.14.0-alpha.6 - name: setup-python 3.15.0-beta.3
id: setup-python id: setup-python
uses: ./ uses: ./
with: with:
python-version: '3.14.0-alpha.6' python-version: '3.15.0-beta.3'
- name: Check python-path - name: Check python-path
run: ./__tests__/check-python-path.sh '${{ steps.setup-python.outputs.python-path }}' run: ./__tests__/check-python-path.sh '${{ steps.setup-python.outputs.python-path }}'
@@ -417,8 +442,8 @@ jobs:
- name: Validate version - name: Validate version
run: | run: |
$pythonVersion = (python --version) $pythonVersion = (python --version)
if ("Python 3.14.0a6" -ne "$pythonVersion"){ if ("Python 3.15.0b3" -ne "$pythonVersion"){
Write-Host "The current version is $pythonVersion; expected version is 3.14.0a6" Write-Host "The current version is $pythonVersion; expected version is 3.15.0b3"
exit 1 exit 1
} }
$pythonVersion $pythonVersion
@@ -428,67 +453,67 @@ jobs:
run: python -c 'import math; print(math.factorial(5))' run: python -c 'import math; print(math.factorial(5))'
setup-dev-version: setup-dev-version:
name: Setup 3.14-dev ${{ matrix.os }} name: Setup 3.15-dev ${{ matrix.os }}
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
os: os:
[ [
macos-latest,
windows-latest,
ubuntu-22.04, ubuntu-22.04,
ubuntu-22.04-arm,
ubuntu-24.04-arm,
ubuntu-latest, ubuntu-latest,
macos-15-intel ubuntu-24.04-arm,
windows-latest,
windows-11-arm,
macos-15-intel,
macos-latest
] ]
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: setup-python 3.14-dev - name: setup-python 3.15-dev
id: setup-python id: setup-python
uses: ./ uses: ./
with: with:
python-version: '3.14-dev' python-version: '3.15-dev'
- name: Check python-path - name: Check python-path
run: ./__tests__/check-python-path.sh '${{ steps.setup-python.outputs.python-path }}' run: ./__tests__/check-python-path.sh '${{ steps.setup-python.outputs.python-path }}'
shell: bash shell: bash
- name: Validate version - name: Validate version
run: ${{ startsWith(steps.setup-python.outputs.python-version, '3.14.') }} run: ${{ startsWith(steps.setup-python.outputs.python-version, '3.15.') }}
shell: bash shell: bash
- name: Run simple code - name: Run simple code
run: python -c 'import math; print(math.factorial(5))' run: python -c 'import math; print(math.factorial(5))'
setup-prerelease-version: setup-prerelease-version:
name: Setup 3.14 ${{ matrix.os }} name: Setup 3.15 ${{ matrix.os }}
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
os: os:
[ [
macos-latest,
windows-latest,
ubuntu-22.04, ubuntu-22.04,
ubuntu-22.04-arm,
ubuntu-24.04-arm,
ubuntu-latest, ubuntu-latest,
macos-15-intel ubuntu-24.04-arm,
windows-latest,
windows-11-arm,
macos-15-intel,
macos-latest
] ]
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: setup-python 3.14 - name: setup-python 3.15
id: setup-python id: setup-python
uses: ./ uses: ./
with: with:
python-version: '3.14' python-version: '3.15'
allow-prereleases: true allow-prereleases: true
- name: Check python-path - name: Check python-path
@@ -496,7 +521,7 @@ jobs:
shell: bash shell: bash
- name: Validate version - name: Validate version
run: ${{ startsWith(steps.setup-python.outputs.python-version, '3.14.') }} run: ${{ startsWith(steps.setup-python.outputs.python-version, '3.15.') }}
shell: bash shell: bash
- name: Run simple code - name: Run simple code
@@ -510,18 +535,21 @@ jobs:
matrix: matrix:
os: os:
[ [
macos-latest,
windows-latest,
ubuntu-22.04, ubuntu-22.04,
ubuntu-22.04-arm,
macos-15-intel,
ubuntu-latest, ubuntu-latest,
ubuntu-24.04-arm ubuntu-24.04-arm,
windows-latest,
windows-11-arm,
macos-15-intel,
macos-latest
] ]
python: ['3.9', '3.10', '3.11', '3.12', '3.13'] python: ['3.10', '3.11', '3.12', '3.13', '3.14']
exclude:
- os: windows-11-arm
python: '3.10'
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: setup-python ${{ matrix.python }} - name: setup-python ${{ matrix.python }}
id: setup-python id: setup-python
@@ -543,17 +571,20 @@ jobs:
matrix: matrix:
os: os:
[ [
macos-latest,
windows-latest,
ubuntu-22.04, ubuntu-22.04,
ubuntu-22.04-arm,
ubuntu-24.04-arm,
ubuntu-latest, ubuntu-latest,
macos-15-intel ubuntu-24.04-arm,
windows-latest,
windows-11-arm,
macos-15-intel,
macos-latest
] ]
python-version: ['3.9', '3.10', '3.11', '3.12', '3.13'] python-version: ['3.10', '3.11', '3.12', '3.13', '3.14']
exclude:
- os: windows-11-arm
python-version: '3.10'
steps: steps:
- uses: actions/checkout@v5 - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Setup Python and check latest - name: Setup Python and check latest
uses: ./ uses: ./
with: with:
@@ -576,31 +607,30 @@ jobs:
matrix: matrix:
os: os:
[ [
macos-latest,
windows-latest,
ubuntu-22.04, ubuntu-22.04,
ubuntu-22.04-arm,
ubuntu-24.04-arm,
ubuntu-latest, ubuntu-latest,
macos-15-intel ubuntu-24.04-arm,
windows-latest,
windows-11-arm,
macos-15-intel,
macos-latest
] ]
steps: steps:
- uses: actions/checkout@v5 - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Setup Python and check latest - name: Setup Python and check latest
uses: ./ uses: ./
with: with:
python-version: | python-version: |
3.9
3.10
3.11 3.11
3.12 3.12
3.13 3.13
3.14
check-latest: true check-latest: true
- name: Validate version - name: Validate version
run: | run: |
$pythonVersion = (python --version) $pythonVersion = (python --version)
if ("$pythonVersion" -NotMatch "3.13"){ if ("$pythonVersion" -NotMatch "3.14"){
Write-Host "The current version is $pythonVersion; expected version is 3.13" Write-Host "The current version is $pythonVersion; expected version is 3.14"
exit 1 exit 1
} }
$pythonVersion $pythonVersion
+4
View File
@@ -10,6 +10,10 @@ allowed:
- cc0-1.0 - cc0-1.0
- unlicense - unlicense
- 0bsd - 0bsd
- blueoak-1.0.0
reviewed: reviewed:
npm: npm:
- "@actions/http-client"
- "balanced-match"
- "brace-expansion"
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
-11
View File
@@ -1,11 +0,0 @@
// This is a reusable configuration file copied from https://github.com/actions/reusable-workflows/tree/main/reusable-configurations. Please don't make changes to this file as it's the subject of an automatic update.
module.exports = {
printWidth: 80,
tabWidth: 2,
useTabs: false,
semi: true,
singleQuote: true,
trailingComma: 'none',
bracketSpacing: false,
arrowParens: 'avoid'
};
+10
View File
@@ -0,0 +1,10 @@
{
"printWidth": 80,
"tabWidth": 2,
"useTabs": false,
"semi": true,
"singleQuote": true,
"trailingComma": "none",
"bracketSpacing": false,
"arrowParens": "avoid"
}
+14 -11
View File
@@ -11,6 +11,10 @@ This action provides the following functionality for GitHub Actions users:
- Optionally caching dependencies for pip, pipenv and poetry - Optionally caching dependencies for pip, pipenv and poetry
- Registering problem matchers for error output - Registering problem matchers for error output
## What's new in V7
- Migrated action internals to ESM for compatibility with latest `@actions/*` packages. No changes to action inputs, outputs, or behavior.
## Breaking changes in V6 ## Breaking changes in V6
- Upgraded action from node20 to node24 - Upgraded action from node20 to node24
@@ -25,8 +29,8 @@ See [action.yml](action.yml)
**Python** **Python**
```yaml ```yaml
steps: steps:
- uses: actions/checkout@v5 - uses: actions/checkout@v7
- uses: actions/setup-python@v6 - uses: actions/setup-python@v7
with: with:
python-version: '3.13' python-version: '3.13'
- run: python my_script.py - run: python my_script.py
@@ -35,8 +39,8 @@ steps:
**PyPy** **PyPy**
```yaml ```yaml
steps: steps:
- uses: actions/checkout@v5 - uses: actions/checkout@v7
- uses: actions/setup-python@v6 - uses: actions/setup-python@v7
with: with:
python-version: 'pypy3.10' python-version: 'pypy3.10'
- run: python my_script.py - run: python my_script.py
@@ -45,8 +49,8 @@ steps:
**GraalPy** **GraalPy**
```yaml ```yaml
steps: steps:
- uses: actions/checkout@v5 - uses: actions/checkout@v7
- uses: actions/setup-python@v6 - uses: actions/setup-python@v7
with: with:
python-version: 'graalpy-24.0' python-version: 'graalpy-24.0'
- run: python my_script.py - run: python my_script.py
@@ -55,8 +59,8 @@ steps:
**Free threaded Python** **Free threaded Python**
```yaml ```yaml
steps: steps:
- uses: actions/checkout@v5 - uses: actions/checkout@v7
- uses: actions/setup-python@v6 - uses: actions/setup-python@v7
with: with:
python-version: '3.13t' python-version: '3.13t'
- run: python my_script.py - run: python my_script.py
@@ -90,8 +94,8 @@ The action defaults to searching for a dependency file (`requirements.txt` or `p
```yaml ```yaml
steps: steps:
- uses: actions/checkout@v5 - uses: actions/checkout@v7
- uses: actions/setup-python@v6 - uses: actions/setup-python@v7
with: with:
python-version: '3.13' python-version: '3.13'
cache: 'pip' # caching pip dependencies cache: 'pip' # caching pip dependencies
@@ -118,7 +122,6 @@ 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) - [Using `setup-python` on GHES](docs/advanced-usage.md#using-setup-python-on-ghes)
- [Allow pre-releases](docs/advanced-usage.md#allow-pre-releases) - [Allow pre-releases](docs/advanced-usage.md#allow-pre-releases)
- [Using the pip-version input](docs/advanced-usage.md#using-the-pip-version-input) - [Using the pip-version input](docs/advanced-usage.md#using-the-pip-version-input)
- [Using the pip-install input](docs/advanced-usage.md#using-the-pip-install-input)
## Recommended permissions ## Recommended permissions
+112 -62
View File
@@ -1,10 +1,62 @@
import {jest, describe, it, expect, beforeEach, afterEach} from '@jest/globals';
import {fileURLToPath} from 'url';
import * as path from 'path'; import * as path from 'path';
import * as core from '@actions/core';
import * as cache from '@actions/cache'; const __dirname = path.dirname(fileURLToPath(import.meta.url));
import * as exec from '@actions/exec';
import * as io from '@actions/io'; // Mock @actions modules before importing anything that depends on them
import {getCacheDistributor} from '../src/cache-distributions/cache-factory'; jest.unstable_mockModule('@actions/core', () => ({
import {State} from '../src/cache-distributions/cache-distributor'; info: jest.fn(),
warning: jest.fn(),
debug: jest.fn(),
error: jest.fn(),
notice: jest.fn(),
setFailed: jest.fn(),
setOutput: jest.fn(),
getInput: jest.fn(),
getBooleanInput: jest.fn(),
getMultilineInput: jest.fn(),
addPath: jest.fn(),
exportVariable: jest.fn(),
saveState: jest.fn(),
getState: jest.fn(),
setSecret: jest.fn(),
isDebug: jest.fn(() => false),
startGroup: jest.fn(),
endGroup: jest.fn(),
group: jest.fn((_name: string, fn: () => Promise<unknown>) => fn()),
toPlatformPath: jest.fn((p: string) => p),
toWin32Path: jest.fn((p: string) => p),
toPosixPath: jest.fn((p: string) => p)
}));
jest.unstable_mockModule('@actions/cache', () => ({
saveCache: jest.fn(),
restoreCache: jest.fn(),
isFeatureAvailable: jest.fn()
}));
jest.unstable_mockModule('@actions/exec', () => ({
exec: jest.fn(),
getExecOutput: jest.fn()
}));
jest.unstable_mockModule('@actions/io', () => ({
which: jest.fn(),
mkdirP: jest.fn(),
rmRF: jest.fn(),
mv: jest.fn(),
cp: jest.fn()
}));
// Dynamic imports after mocking
const core = await import('@actions/core');
const cache = await import('@actions/cache');
const exec = await import('@actions/exec');
const io = await import('@actions/io');
const {getCacheDistributor} =
await import('../src/cache-distributions/cache-factory.js');
const {State} = await import('../src/cache-distributions/cache-distributor.js');
describe('restore-cache', () => { describe('restore-cache', () => {
const pipFileLockHash = const pipFileLockHash =
@@ -24,43 +76,38 @@ virtualenvs.in-project = true
virtualenvs.path = "{cache-dir}/virtualenvs" # /Users/patrick/Library/Caches/pypoetry/virtualenvs virtualenvs.path = "{cache-dir}/virtualenvs" # /Users/patrick/Library/Caches/pypoetry/virtualenvs
`; `;
// core spy let infoSpy: jest.Mock;
let infoSpy: jest.SpyInstance; let warningSpy: jest.Mock;
let warningSpy: jest.SpyInstance; let debugSpy: jest.Mock;
let debugSpy: jest.SpyInstance; let saveStateSpy: jest.Mock;
let saveStateSpy: jest.SpyInstance; let getStateSpy: jest.Mock;
let getStateSpy: jest.SpyInstance; let setOutputSpy: jest.Mock;
let setOutputSpy: jest.SpyInstance; let restoreCacheSpy: jest.Mock;
let getExecOutputSpy: jest.Mock;
// cache spy let whichSpy: jest.Mock;
let restoreCacheSpy: jest.SpyInstance;
// exec spy
let getExecOutputSpy: jest.SpyInstance;
// io spy
let whichSpy: jest.SpyInstance;
beforeEach(() => { beforeEach(() => {
process.env['RUNNER_OS'] = process.env['RUNNER_OS'] ?? 'linux'; process.env['RUNNER_OS'] = process.env['RUNNER_OS'] ?? 'linux';
infoSpy = jest.spyOn(core, 'info'); infoSpy = core.info as jest.Mock;
infoSpy.mockImplementation(input => undefined); infoSpy.mockImplementation(() => undefined);
warningSpy = jest.spyOn(core, 'warning'); warningSpy = core.warning as jest.Mock;
warningSpy.mockImplementation(input => undefined); warningSpy.mockImplementation(() => undefined);
debugSpy = jest.spyOn(core, 'debug'); debugSpy = core.debug as jest.Mock;
debugSpy.mockImplementation(input => undefined); debugSpy.mockImplementation(() => undefined);
saveStateSpy = jest.spyOn(core, 'saveState'); saveStateSpy = core.saveState as jest.Mock;
saveStateSpy.mockImplementation(input => undefined); saveStateSpy.mockImplementation(() => undefined);
getStateSpy = jest.spyOn(core, 'getState'); getStateSpy = core.getState as jest.Mock;
getStateSpy.mockImplementation(input => undefined); getStateSpy.mockImplementation(() => undefined);
getExecOutputSpy = jest.spyOn(exec, 'getExecOutput'); getExecOutputSpy = exec.getExecOutput as jest.Mock;
getExecOutputSpy.mockImplementation((input: string) => { (
getExecOutputSpy as jest.Mock<typeof exec.getExecOutput>
).mockImplementation(async (input: string) => {
if (input.includes('pip')) { if (input.includes('pip')) {
return {stdout: 'pip', stderr: '', exitCode: 0}; return {stdout: 'pip', stderr: '', exitCode: 0};
} }
@@ -74,17 +121,19 @@ virtualenvs.path = "{cache-dir}/virtualenvs" # /Users/patrick/Library/Caches/py
return {stdout: '', stderr: 'Error occured', exitCode: 2}; return {stdout: '', stderr: 'Error occured', exitCode: 2};
}); });
setOutputSpy = jest.spyOn(core, 'setOutput'); setOutputSpy = core.setOutput as jest.Mock;
setOutputSpy.mockImplementation(input => undefined); setOutputSpy.mockImplementation(() => undefined);
restoreCacheSpy = jest.spyOn(cache, 'restoreCache'); restoreCacheSpy = cache.restoreCache as jest.Mock;
restoreCacheSpy.mockImplementation( (
(cachePaths: string[], primaryKey: string, restoreKey?: string) => { restoreCacheSpy as jest.Mock<typeof cache.restoreCache>
return primaryKey; ).mockImplementation(
(cachePaths: string[], primaryKey: string, restoreKey?: string[]) => {
return Promise.resolve(primaryKey);
} }
); );
whichSpy = jest.spyOn(io, 'which'); whichSpy = io.which as jest.Mock;
whichSpy.mockImplementation(() => '/path/to/python'); whichSpy.mockImplementation(() => '/path/to/python');
}); });
@@ -163,9 +212,13 @@ virtualenvs.path = "{cache-dir}/virtualenvs" # /Users/patrick/Library/Caches/py
fileHash, fileHash,
cachePaths cachePaths
) => { ) => {
restoreCacheSpy.mockImplementation( (
(cachePaths: string[], primaryKey: string, restoreKey?: string) => { restoreCacheSpy as jest.Mock<typeof cache.restoreCache>
return primaryKey.includes(fileHash) ? primaryKey : ''; ).mockImplementation(
(cachePaths: string[], primaryKey: string, restoreKey?: string[]) => {
return Promise.resolve(
primaryKey.includes(fileHash) ? primaryKey : ''
);
} }
); );
@@ -184,25 +237,18 @@ virtualenvs.path = "{cache-dir}/virtualenvs" # /Users/patrick/Library/Caches/py
); );
} }
const restoredKeys = restoreCacheSpy.mock.results.map( const restoredKeys = await Promise.all(
result => result.value restoreCacheSpy.mock.results.map(result => result.value)
); );
restoredKeys.forEach(restoredKey => { restoredKeys.forEach(restoredKey => {
if (restoredKey) { if (restoredKey) {
if (process.platform === 'linux' && packageManager === 'pip') { const osSegment =
expect(infoSpy).toHaveBeenCalledWith( process.platform === 'linux' ? '-20.04-Ubuntu' : '';
`Cache restored from key: setup-python-${process.env['RUNNER_OS']}-${process.arch}-20.04-Ubuntu-python-${pythonVersion}-${packageManager}-${fileHash}` const versionSuffix = packageManager === 'poetry' ? '-v2' : '';
); expect(infoSpy).toHaveBeenCalledWith(
} else if (packageManager === 'poetry') { `Cache restored from key: setup-python-${process.env['RUNNER_OS']}-${process.arch}${osSegment}-python-${pythonVersion}-${packageManager}${versionSuffix}-${fileHash}`
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 { } else {
expect(infoSpy).toHaveBeenCalledWith( expect(infoSpy).toHaveBeenCalledWith(
`${packageManager} cache is not found` `${packageManager} cache is not found`
@@ -291,9 +337,13 @@ virtualenvs.path = "{cache-dir}/virtualenvs" # /Users/patrick/Library/Caches/py
])( ])(
'restored dependencies for %s by primaryKey', 'restored dependencies for %s by primaryKey',
async (packageManager, pythonVersion, dependencyFile, fileHash) => { async (packageManager, pythonVersion, dependencyFile, fileHash) => {
restoreCacheSpy.mockImplementation( (
(cachePaths: string[], primaryKey: string, restoreKey?: string) => { restoreCacheSpy as jest.Mock<typeof cache.restoreCache>
return primaryKey !== fileHash && restoreKey ? pipFileLockHash : ''; ).mockImplementation(
(cachePaths: string[], primaryKey: string, restoreKey?: string[]) => {
return Promise.resolve(
primaryKey !== fileHash && restoreKey ? pipFileLockHash : ''
);
} }
); );
const cacheDistributor = getCacheDistributor( const cacheDistributor = getCacheDistributor(
+143 -79
View File
@@ -1,8 +1,61 @@
import * as core from '@actions/core'; import {jest, describe, it, expect, beforeEach, afterEach} from '@jest/globals';
import * as cache from '@actions/cache'; import {fileURLToPath} from 'url';
import * as exec from '@actions/exec'; import path from 'path';
import {run} from '../src/cache-save';
import {State} from '../src/cache-distributions/cache-distributor'; const __dirname = path.dirname(fileURLToPath(import.meta.url));
// Mock @actions modules before importing anything that depends on them
jest.unstable_mockModule('@actions/core', () => ({
info: jest.fn(),
warning: jest.fn(),
debug: jest.fn(),
error: jest.fn(),
notice: jest.fn(),
setFailed: jest.fn(),
setOutput: jest.fn(),
getInput: jest.fn(),
getBooleanInput: jest.fn(),
getMultilineInput: jest.fn(),
addPath: jest.fn(),
exportVariable: jest.fn(),
saveState: jest.fn(),
getState: jest.fn(),
setSecret: jest.fn(),
isDebug: jest.fn(() => false),
startGroup: jest.fn(),
endGroup: jest.fn(),
group: jest.fn((_name: string, fn: () => Promise<unknown>) => fn()),
toPlatformPath: jest.fn((p: string) => p),
toWin32Path: jest.fn((p: string) => p),
toPosixPath: jest.fn((p: string) => p)
}));
class MockValidationError extends Error {
constructor(message: string) {
super(message);
this.name = 'ValidationError';
}
}
jest.unstable_mockModule('@actions/cache', () => ({
saveCache: jest.fn(),
restoreCache: jest.fn(),
isFeatureAvailable: jest.fn(),
ValidationError: MockValidationError,
ReserveCacheError: MockValidationError
}));
jest.unstable_mockModule('@actions/exec', () => ({
exec: jest.fn(),
getExecOutput: jest.fn()
}));
// Dynamic imports after mocking
const core = await import('@actions/core');
const cache = await import('@actions/cache');
const exec = await import('@actions/exec');
const {run} = await import('../src/cache-save.js');
const {State} = await import('../src/cache-distributions/cache-distributor.js');
describe('run', () => { describe('run', () => {
const pipFileLockHash = const pipFileLockHash =
@@ -14,53 +67,54 @@ describe('run', () => {
const poetryLockHash = const poetryLockHash =
'571bf984f8d210e6a97f854e479fdd4a2b5af67b5fdac109ec337a0ea16e7836'; '571bf984f8d210e6a97f854e479fdd4a2b5af67b5fdac109ec337a0ea16e7836';
// core spy let infoSpy: jest.Mock;
let infoSpy: jest.SpyInstance; let warningSpy: jest.Mock;
let warningSpy: jest.SpyInstance; let debugSpy: jest.Mock;
let debugSpy: jest.SpyInstance; let saveStateSpy: jest.Mock;
let saveStateSpy: jest.SpyInstance; let getStateSpy: jest.Mock;
let getStateSpy: jest.SpyInstance; let getInputSpy: jest.Mock;
let getInputSpy: jest.SpyInstance; let setFailedSpy: jest.Mock;
let setFailedSpy: jest.SpyInstance; let saveCacheSpy: jest.Mock;
let getExecOutputSpy: jest.Mock;
// cache spy
let saveCacheSpy: jest.SpyInstance;
// exec spy
let getExecOutputSpy: jest.SpyInstance;
let inputs = {} as any; let inputs = {} as any;
beforeEach(() => { beforeEach(() => {
process.env['RUNNER_OS'] = process.env['RUNNER_OS'] ?? 'linux'; process.env['RUNNER_OS'] = process.env['RUNNER_OS'] ?? 'linux';
infoSpy = jest.spyOn(core, 'info'); infoSpy = core.info as jest.Mock;
infoSpy.mockImplementation(input => undefined); infoSpy.mockImplementation(() => undefined);
warningSpy = jest.spyOn(core, 'warning'); warningSpy = core.warning as jest.Mock;
warningSpy.mockImplementation(input => undefined); warningSpy.mockImplementation(() => undefined);
debugSpy = jest.spyOn(core, 'debug'); debugSpy = core.debug as jest.Mock;
debugSpy.mockImplementation(input => undefined); debugSpy.mockImplementation(() => undefined);
saveStateSpy = jest.spyOn(core, 'saveState'); saveStateSpy = core.saveState as jest.Mock;
saveStateSpy.mockImplementation(input => undefined); saveStateSpy.mockImplementation(() => undefined);
getStateSpy = jest.spyOn(core, 'getState'); getStateSpy = core.getState as jest.Mock;
getStateSpy.mockImplementation(input => { (getStateSpy as jest.Mock<typeof core.getState>).mockImplementation(
if (input === State.CACHE_PATHS) { (input: string) => {
return JSON.stringify([__dirname]); if (input === State.CACHE_PATHS) {
return JSON.stringify([__dirname]);
}
return requirementsHash;
} }
return requirementsHash; );
});
setFailedSpy = jest.spyOn(core, 'setFailed'); setFailedSpy = core.setFailed as jest.Mock;
getInputSpy = jest.spyOn(core, 'getInput'); getInputSpy = core.getInput as jest.Mock;
getInputSpy.mockImplementation(input => inputs[input]); (getInputSpy as jest.Mock<typeof core.getInput>).mockImplementation(
(input: string) => inputs[input]
);
getExecOutputSpy = jest.spyOn(exec, 'getExecOutput'); getExecOutputSpy = exec.getExecOutput as jest.Mock;
getExecOutputSpy.mockImplementation((input: string) => { (
getExecOutputSpy as jest.Mock<typeof exec.getExecOutput>
).mockImplementation(async (input: string) => {
if (input.includes('pip')) { if (input.includes('pip')) {
return {stdout: 'pip', stderr: '', exitCode: 0}; return {stdout: 'pip', stderr: '', exitCode: 0};
} }
@@ -68,7 +122,7 @@ describe('run', () => {
return {stdout: '', stderr: 'Error occured', exitCode: 2}; return {stdout: '', stderr: 'Error occured', exitCode: 2};
}); });
saveCacheSpy = jest.spyOn(cache, 'saveCache'); saveCacheSpy = cache.saveCache as jest.Mock;
saveCacheSpy.mockImplementation(() => undefined); saveCacheSpy.mockImplementation(() => undefined);
}); });
@@ -124,15 +178,17 @@ describe('run', () => {
it('saves cache from pip', async () => { it('saves cache from pip', async () => {
inputs['cache'] = 'pip'; inputs['cache'] = 'pip';
inputs['python-version'] = '3.10.0'; inputs['python-version'] = '3.10.0';
getStateSpy.mockImplementation((name: string) => { (getStateSpy as jest.Mock<typeof core.getState>).mockImplementation(
if (name === State.CACHE_MATCHED_KEY) { (name: string) => {
return requirementsHash; if (name === State.CACHE_MATCHED_KEY) {
} else if (name === State.CACHE_PATHS) { return requirementsHash;
return JSON.stringify([__dirname]); } else if (name === State.CACHE_PATHS) {
} else { return JSON.stringify([__dirname]);
return pipFileLockHash; } else {
return pipFileLockHash;
}
} }
}); );
await run(); await run();
@@ -151,15 +207,17 @@ describe('run', () => {
it('saves cache from pipenv', async () => { it('saves cache from pipenv', async () => {
inputs['cache'] = 'pipenv'; inputs['cache'] = 'pipenv';
inputs['python-version'] = '3.10.0'; inputs['python-version'] = '3.10.0';
getStateSpy.mockImplementation((name: string) => { (getStateSpy as jest.Mock<typeof core.getState>).mockImplementation(
if (name === State.CACHE_MATCHED_KEY) { (name: string) => {
return pipFileLockHash; if (name === State.CACHE_MATCHED_KEY) {
} else if (name === State.CACHE_PATHS) { return pipFileLockHash;
return JSON.stringify([__dirname]); } else if (name === State.CACHE_PATHS) {
} else { return JSON.stringify([__dirname]);
return requirementsHash; } else {
return requirementsHash;
}
} }
}); );
await run(); await run();
@@ -178,15 +236,17 @@ describe('run', () => {
it('saves cache from poetry', async () => { it('saves cache from poetry', async () => {
inputs['cache'] = 'poetry'; inputs['cache'] = 'poetry';
inputs['python-version'] = '3.10.0'; inputs['python-version'] = '3.10.0';
getStateSpy.mockImplementation((name: string) => { (getStateSpy as jest.Mock<typeof core.getState>).mockImplementation(
if (name === State.CACHE_MATCHED_KEY) { (name: string) => {
return poetryLockHash; if (name === State.CACHE_MATCHED_KEY) {
} else if (name === State.CACHE_PATHS) { return poetryLockHash;
return JSON.stringify([__dirname]); } else if (name === State.CACHE_PATHS) {
} else { return JSON.stringify([__dirname]);
return requirementsHash; } else {
return requirementsHash;
}
} }
}); );
await run(); await run();
@@ -205,15 +265,17 @@ describe('run', () => {
it('saves with -1 cacheId , should not fail workflow', async () => { it('saves with -1 cacheId , should not fail workflow', async () => {
inputs['cache'] = 'poetry'; inputs['cache'] = 'poetry';
inputs['python-version'] = '3.10.0'; inputs['python-version'] = '3.10.0';
getStateSpy.mockImplementation((name: string) => { (getStateSpy as jest.Mock<typeof core.getState>).mockImplementation(
if (name === State.STATE_CACHE_PRIMARY_KEY) { (name: string) => {
return poetryLockHash; if (name === State.STATE_CACHE_PRIMARY_KEY) {
} else if (name === State.CACHE_PATHS) { return poetryLockHash;
return JSON.stringify([__dirname]); } else if (name === State.CACHE_PATHS) {
} else { return JSON.stringify([__dirname]);
return requirementsHash; } else {
return requirementsHash;
}
} }
}); );
saveCacheSpy.mockImplementation(() => { saveCacheSpy.mockImplementation(() => {
return -1; return -1;
@@ -234,15 +296,17 @@ describe('run', () => {
it('saves with error from toolkit, should not fail the workflow', async () => { it('saves with error from toolkit, should not fail the workflow', async () => {
inputs['cache'] = 'npm'; inputs['cache'] = 'npm';
inputs['python-version'] = '3.10.0'; inputs['python-version'] = '3.10.0';
getStateSpy.mockImplementation((name: string) => { (getStateSpy as jest.Mock<typeof core.getState>).mockImplementation(
if (name === State.STATE_CACHE_PRIMARY_KEY) { (name: string) => {
return poetryLockHash; if (name === State.STATE_CACHE_PRIMARY_KEY) {
} else if (name === State.CACHE_PATHS) { return poetryLockHash;
return JSON.stringify([__dirname]); } else if (name === State.CACHE_PATHS) {
} else { return JSON.stringify([__dirname]);
return requirementsHash; } else {
return requirementsHash;
}
} }
}); );
saveCacheSpy.mockImplementation(() => { saveCacheSpy.mockImplementation(() => {
throw new cache.ValidationError('Validation failed'); throw new cache.ValidationError('Validation failed');
+1 -1
View File
@@ -5,7 +5,7 @@ name = "pypi"
[packages] [packages]
flake8 = "==6.0.0" flake8 = "==6.0.0"
numpy = "==2.2.4" numpy = "==2.4.6"
[dev-packages] [dev-packages]
+75 -58
View File
@@ -1,7 +1,7 @@
{ {
"_meta": { "_meta": {
"hash": { "hash": {
"sha256": "9d0bc7ff1f9078396b19f05bc5cd57894f3783c68f96fa9d623b1ea5a1b168f5" "sha256": "0060d5c4915f1f35aae1f3e9fa6de3f65d1a851e6e33ac57a04665d5d1c796fa"
}, },
"pipfile-spec": 6, "pipfile-spec": 6,
"requires": { "requires": {
@@ -35,65 +35,82 @@
}, },
"numpy": { "numpy": {
"hashes": [ "hashes": [
"sha256:05c076d531e9998e7e694c36e8b349969c56eadd2cdcd07242958489d79a7286", "sha256:001fbb8e08d942dd57599e781f2472269ee7f2755fae407b4f67b2f0b17da3f1",
"sha256:0d54974f9cf14acf49c60f0f7f4084b6579d24d439453d5fc5805d46a165b542", "sha256:0280e0356c0829a18d9de1cb7eee50ec22ca639878d7240307ca0943d73cd2c4",
"sha256:11c43995255eb4127115956495f43e9343736edb7fcdb0d973defd9de14cd84f", "sha256:043191bfa8eab18c776647b62723ac9dddece59743b13f49b2016094129c2b3f",
"sha256:188dcbca89834cc2e14eb2f106c96d6d46f200fe0200310fc29089657379c58d", "sha256:06ca2f61ec4385a07a6977c55ba998a4466c123642b4a32694d3128fce18c079",
"sha256:1974afec0b479e50438fc3648974268f972e2d908ddb6d7fb634598cdb8260a0", "sha256:0a041d3d761dc3c35cc56ce0351506a02bcbc25f7b169f652435141a17db9096",
"sha256:1cf4e5c6a278d620dee9ddeb487dc6a860f9b199eadeecc567f777daace1e9e7", "sha256:0ab0a9c4ffb1a6d95ef519fe4247dba8eb6b18ad93999f76b7f657039acabd47",
"sha256:207a2b8441cc8b6a2a78c9ddc64d00d20c303d79fba08c577752f080c4007ee3", "sha256:0c9136e14ed34a9e343a31c533d78a9813a69a3148332bce5e9821cb2f996e66",
"sha256:218f061d2faa73621fa23d6359442b0fc658d5b9a70801373625d958259eaca3", "sha256:110f8b71aacb688ec69062bb7f6938a0f8acb01b7c1c4beb453c65b6d234584d",
"sha256:2aad3c17ed2ff455b8eaafe06bcdae0062a1db77cb99f4b9cbb5f4ecb13c5146", "sha256:112b06a867b235ef466ed3508ddf0238050df9c727cafb5301ac385b899189a1",
"sha256:2fa8fa7697ad1646b5c93de1719965844e004fcad23c91228aca1cf0800044a1", "sha256:17f9ade344e7d9b464a084d69bcf18fc691cb1db67c62ed80820bf4926d78f0e",
"sha256:31504f970f563d99f71a3512d0c01a645b692b12a63630d6aafa0939e52361e6", "sha256:1e254a00cdf42b1e4d5b3d68d33af63268d41340d8885df2ab6470f2e1500147",
"sha256:3387dd7232804b341165cedcb90694565a6015433ee076c6754775e85d86f1fc", "sha256:1e978ec1e8bd0e0e4de6bb75de9d30cbb74db6b6a2bb727618613703ca0167dd",
"sha256:4ba5054787e89c59c593a4169830ab362ac2bee8a969249dc56e5d7d20ff8df9", "sha256:25c692919ac5a01f170a3bfcd62d745b24fd095c353d50812637d6fcab442e75",
"sha256:4f92084defa704deadd4e0a5ab1dc52d8ac9e8a8ef617f3fbb853e79b0ea3592", "sha256:260a5d70215b61ab4fadf5c7baacd64821842975eea312125ed3c39a6391b063",
"sha256:65ef3468b53269eb5fdb3a5c09508c032b793da03251d5f8722b1194f1790c00", "sha256:2803abfebfc990042cd494d8ce2d5f82e9d847af6d35ec486923aa19dbad5e73",
"sha256:6f527d8fdb0286fd2fd97a2a96c6be17ba4232da346931d967a0630050dfd298", "sha256:29a287e0cf63ff528da061de6b9f64a4618da591ca1046aafc54062e40ca7eab",
"sha256:7051ee569db5fbac144335e0f3b9c2337e0c8d5c9fee015f259a5bd70772b7e8", "sha256:29cb7f67d10b479ff07c17d33e39f78c07f71c40ef30d63c153d340e96cd3fb4",
"sha256:7716e4a9b7af82c06a2543c53ca476fa0b57e4d760481273e09da04b74ee6ee2", "sha256:3213d622a0283a39a93d188f3cf72b26862df52fbb4ca3697f51705016523d41",
"sha256:79bd5f0a02aa16808fcbc79a9a376a147cc1045f7dfe44c6e7d53fa8b8a79392", "sha256:33111801a01c12a8a1e3721f0a9232f8cfc8ae2c6b7098167e6f623c6073f402",
"sha256:7a4e84a6283b36632e2a5b56e121961f6542ab886bc9e12f8f9818b3c266bfbb", "sha256:357cc07a6d7b0b182ff02249616a03742827ebb1277546b5c7cd7f7620a45698",
"sha256:8120575cb4882318c791f839a4fd66161a6fa46f3f0a5e613071aae35b5dd8f8", "sha256:38efbc8de75c7a0fc1ac190162d892787f3f47b57cc291231aafee36b80982b7",
"sha256:81413336ef121a6ba746892fad881a83351ee3e1e4011f52e97fba79233611fd", "sha256:4081eb135ac24158bd51cdfbef16f1c64df7063b1143f24731387137c092bec8",
"sha256:8146f3550d627252269ac42ae660281d673eb6f8b32f113538e0cc2a9aed42b9", "sha256:40fdc1ae7125e518ea98e53e69a4ebc27e1fd50510c47b7ea130cf21e5e1d42b",
"sha256:879cf3a9a2b53a4672a168c21375166171bc3932b7e21f622201811c43cdd3b0", "sha256:4cfe66903cc32a9921a6733d96b19bb6abf310397581bbad89c228f5abaf0ee8",
"sha256:892c10d6a73e0f14935c31229e03325a7b3093fafd6ce0af704be7f894d95687", "sha256:511dbaf848decaaaf4b4ca48032619fb3138710c4bf7da7617765edad1ef96b0",
"sha256:92bda934a791c01d6d9d8e038363c50918ef7c40601552a58ac84c9613a665bc", "sha256:55cced7c52e981362f708ad635198e97a752dfba412cc03c23bbf3bd8d5cd662",
"sha256:9ba03692a45d3eef66559efe1d1096c4b9b75c0986b5dff5530c378fb8331d4f", "sha256:56b39e5e0622a09a25bf5baf62f4bcf0cb8a41ae6e2819cf49bbc5a74c083f91",
"sha256:9eeea959168ea555e556b8188da5fa7831e21d91ce031e95ce23747b7609f8a4", "sha256:5dbbdb29840ca3d91ee0fece42fc29278886d908280bfec0a5846c6f901a3eb0",
"sha256:a0258ad1f44f138b791327961caedffbf9612bfa504ab9597157806faa95194a", "sha256:5f9fb9157b4ce2971008323afe46053787b526ef624fea915b261468a8421a0f",
"sha256:a761ba0fa886a7bb33c6c8f6f20213735cb19642c580a931c625ee377ee8bd39", "sha256:6180d8b35af935aed8ece3a85e0a43f87393ae0ac87c8d2c8bd2c993f7270ef3",
"sha256:a7b9084668aa0f64e64bd00d27ba5146ef1c3a8835f3bd912e7a9e01326804c4", "sha256:68a5124b13fa6cc2086764a20005d30bc0548146f7f5322f02fce212ca14317f",
"sha256:a84eda42bd12edc36eb5b53bbcc9b406820d3353f1994b6cfe453a33ff101775", "sha256:68bb27509ac1b9a3443094260f6326150663b06abe40b73a2f81160623da5b67",
"sha256:ab2939cd5bec30a7430cbdb2287b63151b77cf9624de0532d629c9a1c59b1d5c", "sha256:6f41ae150c4e32db4f3310cdaf64b1593a03dbabe29eec77fc9b50fe64061df6",
"sha256:ac0280f1ba4a4bfff363a99a6aceed4f8e123f8a9b234c89140f5e894e452ecd", "sha256:7265a2f3d436e54ef9f2b52b5c937e6be778781bd97a590319d7348f1c1ca997",
"sha256:adf8c1d66f432ce577d0197dceaac2ac00c0759f573f28516246351c58a85020", "sha256:72fbe16c6fac95aedf5937fa873445cec2110be35d8a4e9433d7501fd98dae6b",
"sha256:b4adfbbc64014976d2f91084915ca4e626fbf2057fb81af209c1a6d776d23e3d", "sha256:7d92c3819208a60205a12a245c91ad70cb0a85336659b19b834205573ac8456e",
"sha256:bb649f8b207ab07caebba230d851b579a3c8711a851d29efe15008e31bb4de24", "sha256:8155154c7c691289fe18f510b5d4657c68c67989f293f0535a91360392ff6538",
"sha256:bce43e386c16898b91e162e5baaad90c4b06f9dcbe36282490032cec98dc8ae7", "sha256:81a1cca95ed5bb92aa8b10dd2cdc9a0d3853a50fad926c28b5d7e8ea54389627",
"sha256:bd3ad3b0a40e713fc68f99ecfd07124195333f1e689387c180813f0e94309d6f", "sha256:89cd468399cfd2504718f0ba50e410dca55a170b61a02ad92bb18c8a65186e93",
"sha256:c3f7ac96b16955634e223b579a3e5798df59007ca43e8d451a0e6a50f6bfdfba", "sha256:8ad03c0965fb3c692200e74d458ca28c1dbb4ce96f9a479a8aa041ad5fabca02",
"sha256:cf28633d64294969c019c6df4ff37f5698e8326db68cc2b66576a51fad634880", "sha256:90f9849678c75fe7afa2d348ac842c168b0a4d3d61919687216dfc547976d853",
"sha256:d0f35b19894a9e08639fd60a1ec1978cb7f5f7f1eace62f38dd36be8aecdef4d", "sha256:948424b06129ce883307e8cff868c31396d8dc7630a59c61d70d98dbe70f222c",
"sha256:db1f1c22173ac1c58db249ae48aa7ead29f534b9a948bc56828337aa84a32ed6", "sha256:9cd5ffd25db4e7ba6a375693b3fc0fc1791ec636c17db3720da19bde7180ec43",
"sha256:dbe512c511956b893d2dacd007d955a3f03d555ae05cfa3ff1c1ff6df8851854", "sha256:a0df0043bdb289bde1f62da130d20df23d58b45429f752bc7a8fc5325a225ecd",
"sha256:df2f57871a96bbc1b69733cd4c51dc33bea66146b8c63cacbfed73eec0883017", "sha256:a2c306dea656c12c68f51f4cea133cbe78ca7435eb28c735eac1d3ebe73be6e8",
"sha256:e2f085ce2e813a50dfd0e01fbfc0c12bbe5d2063d99f8b29da30e544fb6483b8", "sha256:a7830bab239b79cda9c08c2da014761cafb48da6150e1da17ac06283f43b6089",
"sha256:e642d86b8f956098b564a45e6f6ce68a22c2c97a04f5acd3f221f57b8cb850ae", "sha256:a7c711e21628b52034bb5ab8d1bce291f752fcc5e92accc615778acee1ff4778",
"sha256:e9e0a277bb2eb5d8a7407e14688b85fd8ad628ee4e0c7930415687b6564207a4", "sha256:aaf159caa35993cb1f56fb9b8e4610d35758e7ca005412eb1daa856a78c9c4b1",
"sha256:ea2bb7e2ae9e37d96835b3576a4fa4b3a97592fbea8ef7c3587078b0068b8f09", "sha256:ae506e6902902557576a26ff33eda8695e7ecb3cb36c3b573a0765dee114ebdb",
"sha256:ee4d528022f4c5ff67332469e10efe06a267e32f4067dc76bb7e2cddf3cd25ff", "sha256:b507f5c4c1d508876d1819b6bf9a49d365b96320b5d4993426b33a23ca4b8261",
"sha256:f05d4198c1bacc9124018109c5fba2f3201dbe7ab6e92ff100494f236209c960", "sha256:bf162abab1c1a736333192707cef898e735a5ca00f38f27eeedf44b39d9e85eb",
"sha256:f34dc300df798742b3d06515aa2a0aee20941c13579d7a2f2e10af01ae4901ee", "sha256:c1a2af6c6ef86344a6b0db6b97834208bf598db514f2b155042439b62605601a",
"sha256:f4162988a360a29af158aeb4a2f4f09ffed6a969c9776f8f3bdee9b06a8ab7e5", "sha256:c2d37ab77531417474168eb79d6d80b14f821a966818505d03013d0833edb7a8",
"sha256:f486038e44caa08dbd97275a9a35a283a8f1d2f0ee60ac260a1790e76660833c", "sha256:c4fc99836233ea196540b17ab0983aff60ed07941751930f5f4d05bc3b3b7359",
"sha256:f7de08cbe5551911886d1ab60de58448c6df0f67d9feb7d1fb21e9875ef95e91" "sha256:d581b735e177fdcdce6fed8e7e8880a3fb6ee4e3653a3ac6af01c6f4c03effc5",
"sha256:d6da64deb6b8ed903e7560180a92f2d804ee1ba5eeb849ac2748b8c1aba1f6d7",
"sha256:d8e8286dd7cea7895157318d1b91cdacac64c479f3cbc8dce548331728484751",
"sha256:ddea102b48f9e339f3948bf22040944184627a30fdf7f858667673b9c5f033c8",
"sha256:dfa20cc6ca228e6b155b11da03825975ce66aea520985dbbddf0f2a5a495c605",
"sha256:e3e5193ef5a3dc73bceee50f7fdc2c90dbb76c42df8d8fae3d1067a583df579e",
"sha256:e3eeb0aabd6bd5ce64faae67e9935203a6991b4bc2a485a767fbafb2c5125f45",
"sha256:e5805d5a22fd19c8ccff10a9561f9df94436b0545619ea579db2d3c35294bce2",
"sha256:e85b752a1e912b70eaad4fafbd4d1238007ab221de2009b9a2f5ae7461239895",
"sha256:eaf7fa2de5c0be8ae6ff8e9bea2ccd725e980541244521d8d4b5f3354a27babe",
"sha256:ebfb099f8dcf083deef3ac1ca4c1503f387cf76296fcb3816b66f5ecb5f54fdb",
"sha256:ece3d2cfe132e7d51f44a832b303895e6f2d499c5e74dfbdb06ee246147a304a",
"sha256:ed9749eef4cbd126da3dc1d6bcb3a57f5eb7ac6a6484146bdbf743f552dfc577",
"sha256:ede83e07a75dd06bc501566c1eca2afc0d61677c1472ac9ad93fdee6e638a48d",
"sha256:ef4aea96ce4d3b074422cb4f2f64e216bf9e213004bb58ecfdf50ea02ea8eb9a",
"sha256:f3a3570c4a2a16746ac2c31a7c7c7b0c186b95ce902e33db6f28094ed7387dda",
"sha256:f407cb6b8e9d6d8c626bc73c945db1706035af8fd632295547bf1c9e46d092d6",
"sha256:f74a575920ab21fe304421a3fc28793d82e299cae9eccb37084e9fc7f3617c20"
], ],
"index": "pypi", "index": "pypi",
"markers": "python_version >= '3.10'", "markers": "python_version >= '3.11'",
"version": "==2.2.4" "version": "==2.4.6"
}, },
"pycodestyle": { "pycodestyle": {
"hashes": [ "hashes": [
+1
View File
@@ -9,6 +9,7 @@ python = ">=3.9,<3.14"
flake8 = "^4.0.1" flake8 = "^4.0.1"
pyinstaller = "6.10.0" pyinstaller = "6.10.0"
setuptools = ">=78.1.1" setuptools = ">=78.1.1"
packaging = ">=22.0,<26"
[tool.poetry.dev-dependencies] [tool.poetry.dev-dependencies]
+5 -5
View File
@@ -1,12 +1,12 @@
certifi==2020.6.20 certifi==2024.7.4
chardet==3.0.4 chardet==3.0.4
docutils==0.16 docutils==0.16
idna==3.7 idna==3.15
Kivy==2.0.0rc3 Kivy==2.0.0rc3
Kivy-Garden==0.1.4 Kivy-Garden==0.1.4
packaging==20.7 packaging==20.7
pdf2image==1.12.1 pdf2image==1.12.1
Pygments==2.6.1 Pygments==2.20.0
requests==2.32.4 requests==2.33.0
urllib3==2.5.0 urllib3==2.7.0
xlrd==1.2.0 xlrd==1.2.0

Some files were not shown because too many files have changed in this diff Show More