Skip to content
This repository was archived by the owner on Mar 25, 2025. It is now read-only.

Commit 6aeccc6

Browse files
colesburyandfoy
authored andcommitted
Fix desugaring of 3.13.1t and add test case.
1 parent 4ff908a commit 6aeccc6

File tree

3 files changed

+44
-14
lines changed

3 files changed

+44
-14
lines changed

__tests__/find-python.test.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import {desugarVersion} from '../src/find-python';
2+
3+
describe('desugarVersion', () => {
4+
it.each([
5+
['3.13', ['3.13', '']],
6+
['3.13t', ['3.13', '-freethreaded']],
7+
['3.13.1', ['3.13.1', '']],
8+
['3.13.1t', ['3.13.1', '-freethreaded']],
9+
['3.14-dev', ['~3.14.0-0', '']],
10+
['3.14t-dev', ['~3.14.0-0', '-freethreaded']],
11+
['3.14.0a4', ['3.14.0a4', '']],
12+
['3.14.0ta4', ['3.14.0a4', '-freethreaded']],
13+
['3.14.0rc1', ['3.14.0rc1', '']],
14+
['3.14.0trc1', ['3.14.0rc1', '-freethreaded']]
15+
])('%s -> %s', (input, expected) => {
16+
expect(desugarVersion(input)).toEqual(expected);
17+
});
18+
});

dist/setup/index.js

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -99514,7 +99514,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9951499514
});
9951599515
};
9951699516
Object.defineProperty(exports, "__esModule", ({ value: true }));
99517-
exports.pythonVersionToSemantic = exports.useCpythonVersion = void 0;
99517+
exports.pythonVersionToSemantic = exports.desugarVersion = exports.useCpythonVersion = void 0;
9951899518
const os = __importStar(__nccwpck_require__(2037));
9951999519
const path = __importStar(__nccwpck_require__(1017));
9952099520
const utils_1 = __nccwpck_require__(1314);
@@ -99546,9 +99546,8 @@ function useCpythonVersion(version, architecture, updateEnvironment, checkLatest
9954699546
return __awaiter(this, void 0, void 0, function* () {
9954799547
var _a;
9954899548
let manifest = null;
99549-
const [desugaredVersionSpec, freethreaded] = desugarFreeThreadedVersion(version);
99550-
const desugaredVersionSpec2 = desugarDevVersion(desugaredVersionSpec);
99551-
let semanticVersionSpec = pythonVersionToSemantic(desugaredVersionSpec2, allowPreReleases);
99549+
const [desugaredVersionSpec, freethreaded] = desugarVersion(version);
99550+
let semanticVersionSpec = pythonVersionToSemantic(desugaredVersionSpec, allowPreReleases);
9955299551
core.debug(`Semantic version spec of ${version} is ${semanticVersionSpec}`);
9955399552
if (freethreaded) {
9955499553
// Free threaded versions use an architecture suffix like `x64-freethreaded`
@@ -99629,14 +99628,21 @@ function useCpythonVersion(version, architecture, updateEnvironment, checkLatest
9962999628
});
9963099629
}
9963199630
exports.useCpythonVersion = useCpythonVersion;
99632-
/* Identify freethreaded versions like, 3.13t, 3.13t-dev, 3.14.0a1t. Returns
99633-
* the version without the `t` and the architectures suffix, if freethreaded */
99631+
/* Desugar free threaded and dev versions */
99632+
function desugarVersion(versionSpec) {
99633+
const [desugaredVersionSpec, freethreaded] = desugarFreeThreadedVersion(versionSpec);
99634+
const desugaredVersionSpec2 = desugarDevVersion(desugaredVersionSpec);
99635+
return [desugaredVersionSpec2, freethreaded];
99636+
}
99637+
exports.desugarVersion = desugarVersion;
99638+
/* Identify freethreaded versions like, 3.13t, 3.13.1t, 3.13t-dev, 3.14.0a1t.
99639+
* Returns the version without the `t` and the architectures suffix, if freethreaded */
9963499640
function desugarFreeThreadedVersion(versionSpec) {
9963599641
const prereleaseVersion = /(\d+\.\d+\.\d+)(t)((?:a|b|rc)\d*)/g;
9963699642
if (prereleaseVersion.test(versionSpec)) {
9963799643
return [versionSpec.replace(prereleaseVersion, '$1$3'), '-freethreaded'];
9963899644
}
99639-
const majorMinor = /^(\d+\.\d+)(t)$/;
99645+
const majorMinor = /^(\d+\.\d+(\.\d+)?)(t)$/;
9964099646
if (majorMinor.test(versionSpec)) {
9964199647
return [versionSpec.replace(majorMinor, '$1'), '-freethreaded'];
9964299648
}

src/find-python.ts

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,9 @@ export async function useCpythonVersion(
3838
allowPreReleases: boolean
3939
): Promise<InstalledVersion> {
4040
let manifest: tc.IToolRelease[] | null = null;
41-
const [desugaredVersionSpec, freethreaded] =
42-
desugarFreeThreadedVersion(version);
43-
const desugaredVersionSpec2 = desugarDevVersion(desugaredVersionSpec);
41+
const [desugaredVersionSpec, freethreaded] = desugarVersion(version);
4442
let semanticVersionSpec = pythonVersionToSemantic(
45-
desugaredVersionSpec2,
43+
desugaredVersionSpec,
4644
allowPreReleases
4745
);
4846
core.debug(`Semantic version spec of ${version} is ${semanticVersionSpec}`);
@@ -167,14 +165,22 @@ export async function useCpythonVersion(
167165
return {impl: 'CPython', version: installed};
168166
}
169167

170-
/* Identify freethreaded versions like, 3.13t, 3.13t-dev, 3.14.0a1t. Returns
171-
* the version without the `t` and the architectures suffix, if freethreaded */
168+
/* Desugar free threaded and dev versions */
169+
export function desugarVersion(versionSpec: string) {
170+
const [desugaredVersionSpec, freethreaded] =
171+
desugarFreeThreadedVersion(versionSpec);
172+
const desugaredVersionSpec2 = desugarDevVersion(desugaredVersionSpec);
173+
return [desugaredVersionSpec2, freethreaded];
174+
}
175+
176+
/* Identify freethreaded versions like, 3.13t, 3.13.1t, 3.13t-dev, 3.14.0a1t.
177+
* Returns the version without the `t` and the architectures suffix, if freethreaded */
172178
function desugarFreeThreadedVersion(versionSpec: string) {
173179
const prereleaseVersion = /(\d+\.\d+\.\d+)(t)((?:a|b|rc)\d*)/g;
174180
if (prereleaseVersion.test(versionSpec)) {
175181
return [versionSpec.replace(prereleaseVersion, '$1$3'), '-freethreaded'];
176182
}
177-
const majorMinor = /^(\d+\.\d+)(t)$/;
183+
const majorMinor = /^(\d+\.\d+(\.\d+)?)(t)$/;
178184
if (majorMinor.test(versionSpec)) {
179185
return [versionSpec.replace(majorMinor, '$1'), '-freethreaded'];
180186
}

0 commit comments

Comments
 (0)