Compare commits

..

5 Commits

Author SHA1 Message Date
dependabot[bot]
83679a892e Bump @types/node from 24.1.0 to 24.9.1 and update macos-13 to macos-15-intel (#1235)
* Bump @types/node from 24.1.0 to 24.9.1

Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 24.1.0 to 24.9.1.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-version: 24.9.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

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

* Fix license check failure

* update macos-13 to macos-15-intel

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Priyagupta108 <priyagupta108@github.com>
Co-authored-by: Aparna Jyothi <aparnajyothi-y@github.com>
2025-11-24 11:15:58 -06:00
dependabot[bot]
bfc4944b43 Bump prettier from 3.5.3 to 3.6.2 (#1234)
Bumps [prettier](https://github.com/prettier/prettier) from 3.5.3 to 3.6.2.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/3.5.3...3.6.2)

---
updated-dependencies:
- dependency-name: prettier
  dependency-version: 3.6.2
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-18 14:22:03 -06:00
dependabot[bot]
97aeb3efb8 Bump requests from 2.32.2 to 2.32.4 in /__tests__/data (#1130)
Bumps [requests](https://github.com/psf/requests) from 2.32.2 to 2.32.4.
- [Release notes](https://github.com/psf/requests/releases)
- [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md)
- [Commits](https://github.com/psf/requests/compare/v2.32.2...v2.32.4)

---
updated-dependencies:
- dependency-name: requests
  dependency-version: 2.32.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>
2025-11-13 13:37:31 -06:00
dependabot[bot]
443da59188 Bump actions/publish-action from 0.3.0 to 0.4.0 & Documentation update for pip-install input (#1199)
* Bump actions/publish-action from 0.3.0 to 0.4.0

Bumps [actions/publish-action](https://github.com/actions/publish-action) from 0.3.0 to 0.4.0.
- [Commits](https://github.com/actions/publish-action/compare/v0.3.0...v0.4.0)

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

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

* updated README for pip-install

---------

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>
2025-11-12 12:53:30 -06:00
Tim Felgentreff
cfd55ca824 graalpy: add graalpy early-access and windows builds (#880) 2025-10-22 11:16:57 -05:00
22 changed files with 957 additions and 1000 deletions

View File

@@ -29,7 +29,7 @@ jobs:
ubuntu-22.04-arm,
windows-latest,
macos-latest,
macos-13
macos-15-intel
]
python-version: [3.13.0t, 3.13.1t, 3.13.2t]
steps:
@@ -56,7 +56,7 @@ jobs:
ubuntu-22.04-arm,
windows-latest,
macos-latest,
macos-13
macos-15-intel
]
python-version: [3.13.1t, 3.13.2t, 3.13.5t]
steps:
@@ -86,7 +86,7 @@ jobs:
ubuntu-22.04-arm,
windows-latest,
macos-latest,
macos-13
macos-15-intel
]
python-version: [3.13.0, 3.13.1, 3.13.2]
steps:
@@ -118,7 +118,7 @@ jobs:
ubuntu-22.04-arm,
windows-latest,
macos-latest,
macos-13
macos-15-intel
]
python-version: [3.13.0t, 3.13.1t, 3.13.2t]
steps:
@@ -146,7 +146,7 @@ jobs:
ubuntu-22.04-arm,
windows-latest,
macos-latest,
macos-13
macos-15-intel
]
python-version: [3.13.1t, 3.13.2t, 3.13.5t]
steps:
@@ -177,7 +177,7 @@ jobs:
ubuntu-22.04-arm,
windows-latest,
macos-latest,
macos-13
macos-15-intel
]
python-version: [3.13.0t, 3.13.1t, 3.13.2t]
steps:
@@ -205,7 +205,7 @@ jobs:
ubuntu-22.04-arm,
windows-latest,
macos-latest,
macos-13
macos-15-intel
]
python-version: [3.13.0t, 3.13.1t, 3.13.2t]
steps:
@@ -234,7 +234,7 @@ jobs:
ubuntu-22.04-arm,
windows-latest,
macos-latest,
macos-13
macos-15-intel
]
python-version: [3.13.0t, 3.13.1t, 3.13.2t]
steps:
@@ -260,7 +260,7 @@ jobs:
ubuntu-22.04-arm,
windows-latest,
macos-latest,
macos-13
macos-15-intel
]
python-version: [3.13.0t, 3.13.1t, 3.13.2t]
steps:

View File

@@ -29,7 +29,7 @@ jobs:
ubuntu-22.04-arm,
windows-latest,
macos-latest,
macos-13
macos-15-intel
]
python-version:
[
@@ -72,7 +72,7 @@ jobs:
ubuntu-22.04-arm,
windows-latest,
macos-latest,
macos-13
macos-15-intel
]
python-version:
['3.10', 'pypy-3.10-v7.x', '3.11', 'pypy-3.11-v7.x', '3.12', '3.13']
@@ -129,7 +129,7 @@ jobs:
ubuntu-22.04-arm,
windows-latest,
macos-latest,
macos-13
macos-15-intel
]
python-version:
[
@@ -170,7 +170,7 @@ jobs:
ubuntu-22.04-arm,
windows-latest,
macos-latest,
macos-13
macos-15-intel
]
python-version:
[
@@ -213,7 +213,7 @@ jobs:
ubuntu-22.04-arm,
windows-latest,
macos-latest,
macos-13
macos-15-intel
]
python-version:
['3.10', 'pypy-3.10-v7.x', '3.11', 'pypy-3.11-v7.x', '3.12', '3.13']
@@ -269,7 +269,7 @@ jobs:
ubuntu-22.04-arm,
windows-latest,
macos-latest,
macos-13
macos-15-intel
]
python-version: ['3.9', '3.10', '3.11', '3.12', '3.13']
steps:
@@ -297,7 +297,7 @@ jobs:
ubuntu-22.04-arm,
windows-latest,
macos-latest,
macos-13
macos-15-intel
]
python-version: ['3.9', '3.10', '3.11', '3.12', '3.13']
steps:
@@ -326,7 +326,7 @@ jobs:
ubuntu-22.04-arm,
windows-latest,
macos-latest,
macos-13
macos-15-intel
]
python-version: ['3.9', '3.10', '3.11', '3.12', '3.13']
steps:
@@ -352,7 +352,7 @@ jobs:
ubuntu-22.04-arm,
windows-latest,
macos-latest,
macos-13
macos-15-intel
]
python-version: ['3.9', '3.10', '3.11', '3.12', '3.13']
steps:

View File

@@ -25,7 +25,7 @@ jobs:
ubuntu-latest,
ubuntu-24.04-arm,
macos-latest,
macos-13
macos-15-intel
]
steps:
- name: Checkout

View File

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

View File

@@ -25,7 +25,7 @@ jobs:
ubuntu-22.04-arm,
ubuntu-24.04-arm,
ubuntu-latest,
macos-13
macos-15-intel
]
graalpy:
- 'graalpy-22.3'
@@ -80,7 +80,7 @@ jobs:
ubuntu-22.04-arm,
ubuntu-24.04-arm,
ubuntu-latest,
macos-13
macos-15-intel
]
graalpy: ['graalpy22.3', 'graalpy23.0', 'graalpy23.1', 'graalpy24.1']
@@ -106,7 +106,7 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, macos-13]
os: [ubuntu-latest, windows-latest, macos-latest, macos-15-intel]
steps:
- uses: actions/checkout@v5
- name: Setup GraalPy and check latest

View File

@@ -28,7 +28,7 @@ jobs:
ubuntu-22.04-arm,
ubuntu-24.04-arm,
ubuntu-latest,
macos-13
macos-15-intel
]
pypy:
- 'pypy-2.7'
@@ -85,7 +85,7 @@ jobs:
fail-fast: false
matrix:
os:
- macos-13
- macos-15-intel
- macos-14
- macos-15
- windows-2022
@@ -144,7 +144,7 @@ jobs:
ubuntu-22.04-arm,
ubuntu-24.04-arm,
ubuntu-latest,
macos-13
macos-15-intel
]
pypy: ['pypy2.7', 'pypy3.9', 'pypy3.10-nightly', 'pypy3.11']
@@ -178,7 +178,7 @@ jobs:
ubuntu-22.04-arm,
ubuntu-24.04-arm,
ubuntu-latest,
macos-13
macos-15-intel
]
steps:
- uses: actions/checkout@v5
@@ -220,7 +220,7 @@ jobs:
ubuntu-22.04-arm,
ubuntu-24.04-arm,
ubuntu-latest,
macos-13
macos-15-intel
]
steps:
- uses: actions/checkout@v5

View File

