vercel-cli 48.0.2__py3-none-any.whl → 48.1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of vercel-cli might be problematic. Click here for more details.
- vercel_cli/vendor/dist/index.js +967 -393
- vercel_cli/vendor/node_modules/.package-lock.json +3 -3
- vercel_cli/vendor/node_modules/@vercel/python/dist/index.js +188 -45
- vercel_cli/vendor/node_modules/@vercel/python/package.json +1 -1
- vercel_cli/vendor/package.json +2 -2
- {vercel_cli-48.0.2.dist-info → vercel_cli-48.1.0.dist-info}/METADATA +1 -1
- {vercel_cli-48.0.2.dist-info → vercel_cli-48.1.0.dist-info}/RECORD +9 -9
- {vercel_cli-48.0.2.dist-info → vercel_cli-48.1.0.dist-info}/WHEEL +0 -0
- {vercel_cli-48.0.2.dist-info → vercel_cli-48.1.0.dist-info}/entry_points.txt +0 -0
|
@@ -15,9 +15,9 @@
|
|
|
15
15
|
"license": "Apache-2.0"
|
|
16
16
|
},
|
|
17
17
|
"node_modules/@vercel/python": {
|
|
18
|
-
"version": "5.0.
|
|
19
|
-
"resolved": "https://registry.npmjs.org/@vercel/python/-/python-5.0.
|
|
20
|
-
"integrity": "sha512-
|
|
18
|
+
"version": "5.0.5",
|
|
19
|
+
"resolved": "https://registry.npmjs.org/@vercel/python/-/python-5.0.5.tgz",
|
|
20
|
+
"integrity": "sha512-XLG/fDe2hflzNtSWuoASTo+N2c4hl6SbcufvBRYa7BnBQK9t4ZH1IEu+vJkq2AUoVczp5JEYLEXkIGm8KBtoeg==",
|
|
21
21
|
"license": "Apache-2.0"
|
|
22
22
|
}
|
|
23
23
|
}
|
|
@@ -48,7 +48,7 @@ var require_windows = __commonJS({
|
|
|
48
48
|
"../../node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/windows.js"(exports, module2) {
|
|
49
49
|
module2.exports = isexe;
|
|
50
50
|
isexe.sync = sync;
|
|
51
|
-
var
|
|
51
|
+
var fs3 = require("fs");
|
|
52
52
|
function checkPathExt(path, options) {
|
|
53
53
|
var pathext = options.pathExt !== void 0 ? options.pathExt : process.env.PATHEXT;
|
|
54
54
|
if (!pathext) {
|
|
@@ -73,12 +73,12 @@ var require_windows = __commonJS({
|
|
|
73
73
|
return checkPathExt(path, options);
|
|
74
74
|
}
|
|
75
75
|
function isexe(path, options, cb) {
|
|
76
|
-
|
|
76
|
+
fs3.stat(path, function(er, stat) {
|
|
77
77
|
cb(er, er ? false : checkStat(stat, path, options));
|
|
78
78
|
});
|
|
79
79
|
}
|
|
80
80
|
function sync(path, options) {
|
|
81
|
-
return checkStat(
|
|
81
|
+
return checkStat(fs3.statSync(path), path, options);
|
|
82
82
|
}
|
|
83
83
|
}
|
|
84
84
|
});
|
|
@@ -88,14 +88,14 @@ var require_mode = __commonJS({
|
|
|
88
88
|
"../../node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/mode.js"(exports, module2) {
|
|
89
89
|
module2.exports = isexe;
|
|
90
90
|
isexe.sync = sync;
|
|
91
|
-
var
|
|
91
|
+
var fs3 = require("fs");
|
|
92
92
|
function isexe(path, options, cb) {
|
|
93
|
-
|
|
93
|
+
fs3.stat(path, function(er, stat) {
|
|
94
94
|
cb(er, er ? false : checkStat(stat, options));
|
|
95
95
|
});
|
|
96
96
|
}
|
|
97
97
|
function sync(path, options) {
|
|
98
|
-
return checkStat(
|
|
98
|
+
return checkStat(fs3.statSync(path), options);
|
|
99
99
|
}
|
|
100
100
|
function checkStat(stat, options) {
|
|
101
101
|
return stat.isFile() && checkMode(stat, options);
|
|
@@ -119,7 +119,7 @@ var require_mode = __commonJS({
|
|
|
119
119
|
// ../../node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/index.js
|
|
120
120
|
var require_isexe = __commonJS({
|
|
121
121
|
"../../node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/index.js"(exports, module2) {
|
|
122
|
-
var
|
|
122
|
+
var fs3 = require("fs");
|
|
123
123
|
var core;
|
|
124
124
|
if (process.platform === "win32" || global.TESTING_WINDOWS) {
|
|
125
125
|
core = require_windows();
|
|
@@ -174,8 +174,8 @@ var require_isexe = __commonJS({
|
|
|
174
174
|
// ../../node_modules/.pnpm/which@1.3.1/node_modules/which/which.js
|
|
175
175
|
var require_which = __commonJS({
|
|
176
176
|
"../../node_modules/.pnpm/which@1.3.1/node_modules/which/which.js"(exports, module2) {
|
|
177
|
-
module2.exports =
|
|
178
|
-
|
|
177
|
+
module2.exports = which3;
|
|
178
|
+
which3.sync = whichSync;
|
|
179
179
|
var isWindows = process.platform === "win32" || process.env.OSTYPE === "cygwin" || process.env.OSTYPE === "msys";
|
|
180
180
|
var path = require("path");
|
|
181
181
|
var COLON = isWindows ? ";" : ":";
|
|
@@ -206,7 +206,7 @@ var require_which = __commonJS({
|
|
|
206
206
|
extExe: pathExtExe
|
|
207
207
|
};
|
|
208
208
|
}
|
|
209
|
-
function
|
|
209
|
+
function which3(cmd, opt, cb) {
|
|
210
210
|
if (typeof opt === "function") {
|
|
211
211
|
cb = opt;
|
|
212
212
|
opt = {};
|
|
@@ -307,7 +307,7 @@ var require_resolveCommand = __commonJS({
|
|
|
307
307
|
"../../node_modules/.pnpm/cross-spawn@6.0.5/node_modules/cross-spawn/lib/util/resolveCommand.js"(exports, module2) {
|
|
308
308
|
"use strict";
|
|
309
309
|
var path = require("path");
|
|
310
|
-
var
|
|
310
|
+
var which3 = require_which();
|
|
311
311
|
var pathKey = require_path_key()();
|
|
312
312
|
function resolveCommandAttempt(parsed, withoutPathExt) {
|
|
313
313
|
const cwd = process.cwd();
|
|
@@ -320,7 +320,7 @@ var require_resolveCommand = __commonJS({
|
|
|
320
320
|
}
|
|
321
321
|
let resolved;
|
|
322
322
|
try {
|
|
323
|
-
resolved =
|
|
323
|
+
resolved = which3.sync(parsed.command, {
|
|
324
324
|
path: (parsed.options.env || process.env)[pathKey],
|
|
325
325
|
pathExt: withoutPathExt ? path.delimiter : void 0
|
|
326
326
|
});
|
|
@@ -395,7 +395,7 @@ var require_shebang_command = __commonJS({
|
|
|
395
395
|
var require_readShebang = __commonJS({
|
|
396
396
|
"../../node_modules/.pnpm/cross-spawn@6.0.5/node_modules/cross-spawn/lib/util/readShebang.js"(exports, module2) {
|
|
397
397
|
"use strict";
|
|
398
|
-
var
|
|
398
|
+
var fs3 = require("fs");
|
|
399
399
|
var shebangCommand = require_shebang_command();
|
|
400
400
|
function readShebang(command) {
|
|
401
401
|
const size = 150;
|
|
@@ -408,9 +408,9 @@ var require_readShebang = __commonJS({
|
|
|
408
408
|
}
|
|
409
409
|
let fd;
|
|
410
410
|
try {
|
|
411
|
-
fd =
|
|
412
|
-
|
|
413
|
-
|
|
411
|
+
fd = fs3.openSync(command, "r");
|
|
412
|
+
fs3.readSync(fd, buffer, 0, size, 0);
|
|
413
|
+
fs3.closeSync(fd);
|
|
414
414
|
} catch (e) {
|
|
415
415
|
}
|
|
416
416
|
return shebangCommand(buffer.toString());
|
|
@@ -1498,7 +1498,7 @@ var require_parse = __commonJS({
|
|
|
1498
1498
|
var escape = require_escape();
|
|
1499
1499
|
var readShebang = require_readShebang();
|
|
1500
1500
|
var semver = require_semver();
|
|
1501
|
-
var
|
|
1501
|
+
var isWin2 = process.platform === "win32";
|
|
1502
1502
|
var isExecutableRegExp = /\.(?:com|exe)$/i;
|
|
1503
1503
|
var isCmdShimRegExp = /node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;
|
|
1504
1504
|
var supportsShellOption = niceTry(() => semver.satisfies(process.version, "^4.8.0 || ^5.7.0 || >= 6.0.0", true)) || false;
|
|
@@ -1513,7 +1513,7 @@ var require_parse = __commonJS({
|
|
|
1513
1513
|
return parsed.file;
|
|
1514
1514
|
}
|
|
1515
1515
|
function parseNonShell(parsed) {
|
|
1516
|
-
if (!
|
|
1516
|
+
if (!isWin2) {
|
|
1517
1517
|
return parsed;
|
|
1518
1518
|
}
|
|
1519
1519
|
const commandFile = detectShebang(parsed);
|
|
@@ -1535,7 +1535,7 @@ var require_parse = __commonJS({
|
|
|
1535
1535
|
return parsed;
|
|
1536
1536
|
}
|
|
1537
1537
|
const shellCommand = [parsed.command].concat(parsed.args).join(" ");
|
|
1538
|
-
if (
|
|
1538
|
+
if (isWin2) {
|
|
1539
1539
|
parsed.command = typeof parsed.options.shell === "string" ? parsed.options.shell : process.env.comspec || "cmd.exe";
|
|
1540
1540
|
parsed.args = ["/d", "/s", "/c", `"${shellCommand}"`];
|
|
1541
1541
|
parsed.options.windowsVerbatimArguments = true;
|
|
@@ -1578,7 +1578,7 @@ var require_parse = __commonJS({
|
|
|
1578
1578
|
var require_enoent = __commonJS({
|
|
1579
1579
|
"../../node_modules/.pnpm/cross-spawn@6.0.5/node_modules/cross-spawn/lib/enoent.js"(exports, module2) {
|
|
1580
1580
|
"use strict";
|
|
1581
|
-
var
|
|
1581
|
+
var isWin2 = process.platform === "win32";
|
|
1582
1582
|
function notFoundError(original, syscall) {
|
|
1583
1583
|
return Object.assign(new Error(`${syscall} ${original.command} ENOENT`), {
|
|
1584
1584
|
code: "ENOENT",
|
|
@@ -1589,7 +1589,7 @@ var require_enoent = __commonJS({
|
|
|
1589
1589
|
});
|
|
1590
1590
|
}
|
|
1591
1591
|
function hookChildProcess(cp, parsed) {
|
|
1592
|
-
if (!
|
|
1592
|
+
if (!isWin2) {
|
|
1593
1593
|
return;
|
|
1594
1594
|
}
|
|
1595
1595
|
const originalEmit = cp.emit;
|
|
@@ -1604,13 +1604,13 @@ var require_enoent = __commonJS({
|
|
|
1604
1604
|
};
|
|
1605
1605
|
}
|
|
1606
1606
|
function verifyENOENT(status, parsed) {
|
|
1607
|
-
if (
|
|
1607
|
+
if (isWin2 && status === 1 && !parsed.file) {
|
|
1608
1608
|
return notFoundError(parsed.original, "spawn");
|
|
1609
1609
|
}
|
|
1610
1610
|
return null;
|
|
1611
1611
|
}
|
|
1612
1612
|
function verifyENOENTSync(status, parsed) {
|
|
1613
|
-
if (
|
|
1613
|
+
if (isWin2 && status === 1 && !parsed.file) {
|
|
1614
1614
|
return notFoundError(parsed.original, "spawnSync");
|
|
1615
1615
|
}
|
|
1616
1616
|
return null;
|
|
@@ -1895,9 +1895,9 @@ var require_pump = __commonJS({
|
|
|
1895
1895
|
"../../node_modules/.pnpm/pump@3.0.2/node_modules/pump/index.js"(exports, module2) {
|
|
1896
1896
|
var once = require_once();
|
|
1897
1897
|
var eos = require_end_of_stream();
|
|
1898
|
-
var
|
|
1898
|
+
var fs3;
|
|
1899
1899
|
try {
|
|
1900
|
-
|
|
1900
|
+
fs3 = require("fs");
|
|
1901
1901
|
} catch (e) {
|
|
1902
1902
|
}
|
|
1903
1903
|
var noop = function() {
|
|
@@ -1909,9 +1909,9 @@ var require_pump = __commonJS({
|
|
|
1909
1909
|
var isFS = function(stream) {
|
|
1910
1910
|
if (!ancient)
|
|
1911
1911
|
return false;
|
|
1912
|
-
if (!
|
|
1912
|
+
if (!fs3)
|
|
1913
1913
|
return false;
|
|
1914
|
-
return (stream instanceof (
|
|
1914
|
+
return (stream instanceof (fs3.ReadStream || noop) || stream instanceof (fs3.WriteStream || noop)) && isFn(stream.close);
|
|
1915
1915
|
};
|
|
1916
1916
|
var isRequest = function(stream) {
|
|
1917
1917
|
return stream.setHeader && isFn(stream.abort);
|
|
@@ -2143,7 +2143,7 @@ var require_signal_exit = __commonJS({
|
|
|
2143
2143
|
} else {
|
|
2144
2144
|
assert = require("assert");
|
|
2145
2145
|
signals = require_signals();
|
|
2146
|
-
|
|
2146
|
+
isWin2 = /^win/i.test(process2.platform);
|
|
2147
2147
|
EE = require("events");
|
|
2148
2148
|
if (typeof EE !== "function") {
|
|
2149
2149
|
EE = EE.EventEmitter;
|
|
@@ -2215,7 +2215,7 @@ var require_signal_exit = __commonJS({
|
|
|
2215
2215
|
unload();
|
|
2216
2216
|
emit("exit", null, sig);
|
|
2217
2217
|
emit("afterexit", null, sig);
|
|
2218
|
-
if (
|
|
2218
|
+
if (isWin2 && sig === "SIGHUP") {
|
|
2219
2219
|
sig = "SIGINT";
|
|
2220
2220
|
}
|
|
2221
2221
|
process2.kill(process2.pid, sig);
|
|
@@ -2272,7 +2272,7 @@ var require_signal_exit = __commonJS({
|
|
|
2272
2272
|
}
|
|
2273
2273
|
var assert;
|
|
2274
2274
|
var signals;
|
|
2275
|
-
var
|
|
2275
|
+
var isWin2;
|
|
2276
2276
|
var EE;
|
|
2277
2277
|
var emitter;
|
|
2278
2278
|
var unload;
|
|
@@ -2682,7 +2682,7 @@ var require_lib = __commonJS({
|
|
|
2682
2682
|
const prefix = !pathPart && rRel.test(cmd) ? cmd.slice(0, 2) : "";
|
|
2683
2683
|
return prefix + join3(pathPart, cmd);
|
|
2684
2684
|
};
|
|
2685
|
-
var
|
|
2685
|
+
var which3 = async (cmd, opt = {}) => {
|
|
2686
2686
|
const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt);
|
|
2687
2687
|
const found = [];
|
|
2688
2688
|
for (const envPart of pathEnv) {
|
|
@@ -2730,8 +2730,8 @@ var require_lib = __commonJS({
|
|
|
2730
2730
|
}
|
|
2731
2731
|
throw getNotFoundError(cmd);
|
|
2732
2732
|
};
|
|
2733
|
-
module2.exports =
|
|
2734
|
-
|
|
2733
|
+
module2.exports = which3;
|
|
2734
|
+
which3.sync = whichSync;
|
|
2735
2735
|
}
|
|
2736
2736
|
});
|
|
2737
2737
|
|
|
@@ -2746,7 +2746,7 @@ __export(src_exports, {
|
|
|
2746
2746
|
version: () => version
|
|
2747
2747
|
});
|
|
2748
2748
|
module.exports = __toCommonJS(src_exports);
|
|
2749
|
-
var
|
|
2749
|
+
var import_fs2 = __toESM(require("fs"));
|
|
2750
2750
|
var import_execa2 = __toESM(require_execa());
|
|
2751
2751
|
var import_util = require("util");
|
|
2752
2752
|
var import_path2 = require("path");
|
|
@@ -2754,8 +2754,13 @@ var import_build_utils3 = require("@vercel/build-utils");
|
|
|
2754
2754
|
|
|
2755
2755
|
// src/install.ts
|
|
2756
2756
|
var import_execa = __toESM(require_execa());
|
|
2757
|
+
var import_fs = __toESM(require("fs"));
|
|
2758
|
+
var import_os = __toESM(require("os"));
|
|
2757
2759
|
var import_path = require("path");
|
|
2760
|
+
var import_which = __toESM(require_lib());
|
|
2758
2761
|
var import_build_utils = require("@vercel/build-utils");
|
|
2762
|
+
var isWin = process.platform === "win32";
|
|
2763
|
+
var uvExec = isWin ? "uv.exe" : "uv";
|
|
2759
2764
|
var makeDependencyCheckCode = (dependency) => `
|
|
2760
2765
|
from importlib import util
|
|
2761
2766
|
dep = '${dependency}'.replace('-', '_')
|
|
@@ -2805,9 +2810,61 @@ function resolveVendorDir() {
|
|
|
2805
2810
|
const vendorDir = process.env.VERCEL_PYTHON_VENDOR_DIR || "_vendor";
|
|
2806
2811
|
return vendorDir;
|
|
2807
2812
|
}
|
|
2808
|
-
async function
|
|
2813
|
+
async function getGlobalScriptsDir(pythonPath) {
|
|
2814
|
+
const code = `import sysconfig; print(sysconfig.get_path('scripts'))`;
|
|
2815
|
+
try {
|
|
2816
|
+
const { stdout } = await (0, import_execa.default)(pythonPath, ["-c", code]);
|
|
2817
|
+
const out = stdout.trim();
|
|
2818
|
+
return out || null;
|
|
2819
|
+
} catch (err) {
|
|
2820
|
+
(0, import_build_utils.debug)("Failed to resolve Python global scripts directory", err);
|
|
2821
|
+
return null;
|
|
2822
|
+
}
|
|
2823
|
+
}
|
|
2824
|
+
async function getUserScriptsDir(pythonPath) {
|
|
2825
|
+
const code = `import sys, sysconfig; print(sysconfig.get_path('scripts', scheme=('nt_user' if sys.platform == 'win32' else 'posix_user')))`.replace(
|
|
2826
|
+
/\n/g,
|
|
2827
|
+
" "
|
|
2828
|
+
);
|
|
2829
|
+
try {
|
|
2830
|
+
const { stdout } = await (0, import_execa.default)(pythonPath, ["-c", code]);
|
|
2831
|
+
const out = stdout.trim();
|
|
2832
|
+
return out || null;
|
|
2833
|
+
} catch (err) {
|
|
2834
|
+
(0, import_build_utils.debug)("Failed to resolve Python user scripts directory", err);
|
|
2835
|
+
return null;
|
|
2836
|
+
}
|
|
2837
|
+
}
|
|
2838
|
+
async function pipInstall(pipPath, pythonPath, workPath, args) {
|
|
2809
2839
|
const target = resolveVendorDir();
|
|
2810
2840
|
process.env.PIP_USER = "0";
|
|
2841
|
+
let uvBin = null;
|
|
2842
|
+
try {
|
|
2843
|
+
uvBin = await getUvBinaryOrInstall(pythonPath);
|
|
2844
|
+
} catch (err) {
|
|
2845
|
+
console.log("Failed to install uv, falling back to pip");
|
|
2846
|
+
}
|
|
2847
|
+
if (uvBin) {
|
|
2848
|
+
const uvArgs = [
|
|
2849
|
+
"pip",
|
|
2850
|
+
"install",
|
|
2851
|
+
"--no-compile",
|
|
2852
|
+
"--no-cache-dir",
|
|
2853
|
+
"--target",
|
|
2854
|
+
target,
|
|
2855
|
+
...args
|
|
2856
|
+
];
|
|
2857
|
+
const prettyUv = `${uvBin} ${uvArgs.join(" ")}`;
|
|
2858
|
+
(0, import_build_utils.debug)(`Running "${prettyUv}"...`);
|
|
2859
|
+
try {
|
|
2860
|
+
await (0, import_execa.default)(uvBin, uvArgs, {
|
|
2861
|
+
cwd: workPath
|
|
2862
|
+
});
|
|
2863
|
+
return;
|
|
2864
|
+
} catch (err) {
|
|
2865
|
+
console.log(`Failed to run "${prettyUv}", falling back to pip`);
|
|
2866
|
+
}
|
|
2867
|
+
}
|
|
2811
2868
|
const cmdArgs = [
|
|
2812
2869
|
"install",
|
|
2813
2870
|
"--disable-pip-version-check",
|
|
@@ -2828,6 +2885,87 @@ async function pipInstall(pipPath, workPath, args) {
|
|
|
2828
2885
|
throw err;
|
|
2829
2886
|
}
|
|
2830
2887
|
}
|
|
2888
|
+
async function maybeFindUvBin(pythonPath) {
|
|
2889
|
+
const found = import_which.default.sync(uvExec, { nothrow: true });
|
|
2890
|
+
if (found)
|
|
2891
|
+
return found;
|
|
2892
|
+
try {
|
|
2893
|
+
const globalScriptsDir = await getGlobalScriptsDir(pythonPath);
|
|
2894
|
+
if (globalScriptsDir) {
|
|
2895
|
+
const uvPath = (0, import_path.join)(globalScriptsDir, uvExec);
|
|
2896
|
+
if (import_fs.default.existsSync(uvPath))
|
|
2897
|
+
return uvPath;
|
|
2898
|
+
}
|
|
2899
|
+
} catch (err) {
|
|
2900
|
+
(0, import_build_utils.debug)(
|
|
2901
|
+
"Failed to resolve uv from interpreter's global scripts directory",
|
|
2902
|
+
err
|
|
2903
|
+
);
|
|
2904
|
+
}
|
|
2905
|
+
try {
|
|
2906
|
+
const userScriptsDir = await getUserScriptsDir(pythonPath);
|
|
2907
|
+
if (userScriptsDir) {
|
|
2908
|
+
const uvPath = (0, import_path.join)(userScriptsDir, uvExec);
|
|
2909
|
+
if (import_fs.default.existsSync(uvPath))
|
|
2910
|
+
return uvPath;
|
|
2911
|
+
}
|
|
2912
|
+
} catch (err) {
|
|
2913
|
+
(0, import_build_utils.debug)(
|
|
2914
|
+
"Failed to resolve uv from interpreter's user scripts directory",
|
|
2915
|
+
err
|
|
2916
|
+
);
|
|
2917
|
+
}
|
|
2918
|
+
try {
|
|
2919
|
+
const candidates = [];
|
|
2920
|
+
if (!isWin) {
|
|
2921
|
+
candidates.push((0, import_path.join)(import_os.default.homedir(), ".local", "bin", "uv"));
|
|
2922
|
+
candidates.push("/usr/local/bin/uv");
|
|
2923
|
+
candidates.push("/opt/homebrew/bin/uv");
|
|
2924
|
+
} else {
|
|
2925
|
+
candidates.push("C:\\Users\\Public\\uv\\uv.exe");
|
|
2926
|
+
}
|
|
2927
|
+
for (const p of candidates) {
|
|
2928
|
+
if (import_fs.default.existsSync(p))
|
|
2929
|
+
return p;
|
|
2930
|
+
}
|
|
2931
|
+
} catch (err) {
|
|
2932
|
+
(0, import_build_utils.debug)("Failed to resolve uv fallback paths", err);
|
|
2933
|
+
}
|
|
2934
|
+
return null;
|
|
2935
|
+
}
|
|
2936
|
+
async function getUvBinaryOrInstall(pythonPath) {
|
|
2937
|
+
const uvBin = await maybeFindUvBin(pythonPath);
|
|
2938
|
+
if (uvBin) {
|
|
2939
|
+
console.log(`Using uv at "${uvBin}"`);
|
|
2940
|
+
return uvBin;
|
|
2941
|
+
}
|
|
2942
|
+
try {
|
|
2943
|
+
console.log("Installing uv...");
|
|
2944
|
+
await (0, import_execa.default)(
|
|
2945
|
+
pythonPath,
|
|
2946
|
+
[
|
|
2947
|
+
"-m",
|
|
2948
|
+
"pip",
|
|
2949
|
+
"install",
|
|
2950
|
+
"--disable-pip-version-check",
|
|
2951
|
+
"--no-cache-dir",
|
|
2952
|
+
"--user",
|
|
2953
|
+
"uv==0.8.18"
|
|
2954
|
+
],
|
|
2955
|
+
{ env: { ...process.env, PIP_USER: "1" } }
|
|
2956
|
+
);
|
|
2957
|
+
} catch (err) {
|
|
2958
|
+
throw new Error(
|
|
2959
|
+
`Failed to install uv via pip: ${err instanceof Error ? err.message : String(err)}`
|
|
2960
|
+
);
|
|
2961
|
+
}
|
|
2962
|
+
const resolvedUvBin = await maybeFindUvBin(pythonPath);
|
|
2963
|
+
if (!resolvedUvBin) {
|
|
2964
|
+
throw new Error("Unable to resolve uv binary after pip install");
|
|
2965
|
+
}
|
|
2966
|
+
console.log(`Installed uv at "${resolvedUvBin}"`);
|
|
2967
|
+
return resolvedUvBin;
|
|
2968
|
+
}
|
|
2831
2969
|
async function installRequirement({
|
|
2832
2970
|
pythonPath,
|
|
2833
2971
|
pipPath,
|
|
@@ -2844,7 +2982,7 @@ async function installRequirement({
|
|
|
2844
2982
|
return;
|
|
2845
2983
|
}
|
|
2846
2984
|
const exact = `${dependency}==${version2}`;
|
|
2847
|
-
await pipInstall(pipPath, workPath, [exact, ...args]);
|
|
2985
|
+
await pipInstall(pipPath, pythonPath, workPath, [exact, ...args]);
|
|
2848
2986
|
}
|
|
2849
2987
|
async function installRequirementsFile({
|
|
2850
2988
|
pythonPath,
|
|
@@ -2858,12 +2996,17 @@ async function installRequirementsFile({
|
|
|
2858
2996
|
(0, import_build_utils.debug)(`Skipping requirements file installation, already installed`);
|
|
2859
2997
|
return;
|
|
2860
2998
|
}
|
|
2861
|
-
await pipInstall(pipPath, workPath, [
|
|
2999
|
+
await pipInstall(pipPath, pythonPath, workPath, [
|
|
3000
|
+
"--upgrade",
|
|
3001
|
+
"-r",
|
|
3002
|
+
filePath,
|
|
3003
|
+
...args
|
|
3004
|
+
]);
|
|
2862
3005
|
}
|
|
2863
3006
|
|
|
2864
3007
|
// src/version.ts
|
|
2865
3008
|
var import_build_utils2 = require("@vercel/build-utils");
|
|
2866
|
-
var
|
|
3009
|
+
var import_which2 = __toESM(require_lib());
|
|
2867
3010
|
var allOptions = [
|
|
2868
3011
|
{
|
|
2869
3012
|
version: "3.12",
|
|
@@ -2961,12 +3104,12 @@ function isDiscontinued({ discontinueDate }) {
|
|
|
2961
3104
|
return discontinueDate !== void 0 && discontinueDate.getTime() <= today;
|
|
2962
3105
|
}
|
|
2963
3106
|
function isInstalled2({ pipPath, pythonPath }) {
|
|
2964
|
-
return Boolean(
|
|
3107
|
+
return Boolean(import_which2.default.sync(pipPath, { nothrow: true })) && Boolean(import_which2.default.sync(pythonPath, { nothrow: true }));
|
|
2965
3108
|
}
|
|
2966
3109
|
|
|
2967
3110
|
// src/index.ts
|
|
2968
|
-
var readFile = (0, import_util.promisify)(
|
|
2969
|
-
var writeFile = (0, import_util.promisify)(
|
|
3111
|
+
var readFile = (0, import_util.promisify)(import_fs2.default.readFile);
|
|
3112
|
+
var writeFile = (0, import_util.promisify)(import_fs2.default.writeFile);
|
|
2970
3113
|
var fastapiEntrypointFilenames = ["app", "index", "server", "main"];
|
|
2971
3114
|
var fastapiEntrypointDirs = ["", "src", "app"];
|
|
2972
3115
|
var fastapiContentRegex = /(from\s+fastapi\s+import\s+FastAPI|import\s+fastapi|FastAPI\s*\()/;
|
|
@@ -2978,7 +3121,7 @@ function isFastapiEntrypoint(file) {
|
|
|
2978
3121
|
const fsPath = file.fsPath;
|
|
2979
3122
|
if (!fsPath)
|
|
2980
3123
|
return false;
|
|
2981
|
-
const contents =
|
|
3124
|
+
const contents = import_fs2.default.readFileSync(fsPath, "utf8");
|
|
2982
3125
|
return fastapiContentRegex.test(contents);
|
|
2983
3126
|
} catch {
|
|
2984
3127
|
return false;
|
|
@@ -2992,7 +3135,7 @@ async function pipenvConvert(cmd, srcDir, env) {
|
|
|
2992
3135
|
env
|
|
2993
3136
|
});
|
|
2994
3137
|
(0, import_build_utils3.debug)("Contents of requirements.txt is: " + out);
|
|
2995
|
-
|
|
3138
|
+
import_fs2.default.writeFileSync((0, import_path2.join)(srcDir, "requirements.txt"), out);
|
|
2996
3139
|
} catch (err) {
|
|
2997
3140
|
console.log('Failed to run "pipfile2req"');
|
|
2998
3141
|
throw err;
|
|
@@ -3131,7 +3274,7 @@ var build = async ({
|
|
|
3131
3274
|
entryDirectory
|
|
3132
3275
|
);
|
|
3133
3276
|
try {
|
|
3134
|
-
await
|
|
3277
|
+
await import_fs2.default.promises.mkdir(vendorBaseDir, { recursive: true });
|
|
3135
3278
|
} catch (err) {
|
|
3136
3279
|
console.log("Failed to create vendor cache directory");
|
|
3137
3280
|
throw err;
|
|
@@ -3196,7 +3339,7 @@ var build = async ({
|
|
|
3196
3339
|
const files = await (0, import_build_utils3.glob)("**", globOptions);
|
|
3197
3340
|
try {
|
|
3198
3341
|
const cachedVendorAbs = (0, import_path2.join)(vendorBaseDir, resolveVendorDir());
|
|
3199
|
-
if (
|
|
3342
|
+
if (import_fs2.default.existsSync(cachedVendorAbs)) {
|
|
3200
3343
|
const vendorFiles = await (0, import_build_utils3.glob)("**", cachedVendorAbs, resolveVendorDir());
|
|
3201
3344
|
for (const [p, f] of Object.entries(vendorFiles)) {
|
|
3202
3345
|
files[p] = f;
|
vercel_cli/vendor/package.json
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"dependencies": {
|
|
7
7
|
"@vercel/build-utils": "12.1.0",
|
|
8
8
|
"@vercel/detect-agent": "0.2.0",
|
|
9
|
-
"@vercel/python": "5.0.
|
|
9
|
+
"@vercel/python": "5.0.5"
|
|
10
10
|
},
|
|
11
11
|
"description": "The command-line interface for Vercel",
|
|
12
12
|
"engines": {
|
|
@@ -37,5 +37,5 @@
|
|
|
37
37
|
"vitest-run": "vitest --config ./vitest.config.mts",
|
|
38
38
|
"vitest-unit": "jest test/unit/ --listTests"
|
|
39
39
|
},
|
|
40
|
-
"version": "48.0
|
|
40
|
+
"version": "48.1.0"
|
|
41
41
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: vercel-cli
|
|
3
|
-
Version: 48.0
|
|
3
|
+
Version: 48.1.0
|
|
4
4
|
Summary: Vercel CLI packaged for Python (bundled Node.js, vendored npm)
|
|
5
5
|
Project-URL: Homepage, https://github.com/nuage-studio/vercel-cli-python
|
|
6
6
|
Project-URL: Repository, https://github.com/nuage-studio/vercel-cli-python
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
vercel_cli/vendor/LICENSE,sha256=sHDXe_ssUqHdaZbeDOX2TEmgylXIibFjqWPd9csAHuI,11343
|
|
2
2
|
vercel_cli/vendor/README.md,sha256=2ZrJzd7x21xlpsOZ9QKG6478zbXb8-3YN8cPyzPxZNk,1799
|
|
3
|
-
vercel_cli/vendor/package.json,sha256=
|
|
3
|
+
vercel_cli/vendor/package.json,sha256=wC-RvBsVUAj17QxM7PyUDmYYGHn5pkNNrDkiaYMxtS0,1261
|
|
4
4
|
vercel_cli/vendor/dist/VERCEL_DIR_README.txt,sha256=9dHtD1AyrhKJMfRkWbX6oa9jGfwt-z56X-VKhL-T29Y,520
|
|
5
5
|
vercel_cli/vendor/dist/builder-worker.js,sha256=RgutTXJcurRisV2NtlruuPDtCBOi8eHSGCo3n4GcCIM,1969
|
|
6
6
|
vercel_cli/vendor/dist/get-latest-worker.js,sha256=w7nK8nQtlYad_SKuFQGw_sg7_bb-p0uHOf1MYiwrUNs,7964
|
|
7
|
-
vercel_cli/vendor/dist/index.js,sha256=
|
|
7
|
+
vercel_cli/vendor/dist/index.js,sha256=sY3m5QSYPSoIDjDjBZ9zGMKRNY2FthNxJ_EM-VpfKlo,8878532
|
|
8
8
|
vercel_cli/vendor/dist/vc.js,sha256=AAC4u6uwjpO0KfFVuLRs5YWXjW4aMCkgSj_45hR3W8k,340
|
|
9
|
-
vercel_cli/vendor/node_modules/.package-lock.json,sha256=
|
|
9
|
+
vercel_cli/vendor/node_modules/.package-lock.json,sha256=5XNKOzqaT9tL-wdzGEGIdOn7XUT5DGeoR5g51ApGn1I,1002
|
|
10
10
|
vercel_cli/vendor/node_modules/@vercel/build-utils/CHANGELOG.md,sha256=ji-V7NgIUH1Fj-lmUh0LmIxhS6bq_0TW7xFH0e9yiF8,18051
|
|
11
11
|
vercel_cli/vendor/node_modules/@vercel/build-utils/LICENSE,sha256=sHDXe_ssUqHdaZbeDOX2TEmgylXIibFjqWPd9csAHuI,11343
|
|
12
12
|
vercel_cli/vendor/node_modules/@vercel/build-utils/build.mjs,sha256=UCAJgPaur_bxtLTnQxSkBwoq246SSCBvI-0w_PvbAVU,132
|
|
@@ -94,10 +94,10 @@ vercel_cli/vendor/node_modules/@vercel/detect-agent/package.json,sha256=Mt64aqQb
|
|
|
94
94
|
vercel_cli/vendor/node_modules/@vercel/detect-agent/dist/index.d.ts,sha256=vmuS3wT5-mth54kB1N8ue-58SV_K6vMlaaZr3YPY30k,67
|
|
95
95
|
vercel_cli/vendor/node_modules/@vercel/detect-agent/dist/index.js,sha256=WfZXin2E4GP1hNp0-jz3-XhHgFrbyp-wmGo-Mw0q3js,1973
|
|
96
96
|
vercel_cli/vendor/node_modules/@vercel/python/LICENSE,sha256=sHDXe_ssUqHdaZbeDOX2TEmgylXIibFjqWPd9csAHuI,11343
|
|
97
|
-
vercel_cli/vendor/node_modules/@vercel/python/package.json,sha256=
|
|
97
|
+
vercel_cli/vendor/node_modules/@vercel/python/package.json,sha256=rLcVtrCKoYOp00gwMR7LmyfI_H-8M01PnBZsGICTLfs,1044
|
|
98
98
|
vercel_cli/vendor/node_modules/@vercel/python/vc_init.py,sha256=A7949hQi18B9yqPkTr1bepToi7nKRh_yRP7GwmsI-Ww,28201
|
|
99
|
-
vercel_cli/vendor/node_modules/@vercel/python/dist/index.js,sha256=
|
|
100
|
-
vercel_cli-48.0.
|
|
101
|
-
vercel_cli-48.0.
|
|
102
|
-
vercel_cli-48.0.
|
|
103
|
-
vercel_cli-48.0.
|
|
99
|
+
vercel_cli/vendor/node_modules/@vercel/python/dist/index.js,sha256=8ta98iZTEyUQPkd-t7hzMQ4PAaL9OfRMuo6yde25Ld4,111220
|
|
100
|
+
vercel_cli-48.1.0.dist-info/METADATA,sha256=NiviAIUvlZVJ3iFt9xf3ol49bBUsxI4LV4woDDqHi28,7085
|
|
101
|
+
vercel_cli-48.1.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
102
|
+
vercel_cli-48.1.0.dist-info/entry_points.txt,sha256=3iHkg20gi2BZorK1g5UlyZY3tN5E1vJX6PX5-ibn9fI,83
|
|
103
|
+
vercel_cli-48.1.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|