Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Support free threaded Python versions like '3.13t'#973

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Merged
HarithaVattikuti merged 11 commits intoactions:mainfromcolesbury:freethreading
Mar 4, 2025
Merged
Show file tree
Hide file tree
Changes from1 commit
Commits
Show all changes
11 commits
Select commitHold shift + click to select a range
eb2a653
Support free threaded Python versions like '3.13t'
colesburyOct 28, 2024
c70f76e
Add free threading to advanced usage documentation
colesburyJan 22, 2025
d653c0b
Fix desugaring of `3.13.1t` and add test case.
colesburyJan 22, 2025
72902a0
Add freethreaded input and fix handling of prerelease versions
colesburyJan 30, 2025
3794e54
Fix lint
colesburyJan 31, 2025
1ec1b0d
Add 't' suffix to python-version output
colesburyFeb 5, 2025
8f1f09d
Use distinct cache key for free threaded Python
colesburyFeb 10, 2025
bdd8c56
Remove support for syntax like '3.14.0a1'
colesburyFeb 10, 2025
1971406
Clarify use of 't' suffix
colesburyFeb 14, 2025
0681a6b
Improve error message when trying to use free threaded Python version…
colesburyFeb 14, 2025
77cd01c
Merge branch 'main' into freethreading
colesburyFeb 19, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
NextNext commit
Support free threaded Python versions like '3.13t'
Python wheels, pyenv, and a number of other tools use 't' in the Pythonversion number to identify free threaded builds. For example, '3.13t','3.14.0a1', '3.14t-dev'.This PR supports that syntax in `actions/setup-python`, strips the "t",and adds "-freethreading" to the architecture to select the correctPython version.See#771
  • Loading branch information
@colesbury
colesbury committedOct 29, 2024
commiteb2a6532f967fae3f4abd15c7923b67fef608b67
27 changes: 25 additions & 2 deletionsdist/setup/index.js
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -91038,9 +91038,15 @@ function useCpythonVersion(version, architecture, updateEnvironment, checkLatest
return __awaiter(this, void 0, void 0, function* () {
var _a;
let manifest = null;
const desugaredVersionSpec = desugarDevVersion(version);
let semanticVersionSpec = pythonVersionToSemantic(desugaredVersionSpec, allowPreReleases);
const [desugaredVersionSpec, freethreaded] = desugarFreeThreadedVersion(version);
const desugaredVersionSpec2 = desugarDevVersion(desugaredVersionSpec);
let semanticVersionSpec = pythonVersionToSemantic(desugaredVersionSpec2, allowPreReleases);
core.debug(`Semantic version spec of ${version} is ${semanticVersionSpec}`);
if (freethreaded) {
// Free threaded versions use an architecture suffix like `x64-freethreaded`
core.debug(`Using freethreaded version of ${semanticVersionSpec}`);
architecture += freethreaded;
}
if (checkLatest) {
manifest = yield installer.getManifest();
const resolvedVersion = (_a = (yield installer.findReleaseFromManifest(semanticVersionSpec, architecture, manifest))) === null || _a === void 0 ? void 0 : _a.version;
Expand DownExpand Up@@ -91115,6 +91121,23 @@ function useCpythonVersion(version, architecture, updateEnvironment, checkLatest
});
}
exports.useCpythonVersion = useCpythonVersion;
/* Identify freethreaded versions like, 3.13t, 3.13t-dev, 3.14.0a1t. Returns
* the version without the `t` and the architectures suffix, if freethreaded */
function desugarFreeThreadedVersion(versionSpec) {
const prereleaseVersion = /(\d+\.\d+\.\d+)(t)((?:a|b|rc)\d*)/g;
if (prereleaseVersion.test(versionSpec)) {
return [versionSpec.replace(prereleaseVersion, '$1$3'), '-freethreaded'];
}
const majorMinor = /^(\d+\.\d+)(t)$/;
if (majorMinor.test(versionSpec)) {
return [versionSpec.replace(majorMinor, '$1'), '-freethreaded'];
}
const devVersion = /^(\d+\.\d+)(t)(-dev)$/;
if (devVersion.test(versionSpec)) {
return [versionSpec.replace(devVersion, '$1$3'), '-freethreaded'];
}
return [versionSpec, ''];
}
/** Convert versions like `3.8-dev` to a version like `~3.8.0-0`. */
function desugarDevVersion(versionSpec) {
const devVersion = /^(\d+)\.(\d+)-dev$/;
Expand Down
30 changes: 28 additions & 2 deletionssrc/find-python.ts
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -38,13 +38,21 @@ export async function useCpythonVersion(
allowPreReleases: boolean
): Promise<InstalledVersion> {
let manifest: tc.IToolRelease[] | null = null;
const desugaredVersionSpec = desugarDevVersion(version);
const [desugaredVersionSpec, freethreaded] =
desugarFreeThreadedVersion(version);
const desugaredVersionSpec2 = desugarDevVersion(desugaredVersionSpec);
let semanticVersionSpec = pythonVersionToSemantic(
desugaredVersionSpec,
desugaredVersionSpec2,
allowPreReleases
);
core.debug(`Semantic version spec of ${version} is ${semanticVersionSpec}`);

if (freethreaded) {
// Free threaded versions use an architecture suffix like `x64-freethreaded`
core.debug(`Using freethreaded version of ${semanticVersionSpec}`);
architecture += freethreaded;
}

if (checkLatest) {
manifest = await installer.getManifest();
const resolvedVersion = (
Expand DownExpand Up@@ -159,6 +167,24 @@ export async function useCpythonVersion(
return {impl: 'CPython', version: installed};
}

/* Identify freethreaded versions like, 3.13t, 3.13t-dev, 3.14.0a1t. Returns
* the version without the `t` and the architectures suffix, if freethreaded */
function desugarFreeThreadedVersion(versionSpec: string) {
const prereleaseVersion = /(\d+\.\d+\.\d+)(t)((?:a|b|rc)\d*)/g;
if (prereleaseVersion.test(versionSpec)) {
return [versionSpec.replace(prereleaseVersion, '$1$3'), '-freethreaded'];
}
const majorMinor = /^(\d+\.\d+)(t)$/;
if (majorMinor.test(versionSpec)) {
return [versionSpec.replace(majorMinor, '$1'), '-freethreaded'];
}
const devVersion = /^(\d+\.\d+)(t)(-dev)$/;
if (devVersion.test(versionSpec)) {
return [versionSpec.replace(devVersion, '$1$3'), '-freethreaded'];
}
return [versionSpec, ''];
}

/** Convert versions like `3.8-dev` to a version like `~3.8.0-0`. */
function desugarDevVersion(versionSpec: string) {
const devVersion = /^(\d+)\.(\d+)-dev$/;
Expand Down

[8]ページ先頭

©2009-2025 Movatter.jp