@@ -26,7 +26,7 @@ jobs:
windows-latest,
ubuntu-22.04,
ubuntu-22.04-arm,
macos-13,
macos-15-intel,
ubuntu-latest,
ubuntu-24.04-arm
]
@@ -63,7 +63,7 @@ jobs:
windows-latest,
ubuntu-22.04,
ubuntu-22.04-arm,
macos-13,
macos-15-intel,
ubuntu-latest,
ubuntu-24.04-arm
]
@@ -103,7 +103,7 @@ jobs:
windows-latest,
ubuntu-22.04,
ubuntu-22.04-arm,
macos-13,
macos-15-intel,
ubuntu-latest,
ubuntu-24.04-arm
]
@@ -141,7 +141,7 @@ jobs:
windows-latest,
ubuntu-22.04,
ubuntu-22.04-arm,
macos-13,
macos-15-intel,
ubuntu-latest,
ubuntu-24.04-arm
]
@@ -182,7 +182,7 @@ jobs:
windows-latest,
ubuntu-22.04,
ubuntu-22.04-arm,
macos-13,
macos-15-intel,
ubuntu-latest,
ubuntu-24.04-arm
]
@@ -223,7 +223,7 @@ jobs:
windows-latest,
ubuntu-22.04,
ubuntu-22.04-arm,
macos-13,
macos-15-intel,
ubuntu-latest,
ubuntu-24.04-arm
]
@@ -254,7 +254,7 @@ jobs:
windows-latest,
ubuntu-22.04,
ubuntu-22.04-arm,
macos-13,
macos-15-intel,
ubuntu-latest,
ubuntu-24.04-arm
]
@@ -294,7 +294,7 @@ jobs:
windows-latest,
ubuntu-22.04,
ubuntu-22.04-arm,
macos-13,
macos-15-intel,
ubuntu-latest,
ubuntu-24.04-arm
]
@@ -334,7 +334,7 @@ jobs:
windows-latest,
ubuntu-22.04,
ubuntu-22.04-arm,
macos-13,
macos-15-intel,
ubuntu-latest,
ubuntu-24.04-arm
]
@@ -373,7 +373,7 @@ jobs:
ubuntu-22.04-arm,
ubuntu-24.04-arm,
ubuntu-latest,
macos-13
macos-15-intel
]
steps:
- name: Checkout
@@ -410,7 +410,7 @@ jobs:
ubuntu-22.04-arm,
ubuntu-24.04-arm,
ubuntu-latest,
macos-13
macos-15-intel
]
steps:
- name: Checkout
@@ -446,7 +446,7 @@ jobs:
windows-latest,
ubuntu-22.04,
ubuntu-22.04-arm,
macos-13,
macos-15-intel,
ubuntu-latest,
ubuntu-24.04-arm
]
@@ -481,7 +481,7 @@ jobs:
ubuntu-22.04-arm,
ubuntu-24.04-arm,
ubuntu-latest,
macos-13
macos-15-intel
]
python-version: [3.13t, 3.14t-dev]
steps:
@@ -508,7 +508,7 @@ jobs:
ubuntu-22.04-arm,
ubuntu-24.04-arm,
ubuntu-latest,
macos-13
macos-15-intel
]
steps:
- uses: actions/checkout@v5
@@ -535,7 +535,7 @@ jobs:
windows-latest,
ubuntu-22.04,
ubuntu-22.04-arm,
macos-13,
macos-15-intel,
ubuntu-latest,
ubuntu-24.04-arm
]

View File

