@@ -91038,9 +91038,15 @@ function useCpythonVersion(version, architecture, updateEnvironment, checkLatest
91038
91038
return __awaiter(this, void 0, void 0, function* () {
91039
91039
var _a;
91040
91040
let manifest = null;
91041
- const desugaredVersionSpec = desugarDevVersion(version);
91042
- let semanticVersionSpec = pythonVersionToSemantic(desugaredVersionSpec, allowPreReleases);
91041
+ const [desugaredVersionSpec, freethreaded] = desugarFreeThreadedVersion(version);
91042
+ const desugaredVersionSpec2 = desugarDevVersion(desugaredVersionSpec);
91043
+ let semanticVersionSpec = pythonVersionToSemantic(desugaredVersionSpec2, allowPreReleases);
91043
91044
core.debug(`Semantic version spec of ${version} is ${semanticVersionSpec}`);
91045
+ if (freethreaded) {
91046
+ // Free threaded versions use an architecture suffix like `x64-freethreaded`
91047
+ core.debug(`Using freethreaded version of ${semanticVersionSpec}`);
91048
+ architecture += freethreaded;
91049
+ }
91044
91050
if (checkLatest) {
91045
91051
manifest = yield installer.getManifest();
91046
91052
const resolvedVersion = (_a = (yield installer.findReleaseFromManifest(semanticVersionSpec, architecture, manifest))) === null || _a === void 0 ? void 0 : _a.version;
@@ -91115,6 +91121,23 @@ function useCpythonVersion(version, architecture, updateEnvironment, checkLatest
91115
91121
});
91116
91122
}
91117
91123
exports.useCpythonVersion = useCpythonVersion;
91124
+ /* Identify freethreaded versions like, 3.13t, 3.13t-dev, 3.14.0a1t. Returns
91125
+ * the version without the `t` and the architectures suffix, if freethreaded */
91126
+ function desugarFreeThreadedVersion(versionSpec) {
91127
+ const prereleaseVersion = /(\d+\.\d+\.\d+)(t)((?:a|b|rc)\d*)/g;
91128
+ if (prereleaseVersion.test(versionSpec)) {
91129
+ return [versionSpec.replace(prereleaseVersion, '$1$3'), '-freethreaded'];
91130
+ }
91131
+ const majorMinor = /^(\d+\.\d+)(t)$/;
91132
+ if (majorMinor.test(versionSpec)) {
91133
+ return [versionSpec.replace(majorMinor, '$1'), '-freethreaded'];
91134
+ }
91135
+ const devVersion = /^(\d+\.\d+)(t)(-dev)$/;
91136
+ if (devVersion.test(versionSpec)) {
91137
+ return [versionSpec.replace(devVersion, '$1$3'), '-freethreaded'];
91138
+ }
91139
+ return [versionSpec, ''];
91140
+ }
91118
91141
/** Convert versions like `3.8-dev` to a version like `~3.8.0-0`. */
91119
91142
function desugarDevVersion(versionSpec) {
91120
91143
const devVersion = /^(\d+)\.(\d+)-dev$/;
@@ -91629,7 +91652,7 @@ const httpm = __importStar(__nccwpck_require__(6255));
91629
91652
const utils_1 = __nccwpck_require__(1314);
91630
91653
const TOKEN = core.getInput('token');
91631
91654
const AUTH = !TOKEN ? undefined : `token ${TOKEN}`;
91632
- const MANIFEST_REPO_OWNER = 'actions ';
91655
+ const MANIFEST_REPO_OWNER = 'Quansight-Labs ';
91633
91656
const MANIFEST_REPO_NAME = 'python-versions';
91634
91657
const MANIFEST_REPO_BRANCH = 'main';
91635
91658
exports.MANIFEST_URL = `https://raw.githubusercontent.com/${MANIFEST_REPO_OWNER}/${MANIFEST_REPO_NAME}/${MANIFEST_REPO_BRANCH}/versions-manifest.json`;
0 commit comments