mirror of
https://github.com/actions/setup-python.git
synced 2026-07-14 23:15:49 +00:00
Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 54baeea5b3 | |||
| c7092773a3 | |||
| 6849080452 |
@@ -23,15 +23,18 @@ 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@v6
|
- uses: actions/checkout@v6
|
||||||
- name: Setup Python
|
- name: Setup Python
|
||||||
@@ -50,15 +53,18 @@ 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@v6
|
- uses: actions/checkout@v6
|
||||||
- name: Setup Python
|
- name: Setup Python
|
||||||
@@ -90,15 +96,15 @@ 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@v6
|
- uses: actions/checkout@v6
|
||||||
- name: Install poetry
|
- name: Install poetry
|
||||||
@@ -122,15 +128,18 @@ 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@v6
|
- uses: actions/checkout@v6
|
||||||
- name: Setup Python
|
- name: Setup Python
|
||||||
@@ -150,15 +159,18 @@ 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@v6
|
- uses: actions/checkout@v6
|
||||||
- name: Setup Python
|
- name: Setup Python
|
||||||
@@ -191,15 +203,18 @@ 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@v6
|
- uses: actions/checkout@v6
|
||||||
- name: Setup Python
|
- name: Setup Python
|
||||||
@@ -219,15 +234,18 @@ 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@v6
|
- uses: actions/checkout@v6
|
||||||
- name: Setup Python
|
- name: Setup Python
|
||||||
@@ -248,15 +266,18 @@ 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@v6
|
- uses: actions/checkout@v6
|
||||||
- name: Setup Python
|
- name: Setup Python
|
||||||
@@ -274,15 +295,18 @@ 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@v6
|
- uses: actions/checkout@v6
|
||||||
- name: Setup Python
|
- name: Setup Python
|
||||||
|
|||||||
@@ -23,30 +23,23 @@ 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@v6
|
- uses: actions/checkout@v6
|
||||||
@@ -66,27 +59,22 @@ 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@v6
|
- uses: actions/checkout@v6
|
||||||
- name: Setup Python
|
- name: Setup Python
|
||||||
@@ -123,25 +111,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',
|
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@v6
|
- uses: actions/checkout@v6
|
||||||
- name: Install poetry
|
- name: Install poetry
|
||||||
@@ -169,30 +157,23 @@ 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@v6
|
- uses: actions/checkout@v6
|
||||||
- name: Setup Python
|
- name: Setup Python
|
||||||
@@ -212,24 +193,21 @@ 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@v6
|
- uses: actions/checkout@v6
|
||||||
@@ -268,15 +246,18 @@ 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@v6
|
- uses: actions/checkout@v6
|
||||||
- name: Setup Python
|
- name: Setup Python
|
||||||
@@ -296,15 +277,18 @@ 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@v6
|
- uses: actions/checkout@v6
|
||||||
- name: Setup Python
|
- name: Setup Python
|
||||||
@@ -325,15 +309,18 @@ 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@v6
|
- uses: actions/checkout@v6
|
||||||
- name: Setup Python
|
- name: Setup Python
|
||||||
@@ -351,15 +338,18 @@ 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@v6
|
- uses: actions/checkout@v6
|
||||||
- name: Setup Python
|
- name: Setup Python
|
||||||
|
|||||||
@@ -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@v6
|
uses: actions/checkout@v6
|
||||||
|
|
||||||
- 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,51 +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.13
|
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)
|
- name: Install pipx (Windows)
|
||||||
if: runner. os == 'Windows'
|
if: runner.os == 'Windows'
|
||||||
run: python -m pip install pipx
|
run: python -m pip install pipx
|
||||||
|
|
||||||
- name: Run python-path sample 3.13
|
- name: Run python-path sample 3.14
|
||||||
run: pipx run --python '${{ steps.cp313.outputs.python-path }}' nox --version
|
run: pipx run --python '${{ steps.cp314.outputs.python-path }}' nox --version
|
||||||
env:
|
env:
|
||||||
PIPX_HOME: '${{ runner.temp }}/pipx'
|
PIPX_HOME: '${{ runner.temp }}/pipx'
|
||||||
PIPX_BIN_DIR: '${{ runner.temp }}/pipx/bin'
|
PIPX_BIN_DIR: '${{ runner.temp }}/pipx/bin'
|
||||||
|
|
||||||
- name: Run with setup-python ==3.13
|
- name: Run with setup-python ==3.14
|
||||||
uses: ./
|
uses: ./
|
||||||
with:
|
with:
|
||||||
python-version: '==3.13'
|
python-version: '==3.14'
|
||||||
- name: Verify ==3.13
|
- name: Verify ==3.14
|
||||||
run: python __tests__/verify-python.py 3.13
|
run: python __tests__/verify-python.py 3.14
|
||||||
|
|
||||||
- name: Run with setup-python <3.13
|
- name: Run with setup-python <3.14
|
||||||
uses: ./
|
uses: ./
|
||||||
with:
|
with:
|
||||||
python-version: '<3.13'
|
python-version: '<3.14'
|
||||||
- name: Verify <3.13
|
- name: Verify <3.14
|
||||||
run: python __tests__/verify-python.py 3.12
|
run: python __tests__/verify-python.py 3.13
|
||||||
|
|
||||||
- name: Test Raw Endpoint Access
|
- name: Test Raw Endpoint Access
|
||||||
run: |
|
run: |
|
||||||
|
|||||||
@@ -28,10 +28,9 @@ 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
|
||||||
@@ -82,7 +81,7 @@ 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
|
||||||
@@ -113,7 +112,7 @@ jobs:
|
|||||||
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
|
||||||
|
|||||||
@@ -22,27 +22,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,
|
||||||
|
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.10-v7.3.16'
|
|
||||||
- 'pypy-3.10-v7.3.x'
|
|
||||||
- 'pypy-3.10-v7.x'
|
|
||||||
- 'pypy-2.7-v7.3.12rc1'
|
|
||||||
- 'pypy-3.11-nightly'
|
- 'pypy-3.11-nightly'
|
||||||
- 'pypy3.10-v7.3.17'
|
- 'pypy3.11-v7.3.23'
|
||||||
- 'pypy3.11-v7.3.19'
|
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
@@ -85,16 +78,15 @@ 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
|
||||||
@@ -138,15 +130,14 @@ 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.11-nightly', 'pypy3.11']
|
pypy: ['pypy3.11-nightly', 'pypy3.11']
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
@@ -172,13 +163,12 @@ 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@v6
|
- uses: actions/checkout@v6
|
||||||
@@ -214,13 +204,12 @@ 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@v6
|
- uses: actions/checkout@v6
|
||||||
@@ -230,7 +219,6 @@ jobs:
|
|||||||
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
|
||||||
|
|||||||
@@ -22,15 +22,15 @@ 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@v6
|
uses: actions/checkout@v6
|
||||||
@@ -59,15 +59,15 @@ 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@v6
|
uses: actions/checkout@v6
|
||||||
@@ -99,15 +99,15 @@ 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@v6
|
uses: actions/checkout@v6
|
||||||
@@ -137,15 +137,15 @@ 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@v6
|
uses: actions/checkout@v6
|
||||||
@@ -178,15 +178,15 @@ 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@v6
|
uses: actions/checkout@v6
|
||||||
@@ -219,15 +219,15 @@ 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@v6
|
uses: actions/checkout@v6
|
||||||
@@ -250,15 +250,15 @@ 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@v6
|
uses: actions/checkout@v6
|
||||||
@@ -290,15 +290,15 @@ 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@v6
|
uses: actions/checkout@v6
|
||||||
@@ -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@v6
|
uses: actions/checkout@v6
|
||||||
|
|
||||||
- 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@v6
|
uses: actions/checkout@v6
|
||||||
|
|
||||||
- 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@v6
|
uses: actions/checkout@v6
|
||||||
|
|
||||||
- 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,15 +442,15 @@ 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@v6
|
uses: actions/checkout@v6
|
||||||
@@ -475,15 +475,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,
|
||||||
|
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@v6
|
- uses: actions/checkout@v6
|
||||||
- name: Setup Python and check latest
|
- name: Setup Python and check latest
|
||||||
@@ -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@v6
|
- uses: actions/checkout@v6
|
||||||
- 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,15 +531,15 @@ 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@v6
|
uses: actions/checkout@v6
|
||||||
|
|||||||
@@ -22,15 +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.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@v6
|
uses: actions/checkout@v6
|
||||||
@@ -66,15 +69,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.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@v6
|
uses: actions/checkout@v6
|
||||||
@@ -113,15 +119,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.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@v6
|
uses: actions/checkout@v6
|
||||||
@@ -158,15 +167,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.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@v6
|
uses: actions/checkout@v6
|
||||||
@@ -208,15 +220,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.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@v6
|
uses: actions/checkout@v6
|
||||||
@@ -258,18 +273,22 @@ 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@v6
|
uses: actions/checkout@v6
|
||||||
@@ -292,15 +311,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.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@v6
|
uses: actions/checkout@v6
|
||||||
@@ -342,15 +364,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.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@v6
|
uses: actions/checkout@v6
|
||||||
@@ -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@v6
|
uses: actions/checkout@v6
|
||||||
|
|
||||||
- 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@v6
|
uses: actions/checkout@v6
|
||||||
|
|
||||||
- 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@v6
|
uses: actions/checkout@v6
|
||||||
|
|
||||||
- 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,15 +535,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.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@v6
|
uses: actions/checkout@v6
|
||||||
@@ -543,15 +571,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,
|
||||||
|
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@v6
|
- uses: actions/checkout@v6
|
||||||
- name: Setup Python and check latest
|
- name: Setup Python and check latest
|
||||||
@@ -576,13 +607,13 @@ 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@v6
|
- uses: actions/checkout@v6
|
||||||
@@ -590,17 +621,16 @@ jobs:
|
|||||||
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
|
||||||
|
|||||||
@@ -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]
|
||||||
|
|
||||||
|
|||||||
Generated
+75
-58
@@ -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": [
|
||||||
|
|||||||
@@ -31,6 +31,10 @@ describe('getManifest', () => {
|
|||||||
jest.resetAllMocks();
|
jest.resetAllMocks();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
afterEach(() => {
|
||||||
|
jest.useRealTimers();
|
||||||
|
});
|
||||||
|
|
||||||
it('should return manifest from repo', async () => {
|
it('should return manifest from repo', async () => {
|
||||||
(tc.getManifestFromRepo as jest.Mock).mockResolvedValue(mockManifest);
|
(tc.getManifestFromRepo as jest.Mock).mockResolvedValue(mockManifest);
|
||||||
const manifest = await getManifest();
|
const manifest = await getManifest();
|
||||||
@@ -38,14 +42,70 @@ describe('getManifest', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('should return manifest from URL if repo fetch fails', async () => {
|
it('should return manifest from URL if repo fetch fails', async () => {
|
||||||
|
jest.useFakeTimers();
|
||||||
(tc.getManifestFromRepo as jest.Mock).mockRejectedValue(
|
(tc.getManifestFromRepo as jest.Mock).mockRejectedValue(
|
||||||
new Error('Fetch failed')
|
new Error('Fetch failed')
|
||||||
);
|
);
|
||||||
(httpm.HttpClient.prototype.getJson as jest.Mock).mockResolvedValue({
|
(httpm.HttpClient.prototype.getJson as jest.Mock).mockResolvedValue({
|
||||||
result: mockManifest
|
result: mockManifest
|
||||||
});
|
});
|
||||||
|
const promise = getManifest();
|
||||||
|
await jest.runAllTimersAsync();
|
||||||
|
const manifest = await promise;
|
||||||
|
expect(manifest).toEqual(mockManifest);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should fall back to URL if repo returns a truncated/empty manifest', async () => {
|
||||||
|
jest.useFakeTimers();
|
||||||
|
(tc.getManifestFromRepo as jest.Mock).mockResolvedValue([]);
|
||||||
|
(httpm.HttpClient.prototype.getJson as jest.Mock).mockResolvedValue({
|
||||||
|
result: mockManifest
|
||||||
|
});
|
||||||
|
const promise = getManifest();
|
||||||
|
await jest.runAllTimersAsync();
|
||||||
|
const manifest = await promise;
|
||||||
|
expect(manifest).toEqual(mockManifest);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should retry on a transient invalid manifest and then succeed', async () => {
|
||||||
|
jest.useFakeTimers();
|
||||||
|
(tc.getManifestFromRepo as jest.Mock)
|
||||||
|
.mockResolvedValueOnce([])
|
||||||
|
.mockResolvedValueOnce(mockManifest);
|
||||||
|
const promise = getManifest();
|
||||||
|
await jest.runAllTimersAsync();
|
||||||
|
const manifest = await promise;
|
||||||
|
expect(manifest).toEqual(mockManifest);
|
||||||
|
expect(tc.getManifestFromRepo as jest.Mock).toHaveBeenCalledTimes(2);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should fail loudly when the manifest is truncated/empty on every source', async () => {
|
||||||
|
jest.useFakeTimers();
|
||||||
|
(tc.getManifestFromRepo as jest.Mock).mockResolvedValue([]);
|
||||||
|
(httpm.HttpClient.prototype.getJson as jest.Mock).mockResolvedValue({
|
||||||
|
result: []
|
||||||
|
});
|
||||||
|
const promise = getManifest();
|
||||||
|
// Prevent unhandled rejection before timers advance.
|
||||||
|
const catchPromise = promise.catch(() => {});
|
||||||
|
await jest.runAllTimersAsync();
|
||||||
|
await catchPromise;
|
||||||
|
await expect(promise).rejects.toThrow(
|
||||||
|
'Failed to fetch the Python versions manifest'
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should not retry the API on a rate-limit error and fall back to URL immediately', async () => {
|
||||||
|
const rateLimitError = Object.assign(new Error('API rate limit exceeded'), {
|
||||||
|
httpStatusCode: 403
|
||||||
|
});
|
||||||
|
(tc.getManifestFromRepo as jest.Mock).mockRejectedValue(rateLimitError);
|
||||||
|
(httpm.HttpClient.prototype.getJson as jest.Mock).mockResolvedValue({
|
||||||
|
result: mockManifest
|
||||||
|
});
|
||||||
const manifest = await getManifest();
|
const manifest = await getManifest();
|
||||||
expect(manifest).toEqual(mockManifest);
|
expect(manifest).toEqual(mockManifest);
|
||||||
|
expect(tc.getManifestFromRepo as jest.Mock).toHaveBeenCalledTimes(1);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Vendored
+64
-10
@@ -55685,6 +55685,8 @@ function findRhelRelease(semanticVersionSpec, architecture, manifest, osVersion)
|
|||||||
}
|
}
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
|
const MANIFEST_FETCH_MAX_ATTEMPTS = 3;
|
||||||
|
const MANIFEST_FETCH_RETRY_BASE_DELAY_MS = 1000;
|
||||||
async function findReleaseFromManifest(semanticVersionSpec, architecture, manifest) {
|
async function findReleaseFromManifest(semanticVersionSpec, architecture, manifest) {
|
||||||
if (!manifest) {
|
if (!manifest) {
|
||||||
manifest = await getManifest();
|
manifest = await getManifest();
|
||||||
@@ -55712,15 +55714,54 @@ function isIToolRelease(obj) {
|
|||||||
typeof file.arch === 'string' &&
|
typeof file.arch === 'string' &&
|
||||||
typeof file.download_url === 'string'));
|
typeof file.download_url === 'string'));
|
||||||
}
|
}
|
||||||
|
// Rejects empty or truncated manifest responses.
|
||||||
|
function isValidManifest(manifest) {
|
||||||
|
return (Array.isArray(manifest) &&
|
||||||
|
manifest.length > 0 &&
|
||||||
|
manifest.every(isIToolRelease));
|
||||||
|
}
|
||||||
|
function sleep(ms) {
|
||||||
|
return new Promise(resolve => setTimeout(resolve, ms));
|
||||||
|
}
|
||||||
|
// HTTP 403/429 from http-client (`statusCode`) or tool-cache (`httpStatusCode`).
|
||||||
|
function isRateLimitError(err) {
|
||||||
|
const e = err;
|
||||||
|
const status = e?.httpStatusCode ?? e?.statusCode;
|
||||||
|
return status === 403 || status === 429;
|
||||||
|
}
|
||||||
|
// Fetches and validates a manifest, retrying transient failures with backoff.
|
||||||
|
async function fetchValidManifest(source, fetcher) {
|
||||||
|
let lastError;
|
||||||
|
let attempts = 0;
|
||||||
|
for (let attempt = 1; attempt <= MANIFEST_FETCH_MAX_ATTEMPTS; attempt++) {
|
||||||
|
attempts = attempt;
|
||||||
|
try {
|
||||||
|
const manifest = await fetcher();
|
||||||
|
if (isValidManifest(manifest)) {
|
||||||
|
return manifest;
|
||||||
|
}
|
||||||
|
throw new Error(`The manifest fetched from ${source} is empty, truncated, or does not contain any valid tool release entries.`);
|
||||||
|
}
|
||||||
|
catch (err) {
|
||||||
|
lastError = err instanceof Error ? err : new Error(String(err));
|
||||||
|
core.debug(`Attempt ${attempt}/${MANIFEST_FETCH_MAX_ATTEMPTS} to fetch the manifest from ${source} failed: ${lastError.message}`);
|
||||||
|
// Rate limits won't clear within the backoff window; fall back instead.
|
||||||
|
if (isRateLimitError(err)) {
|
||||||
|
core.debug(`${source} is rate-limited; skipping retries for this source.`);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (attempt < MANIFEST_FETCH_MAX_ATTEMPTS) {
|
||||||
|
const delay = MANIFEST_FETCH_RETRY_BASE_DELAY_MS * 2 ** (attempt - 1);
|
||||||
|
core.debug(`Retrying in ${delay}ms...`);
|
||||||
|
await sleep(delay);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
throw new Error(`Failed to fetch a valid manifest from ${source} after ${attempts} attempt(s): ${lastError?.message}`);
|
||||||
|
}
|
||||||
async function getManifest() {
|
async function getManifest() {
|
||||||
try {
|
try {
|
||||||
const repoManifest = await getManifestFromRepo();
|
return await fetchValidManifest('the GitHub API', getManifestFromRepo);
|
||||||
if (Array.isArray(repoManifest) &&
|
|
||||||
repoManifest.length &&
|
|
||||||
repoManifest.every(isIToolRelease)) {
|
|
||||||
return repoManifest;
|
|
||||||
}
|
|
||||||
throw new Error('The repository manifest is invalid or does not include any valid tool release (IToolRelease) entries.');
|
|
||||||
}
|
}
|
||||||
catch (err) {
|
catch (err) {
|
||||||
core.debug('Fetching the manifest via the API failed.');
|
core.debug('Fetching the manifest via the API failed.');
|
||||||
@@ -55728,10 +55769,17 @@ async function getManifest() {
|
|||||||
core.debug(err.message);
|
core.debug(err.message);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
core.error('An unexpected error occurred while fetching the manifest.');
|
core.debug('An unexpected error occurred while fetching the manifest.');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return await getManifestFromURL();
|
try {
|
||||||
|
return await fetchValidManifest('the raw URL', getManifestFromURL);
|
||||||
|
}
|
||||||
|
catch (err) {
|
||||||
|
const message = err instanceof Error ? err.message : String(err);
|
||||||
|
// Fail loudly so the action doesn't exit 0 without installing Python.
|
||||||
|
throw new Error(`Failed to fetch the Python versions manifest. The response was empty, truncated, or invalid, and all retries were exhausted. ${message}`);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
function getManifestFromRepo() {
|
function getManifestFromRepo() {
|
||||||
core.debug(`Getting manifest from ${MANIFEST_REPO_OWNER}/${MANIFEST_REPO_NAME}@${MANIFEST_REPO_BRANCH}`);
|
core.debug(`Getting manifest from ${MANIFEST_REPO_OWNER}/${MANIFEST_REPO_NAME}@${MANIFEST_REPO_BRANCH}`);
|
||||||
@@ -55759,7 +55807,13 @@ async function installPython(workingDirectory) {
|
|||||||
core.info(data.toString().trim());
|
core.info(data.toString().trim());
|
||||||
},
|
},
|
||||||
stderr: (data) => {
|
stderr: (data) => {
|
||||||
core.error(data.toString().trim());
|
const msg = data.toString().trim();
|
||||||
|
if (/^WARNING:/im.test(msg)) {
|
||||||
|
core.warning(msg);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
core.error(msg);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
+89
-14
@@ -80,6 +80,9 @@ function findRhelRelease(
|
|||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const MANIFEST_FETCH_MAX_ATTEMPTS = 3;
|
||||||
|
const MANIFEST_FETCH_RETRY_BASE_DELAY_MS = 1000;
|
||||||
|
|
||||||
export async function findReleaseFromManifest(
|
export async function findReleaseFromManifest(
|
||||||
semanticVersionSpec: string,
|
semanticVersionSpec: string,
|
||||||
architecture: string,
|
architecture: string,
|
||||||
@@ -133,28 +136,95 @@ function isIToolRelease(obj: any): obj is IToolRelease {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Rejects empty or truncated manifest responses.
|
||||||
|
function isValidManifest(manifest: unknown): manifest is tc.IToolRelease[] {
|
||||||
|
return (
|
||||||
|
Array.isArray(manifest) &&
|
||||||
|
manifest.length > 0 &&
|
||||||
|
manifest.every(isIToolRelease)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
function sleep(ms: number): Promise<void> {
|
||||||
|
return new Promise(resolve => setTimeout(resolve, ms));
|
||||||
|
}
|
||||||
|
|
||||||
|
// HTTP 403/429 from http-client (`statusCode`) or tool-cache (`httpStatusCode`).
|
||||||
|
function isRateLimitError(err: unknown): boolean {
|
||||||
|
const e = err as
|
||||||
|
| {httpStatusCode?: number; statusCode?: number}
|
||||||
|
| null
|
||||||
|
| undefined;
|
||||||
|
const status = e?.httpStatusCode ?? e?.statusCode;
|
||||||
|
return status === 403 || status === 429;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fetches and validates a manifest, retrying transient failures with backoff.
|
||||||
|
async function fetchValidManifest(
|
||||||
|
source: string,
|
||||||
|
fetcher: () => Promise<tc.IToolRelease[]>
|
||||||
|
): Promise<tc.IToolRelease[]> {
|
||||||
|
let lastError: Error | undefined;
|
||||||
|
let attempts = 0;
|
||||||
|
|
||||||
|
for (let attempt = 1; attempt <= MANIFEST_FETCH_MAX_ATTEMPTS; attempt++) {
|
||||||
|
attempts = attempt;
|
||||||
|
try {
|
||||||
|
const manifest = await fetcher();
|
||||||
|
if (isValidManifest(manifest)) {
|
||||||
|
return manifest;
|
||||||
|
}
|
||||||
|
throw new Error(
|
||||||
|
`The manifest fetched from ${source} is empty, truncated, or does not contain any valid tool release entries.`
|
||||||
|
);
|
||||||
|
} catch (err) {
|
||||||
|
lastError = err instanceof Error ? err : new Error(String(err));
|
||||||
|
core.debug(
|
||||||
|
`Attempt ${attempt}/${MANIFEST_FETCH_MAX_ATTEMPTS} to fetch the manifest from ${source} failed: ${lastError.message}`
|
||||||
|
);
|
||||||
|
|
||||||
|
// Rate limits won't clear within the backoff window; fall back instead.
|
||||||
|
if (isRateLimitError(err)) {
|
||||||
|
core.debug(
|
||||||
|
`${source} is rate-limited; skipping retries for this source.`
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (attempt < MANIFEST_FETCH_MAX_ATTEMPTS) {
|
||||||
|
const delay = MANIFEST_FETCH_RETRY_BASE_DELAY_MS * 2 ** (attempt - 1);
|
||||||
|
core.debug(`Retrying in ${delay}ms...`);
|
||||||
|
await sleep(delay);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new Error(
|
||||||
|
`Failed to fetch a valid manifest from ${source} after ${attempts} attempt(s): ${lastError?.message}`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
export async function getManifest(): Promise<tc.IToolRelease[]> {
|
export async function getManifest(): Promise<tc.IToolRelease[]> {
|
||||||
try {
|
try {
|
||||||
const repoManifest = await getManifestFromRepo();
|
return await fetchValidManifest('the GitHub API', getManifestFromRepo);
|
||||||
if (
|
|
||||||
Array.isArray(repoManifest) &&
|
|
||||||
repoManifest.length &&
|
|
||||||
repoManifest.every(isIToolRelease)
|
|
||||||
) {
|
|
||||||
return repoManifest;
|
|
||||||
}
|
|
||||||
throw new Error(
|
|
||||||
'The repository manifest is invalid or does not include any valid tool release (IToolRelease) entries.'
|
|
||||||
);
|
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
core.debug('Fetching the manifest via the API failed.');
|
core.debug('Fetching the manifest via the API failed.');
|
||||||
if (err instanceof Error) {
|
if (err instanceof Error) {
|
||||||
core.debug(err.message);
|
core.debug(err.message);
|
||||||
} else {
|
} else {
|
||||||
core.error('An unexpected error occurred while fetching the manifest.');
|
core.debug('An unexpected error occurred while fetching the manifest.');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return await getManifestFromURL();
|
|
||||||
|
try {
|
||||||
|
return await fetchValidManifest('the raw URL', getManifestFromURL);
|
||||||
|
} catch (err) {
|
||||||
|
const message = err instanceof Error ? err.message : String(err);
|
||||||
|
// Fail loudly so the action doesn't exit 0 without installing Python.
|
||||||
|
throw new Error(
|
||||||
|
`Failed to fetch the Python versions manifest. The response was empty, truncated, or invalid, and all retries were exhausted. ${message}`
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getManifestFromRepo(): Promise<tc.IToolRelease[]> {
|
export function getManifestFromRepo(): Promise<tc.IToolRelease[]> {
|
||||||
@@ -193,7 +263,12 @@ async function installPython(workingDirectory: string) {
|
|||||||
core.info(data.toString().trim());
|
core.info(data.toString().trim());
|
||||||
},
|
},
|
||||||
stderr: (data: Buffer) => {
|
stderr: (data: Buffer) => {
|
||||||
core.error(data.toString().trim());
|
const msg = data.toString().trim();
|
||||||
|
if (/^WARNING:/im.test(msg)) {
|
||||||
|
core.warning(msg);
|
||||||
|
} else {
|
||||||
|
core.error(msg);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user