@@ -26,7 +26,7 @@ jobs:
windows-latest,
ubuntu-22.04,
ubuntu-22.04-arm,
macos-13,
macos-15-intel,
ubuntu-latest,
ubuntu-24.04-arm
]
@@ -70,7 +70,7 @@ jobs:
windows-latest,
ubuntu-22.04,
ubuntu-22.04-arm,
macos-13,
macos-15-intel,
ubuntu-latest,
ubuntu-24.04-arm
]
@@ -117,7 +117,7 @@ jobs:
windows-latest,
ubuntu-22.04,
ubuntu-22.04-arm,
macos-13,
macos-15-intel,
ubuntu-latest,
ubuntu-24.04-arm
]
@@ -162,7 +162,7 @@ jobs:
windows-latest,
ubuntu-22.04,
ubuntu-22.04-arm,
macos-13,
macos-15-intel,
ubuntu-latest,
ubuntu-24.04-arm
]
@@ -212,7 +212,7 @@ jobs:
windows-latest,
ubuntu-22.04,
ubuntu-22.04-arm,
macos-13,
macos-15-intel,
ubuntu-latest,
ubuntu-24.04-arm
]
@@ -262,7 +262,7 @@ jobs:
windows-latest,
ubuntu-22.04,
ubuntu-22.04-arm,
macos-13,
macos-15-intel,
ubuntu-latest,
ubuntu-24.04-arm
]
@@ -296,7 +296,7 @@ jobs:
windows-latest,
ubuntu-22.04,
ubuntu-22.04-arm,
macos-13,
macos-15-intel,
ubuntu-latest,
ubuntu-24.04-arm
]
@@ -346,7 +346,7 @@ jobs:
windows-latest,
ubuntu-22.04,
ubuntu-22.04-arm,
macos-13,
macos-15-intel,
ubuntu-latest,
ubuntu-24.04-arm
]
@@ -396,7 +396,7 @@ jobs:
windows-latest,
ubuntu-22.04,
ubuntu-22.04-arm,
macos-13,
macos-15-intel,
ubuntu-latest,
ubuntu-24.04-arm
]
@@ -441,7 +441,7 @@ jobs:
ubuntu-22.04-arm,
ubuntu-24.04-arm,
ubuntu-latest,
macos-13
macos-15-intel
]
steps:
- name: Checkout
@@ -478,7 +478,7 @@ jobs:
ubuntu-22.04-arm,
ubuntu-24.04-arm,
ubuntu-latest,
macos-13
macos-15-intel
]
steps:
- name: Checkout
@@ -514,7 +514,7 @@ jobs:
windows-latest,
ubuntu-22.04,
ubuntu-22.04-arm,
macos-13,
macos-15-intel,
ubuntu-latest,
ubuntu-24.04-arm
]
@@ -549,7 +549,7 @@ jobs:
ubuntu-22.04-arm,
ubuntu-24.04-arm,
ubuntu-latest,
macos-13
macos-15-intel
]
python-version: ['3.9', '3.10', '3.11', '3.12', '3.13']
steps:
@@ -582,7 +582,7 @@ jobs:
ubuntu-22.04-arm,
ubuntu-24.04-arm,
ubuntu-latest,
macos-13
macos-15-intel
]
steps:
- uses: actions/checkout@v5

View File

@@ -1,6 +1,6 @@
---
name: "@types/node"
version: 24.1.0
version: 24.10.1
type: npm
summary: TypeScript definitions for node
homepage: https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node

View File

@@ -1,15 +1,17 @@
---
name: undici-types
version: 7.8.0
version: 7.16.0
type: npm
summary: A stand-alone types package for Undici
homepage: https://undici.nodejs.org
license: mit
licenses:
- sources: Auto-generated MIT license text
- sources: LICENSE
text: |
MIT License
Copyright (c) Matteo Collina and Undici contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights

File diff suppressed because it is too large Load Diff

View File

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

View File

@@ -40,7 +40,7 @@ pyparsing==2.4.7; python_version >= '2.6' and python_version not in '3.0, 3.1, 3
pywin32-ctypes==0.2.0
requests==2.32.2
requests==2.32.4
urllib3==2.5.0

View File

