pyfig 0.6.3 → 0.7.1

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.
Files changed (75) hide show
  1. package/README.md +77 -166
  2. package/SECURITY.md +16 -5
  3. package/dist/cjs/index.js +471 -980
  4. package/dist/cjs/index.js.map +6 -15
  5. package/dist/index.d.ts +2 -9
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +1 -5
  8. package/dist/index.js.map +1 -1
  9. package/dist/process.d.ts +6 -12
  10. package/dist/process.d.ts.map +1 -1
  11. package/dist/process.js +35 -54
  12. package/dist/process.js.map +1 -1
  13. package/dist/pyfig.d.ts +31 -0
  14. package/dist/pyfig.d.ts.map +1 -0
  15. package/dist/pyfig.js +275 -0
  16. package/dist/pyfig.js.map +1 -0
  17. package/dist/uv.d.ts +3 -0
  18. package/dist/uv.d.ts.map +1 -0
  19. package/dist/uv.js +423 -0
  20. package/dist/uv.js.map +1 -0
  21. package/package.json +6 -12
  22. package/dist/cjs/sync-resolver.js +0 -1217
  23. package/dist/cjs/sync-resolver.js.map +0 -19
  24. package/dist/cli.d.ts +0 -3
  25. package/dist/cli.d.ts.map +0 -1
  26. package/dist/cli.js +0 -48
  27. package/dist/cli.js.map +0 -1
  28. package/dist/client.d.ts +0 -15
  29. package/dist/client.d.ts.map +0 -1
  30. package/dist/client.js +0 -25
  31. package/dist/client.js.map +0 -1
  32. package/dist/config.d.ts +0 -62
  33. package/dist/config.d.ts.map +0 -1
  34. package/dist/config.js +0 -112
  35. package/dist/config.js.map +0 -1
  36. package/dist/package-target.d.ts +0 -8
  37. package/dist/package-target.d.ts.map +0 -1
  38. package/dist/package-target.js +0 -81
  39. package/dist/package-target.js.map +0 -1
  40. package/dist/pep440.d.ts +0 -12
  41. package/dist/pep440.d.ts.map +0 -1
  42. package/dist/pep440.js +0 -21
  43. package/dist/pep440.js.map +0 -1
  44. package/dist/probes.d.ts +0 -37
  45. package/dist/probes.d.ts.map +0 -1
  46. package/dist/probes.js +0 -145
  47. package/dist/probes.js.map +0 -1
  48. package/dist/project-root.d.ts +0 -3
  49. package/dist/project-root.d.ts.map +0 -1
  50. package/dist/project-root.js +0 -22
  51. package/dist/project-root.js.map +0 -1
  52. package/dist/provision-lock.d.ts +0 -10
  53. package/dist/provision-lock.d.ts.map +0 -1
  54. package/dist/provision-lock.js +0 -24
  55. package/dist/provision-lock.js.map +0 -1
  56. package/dist/provision.d.ts +0 -26
  57. package/dist/provision.d.ts.map +0 -1
  58. package/dist/provision.js +0 -685
  59. package/dist/provision.js.map +0 -1
  60. package/dist/runners.d.ts +0 -14
  61. package/dist/runners.d.ts.map +0 -1
  62. package/dist/runners.js +0 -71
  63. package/dist/runners.js.map +0 -1
  64. package/dist/runtime-files.d.ts +0 -3
  65. package/dist/runtime-files.d.ts.map +0 -1
  66. package/dist/runtime-files.js +0 -12
  67. package/dist/runtime-files.js.map +0 -1
  68. package/dist/sync-resolver.d.ts +0 -2
  69. package/dist/sync-resolver.d.ts.map +0 -1
  70. package/dist/sync-resolver.js +0 -15
  71. package/dist/sync-resolver.js.map +0 -1
  72. package/dist/virtual-environment.d.ts +0 -11
  73. package/dist/virtual-environment.d.ts.map +0 -1
  74. package/dist/virtual-environment.js +0 -49
  75. package/dist/virtual-environment.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"process.js","sourceRoot":"","sources":["../src/process.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"process.js","sourceRoot":"","sources":["../src/process.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import { type ChildProcess, type SpawnOptions } from 'node:child_process';
2
+ export interface PyfigOptions {
3
+ /** uv executable or PEP 440 constraint. Executables take precedence. */
4
+ uv?: string;
5
+ /** Python executable or PEP 440 constraint. Executables take precedence. */
6
+ python?: string;
7
+ /** Require CPython headers, a linkable library, and matching runtime architecture. */
8
+ requireEmbedding?: boolean;
9
+ /** Reject free-threaded Python builds. */
10
+ requireGil?: boolean;
11
+ /** Directory used for uv project and configuration discovery. */
12
+ cwd?: string;
13
+ /** Environment used to locate executables and invoke child processes. */
14
+ env?: Readonly<Record<string, string | undefined>>;
15
+ }
16
+ export declare class PythonContext {
17
+ #private;
18
+ /** Absolute path to the resolved uv executable. */
19
+ readonly uv: string;
20
+ /** Absolute path to the resolved Python interpreter. */
21
+ readonly python: string;
22
+ constructor(uvPath: string, pythonPath: string, cwd?: string, env?: NodeJS.ProcessEnv);
23
+ /** Spawn `uv run` with the resolved Python pinned before the command separator. */
24
+ run(...args: string[]): ChildProcess;
25
+ run(...args: [...command: string[], options: SpawnOptions]): ChildProcess;
26
+ }
27
+ /** Resolve compatible uv and Python executables without owning either environment. */
28
+ export declare function pyfig(options?: PyfigOptions): Promise<PythonContext>;
29
+ /** @internal Build a safe `uv run` argv array from the public variadic input. */
30
+ export declare function buildRunArgs(pythonPath: string, args: readonly string[]): string[];
31
+ //# sourceMappingURL=pyfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pyfig.d.ts","sourceRoot":"","sources":["../src/pyfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAuDjF,MAAM,WAAW,YAAY;IAC3B,wEAAwE;IACxE,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,4EAA4E;IAC5E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sFAAsF;IACtF,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,0CAA0C;IAC1C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,iEAAiE;IACjE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,yEAAyE;IACzE,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;CACpD;AAED,qBAAa,aAAa;;IAGxB,mDAAmD;IACnD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,wDAAwD;IACxD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,YACE,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,GAAG,SAAgB,EACnB,GAAG,GAAE,MAAM,CAAC,UAAwB,EAOrC;IAED,mFAAmF;IACnF,GAAG,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC;IACrC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,YAAY,CAAC,GAAG,YAAY,CAAC;CAW3E;AAED,sFAAsF;AACtF,wBAAsB,KAAK,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,aAAa,CAAC,CAsB9E;AAED,iFAAiF;AACjF,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAalF"}
package/dist/pyfig.js ADDED
@@ -0,0 +1,275 @@
1
+ import { spawn } from 'node:child_process';
2
+ import path from 'node:path';
3
+ import { filter, valid as validVersion, validRange, } from '@renovatebot/pep440';
4
+ import { capture, findExecutable } from './process.js';
5
+ import { resolveUv } from './uv.js';
6
+ const DEFAULT_UV = '>=0.10,<1';
7
+ const PYTHON_PROBE = String.raw `
8
+ import json
9
+ import os
10
+ import platform
11
+ import struct
12
+ import sys
13
+ import sysconfig
14
+
15
+ base_prefix = getattr(sys, "base_prefix", sys.prefix)
16
+ include_directory = sysconfig.get_path("include") or ""
17
+ header_path = os.path.join(include_directory, "Python.h") if include_directory else ""
18
+ library_candidates = []
19
+ if os.name == "nt":
20
+ library_directory = sysconfig.get_config_var("LIBDIR") or os.path.join(base_prefix, "libs")
21
+ configured_library = sysconfig.get_config_var("LDLIBRARY") or ""
22
+ if configured_library:
23
+ library_candidates.append(os.path.join(library_directory, os.path.splitext(configured_library)[0] + ".lib"))
24
+ library_candidates.append(os.path.join(library_directory, f"python{sys.version_info.major}{sys.version_info.minor}.lib"))
25
+ else:
26
+ for directory in [
27
+ sysconfig.get_config_var("LIBDIR"),
28
+ sysconfig.get_config_var("LIBPL"),
29
+ os.path.join(base_prefix, "lib"),
30
+ ]:
31
+ for name in [sysconfig.get_config_var("LDLIBRARY"), sysconfig.get_config_var("LIBRARY")]:
32
+ if directory and name:
33
+ library_candidates.append(os.path.join(directory, name))
34
+
35
+ release_suffix = {"alpha": "a", "beta": "b", "candidate": "rc", "final": ""}[sys.version_info.releaselevel]
36
+ if release_suffix:
37
+ release_suffix += str(sys.version_info.serial)
38
+
39
+ print(json.dumps({
40
+ "executable": sys.executable,
41
+ "version": ".".join(map(str, sys.version_info[:3])) + release_suffix,
42
+ "implementation": sys.implementation.name,
43
+ "architecture": platform.machine().lower(),
44
+ "pointerBits": struct.calcsize("P") * 8,
45
+ "gilDisabled": bool(sysconfig.get_config_var("Py_GIL_DISABLED")),
46
+ "embedding": os.path.isfile(header_path) and any(os.path.isfile(path) for path in library_candidates),
47
+ }))
48
+ `;
49
+ export class PythonContext {
50
+ #cwd;
51
+ #env;
52
+ /** Absolute path to the resolved uv executable. */
53
+ uv;
54
+ /** Absolute path to the resolved Python interpreter. */
55
+ python;
56
+ constructor(uvPath, pythonPath, cwd = process.cwd(), env = process.env) {
57
+ this.#cwd = cwd;
58
+ this.#env = { ...env };
59
+ this.uv = uvPath;
60
+ this.python = pythonPath;
61
+ Object.freeze(this);
62
+ }
63
+ run(...input) {
64
+ const { args, spawnOptions } = splitRunInput(input);
65
+ return spawn(this.uv, buildRunArgs(this.python, args), {
66
+ cwd: this.#cwd,
67
+ env: this.#env,
68
+ stdio: 'inherit',
69
+ windowsHide: true,
70
+ ...spawnOptions,
71
+ });
72
+ }
73
+ }
74
+ /** Resolve compatible uv and Python executables without owning either environment. */
75
+ export async function pyfig(options = {}) {
76
+ const { uv: uvRequest = DEFAULT_UV, python: pythonRequest, requireEmbedding = false, requireGil = false, cwd = process.cwd(), env: suppliedEnvironment, } = options;
77
+ const env = mergeEnvironment(suppliedEnvironment);
78
+ const workingDirectory = path.resolve(cwd);
79
+ const uvPath = await selectUv(uvRequest, workingDirectory, env);
80
+ const selectedPythonPath = await selectPython({
81
+ cwd: workingDirectory,
82
+ env,
83
+ pythonRequest,
84
+ requireEmbedding,
85
+ requireGil,
86
+ uvPath,
87
+ });
88
+ return new PythonContext(uvPath, selectedPythonPath, workingDirectory, env);
89
+ }
90
+ /** @internal Build a safe `uv run` argv array from the public variadic input. */
91
+ export function buildRunArgs(pythonPath, args) {
92
+ const separator = args.indexOf('--');
93
+ if (separator < 0) {
94
+ return ['run', '--python', pythonPath, '--', ...args];
95
+ }
96
+ const uvArgs = args.slice(0, separator);
97
+ const command = args.slice(separator + 1);
98
+ if (uvArgs.some(argument => argument === '--python' || argument.startsWith('--python='))) {
99
+ throw new TypeError('run() does not accept --python before --; Python is selected by pyfig().');
100
+ }
101
+ uvArgs.push('--python', pythonPath);
102
+ return ['run', ...uvArgs, '--', ...command];
103
+ }
104
+ function splitRunInput(input) {
105
+ const values = [...input];
106
+ const last = values.at(-1);
107
+ const spawnOptions = typeof last === 'object' && last !== null && !Array.isArray(last)
108
+ ? values.pop()
109
+ : {};
110
+ if (!values.every((value) => typeof value === 'string')) {
111
+ throw new TypeError('uv run arguments must be strings with an optional SpawnOptions object last.');
112
+ }
113
+ return { args: values, spawnOptions };
114
+ }
115
+ async function selectUv(request, cwd, env) {
116
+ const selection = await executableOrSpecifier('uv', request, cwd, env);
117
+ if (selection.executable)
118
+ return selection.executable;
119
+ const specifier = selection.specifier;
120
+ if (!specifier)
121
+ throw new Error('uv selection did not contain a version specifier.');
122
+ return resolveUv(specifier, cwd, env);
123
+ }
124
+ async function selectPython(options) {
125
+ if (options.pythonRequest !== undefined) {
126
+ const selection = await executableOrSpecifier('python', options.pythonRequest, options.cwd, options.env);
127
+ if (selection.executable) {
128
+ const explicit = await probePython(selection.executable, options.cwd, options.env);
129
+ validatePythonCapabilities(explicit, options);
130
+ return explicit.executable;
131
+ }
132
+ if (!selection.specifier)
133
+ throw new Error('Python selection did not contain a version specifier.');
134
+ return selectDiscoveredPython(selection.specifier, options);
135
+ }
136
+ return selectDiscoveredPython(null, options);
137
+ }
138
+ async function selectDiscoveredPython(specifier, options) {
139
+ const request = specifier ? [specifier] : [];
140
+ let systemFailure;
141
+ try {
142
+ // `--system` excludes virtual environments; `--no-managed-python` also
143
+ // excludes uv's cache so this pass genuinely prefers host installations.
144
+ const systemPath = await findPython(options.uvPath, ['--system', '--no-managed-python', ...request], options);
145
+ const system = await probePython(systemPath, options.cwd, options.env);
146
+ validatePythonVersion(system, specifier);
147
+ validatePythonCapabilities(system, options);
148
+ return system.executable;
149
+ }
150
+ catch (error) {
151
+ systemFailure = error;
152
+ }
153
+ try {
154
+ const managedPath = await findPython(options.uvPath, ['--managed-python', ...request], options);
155
+ const managed = await probePython(managedPath, options.cwd, options.env);
156
+ validatePythonVersion(managed, specifier);
157
+ validatePythonCapabilities(managed, options);
158
+ return managed.executable;
159
+ }
160
+ catch (error) {
161
+ throw new Error(`No compatible Python was found. System: ${errorMessage(systemFailure)} Managed: ${errorMessage(error)}`, { cause: error });
162
+ }
163
+ }
164
+ async function findPython(uvPath, args, options) {
165
+ const output = await capture(uvPath, ['python', 'find', ...args], options.cwd, options.env);
166
+ const executable = output.trim().split(/\r?\n/u).at(-1) ?? '';
167
+ if (!path.isAbsolute(executable)) {
168
+ throw new Error(`uv did not report an absolute Python path: ${executable || '<empty>'}`);
169
+ }
170
+ return path.normalize(executable);
171
+ }
172
+ async function probePython(executable, cwd, env) {
173
+ const output = await capture(executable, ['-I', '-S', '-c', PYTHON_PROBE], cwd, env);
174
+ const line = output.trim().split(/\r?\n/u).at(-1) ?? '';
175
+ let value;
176
+ try {
177
+ value = JSON.parse(line);
178
+ }
179
+ catch (error) {
180
+ throw new Error(`${JSON.stringify(executable)} did not return valid Python metadata.`, {
181
+ cause: error,
182
+ });
183
+ }
184
+ if (!isPythonProbe(value)) {
185
+ throw new Error(`${JSON.stringify(executable)} returned incomplete Python metadata.`);
186
+ }
187
+ if (!path.isAbsolute(value.executable)) {
188
+ throw new Error(`${JSON.stringify(executable)} reported a non-absolute executable path.`);
189
+ }
190
+ return { ...value, executable: path.normalize(value.executable) };
191
+ }
192
+ function validatePythonVersion(python, specifier) {
193
+ if (!specifier)
194
+ return;
195
+ const version = validVersion(python.version);
196
+ if (!version)
197
+ throw new Error(`Python ${python.executable} reported invalid version ${python.version}.`);
198
+ if (filter([version], specifier).length !== 1) {
199
+ throw new Error(`Python ${version} does not satisfy ${specifier}.`);
200
+ }
201
+ }
202
+ function validatePythonCapabilities(python, options) {
203
+ if (options.requireEmbedding) {
204
+ if (python.implementation !== 'cpython') {
205
+ throw new Error(`Python embedding requires CPython, received ${python.implementation}.`);
206
+ }
207
+ if (!python.embedding) {
208
+ throw new Error(`Python ${python.executable} does not provide embedding headers and a library.`);
209
+ }
210
+ if (!pythonArchitectureMatchesRuntime(python)) {
211
+ throw new Error(`Python ${python.executable} does not match the JavaScript runtime architecture.`);
212
+ }
213
+ }
214
+ if (options.requireGil && python.gilDisabled) {
215
+ throw new Error(`Python ${python.executable} is free-threaded but requireGil is enabled.`);
216
+ }
217
+ }
218
+ function pythonArchitectureMatchesRuntime(python) {
219
+ if (python.pointerBits !== (process.arch === 'ia32' ? 32 : 64))
220
+ return false;
221
+ if (process.arch === 'x64')
222
+ return python.architecture === 'x86_64' || python.architecture === 'amd64';
223
+ if (process.arch === 'arm64')
224
+ return python.architecture === 'aarch64' || python.architecture === 'arm64';
225
+ if (process.arch === 'ia32') {
226
+ return python.architecture === 'x86' || python.architecture === 'i386' ||
227
+ python.architecture === 'i686';
228
+ }
229
+ return python.architecture === process.arch;
230
+ }
231
+ async function executableOrSpecifier(name, value, cwd, env) {
232
+ assertNonempty(name, value);
233
+ const executable = await findExecutable(value, cwd, env);
234
+ if (executable)
235
+ return { executable, specifier: null };
236
+ if (validRange(value))
237
+ return { executable: null, specifier: value };
238
+ throw new TypeError(`${name} must resolve to an executable or be a valid PEP 440 specifier, received ${JSON.stringify(value)}.`);
239
+ }
240
+ function isPythonProbe(value) {
241
+ if (!value || typeof value !== 'object' || Array.isArray(value))
242
+ return false;
243
+ const probe = value;
244
+ return typeof probe['architecture'] === 'string' &&
245
+ typeof probe['embedding'] === 'boolean' &&
246
+ typeof probe['executable'] === 'string' &&
247
+ typeof probe['gilDisabled'] === 'boolean' &&
248
+ typeof probe['implementation'] === 'string' &&
249
+ typeof probe['pointerBits'] === 'number' &&
250
+ typeof probe['version'] === 'string';
251
+ }
252
+ function errorMessage(error) {
253
+ return error instanceof Error ? error.message : String(error);
254
+ }
255
+ /** Apply caller overrides without leaving case-variant duplicate keys on Windows. */
256
+ function mergeEnvironment(supplied) {
257
+ const environment = { ...process.env };
258
+ for (const [key, value] of Object.entries(supplied ?? {})) {
259
+ if (process.platform === 'win32') {
260
+ const existing = Object.keys(environment).find(candidate => candidate.toLowerCase() === key.toLowerCase());
261
+ if (existing && existing !== key)
262
+ delete environment[existing];
263
+ }
264
+ if (value === undefined)
265
+ delete environment[key];
266
+ else
267
+ environment[key] = value;
268
+ }
269
+ return environment;
270
+ }
271
+ function assertNonempty(name, value) {
272
+ if (value.trim() === '')
273
+ throw new TypeError(`${name} must not be empty.`);
274
+ }
275
+ //# sourceMappingURL=pyfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pyfig.js","sourceRoot":"","sources":["../src/pyfig.ts"],"names":[],"mappings":"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"}
package/dist/uv.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ /** Prefer a compatible PATH or cached uv, then provision an official release. */
2
+ export declare function resolveUv(specifier: string, cwd: string, env: NodeJS.ProcessEnv): Promise<string>;
3
+ //# sourceMappingURL=uv.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uv.d.ts","sourceRoot":"","sources":["../src/uv.ts"],"names":[],"mappings":"AAoDA,iFAAiF;AACjF,wBAAsB,SAAS,CAC7B,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,CAAC,UAAU,GACrB,OAAO,CAAC,MAAM,CAAC,CAmCjB"}