@@ -91038,9 +91038,15 @@ function useCpythonVersion(version, architecture, updateEnvironment, checkLatest
9103891038 return __awaiter(this, void 0, void 0, function* () {
9103991039 var _a;
9104091040 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);
9104391044 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+ }
9104491050 if (checkLatest) {
9104591051 manifest = yield installer.getManifest();
9104691052 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
9111591121 });
9111691122}
9111791123exports.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+ }
9111891141/** Convert versions like `3.8-dev` to a version like `~3.8.0-0`. */
9111991142function desugarDevVersion(versionSpec) {
9112091143 const devVersion = /^(\d+)\.(\d+)-dev$/;
@@ -91629,7 +91652,7 @@ const httpm = __importStar(__nccwpck_require__(6255));
9162991652const utils_1 = __nccwpck_require__(1314);
9163091653const TOKEN = core.getInput('token');
9163191654const AUTH = !TOKEN ? undefined : `token ${TOKEN}`;
91632- const MANIFEST_REPO_OWNER = 'actions ';
91655+ const MANIFEST_REPO_OWNER = 'Quansight-Labs ';
9163391656const MANIFEST_REPO_NAME = 'python-versions';
9163491657const MANIFEST_REPO_BRANCH = 'main';
9163591658exports.MANIFEST_URL = `https://raw.githubusercontent.com/${MANIFEST_REPO_OWNER}/${MANIFEST_REPO_NAME}/${MANIFEST_REPO_BRANCH}/versions-manifest.json`;
0 commit comments