@@ -10,7 +10,7 @@ import * as path from 'path';
import * as semver from 'semver';
import * as finder from '../src/find-graalpy';
import {IGraalPyManifestRelease, IS_WINDOWS} from '../src/utils';
import {IGraalPyManifestRelease} from '../src/utils';
import manifestData from './data/graalpy.json';
@@ -19,9 +19,6 @@ const architecture = 'x64';
const toolDir = path.join(__dirname, 'runner', 'tools');
const tempDir = path.join(__dirname, 'runner', 'temp');
/* GraalPy doesn't have a windows release yet */
const describeSkipOnWindows = IS_WINDOWS ? describe.skip : describe;
describe('parseGraalPyVersion', () => {
it.each([
['graalpy-23', '23'],
@@ -108,7 +105,7 @@ describe('findGraalPyToolCache', () => {
});
});
describeSkipOnWindows('findGraalPyVersion', () => {
describe('findGraalPyVersion', () => {
let getBooleanInputSpy: jest.SpyInstance;
let warningSpy: jest.SpyInstance;
let debugSpy: jest.SpyInstance;
@@ -358,13 +355,13 @@ describeSkipOnWindows('findGraalPyVersion', () => {
it('found and install successfully, pre-release fallback', async () => {
spyCacheDir = jest.spyOn(tc, 'cacheDir');
spyCacheDir.mockImplementation(() =>
path.join(toolDir, 'GraalPy', '23.1', architecture)
path.join(toolDir, 'GraalPy', '24.1', architecture)
);
spyChmodSync = jest.spyOn(fs, 'chmodSync');
spyChmodSync.mockImplementation(() => undefined);
await expect(
finder.findGraalPyVersion(
'graalpy23.1',
'graalpy24.1',
architecture,
false,
false,
@@ -372,7 +369,7 @@ describeSkipOnWindows('findGraalPyVersion', () => {
)
).rejects.toThrow();
await expect(
finder.findGraalPyVersion('graalpy23.1', architecture, false, false, true)
).resolves.toEqual('23.1.0-a.1');
finder.findGraalPyVersion('graalpy24.1', architecture, false, false, true)
).resolves.toEqual('24.1.0-ea.9');
});
});

View File

@@ -21,24 +21,21 @@ const architecture = 'x64';
const toolDir = path.join(__dirname, 'runner', 'tools');
const tempDir = path.join(__dirname, 'runner', 'temp');
/* GraalPy doesn't have a windows release yet */
const describeSkipOnWindows = IS_WINDOWS ? describe.skip : describe;
describe('graalpyVersionToSemantic', () => {
it.each([
['23.0.0a1', '23.0.0a1'],
['23.0.0', '23.0.0'],
['23.0.x', '23.0.x'],
['23.x', '23.x']
['graalpy-24.1.0-ea.09', '24.1.0-ea.9'],
['graal-23.0.0', '23.0.0'],
['vm-23.0.x', '23.0.x'],
['graal-23.x', '23.x']
])('%s -> %s', (input, expected) => {
expect(installer.graalPyTagToVersion(input)).toEqual(expected);
});
});
describeSkipOnWindows('findRelease', () => {
describe('findRelease', () => {
const result = JSON.stringify(manifestData);
const releases = JSON.parse(result) as IGraalPyManifestRelease[];
const extension = 'tar.gz';
const extension = IS_WINDOWS ? 'zip' : 'tar.gz';
const arch = installer.toGraalPyArchitecture(architecture);
const platform = installer.toGraalPyPlatform(process.platform);
const extensionName = `${platform}-${arch}.${extension}`;
@@ -47,8 +44,8 @@ describeSkipOnWindows('findRelease', () => {
browser_download_url: `https://github.com/oracle/graalpython/releases/download/graal-23.0.0/graalpython-23.0.0-${extensionName}`
};
const filesRC1: IGraalPyManifestAsset = {
name: `graalpython-23.1.0a1-${extensionName}`,
browser_download_url: `https://github.com/oracle/graalpython/releases/download/graal-23.1.0a1/graalpython-23.1.0a1-${extensionName}`
name: `graalpy-24.1.0-ea.09-${extensionName}`,
browser_download_url: `https://github.com/graalvm/graal-languages-ea-builds/releases/download/graalpy-24.1.0-ea.09/graalpy-24.1.0-ea.09-${extensionName}`
};
let warningSpy: jest.SpyInstance;
@@ -84,15 +81,15 @@ describeSkipOnWindows('findRelease', () => {
});
it('Preview version of GraalPy is found', () => {
const graalpyVersion = installer.graalPyTagToVersion('vm-23.1.0a1');
const graalpyVersion = installer.graalPyTagToVersion('vm-24.1.0-ea.09');
expect(
installer.findRelease(releases, graalpyVersion, architecture, false)
).toMatchObject({
foundAsset: {
name: `graalpython-23.1.0a1-${extensionName}`,
browser_download_url: `https://github.com/oracle/graalpython/releases/download/graal-23.1.0a1/graalpython-23.1.0a1-${extensionName}`
name: `graalpy-24.1.0-ea.09-${extensionName}`,
browser_download_url: `https://github.com/graalvm/graal-languages-ea-builds/releases/download/graalpy-24.1.0-ea.09/graalpy-24.1.0-ea.09-${extensionName}`
},
resolvedGraalPyVersion: '23.1.0-a.1'
resolvedGraalPyVersion: '24.1.0-ea.9'
});
});
@@ -107,7 +104,7 @@ describeSkipOnWindows('findRelease', () => {
});
it('GraalPy version matches semver (pre-release)', () => {
const graalpyVersion = '23.1.x';
const graalpyVersion = '24.1.x';
expect(
installer.findRelease(releases, graalpyVersion, architecture, false)
).toBeNull();
@@ -115,12 +112,12 @@ describeSkipOnWindows('findRelease', () => {
installer.findRelease(releases, graalpyVersion, architecture, true)
).toMatchObject({
foundAsset: filesRC1,
resolvedGraalPyVersion: '23.1.0-a.1'
resolvedGraalPyVersion: '24.1.0-ea.9'
});
});
});
describeSkipOnWindows('installGraalPy', () => {
describe('installGraalPy', () => {
let tcFind: jest.SpyInstance;
let warningSpy: jest.SpyInstance;
let debugSpy: jest.SpyInstance;
@@ -232,20 +229,20 @@ describeSkipOnWindows('installGraalPy', () => {
it('found and install GraalPy, pre-release fallback', async () => {
spyCacheDir = jest.spyOn(tc, 'cacheDir');
spyCacheDir.mockImplementation(() =>
path.join(toolDir, 'GraalPy', '23.1.0', architecture)
path.join(toolDir, 'GraalPy', '24.1.0', architecture)
);
spyChmodSync = jest.spyOn(fs, 'chmodSync');
spyChmodSync.mockImplementation(() => undefined);
await expect(
installer.installGraalPy('23.1.x', architecture, false, undefined)
installer.installGraalPy('24.1.x', architecture, false, undefined)
).rejects.toThrow();
await expect(
installer.installGraalPy('23.1.x', architecture, true, undefined)
installer.installGraalPy('24.1.x', architecture, true, undefined)
).resolves.toEqual({
installDir: path.join(toolDir, 'GraalPy', '23.1.0', architecture),
resolvedGraalPyVersion: '23.1.0-a.1'
installDir: path.join(toolDir, 'GraalPy', '24.1.0', architecture),
resolvedGraalPyVersion: '24.1.0-ea.9'
});
expect(spyHttpClient).toHaveBeenCalled();

36
dist/setup/index.js vendored
View File

@@ -96769,8 +96769,8 @@ async function findGraalPyVersion(versionSpec, architecture, updateEnvironment,
const pipDir = utils_1.IS_WINDOWS ? 'Scripts' : 'bin';
const _binDir = path.join(installDir, pipDir);
const binaryExtension = utils_1.IS_WINDOWS ? '.exe' : '';
const pythonPath = path.join(utils_1.IS_WINDOWS ? installDir : _binDir, `python${binaryExtension}`);
const pythonLocation = (0, utils_1.getBinaryDirectory)(installDir);
const pythonPath = path.join(_binDir, `python${binaryExtension}`);
const pythonLocation = path.join(installDir, 'bin');
if (updateEnvironment) {
core.exportVariable('pythonLocation', installDir);
// https://cmake.org/cmake/help/latest/module/FindPython.html#module:FindPython
@@ -97315,7 +97315,12 @@ async function installGraalPy(graalpyVersion, architecture, allowPreReleases, re
try {
const graalpyPath = await tc.downloadTool(downloadUrl, undefined, AUTH);
core.info('Extracting downloaded archive...');
downloadDir = await tc.extractTar(graalpyPath);
if (utils_1.IS_WINDOWS) {
downloadDir = await tc.extractZip(graalpyPath);
}
else {
downloadDir = await tc.extractTar(graalpyPath);
}
// root folder in archive can have unpredictable name so just take the first folder
// downloadDir is unique folder under TEMP and can't contain any other folders
const archiveName = fs_1.default.readdirSync(downloadDir)[0];
@@ -97324,7 +97329,7 @@ async function installGraalPy(graalpyVersion, architecture, allowPreReleases, re
if (!(0, utils_1.isNightlyKeyword)(resolvedGraalPyVersion)) {
installDir = await tc.cacheDir(toolDir, 'GraalPy', resolvedGraalPyVersion, architecture);
}
const binaryPath = (0, utils_1.getBinaryDirectory)(installDir);
const binaryPath = path.join(installDir, 'bin');
await createGraalPySymlink(binaryPath, resolvedGraalPyVersion);
await installPip(binaryPath);
return { installDir, resolvedGraalPyVersion };
@@ -97352,6 +97357,9 @@ async function getAvailableGraalPyVersions() {
if (AUTH) {
headers.authorization = AUTH;
}
/*
Get releases first.
*/
let url = 'https://api.github.com/repos/oracle/graalpython/releases';
const result = [];
do {
@@ -97362,6 +97370,19 @@ async function getAvailableGraalPyVersions() {
result.push(...response.result);
url = (0, utils_1.getNextPageUrl)(response);
} while (url);
/*
Add pre-release builds.
*/
url =
'https://api.github.com/repos/graalvm/graal-languages-ea-builds/releases';
do {
const response = await http.getJson(url, headers);
if (!response.result) {
throw new Error(`Unable to retrieve the list of available GraalPy versions from '${url}'`);
}
result.push(...response.result);
url = (0, utils_1.getNextPageUrl)(response);
} while (url);
return result;
}
async function createGraalPySymlink(graalpyBinaryPath, graalpyVersion) {
@@ -97381,7 +97402,7 @@ async function installPip(pythonLocation) {
await exec.exec(`${pythonBinary} -m ensurepip --default-pip`);
}
function graalPyTagToVersion(tag) {
const versionPattern = /.*-(\d+\.\d+\.\d+(?:\.\d+)?)((?:a|b|rc))?(\d*)?/;
const versionPattern = /.*-(\d+\.\d+\.\d+(?:\.\d+)?)(?:-((?:ea|a|b|rc))\.0*(\d+))?/;
const match = tag.match(versionPattern);
if (match && match[2]) {
return `${match[1]}-${match[2]}.${match[3]}`;
@@ -97431,8 +97452,9 @@ function toGraalPyArchitecture(architecture) {
function findAsset(item, architecture, platform) {
const graalpyArch = toGraalPyArchitecture(architecture);
const graalpyPlatform = toGraalPyPlatform(platform);
const graalpyExt = platform == 'win32' ? 'zip' : 'tar.gz';
const found = item.assets.filter(file => file.name.startsWith('graalpy') &&
file.name.endsWith(`-${graalpyPlatform}-${graalpyArch}.tar.gz`));
file.name.endsWith(`-${graalpyPlatform}-${graalpyArch}.${graalpyExt}`));
/*
In the future there could be more variants of GraalPy for a single release. Pick the shortest name, that one is the most likely to be the primary variant.
*/
@@ -98363,7 +98385,7 @@ function getVersionInputFromFile(versionFile) {
}
}
/**
* Get the directory containing interpreter binary from installation directory of PyPy or GraalPy
* Get the directory containing interpreter binary from installation directory of PyPy
* - On Linux and macOS, the Python interpreter is in 'bin'.
* - On Windows, it is in the installation root.
*/

View File

@@ -690,3 +690,5 @@ The `pip-install` input allows you to install dependencies as part of the Python
```
> Note: This feature is intended for standard pip-based dependency installations.
For complex workflows, or alternative package managers (e.g., poetry, pipenv), we recommend using separate steps to maintain clarity and flexibility.
> The `pip-install` input mirrors the flexibility of a standard pip install command and supports most of its arguments.

24
package-lock.json generated
View File

@@ -21,7 +21,7 @@
},
"devDependencies": {
"@types/jest": "^29.5.12",
"@types/node": "^24.1.0",
"@types/node": "^24.10.1",
"@types/semver": "^7.7.0",
"@typescript-eslint/eslint-plugin": "^5.54.0",
"@typescript-eslint/parser": "^5.54.0",
@@ -32,7 +32,7 @@
"eslint-plugin-node": "^11.1.0",
"jest": "^29.7.0",
"jest-circus": "^29.7.0",
"prettier": "^3.5.3",
"prettier": "^3.6.2",
"ts-jest": "^29.3.2",
"typescript": "^5.9.3"
},
@@ -1596,12 +1596,12 @@
"dev": true
},
"node_modules/@types/node": {
"version": "24.1.0",
"resolved": "https://registry.npmjs.org/@types/node/-/node-24.1.0.tgz",
"integrity": "sha512-ut5FthK5moxFKH2T1CUOC6ctR67rQRvvHdFLCD2Ql6KXmMuCrjsSsRI9UsLCm9M18BMwClv4pn327UvB7eeO1w==",
"version": "24.10.1",
"resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.1.tgz",
"integrity": "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==",
"license": "MIT",
"dependencies": {
"undici-types": "~7.8.0"
"undici-types": "~7.16.0"
}
},
"node_modules/@types/node-fetch": {
@@ -4816,9 +4816,9 @@
}
},
"node_modules/prettier": {
"version": "3.5.3",
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz",
"integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==",
"version": "3.6.2",
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz",
"integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==",
"dev": true,
"license": "MIT",
"bin": {
@@ -5472,9 +5472,9 @@
}
},
"node_modules/undici-types": {
"version": "7.8.0",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.8.0.tgz",
"integrity": "sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==",
"version": "7.16.0",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz",
"integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==",
"license": "MIT"
},
"node_modules/update-browserslist-db": {

View File

@@ -40,7 +40,7 @@
},
"devDependencies": {
"@types/jest": "^29.5.12",
"@types/node": "^24.1.0",
"@types/node": "^24.10.1",
"@types/semver": "^7.7.0",
"@typescript-eslint/eslint-plugin": "^5.54.0",
"@typescript-eslint/parser": "^5.54.0",
@@ -51,7 +51,7 @@
"eslint-plugin-node": "^11.1.0",
"jest": "^29.7.0",
"jest-circus": "^29.7.0",
"prettier": "^3.5.3",
"prettier": "^3.6.2",
"ts-jest": "^29.3.2",
"typescript": "^5.9.3"
}

View File

@@ -1,11 +1,6 @@
import * as path from 'path';
import * as graalpyInstall from './install-graalpy';
import {
IS_WINDOWS,
validateVersion,
IGraalPyManifestRelease,
getBinaryDirectory
} from './utils';
import {IS_WINDOWS, validateVersion, IGraalPyManifestRelease} from './utils';
import * as semver from 'semver';
import * as core from '@actions/core';
@@ -62,11 +57,8 @@ export async function findGraalPyVersion(
const pipDir = IS_WINDOWS ? 'Scripts' : 'bin';
const _binDir = path.join(installDir, pipDir);
const binaryExtension = IS_WINDOWS ? '.exe' : '';
const pythonPath = path.join(
IS_WINDOWS ? installDir : _binDir,
`python${binaryExtension}`
);
const pythonLocation = getBinaryDirectory(installDir);
const pythonPath = path.join(_binDir, `python${binaryExtension}`);
const pythonLocation = path.join(installDir, 'bin');
if (updateEnvironment) {
core.exportVariable('pythonLocation', installDir);
// https://cmake.org/cmake/help/latest/module/FindPython.html#module:FindPython

View File

@@ -15,7 +15,6 @@ import {
IGraalPyManifestRelease,
createSymlinkInFolder,
isNightlyKeyword,
getBinaryDirectory,
getNextPageUrl
} from './utils';
@@ -64,7 +63,11 @@ export async function installGraalPy(
const graalpyPath = await tc.downloadTool(downloadUrl, undefined, AUTH);
core.info('Extracting downloaded archive...');
downloadDir = await tc.extractTar(graalpyPath);
if (IS_WINDOWS) {
downloadDir = await tc.extractZip(graalpyPath);
} else {
downloadDir = await tc.extractTar(graalpyPath);
}
// root folder in archive can have unpredictable name so just take the first folder
// downloadDir is unique folder under TEMP and can't contain any other folders
@@ -81,7 +84,7 @@ export async function installGraalPy(
);
}
const binaryPath = getBinaryDirectory(installDir);
const binaryPath = path.join(installDir, 'bin');
await createGraalPySymlink(binaryPath, resolvedGraalPyVersion);
await installPip(binaryPath);
@@ -115,6 +118,9 @@ export async function getAvailableGraalPyVersions() {
headers.authorization = AUTH;
}
/*
Get releases first.
*/
let url: string | null =
'https://api.github.com/repos/oracle/graalpython/releases';
const result: IGraalPyManifestRelease[] = [];
@@ -130,6 +136,23 @@ export async function getAvailableGraalPyVersions() {
url = getNextPageUrl(response);
} while (url);
/*
Add pre-release builds.
*/
url =
'https://api.github.com/repos/graalvm/graal-languages-ea-builds/releases';
do {
const response: ifm.TypedResponse<IGraalPyManifestRelease[]> =
await http.getJson(url, headers);
if (!response.result) {
throw new Error(
`Unable to retrieve the list of available GraalPy versions from '${url}'`
);
}
result.push(...response.result);
url = getNextPageUrl(response);
} while (url);
return result;
}
@@ -175,7 +198,8 @@ async function installPip(pythonLocation: string) {
}
export function graalPyTagToVersion(tag: string) {
const versionPattern = /.*-(\d+\.\d+\.\d+(?:\.\d+)?)((?:a|b|rc))?(\d*)?/;
const versionPattern =
/.*-(\d+\.\d+\.\d+(?:\.\d+)?)(?:-((?:ea|a|b|rc))\.0*(\d+))?/;
const match = tag.match(versionPattern);
if (match && match[2]) {
return `${match[1]}-${match[2]}.${match[3]}`;
@@ -251,10 +275,11 @@ export function findAsset(
) {
const graalpyArch = toGraalPyArchitecture(architecture);
const graalpyPlatform = toGraalPyPlatform(platform);
const graalpyExt = platform == 'win32' ? 'zip' : 'tar.gz';
const found = item.assets.filter(
file =>
file.name.startsWith('graalpy') &&
file.name.endsWith(`-${graalpyPlatform}-${graalpyArch}.tar.gz`)
file.name.endsWith(`-${graalpyPlatform}-${graalpyArch}.${graalpyExt}`)
);
/*
In the future there could be more variants of GraalPy for a single release. Pick the shortest name, that one is the most likely to be the primary variant.

View File

@@ -379,7 +379,7 @@ export function getVersionInputFromFile(versionFile: string): string[] {
}
/**
* Get the directory containing interpreter binary from installation directory of PyPy or GraalPy
* Get the directory containing interpreter binary from installation directory of PyPy
* - On Linux and macOS, the Python interpreter is in 'bin'.
* - On Windows, it is in the installation root.
*/