pyfig 0.2.0 → 0.3.0
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.
- package/README.md +144 -22
- package/SECURITY.md +5 -3
- package/dist/cjs/index.js +1504 -0
- package/dist/cjs/index.js.map +21 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/sync-resolver.js +1242 -0
- package/dist/cjs/sync-resolver.js.map +18 -0
- package/dist/cli.js +17 -6
- package/dist/cli.js.map +1 -1
- package/dist/client.d.ts +20 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +23 -0
- package/dist/client.js.map +1 -0
- package/dist/config.d.ts +45 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +130 -9
- package/dist/config.js.map +1 -1
- package/dist/coordination.d.ts +25 -0
- package/dist/coordination.d.ts.map +1 -0
- package/dist/coordination.js +187 -0
- package/dist/coordination.js.map +1 -0
- package/dist/index.d.ts +9 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -4
- package/dist/index.js.map +1 -1
- package/dist/package-target.d.ts +12 -0
- package/dist/package-target.d.ts.map +1 -0
- package/dist/package-target.js +97 -0
- package/dist/package-target.js.map +1 -0
- package/dist/probes.d.ts +19 -0
- package/dist/probes.d.ts.map +1 -1
- package/dist/probes.js +115 -36
- package/dist/probes.js.map +1 -1
- package/dist/process.d.ts +2 -0
- package/dist/process.d.ts.map +1 -1
- package/dist/process.js +63 -1
- package/dist/process.js.map +1 -1
- package/dist/project-root.d.ts +3 -0
- package/dist/project-root.d.ts.map +1 -0
- package/dist/project-root.js +83 -0
- package/dist/project-root.js.map +1 -0
- package/dist/provision.d.ts +3 -1
- package/dist/provision.d.ts.map +1 -1
- package/dist/provision.js +375 -97
- package/dist/provision.js.map +1 -1
- package/dist/runners.d.ts +5 -2
- package/dist/runners.d.ts.map +1 -1
- package/dist/runners.js +94 -28
- package/dist/runners.js.map +1 -1
- package/dist/runtime-files.d.ts +3 -0
- package/dist/runtime-files.d.ts.map +1 -0
- package/dist/runtime-files.js +12 -0
- package/dist/runtime-files.js.map +1 -0
- package/dist/state.d.ts +10 -0
- package/dist/state.d.ts.map +1 -0
- package/dist/state.js +62 -0
- package/dist/state.js.map +1 -0
- package/dist/sync-resolver.js +11 -2
- package/dist/sync-resolver.js.map +1 -1
- package/dist/virtual-environment.d.ts +9 -0
- package/dist/virtual-environment.d.ts.map +1 -0
- package/dist/virtual-environment.js +42 -0
- package/dist/virtual-environment.js.map +1 -0
- package/package.json +18 -7
package/dist/provision.js
CHANGED
|
@@ -1,98 +1,250 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { createHash, randomUUID } from 'node:crypto';
|
|
2
|
+
import { createReadStream, createWriteStream } from 'node:fs';
|
|
3
|
+
import { chmod, copyFile, mkdir, mkdtemp, readdir, rename, rm, } from 'node:fs/promises';
|
|
4
|
+
import fs from 'node:fs';
|
|
2
5
|
import os from 'node:os';
|
|
3
6
|
import path from 'node:path';
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
};
|
|
7
|
+
import { Readable } from 'node:stream';
|
|
8
|
+
import { pipeline } from 'node:stream/promises';
|
|
9
|
+
import extractZip from 'extract-zip';
|
|
10
|
+
import * as tar from 'tar';
|
|
11
|
+
import { EnvHttpProxyAgent, fetch } from 'undici';
|
|
12
|
+
import { configurationFingerprint, resolveOptions, uvEnvironment, } from './config.js';
|
|
13
|
+
import { cacheLockTarget, withProvisioningLock } from './coordination.js';
|
|
14
|
+
import { findPip, findPython, findUv, probePython, probeUv, pythonSatisfiesRequirements, } from './probes.js';
|
|
15
|
+
import { runAsync } from './process.js';
|
|
16
|
+
import { memoizeAsync } from './state.js';
|
|
17
|
+
import { canonicalPath, pathsEqual, virtualEnvironmentDirectory, virtualEnvironmentPythonExecutable, } from './virtual-environment.js';
|
|
14
18
|
export async function ensurePython(options = {}) {
|
|
15
|
-
|
|
19
|
+
const resolved = resolveOptions(options);
|
|
20
|
+
return memoizeAsync('python', configurationFingerprint(resolved), resolved.cacheTtlMs, pythonIsPresent, () => ensurePythonResolved(resolved));
|
|
16
21
|
}
|
|
17
22
|
export async function ensurePip(options = {}, python) {
|
|
18
23
|
const resolved = resolveOptions(options);
|
|
19
|
-
const selectedPython = python
|
|
24
|
+
const selectedPython = python?.virtualEnvironment
|
|
25
|
+
? python
|
|
26
|
+
: await ensureVirtualEnvironmentResolved(resolved);
|
|
20
27
|
return ensurePipResolved(selectedPython, resolved);
|
|
21
28
|
}
|
|
29
|
+
export async function ensureVirtualEnvironment(options = {}) {
|
|
30
|
+
const resolved = resolveOptions(options);
|
|
31
|
+
return memoizeAsync('venv', configurationFingerprint(resolved), resolved.cacheTtlMs, (python) => pythonIsPresent(python) &&
|
|
32
|
+
Boolean(python.virtualEnvironment) &&
|
|
33
|
+
pathsEqual(python.virtualEnvironment, virtualEnvironmentDirectory(resolved.projectRoot)), () => ensureVirtualEnvironmentResolved(resolved));
|
|
34
|
+
}
|
|
35
|
+
export async function ensureUv(options = {}) {
|
|
36
|
+
const resolved = resolveOptions(options);
|
|
37
|
+
return memoizeAsync('uv', configurationFingerprint(resolved), resolved.cacheTtlMs, (uv) => fs.existsSync(uv.executable), () => ensureUvResolved(resolved));
|
|
38
|
+
}
|
|
22
39
|
export async function ensureEnvironment(options = {}) {
|
|
23
40
|
const resolved = resolveOptions(options);
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
41
|
+
return memoizeAsync('environment', configurationFingerprint(resolved), resolved.cacheTtlMs, environmentIsPresent, async () => {
|
|
42
|
+
const python = await ensureVirtualEnvironmentResolved(resolved);
|
|
43
|
+
const packageManager = await ensurePipResolved(python, resolved);
|
|
44
|
+
return { python, packageManager };
|
|
45
|
+
});
|
|
27
46
|
}
|
|
28
|
-
async function
|
|
29
|
-
const
|
|
47
|
+
async function ensureVirtualEnvironmentResolved(options) {
|
|
48
|
+
const directory = virtualEnvironmentDirectory(options.projectRoot);
|
|
49
|
+
const check = async () => {
|
|
50
|
+
const existing = await inspectVirtualEnvironment(directory, options);
|
|
51
|
+
if (!existing)
|
|
52
|
+
return null;
|
|
53
|
+
if (pythonSatisfiesRequirements(existing, options) &&
|
|
54
|
+
await virtualEnvironmentMatchesConfiguredPython(existing, options)) {
|
|
55
|
+
return existing;
|
|
56
|
+
}
|
|
57
|
+
throw incompatibleVirtualEnvironmentError(directory, existing, options);
|
|
58
|
+
};
|
|
59
|
+
const existing = await check();
|
|
30
60
|
if (existing)
|
|
31
61
|
return existing;
|
|
32
|
-
if (!options.
|
|
33
|
-
throw new Error(`No
|
|
62
|
+
if (!options.createVirtualEnvironment) {
|
|
63
|
+
throw new Error(`No virtual environment at ${directory} satisfies the Python requirements; ` +
|
|
64
|
+
'virtual-environment creation is disabled.');
|
|
34
65
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
const
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
66
|
+
// Base discovery happens before taking the venv lock, keeping the global lock
|
|
67
|
+
// order Python -> uv -> venv consistent across callers.
|
|
68
|
+
const basePython = await ensurePythonResolved(options);
|
|
69
|
+
const preferredUv = await findAvailableUv(options) ??
|
|
70
|
+
(options.installUv ? await ensureUvResolved(options) : null);
|
|
71
|
+
return withProvisioningLock({
|
|
72
|
+
key: `venv:${canonicalPath(directory)}`,
|
|
73
|
+
target: directory,
|
|
74
|
+
timeoutMs: options.coordinationTimeoutMs,
|
|
75
|
+
env: options.env,
|
|
76
|
+
check,
|
|
77
|
+
mutate: async (signal) => {
|
|
78
|
+
const entries = await readdir(directory);
|
|
79
|
+
const hasVenvConfiguration = fs.existsSync(path.join(directory, 'pyvenv.cfg'));
|
|
80
|
+
if (entries.length > 0 && !hasVenvConfiguration) {
|
|
81
|
+
throw new Error(`Refusing to replace non-virtual-environment contents at ${directory}.`);
|
|
82
|
+
}
|
|
83
|
+
await createVirtualEnvironment(directory, basePython, preferredUv, options, signal);
|
|
84
|
+
const installed = await inspectVirtualEnvironment(directory, options);
|
|
85
|
+
if (!installed || !pythonSatisfiesRequirements(installed, options)) {
|
|
86
|
+
throw new Error(`Python created ${directory}, but it does not satisfy the requested runtime capabilities.`);
|
|
87
|
+
}
|
|
88
|
+
return installed;
|
|
89
|
+
},
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
async function createVirtualEnvironment(directory, basePython, preferredUv, options, signal) {
|
|
93
|
+
if (preferredUv) {
|
|
94
|
+
try {
|
|
95
|
+
await createVirtualEnvironmentWithUv(preferredUv, directory, basePython, options, signal);
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
// A usable Python may still provide its standard-library venv module.
|
|
49
100
|
}
|
|
50
|
-
return installed;
|
|
51
101
|
}
|
|
52
|
-
|
|
53
|
-
await
|
|
102
|
+
try {
|
|
103
|
+
await runAsync(basePython.executable, ['-m', 'venv', directory], withoutActiveVirtualEnvironment(options.env), options.installTimeoutMs, signal);
|
|
104
|
+
return;
|
|
54
105
|
}
|
|
106
|
+
catch (systemVenvError) {
|
|
107
|
+
if (preferredUv || !options.installUv)
|
|
108
|
+
throw systemVenvError;
|
|
109
|
+
}
|
|
110
|
+
throw new Error('Python could not create a virtual environment and uv installation is disabled.');
|
|
55
111
|
}
|
|
56
|
-
async function
|
|
57
|
-
|
|
112
|
+
async function createVirtualEnvironmentWithUv(uv, directory, basePython, options, signal) {
|
|
113
|
+
await runAsync(uv.executable, [
|
|
114
|
+
'venv',
|
|
115
|
+
'--no-project',
|
|
116
|
+
'--no-config',
|
|
117
|
+
'--no-python-downloads',
|
|
118
|
+
'--allow-existing',
|
|
119
|
+
'--python',
|
|
120
|
+
basePython.executable,
|
|
121
|
+
directory,
|
|
122
|
+
], uvEnvironment(options), options.installTimeoutMs, signal);
|
|
123
|
+
}
|
|
124
|
+
async function inspectVirtualEnvironment(directory, options) {
|
|
125
|
+
const executable = virtualEnvironmentPythonExecutable(directory);
|
|
126
|
+
const info = await probePython({ executable, args: [] }, options);
|
|
127
|
+
return info?.virtualEnvironment && pathsEqual(info.virtualEnvironment, directory) ? info : null;
|
|
128
|
+
}
|
|
129
|
+
async function ensurePythonResolved(options) {
|
|
130
|
+
const existing = await discoverPython(options);
|
|
58
131
|
if (existing)
|
|
59
132
|
return existing;
|
|
133
|
+
if (!options.installPython) {
|
|
134
|
+
const capability = options.requireEmbedding
|
|
135
|
+
? ' with compatible CPython development headers, architecture, and a linkable library'
|
|
136
|
+
: '';
|
|
137
|
+
throw new Error(`No Python interpreter satisfies ${options.pythonRange}${capability}; ` +
|
|
138
|
+
'managed Python installation is disabled.');
|
|
139
|
+
}
|
|
140
|
+
const lockTarget = cacheLockTarget(options.cacheDir, 'python');
|
|
141
|
+
return withProvisioningLock({
|
|
142
|
+
key: `python:${canonicalPath(lockTarget)}`,
|
|
143
|
+
target: lockTarget,
|
|
144
|
+
timeoutMs: options.coordinationTimeoutMs,
|
|
145
|
+
env: options.env,
|
|
146
|
+
check: () => discoverPython(options),
|
|
147
|
+
mutate: async (signal) => {
|
|
148
|
+
const uv = await ensureUvResolved(options);
|
|
149
|
+
const uvEnv = uvEnvironment(options);
|
|
150
|
+
await runAsync(uv.executable, ['python', 'install', '--no-config', options.managedPython], uvEnv, options.installTimeoutMs, signal);
|
|
151
|
+
const installed = await findPythonWithUv(uv, options, signal);
|
|
152
|
+
if (!installed) {
|
|
153
|
+
throw new Error(`uv installed Python ${options.managedPython}, but it does not satisfy the requested ` +
|
|
154
|
+
'runtime capabilities.');
|
|
155
|
+
}
|
|
156
|
+
return installed;
|
|
157
|
+
},
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
async function discoverPython(options) {
|
|
161
|
+
if (options.python) {
|
|
162
|
+
const configured = await probePython({ executable: options.python, args: [] }, options);
|
|
163
|
+
if (configured && pythonSatisfiesRequirements(configured, options))
|
|
164
|
+
return configured;
|
|
165
|
+
throw new Error(`Configured Python ${options.python} is unavailable or does not satisfy ${options.pythonRange}.`);
|
|
166
|
+
}
|
|
167
|
+
const existingUv = await findAvailableUv(options);
|
|
168
|
+
if (existingUv) {
|
|
169
|
+
const uvPython = await findPythonWithUv(existingUv, options);
|
|
170
|
+
if (uvPython)
|
|
171
|
+
return uvPython;
|
|
172
|
+
}
|
|
173
|
+
return findPython({ ...options, python: '' });
|
|
174
|
+
}
|
|
175
|
+
async function findPythonWithUv(uv, options, signal) {
|
|
176
|
+
const requests = [undefined, options.managedPython];
|
|
177
|
+
for (const requestedPython of requests) {
|
|
178
|
+
const args = [
|
|
179
|
+
'python',
|
|
180
|
+
'find',
|
|
181
|
+
'--no-project',
|
|
182
|
+
'--no-config',
|
|
183
|
+
'--managed-python',
|
|
184
|
+
'--no-python-downloads',
|
|
185
|
+
];
|
|
186
|
+
if (requestedPython)
|
|
187
|
+
args.push(requestedPython);
|
|
188
|
+
try {
|
|
189
|
+
const { stdout } = await runAsync(uv.executable, args, uvEnvironment(options), options.probeTimeoutMs, signal);
|
|
190
|
+
const info = await probePython({ executable: stdout.trim(), args: [] }, options);
|
|
191
|
+
if (info && pythonSatisfiesRequirements(info, options))
|
|
192
|
+
return info;
|
|
193
|
+
}
|
|
194
|
+
catch (error) {
|
|
195
|
+
if (signal?.aborted)
|
|
196
|
+
throw signal.reason ?? error;
|
|
197
|
+
// Continue through the configured request and then normal system discovery.
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
return null;
|
|
201
|
+
}
|
|
202
|
+
async function ensurePipResolved(python, options) {
|
|
60
203
|
const existingUv = await findAvailableUv(options);
|
|
61
204
|
if (existingUv)
|
|
62
205
|
return uvPackageManager(existingUv, python);
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
206
|
+
// Default package operations always use uv, which supplies its own robust
|
|
207
|
+
// target-venv lock. python -m pip remains a read-only fallback for check-only setups.
|
|
208
|
+
if (options.installUv)
|
|
209
|
+
return uvPackageManager(await ensureUvResolved(options), python);
|
|
210
|
+
const existingPip = await findPip(python, options);
|
|
211
|
+
if (existingPip)
|
|
212
|
+
return existingPip;
|
|
213
|
+
throw new Error(`The virtual environment's python -m pip does not satisfy ${options.pipRange}; ` +
|
|
214
|
+
'uv installation is disabled.');
|
|
68
215
|
}
|
|
69
|
-
async function
|
|
216
|
+
async function ensureUvResolved(options) {
|
|
70
217
|
const existing = await findAvailableUv(options);
|
|
71
218
|
if (existing)
|
|
72
219
|
return existing;
|
|
73
|
-
if (!options.
|
|
74
|
-
throw new Error(
|
|
220
|
+
if (!options.installUv) {
|
|
221
|
+
throw new Error(`Compatible uv is unavailable (required ${options.uvRange}), and uv installation is disabled.`);
|
|
222
|
+
}
|
|
75
223
|
const installDir = uvInstallDirectory(options);
|
|
76
224
|
const executable = uvExecutable(options);
|
|
77
|
-
const lockTarget =
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
}
|
|
225
|
+
const lockTarget = cacheLockTarget(options.cacheDir, 'uv');
|
|
226
|
+
return withProvisioningLock({
|
|
227
|
+
key: `uv:${canonicalPath(lockTarget)}`,
|
|
228
|
+
target: lockTarget,
|
|
229
|
+
timeoutMs: options.coordinationTimeoutMs,
|
|
230
|
+
env: options.env,
|
|
231
|
+
check: () => findAvailableUv(options),
|
|
232
|
+
mutate: async (signal) => {
|
|
233
|
+
await installUv(installDir, options, signal);
|
|
234
|
+
const result = probeUv(executable, options);
|
|
235
|
+
if (!result || result.version !== options.uvVersion) {
|
|
236
|
+
throw new Error(`Expected managed uv ${options.uvVersion}, but the installed executable did not match.`);
|
|
237
|
+
}
|
|
238
|
+
return result;
|
|
239
|
+
},
|
|
240
|
+
});
|
|
93
241
|
}
|
|
94
242
|
async function findAvailableUv(options) {
|
|
95
|
-
|
|
243
|
+
const system = await findUv(options);
|
|
244
|
+
if (system)
|
|
245
|
+
return system;
|
|
246
|
+
const managed = probeUv(uvExecutable(options), options);
|
|
247
|
+
return managed?.version === options.uvVersion ? managed : null;
|
|
96
248
|
}
|
|
97
249
|
function uvInstallDirectory(options) {
|
|
98
250
|
return path.join(options.cacheDir, 'tools', 'uv', options.uvVersion);
|
|
@@ -101,56 +253,182 @@ function uvExecutable(options) {
|
|
|
101
253
|
return path.join(uvInstallDirectory(options), process.platform === 'win32' ? 'uv.exe' : 'uv');
|
|
102
254
|
}
|
|
103
255
|
function uvPackageManager(uv, python) {
|
|
256
|
+
if (!python.virtualEnvironment) {
|
|
257
|
+
throw new Error('uv pip commands require a virtual-environment Python interpreter.');
|
|
258
|
+
}
|
|
104
259
|
return {
|
|
105
260
|
kind: 'uv',
|
|
106
261
|
executable: uv.executable,
|
|
107
262
|
prefixArgs: ['pip'],
|
|
108
263
|
version: uv.version,
|
|
109
264
|
pythonExecutable: python.executable,
|
|
265
|
+
virtualEnvironment: python.virtualEnvironment,
|
|
110
266
|
};
|
|
111
267
|
}
|
|
112
|
-
|
|
113
|
-
const
|
|
114
|
-
const
|
|
268
|
+
function withoutActiveVirtualEnvironment(env) {
|
|
269
|
+
const result = { ...env };
|
|
270
|
+
for (const key of Object.keys(result)) {
|
|
271
|
+
const normalized = key.toUpperCase();
|
|
272
|
+
if (normalized === 'CONDA_PREFIX' || normalized === 'VIRTUAL_ENV' ||
|
|
273
|
+
normalized === 'PYTHONHOME') {
|
|
274
|
+
delete result[key];
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
return result;
|
|
278
|
+
}
|
|
279
|
+
async function installUv(installDir, options, signal) {
|
|
280
|
+
const asset = uvAsset();
|
|
281
|
+
const baseUrl = `https://github.com/astral-sh/uv/releases/download/${options.uvVersion}`;
|
|
115
282
|
const temporary = await mkdtemp(path.join(os.tmpdir(), 'pyfig-uv-'));
|
|
283
|
+
const dispatcher = proxyDispatcher(options.env);
|
|
116
284
|
try {
|
|
117
|
-
const
|
|
118
|
-
await download(
|
|
119
|
-
await
|
|
120
|
-
const
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
UV_NO_MODIFY_PATH: '1',
|
|
124
|
-
};
|
|
125
|
-
if (process.platform === 'win32') {
|
|
126
|
-
const powershell = await resolveExecutable('powershell.exe', env) ??
|
|
127
|
-
await resolveExecutable('pwsh', env);
|
|
128
|
-
if (!powershell)
|
|
129
|
-
throw new Error('The uv Windows installer requires PowerShell or pwsh.');
|
|
130
|
-
run(powershell, ['-NoLogo', '-NoProfile', '-NonInteractive', '-ExecutionPolicy', 'Bypass', '-File', installer], env, options.installTimeoutMs);
|
|
131
|
-
}
|
|
132
|
-
else {
|
|
133
|
-
const shell = await resolveExecutable('sh', env);
|
|
134
|
-
if (!shell)
|
|
135
|
-
throw new Error('The uv installer requires a POSIX sh executable.');
|
|
136
|
-
run(shell, [installer], env, options.installTimeoutMs);
|
|
285
|
+
const archive = path.join(temporary, asset);
|
|
286
|
+
await download(`${baseUrl}/${asset}`, archive, options.downloadTimeoutMs, signal, dispatcher);
|
|
287
|
+
const expected = (await downloadText(`${baseUrl}/${asset}.sha256`, options.downloadTimeoutMs, signal, dispatcher)).trim().split(/\s+/u)[0];
|
|
288
|
+
const actual = await sha256File(archive);
|
|
289
|
+
if (!expected || expected.toLowerCase() !== actual.toLowerCase()) {
|
|
290
|
+
throw new Error(`uv archive checksum mismatch for ${asset}`);
|
|
137
291
|
}
|
|
292
|
+
const extracted = path.join(temporary, 'extracted');
|
|
293
|
+
await mkdir(extracted, { recursive: true });
|
|
294
|
+
signal.throwIfAborted();
|
|
295
|
+
if (asset.endsWith('.zip'))
|
|
296
|
+
await extractZip(archive, { dir: extracted });
|
|
297
|
+
else
|
|
298
|
+
await tar.x({ file: archive, cwd: extracted, strict: true });
|
|
299
|
+
signal.throwIfAborted();
|
|
300
|
+
const source = await findFile(extracted, process.platform === 'win32' ? 'uv.exe' : 'uv');
|
|
301
|
+
if (!source)
|
|
302
|
+
throw new Error(`uv archive did not contain the expected executable: ${asset}`);
|
|
303
|
+
await publishUvAtomically(source, installDir, options);
|
|
138
304
|
}
|
|
139
305
|
finally {
|
|
306
|
+
await dispatcher?.close();
|
|
140
307
|
await rm(temporary, { recursive: true, force: true });
|
|
141
308
|
}
|
|
142
309
|
}
|
|
143
|
-
async function
|
|
144
|
-
|
|
145
|
-
|
|
310
|
+
async function publishUvAtomically(source, installDir, options) {
|
|
311
|
+
await mkdir(installDir, { recursive: true });
|
|
312
|
+
const executable = uvExecutable(options);
|
|
313
|
+
const staged = path.join(installDir, `.${path.basename(executable)}.${process.pid}.${randomUUID()}.tmp`);
|
|
314
|
+
try {
|
|
315
|
+
await copyFile(source, staged);
|
|
316
|
+
if (process.platform !== 'win32')
|
|
317
|
+
await chmod(staged, 0o755);
|
|
318
|
+
const stagedUv = probeUv(staged, options);
|
|
319
|
+
if (!stagedUv || stagedUv.version !== options.uvVersion) {
|
|
320
|
+
throw new Error(`Downloaded uv executable is not version ${options.uvVersion}.`);
|
|
321
|
+
}
|
|
322
|
+
if (process.platform === 'win32')
|
|
323
|
+
await rm(executable, { force: true });
|
|
324
|
+
await rename(staged, executable);
|
|
325
|
+
}
|
|
326
|
+
finally {
|
|
327
|
+
await rm(staged, { force: true });
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
function uvAsset() {
|
|
331
|
+
const architecture = process.arch === 'x64'
|
|
332
|
+
? 'x86_64'
|
|
333
|
+
: process.arch === 'arm64'
|
|
334
|
+
? 'aarch64'
|
|
335
|
+
: null;
|
|
336
|
+
if (!architecture)
|
|
337
|
+
throw new Error(`uv bootstrap does not support architecture ${process.arch}.`);
|
|
338
|
+
if (process.platform === 'win32')
|
|
339
|
+
return `uv-${architecture}-pc-windows-msvc.zip`;
|
|
340
|
+
if (process.platform === 'darwin')
|
|
341
|
+
return `uv-${architecture}-apple-darwin.tar.gz`;
|
|
342
|
+
// Astral's musl artifacts are fully static and run on both musl and glibc Linux.
|
|
343
|
+
if (process.platform === 'linux')
|
|
344
|
+
return `uv-${architecture}-unknown-linux-musl.tar.gz`;
|
|
345
|
+
throw new Error(`uv bootstrap does not support platform ${process.platform}.`);
|
|
346
|
+
}
|
|
347
|
+
async function download(url, destination, timeoutMs, externalSignal, dispatcher) {
|
|
348
|
+
const response = await fetch(url, {
|
|
349
|
+
dispatcher,
|
|
350
|
+
redirect: 'follow',
|
|
351
|
+
signal: combinedSignal(timeoutMs, externalSignal),
|
|
352
|
+
});
|
|
353
|
+
if (!response.ok || !response.body) {
|
|
354
|
+
await response.body?.cancel();
|
|
355
|
+
throw new Error(`Could not download ${url}: HTTP ${response.status}`);
|
|
356
|
+
}
|
|
357
|
+
await pipeline(Readable.fromWeb(response.body), createWriteStream(destination, { flags: 'wx' }));
|
|
358
|
+
}
|
|
359
|
+
async function downloadText(url, timeoutMs, externalSignal, dispatcher) {
|
|
360
|
+
const response = await fetch(url, {
|
|
361
|
+
dispatcher,
|
|
362
|
+
redirect: 'follow',
|
|
363
|
+
signal: combinedSignal(timeoutMs, externalSignal),
|
|
364
|
+
});
|
|
365
|
+
if (!response.ok) {
|
|
366
|
+
await response.body?.cancel();
|
|
146
367
|
throw new Error(`Could not download ${url}: HTTP ${response.status}`);
|
|
147
|
-
|
|
368
|
+
}
|
|
369
|
+
return response.text();
|
|
148
370
|
}
|
|
149
|
-
function
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
371
|
+
function proxyDispatcher(env) {
|
|
372
|
+
const httpProxy = environmentValue(env, 'http_proxy', 'HTTP_PROXY');
|
|
373
|
+
const httpsProxy = environmentValue(env, 'https_proxy', 'HTTPS_PROXY');
|
|
374
|
+
if (!httpProxy && !httpsProxy)
|
|
375
|
+
return undefined;
|
|
376
|
+
return new EnvHttpProxyAgent({
|
|
377
|
+
httpProxy,
|
|
378
|
+
httpsProxy,
|
|
379
|
+
noProxy: environmentValue(env, 'no_proxy', 'NO_PROXY'),
|
|
380
|
+
});
|
|
381
|
+
}
|
|
382
|
+
function environmentValue(env, lowercase, uppercase) {
|
|
383
|
+
return env[lowercase] ?? env[uppercase];
|
|
384
|
+
}
|
|
385
|
+
function combinedSignal(timeoutMs, externalSignal) {
|
|
386
|
+
return AbortSignal.any([externalSignal, AbortSignal.timeout(timeoutMs)]);
|
|
387
|
+
}
|
|
388
|
+
async function sha256File(file) {
|
|
389
|
+
const hash = createHash('sha256');
|
|
390
|
+
for await (const chunk of createReadStream(file))
|
|
391
|
+
hash.update(chunk);
|
|
392
|
+
return hash.digest('hex');
|
|
393
|
+
}
|
|
394
|
+
async function findFile(directory, name) {
|
|
395
|
+
for (const entry of await readdir(directory, { withFileTypes: true })) {
|
|
396
|
+
const target = path.join(directory, entry.name);
|
|
397
|
+
if (entry.isFile() && entry.name === name)
|
|
398
|
+
return target;
|
|
399
|
+
if (entry.isDirectory()) {
|
|
400
|
+
const nested = await findFile(target, name);
|
|
401
|
+
if (nested)
|
|
402
|
+
return nested;
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
return null;
|
|
406
|
+
}
|
|
407
|
+
function incompatibleVirtualEnvironmentError(directory, python, options) {
|
|
408
|
+
const capabilities = options.requireEmbedding
|
|
409
|
+
? ' or lacks compatible CPython embedding headers, library, or architecture'
|
|
410
|
+
: '';
|
|
411
|
+
return new Error(`The existing virtual environment at ${directory} uses Python ${python.version}, ` +
|
|
412
|
+
`which does not satisfy ${options.pythonRange}${capabilities}.`);
|
|
413
|
+
}
|
|
414
|
+
async function virtualEnvironmentMatchesConfiguredPython(virtualEnvironment, options) {
|
|
415
|
+
if (!options.python)
|
|
416
|
+
return true;
|
|
417
|
+
const configured = await probePython({ executable: options.python, args: [] }, options);
|
|
418
|
+
if (!configured || !pythonSatisfiesRequirements(configured, options))
|
|
419
|
+
return false;
|
|
420
|
+
if (configured.virtualEnvironment && pathsEqual(configured.executable, virtualEnvironment.executable)) {
|
|
421
|
+
return true;
|
|
422
|
+
}
|
|
423
|
+
const configuredBase = configured.virtualEnvironment
|
|
424
|
+
? configured.baseExecutable
|
|
425
|
+
: configured.executable;
|
|
426
|
+
return pathsEqual(configuredBase, virtualEnvironment.baseExecutable);
|
|
427
|
+
}
|
|
428
|
+
function pythonIsPresent(python) {
|
|
429
|
+
return fs.existsSync(python.executable);
|
|
430
|
+
}
|
|
431
|
+
function environmentIsPresent(environment) {
|
|
432
|
+
return pythonIsPresent(environment.python) && fs.existsSync(environment.packageManager.executable);
|
|
155
433
|
}
|
|
156
434
|
//# sourceMappingURL=provision.js.map
|
package/dist/provision.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provision.js","sourceRoot":"","sources":["../src/provision.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"provision.js","sourceRoot":"","sources":["../src/provision.ts"],"names":[],"mappings":"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"}
|
package/dist/runners.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { spawnSync, type ChildProcess, type SpawnOptions, type SpawnSyncOptions } from 'node:child_process';
|
|
2
|
-
import { type PyfigOptions } from './config.js';
|
|
3
|
-
import type { PackageManagerInfo, PythonInfo } from './probes.js';
|
|
2
|
+
import { type PyfigOptions, type ResolvedPyfigOptions } from './config.js';
|
|
3
|
+
import type { PackageManagerInfo, PythonInfo, UvInfo } from './probes.js';
|
|
4
4
|
export interface ResolvedCommand {
|
|
5
5
|
executable: string;
|
|
6
6
|
args: string[];
|
|
@@ -10,6 +10,9 @@ export declare function pythonSpawn(args?: readonly string[], spawnOptions?: Spa
|
|
|
10
10
|
export declare function pythonSpawnSync(args?: readonly string[], spawnOptions?: SpawnSyncOptions, pyfigOptions?: PyfigOptions): ReturnType<typeof spawnSync>;
|
|
11
11
|
export declare function pipSpawn(args?: readonly string[], spawnOptions?: SpawnOptions, pyfigOptions?: PyfigOptions): Promise<ChildProcess>;
|
|
12
12
|
export declare function pipSpawnSync(args?: readonly string[], spawnOptions?: SpawnSyncOptions, pyfigOptions?: PyfigOptions): ReturnType<typeof spawnSync>;
|
|
13
|
+
export declare function uvSpawn(args?: readonly string[], spawnOptions?: SpawnOptions, pyfigOptions?: PyfigOptions): Promise<ChildProcess>;
|
|
14
|
+
export declare function uvSpawnSync(args?: readonly string[], spawnOptions?: SpawnSyncOptions, pyfigOptions?: PyfigOptions): ReturnType<typeof spawnSync>;
|
|
13
15
|
export declare function buildPythonCommand(python: PythonInfo, args: readonly string[], env: NodeJS.ProcessEnv): ResolvedCommand;
|
|
14
16
|
export declare function buildPipCommand(packageManager: PackageManagerInfo, args: readonly string[], env: NodeJS.ProcessEnv): ResolvedCommand;
|
|
17
|
+
export declare function buildUvCommand(uv: UvInfo, args: readonly string[], options: ResolvedPyfigOptions, python?: PythonInfo): ResolvedCommand;
|
|
15
18
|
//# sourceMappingURL=runners.d.ts.map
|
package/dist/runners.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runners.d.ts","sourceRoot":"","sources":["../src/runners.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,SAAS,EACT,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACtB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,
|
|
1
|
+
{"version":3,"file":"runners.d.ts","sourceRoot":"","sources":["../src/runners.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,SAAS,EACT,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACtB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAIL,KAAK,YAAY,EACjB,KAAK,oBAAoB,EAC1B,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAkB1E,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;CACxB;AAYD,wBAAsB,WAAW,CAC/B,IAAI,GAAE,SAAS,MAAM,EAAO,EAC5B,YAAY,GAAE,YAAiB,EAC/B,YAAY,GAAE,YAAiB,GAC9B,OAAO,CAAC,YAAY,CAAC,CAQvB;AAED,wBAAgB,eAAe,CAC7B,IAAI,GAAE,SAAS,MAAM,EAAO,EAC5B,YAAY,GAAE,gBAAqB,EACnC,YAAY,GAAE,YAAiB,GAC9B,UAAU,CAAC,OAAO,SAAS,CAAC,CAQ9B;AAED,wBAAsB,QAAQ,CAC5B,IAAI,GAAE,SAAS,MAAM,EAAO,EAC5B,YAAY,GAAE,YAAiB,EAC/B,YAAY,GAAE,YAAiB,GAC9B,OAAO,CAAC,YAAY,CAAC,CAYvB;AAED,wBAAgB,YAAY,CAC1B,IAAI,GAAE,SAAS,MAAM,EAAO,EAC5B,YAAY,GAAE,gBAAqB,EACnC,YAAY,GAAE,YAAiB,GAC9B,UAAU,CAAC,OAAO,SAAS,CAAC,CAY9B;AAED,wBAAsB,OAAO,CAC3B,IAAI,GAAE,SAAS,MAAM,EAAO,EAC5B,YAAY,GAAE,YAAiB,EAC/B,YAAY,GAAE,YAAiB,GAC9B,OAAO,CAAC,YAAY,CAAC,CAYvB;AAED,wBAAgB,WAAW,CACzB,IAAI,GAAE,SAAS,MAAM,EAAO,EAC5B,YAAY,GAAE,gBAAqB,EACnC,YAAY,GAAE,YAAiB,GAC9B,UAAU,CAAC,OAAO,SAAS,CAAC,CAW9B;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,GAAG,EAAE,MAAM,CAAC,UAAU,GACrB,eAAe,CASjB;AAED,wBAAgB,eAAe,CAC7B,cAAc,EAAE,kBAAkB,EAClC,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,GAAG,EAAE,MAAM,CAAC,UAAU,GACrB,eAAe,CAWjB;AAED,wBAAgB,cAAc,CAC5B,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,OAAO,EAAE,oBAAoB,EAC7B,MAAM,CAAC,EAAE,UAAU,GAClB,eAAe,CAcjB"}
|