mirror of
https://github.com/actions/setup-python.git
synced 2025-02-15 12:52:51 -05:00
Remove support for syntax like '3.14.0a1'
This commit is contained in:
parent
8f1f09d543
commit
bdd8c56024
4 changed files with 12 additions and 53 deletions
|
@ -7,10 +7,7 @@ describe('desugarVersion', () => {
|
||||||
['3.13.1', {version: '3.13.1', freethreaded: false}],
|
['3.13.1', {version: '3.13.1', freethreaded: false}],
|
||||||
['3.13.1t', {version: '3.13.1', freethreaded: true}],
|
['3.13.1t', {version: '3.13.1', freethreaded: true}],
|
||||||
['3.14-dev', {version: '~3.14.0-0', freethreaded: false}],
|
['3.14-dev', {version: '~3.14.0-0', freethreaded: false}],
|
||||||
['3.14t-dev', {version: '~3.14.0-0', freethreaded: true}],
|
['3.14t-dev', {version: '~3.14.0-0', freethreaded: true}]
|
||||||
['3.14.0a4', {version: '3.14.0a4', freethreaded: false}],
|
|
||||||
['3.14.0rc1', {version: '3.14.0rc1', freethreaded: false}],
|
|
||||||
['3.14.0rc1t', {version: '3.14.0rc1', freethreaded: true}]
|
|
||||||
])('%s -> %s', (input, expected) => {
|
])('%s -> %s', (input, expected) => {
|
||||||
expect(desugarVersion(input)).toEqual(expected);
|
expect(desugarVersion(input)).toEqual(expected);
|
||||||
});
|
});
|
||||||
|
@ -24,11 +21,7 @@ describe('pythonVersions', () => {
|
||||||
['3.13.1', {version: '3.13.1', freethreaded: false}],
|
['3.13.1', {version: '3.13.1', freethreaded: false}],
|
||||||
['3.13.1t', {version: '3.13.1', freethreaded: true}],
|
['3.13.1t', {version: '3.13.1', freethreaded: true}],
|
||||||
['3.14-dev', {version: '~3.14.0-0', freethreaded: false}],
|
['3.14-dev', {version: '~3.14.0-0', freethreaded: false}],
|
||||||
['3.14t-dev', {version: '~3.14.0-0', freethreaded: true}],
|
['3.14t-dev', {version: '~3.14.0-0', freethreaded: true}]
|
||||||
['3.14.0a4', {version: '3.14.0-alpha.4', freethreaded: false}],
|
|
||||||
['3.14.0a4t', {version: '3.14.0-alpha.4', freethreaded: true}],
|
|
||||||
['3.14.0rc1', {version: '3.14.0-rc.1', freethreaded: false}],
|
|
||||||
['3.14.0rc1t', {version: '3.14.0-rc.1', freethreaded: true}]
|
|
||||||
])('%s -> %s', (input, expected) => {
|
])('%s -> %s', (input, expected) => {
|
||||||
const {version, freethreaded} = desugarVersion(input);
|
const {version, freethreaded} = desugarVersion(input);
|
||||||
const semanticVersionSpec = pythonVersionToSemantic(version, false);
|
const semanticVersionSpec = pythonVersionToSemantic(version, false);
|
||||||
|
@ -41,11 +34,7 @@ describe('pythonVersions', () => {
|
||||||
['3.13.1', {version: '3.13.1', freethreaded: false}],
|
['3.13.1', {version: '3.13.1', freethreaded: false}],
|
||||||
['3.13.1t', {version: '3.13.1', freethreaded: true}],
|
['3.13.1t', {version: '3.13.1', freethreaded: true}],
|
||||||
['3.14-dev', {version: '~3.14.0-0', freethreaded: false}],
|
['3.14-dev', {version: '~3.14.0-0', freethreaded: false}],
|
||||||
['3.14t-dev', {version: '~3.14.0-0', freethreaded: true}],
|
['3.14t-dev', {version: '~3.14.0-0', freethreaded: true}]
|
||||||
['3.14.0a4', {version: '3.14.0-alpha.4', freethreaded: false}],
|
|
||||||
['3.14.0a4t', {version: '3.14.0-alpha.4', freethreaded: true}],
|
|
||||||
['3.14.0rc1', {version: '3.14.0-rc.1', freethreaded: false}],
|
|
||||||
['3.14.0rc1t', {version: '3.14.0-rc.1', freethreaded: true}]
|
|
||||||
])('%s (allowPreReleases=true) -> %s', (input, expected) => {
|
])('%s (allowPreReleases=true) -> %s', (input, expected) => {
|
||||||
const {version, freethreaded} = desugarVersion(input);
|
const {version, freethreaded} = desugarVersion(input);
|
||||||
const semanticVersionSpec = pythonVersionToSemantic(version, true);
|
const semanticVersionSpec = pythonVersionToSemantic(version, true);
|
||||||
|
|
23
dist/setup/index.js
vendored
23
dist/setup/index.js
vendored
|
@ -91135,17 +91135,9 @@ function desugarVersion(versionSpec) {
|
||||||
return { version: desugarDevVersion(version), freethreaded };
|
return { version: desugarDevVersion(version), freethreaded };
|
||||||
}
|
}
|
||||||
exports.desugarVersion = desugarVersion;
|
exports.desugarVersion = desugarVersion;
|
||||||
/* Identify freethreaded versions like, 3.13t, 3.13.1t, 3.13t-dev, 3.14.0a1t.
|
/* Identify freethreaded versions like, 3.13t, 3.13.1t, 3.13t-dev.
|
||||||
* Returns the version without the `t` and the architectures suffix, if freethreaded */
|
* Returns the version without the `t` and the architectures suffix, if freethreaded */
|
||||||
function desugarFreeThreadedVersion(versionSpec) {
|
function desugarFreeThreadedVersion(versionSpec) {
|
||||||
// e.g., 3.14.0a1t -> 3.14.0a1
|
|
||||||
const prereleaseVersion = /(\d+\.\d+\.\d+)((?:a|b|rc)\d*)(t)/g;
|
|
||||||
if (prereleaseVersion.test(versionSpec)) {
|
|
||||||
return {
|
|
||||||
version: versionSpec.replace(prereleaseVersion, '$1$2'),
|
|
||||||
freethreaded: true
|
|
||||||
};
|
|
||||||
}
|
|
||||||
const majorMinor = /^(\d+\.\d+(\.\d+)?)(t)$/;
|
const majorMinor = /^(\d+\.\d+(\.\d+)?)(t)$/;
|
||||||
if (majorMinor.test(versionSpec)) {
|
if (majorMinor.test(versionSpec)) {
|
||||||
return { version: versionSpec.replace(majorMinor, '$1'), freethreaded: true };
|
return { version: versionSpec.replace(majorMinor, '$1'), freethreaded: true };
|
||||||
|
@ -91172,22 +91164,15 @@ function versionFromPath(installDir) {
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* Python's prelease versions look like `3.7.0b2`.
|
* Python's prelease versions look like `3.7.0b2`.
|
||||||
* This is the one part of Python versioning that does not look like semantic versioning, which specifies `3.7.0-beta.2`.
|
* This is the one part of Python versioning that does not look like semantic versioning, which specifies `3.7.0-b2`.
|
||||||
* If the version spec contains prerelease versions, we need to convert them to the semantic version equivalent.
|
* If the version spec contains prerelease versions, we need to convert them to the semantic version equivalent.
|
||||||
*
|
*
|
||||||
* For easier use of the action, we also map 'x.y' to allow pre-release before 'x.y.0' release if allowPreReleases is true
|
* For easier use of the action, we also map 'x.y' to allow pre-release before 'x.y.0' release if allowPreReleases is true
|
||||||
*/
|
*/
|
||||||
function pythonVersionToSemantic(versionSpec, allowPreReleases) {
|
function pythonVersionToSemantic(versionSpec, allowPreReleases) {
|
||||||
const preleaseMap = {
|
const prereleaseVersion = /(\d+\.\d+\.\d+)((?:a|b|rc)\d*)/g;
|
||||||
a: 'alpha',
|
|
||||||
b: 'beta',
|
|
||||||
rc: 'rc'
|
|
||||||
};
|
|
||||||
const prereleaseVersion = /(\d+\.\d+\.\d+)(a|b|rc)(\d+)/g;
|
|
||||||
let result = versionSpec.replace(prereleaseVersion, (_, p1, p2, p3) => {
|
|
||||||
return `${p1}-${preleaseMap[p2]}.${p3}`;
|
|
||||||
});
|
|
||||||
const majorMinor = /^(\d+)\.(\d+)$/;
|
const majorMinor = /^(\d+)\.(\d+)$/;
|
||||||
|
let result = versionSpec.replace(prereleaseVersion, '$1-$2');
|
||||||
if (allowPreReleases) {
|
if (allowPreReleases) {
|
||||||
result = result.replace(majorMinor, '~$1.$2.0-0');
|
result = result.replace(majorMinor, '~$1.$2.0-0');
|
||||||
}
|
}
|
||||||
|
|
|
@ -77,7 +77,7 @@ steps:
|
||||||
- run: python my_script.py
|
- run: python my_script.py
|
||||||
```
|
```
|
||||||
|
|
||||||
You can specify the [free threading](https://docs.python.org/3/howto/free-threading-python.html) version of Python by setting the `freethreaded` input to `true` or by using the special **t** suffix in some cases. Pre-release free threading versions can be specified like `3.14.0a3t` or `3.14t-dev`.
|
You can specify the [free threading](https://docs.python.org/3/howto/free-threading-python.html) version of Python by setting the `freethreaded` input to `true` or by using the special **t** suffix in some cases. Pre-release free threading versions can be specified like `3.14t-dev`.
|
||||||
Free threaded Python is only available starting with the 3.13 release.
|
Free threaded Python is only available starting with the 3.13 release.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
|
|
|
@ -182,17 +182,9 @@ export function desugarVersion(versionSpec: string) {
|
||||||
return {version: desugarDevVersion(version), freethreaded};
|
return {version: desugarDevVersion(version), freethreaded};
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Identify freethreaded versions like, 3.13t, 3.13.1t, 3.13t-dev, 3.14.0a1t.
|
/* Identify freethreaded versions like, 3.13t, 3.13.1t, 3.13t-dev.
|
||||||
* Returns the version without the `t` and the architectures suffix, if freethreaded */
|
* Returns the version without the `t` and the architectures suffix, if freethreaded */
|
||||||
function desugarFreeThreadedVersion(versionSpec: string) {
|
function desugarFreeThreadedVersion(versionSpec: string) {
|
||||||
// e.g., 3.14.0a1t -> 3.14.0a1
|
|
||||||
const prereleaseVersion = /(\d+\.\d+\.\d+)((?:a|b|rc)\d*)(t)/g;
|
|
||||||
if (prereleaseVersion.test(versionSpec)) {
|
|
||||||
return {
|
|
||||||
version: versionSpec.replace(prereleaseVersion, '$1$2'),
|
|
||||||
freethreaded: true
|
|
||||||
};
|
|
||||||
}
|
|
||||||
const majorMinor = /^(\d+\.\d+(\.\d+)?)(t)$/;
|
const majorMinor = /^(\d+\.\d+(\.\d+)?)(t)$/;
|
||||||
if (majorMinor.test(versionSpec)) {
|
if (majorMinor.test(versionSpec)) {
|
||||||
return {version: versionSpec.replace(majorMinor, '$1'), freethreaded: true};
|
return {version: versionSpec.replace(majorMinor, '$1'), freethreaded: true};
|
||||||
|
@ -228,7 +220,7 @@ interface InstalledVersion {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Python's prelease versions look like `3.7.0b2`.
|
* Python's prelease versions look like `3.7.0b2`.
|
||||||
* This is the one part of Python versioning that does not look like semantic versioning, which specifies `3.7.0-beta.2`.
|
* This is the one part of Python versioning that does not look like semantic versioning, which specifies `3.7.0-b2`.
|
||||||
* If the version spec contains prerelease versions, we need to convert them to the semantic version equivalent.
|
* If the version spec contains prerelease versions, we need to convert them to the semantic version equivalent.
|
||||||
*
|
*
|
||||||
* For easier use of the action, we also map 'x.y' to allow pre-release before 'x.y.0' release if allowPreReleases is true
|
* For easier use of the action, we also map 'x.y' to allow pre-release before 'x.y.0' release if allowPreReleases is true
|
||||||
|
@ -237,16 +229,9 @@ export function pythonVersionToSemantic(
|
||||||
versionSpec: string,
|
versionSpec: string,
|
||||||
allowPreReleases: boolean
|
allowPreReleases: boolean
|
||||||
) {
|
) {
|
||||||
const preleaseMap: {[key: string]: string} = {
|
const prereleaseVersion = /(\d+\.\d+\.\d+)((?:a|b|rc)\d*)/g;
|
||||||
a: 'alpha',
|
|
||||||
b: 'beta',
|
|
||||||
rc: 'rc'
|
|
||||||
};
|
|
||||||
const prereleaseVersion = /(\d+\.\d+\.\d+)(a|b|rc)(\d+)/g;
|
|
||||||
let result = versionSpec.replace(prereleaseVersion, (_, p1, p2, p3) => {
|
|
||||||
return `${p1}-${preleaseMap[p2]}.${p3}`;
|
|
||||||
});
|
|
||||||
const majorMinor = /^(\d+)\.(\d+)$/;
|
const majorMinor = /^(\d+)\.(\d+)$/;
|
||||||
|
let result = versionSpec.replace(prereleaseVersion, '$1-$2');
|
||||||
if (allowPreReleases) {
|
if (allowPreReleases) {
|
||||||
result = result.replace(majorMinor, '~$1.$2.0-0');
|
result = result.replace(majorMinor, '~$1.$2.0-0');
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue