From feb0ff9aba29abe4ac9611070a2edcd59216a0aa Mon Sep 17 00:00:00 2001
From: Aparna Jyothi <aparnajyothi-y@github.com>
Date: Tue, 25 Mar 2025 10:39:20 +0530
Subject: [PATCH] update-install-path-freethreaded

---
 dist/setup/index.js | 11 ++++++-----
 src/find-python.ts  | 18 ++++++++++++------
 2 files changed, 18 insertions(+), 11 deletions(-)

diff --git a/dist/setup/index.js b/dist/setup/index.js
index 6161475d..e4f01e42 100644
--- a/dist/setup/index.js
+++ b/dist/setup/index.js
@@ -99606,23 +99606,24 @@ function useCpythonVersion(version, architecture, updateEnvironment, checkLatest
             core.addPath(_binDir);
             if (utils_1.IS_WINDOWS) {
                 // Add --user directory
-                // `installDir` from tool cache should look like $RUNNER_TOOL_CACHE/Python/<semantic version>/x64/
-                // So if `findLocalTool` succeeded above, we must have a conformant `installDir`
                 const version = path.basename(path.dirname(installDir));
                 const major = semver.major(version);
                 const minor = semver.minor(version);
                 if (architecture === 'x86' &&
                     (major > 3 || (major === 3 && minor >= 10))) {
-                    // For Python >= 3.10 and architecture= 'x86', add the architecture-specific folder to the path
-                    const arch = '32';
+                    // For Python >= 3.10 and architecture='x86', add the architecture-specific folder to the path
+                    const arch = '32'; // Only for x86 architecture
                     const userScriptsDir = path.join(process.env['APPDATA'] || '', 'Python', `Python${major}${minor}-${arch}`, 'Scripts');
                     core.addPath(userScriptsDir);
                 }
                 else {
+                    // For Python >= 3.10 and architecture 'x64', or other versions, use the default user path
                     const userScriptsDir = path.join(process.env['APPDATA'] || '', 'Python', `Python${major}${minor}`, 'Scripts');
-                    // Add the default path to the environment PATH variable
                     core.addPath(userScriptsDir);
                 }
+                // Dynamically handle case for Python314t
+                const pythonPath = path.join(process.env['APPDATA'] || '', 'Python', `Python${major}${minor}t`, 'Scripts');
+                core.addPath(pythonPath);
             }
             // On Linux and macOS, pip will create the --user directory and add it to PATH as needed.
         }
diff --git a/src/find-python.ts b/src/find-python.ts
index 7a3704bc..c6e578e1 100644
--- a/src/find-python.ts
+++ b/src/find-python.ts
@@ -135,8 +135,6 @@ export async function useCpythonVersion(
 
     if (IS_WINDOWS) {
       // Add --user directory
-      // `installDir` from tool cache should look like $RUNNER_TOOL_CACHE/Python/<semantic version>/x64/
-      // So if `findLocalTool` succeeded above, we must have a conformant `installDir`
       const version = path.basename(path.dirname(installDir));
       const major = semver.major(version);
       const minor = semver.minor(version);
@@ -145,8 +143,8 @@ export async function useCpythonVersion(
         architecture === 'x86' &&
         (major > 3 || (major === 3 && minor >= 10))
       ) {
-        // For Python >= 3.10 and architecture= 'x86', add the architecture-specific folder to the path
-        const arch = '32';
+        // For Python >= 3.10 and architecture='x86', add the architecture-specific folder to the path
+        const arch = '32'; // Only for x86 architecture
 
         const userScriptsDir = path.join(
           process.env['APPDATA'] || '',
@@ -156,16 +154,24 @@ export async function useCpythonVersion(
         );
         core.addPath(userScriptsDir);
       } else {
+        // For Python >= 3.10 and architecture 'x64', or other versions, use the default user path
         const userScriptsDir = path.join(
           process.env['APPDATA'] || '',
           'Python',
           `Python${major}${minor}`,
           'Scripts'
         );
-
-        // Add the default path to the environment PATH variable
         core.addPath(userScriptsDir);
       }
+
+      // Dynamically handle case for Python314t
+      const pythonPath = path.join(
+        process.env['APPDATA'] || '',
+        'Python',
+        `Python${major}${minor}t`,
+        'Scripts'
+      );
+      core.addPath(pythonPath);
     }
     // On Linux and macOS, pip will create the --user directory and add it to PATH as needed.
   }