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.
Files changed (64) hide show
  1. package/README.md +144 -22
  2. package/SECURITY.md +5 -3
  3. package/dist/cjs/index.js +1504 -0
  4. package/dist/cjs/index.js.map +21 -0
  5. package/dist/cjs/package.json +3 -0
  6. package/dist/cjs/sync-resolver.js +1242 -0
  7. package/dist/cjs/sync-resolver.js.map +18 -0
  8. package/dist/cli.js +17 -6
  9. package/dist/cli.js.map +1 -1
  10. package/dist/client.d.ts +20 -0
  11. package/dist/client.d.ts.map +1 -0
  12. package/dist/client.js +23 -0
  13. package/dist/client.js.map +1 -0
  14. package/dist/config.d.ts +45 -2
  15. package/dist/config.d.ts.map +1 -1
  16. package/dist/config.js +130 -9
  17. package/dist/config.js.map +1 -1
  18. package/dist/coordination.d.ts +25 -0
  19. package/dist/coordination.d.ts.map +1 -0
  20. package/dist/coordination.js +187 -0
  21. package/dist/coordination.js.map +1 -0
  22. package/dist/index.d.ts +9 -6
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +6 -4
  25. package/dist/index.js.map +1 -1
  26. package/dist/package-target.d.ts +12 -0
  27. package/dist/package-target.d.ts.map +1 -0
  28. package/dist/package-target.js +97 -0
  29. package/dist/package-target.js.map +1 -0
  30. package/dist/probes.d.ts +19 -0
  31. package/dist/probes.d.ts.map +1 -1
  32. package/dist/probes.js +115 -36
  33. package/dist/probes.js.map +1 -1
  34. package/dist/process.d.ts +2 -0
  35. package/dist/process.d.ts.map +1 -1
  36. package/dist/process.js +63 -1
  37. package/dist/process.js.map +1 -1
  38. package/dist/project-root.d.ts +3 -0
  39. package/dist/project-root.d.ts.map +1 -0
  40. package/dist/project-root.js +83 -0
  41. package/dist/project-root.js.map +1 -0
  42. package/dist/provision.d.ts +3 -1
  43. package/dist/provision.d.ts.map +1 -1
  44. package/dist/provision.js +375 -97
  45. package/dist/provision.js.map +1 -1
  46. package/dist/runners.d.ts +5 -2
  47. package/dist/runners.d.ts.map +1 -1
  48. package/dist/runners.js +94 -28
  49. package/dist/runners.js.map +1 -1
  50. package/dist/runtime-files.d.ts +3 -0
  51. package/dist/runtime-files.d.ts.map +1 -0
  52. package/dist/runtime-files.js +12 -0
  53. package/dist/runtime-files.js.map +1 -0
  54. package/dist/state.d.ts +10 -0
  55. package/dist/state.d.ts.map +1 -0
  56. package/dist/state.js +62 -0
  57. package/dist/state.js.map +1 -0
  58. package/dist/sync-resolver.js +11 -2
  59. package/dist/sync-resolver.js.map +1 -1
  60. package/dist/virtual-environment.d.ts +9 -0
  61. package/dist/virtual-environment.d.ts.map +1 -0
  62. package/dist/virtual-environment.js +42 -0
  63. package/dist/virtual-environment.js.map +1 -0
  64. package/package.json +18 -7
@@ -1 +1 @@
1
- {"version":3,"file":"probes.d.ts","sourceRoot":"","sources":["../src/probes.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAA0B,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAExE,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,MAAM;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAOD,wBAAsB,UAAU,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAuB1F;AAED,wBAAsB,WAAW,CAC/B,SAAS,EAAE,WAAW,EACtB,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAe5B;AAED,wBAAsB,OAAO,CAC3B,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAoCpC;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAW9E;AAED,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,iBAAiB,EACtB,MAAM,EAAE,UAAU,GACjB,OAAO,CAWT;AAED,wBAAsB,MAAM,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAIlF;AAED,wBAAgB,OAAO,CACrB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,oBAAoB,GAC5B,MAAM,GAAG,IAAI,CAQf"}
1
+ {"version":3,"file":"probes.d.ts","sourceRoot":"","sources":["../src/probes.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAA0B,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAGxE,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,mBAAmB,GAAG,IAAI,CAAC;CACvC;AAED,MAAM,WAAW,mBAAmB;IAClC,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;CAC7C;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,MAAM;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAuED,wBAAsB,UAAU,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAuB1F;AAED,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,IAAI,CAAC,oBAAoB,EAAE,aAAa,GAAG,kBAAkB,GAAG,YAAY,CAAC,GACrF,OAAO,CAQT;AAED,wBAAsB,WAAW,CAC/B,SAAS,EAAE,WAAW,EACtB,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAe5B;AAED,wBAAsB,OAAO,CAC3B,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CA+BpC;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAW9E;AAED,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,iBAAiB,EACtB,MAAM,EAAE,UAAU,GACjB,OAAO,CAWT;AAED,wBAAsB,MAAM,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAKlF;AAED,wBAAgB,OAAO,CACrB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,oBAAoB,GAC5B,MAAM,GAAG,IAAI,CAQf"}
package/dist/probes.js CHANGED
@@ -1,10 +1,75 @@
1
1
  import path from 'node:path';
2
2
  import semver from 'semver';
3
3
  import { resolveExecutable, run } from './process.js';
4
- const PYTHON_PROBE = [
5
- 'import json,sys',
6
- 'print(json.dumps({"executable":sys.executable,"version":".".join(map(str,sys.version_info[:3])),"major":sys.version_info.major,"minor":sys.version_info.minor,"patch":sys.version_info.micro,"prefix":sys.prefix}))',
7
- ].join(';');
4
+ import { activateVirtualEnvironment } from './virtual-environment.js';
5
+ const PYTHON_PROBE = `
6
+ import json
7
+ import os
8
+ import platform
9
+ import struct
10
+ import sys
11
+ import sysconfig
12
+
13
+ base_prefix = getattr(sys, "base_prefix", sys.prefix)
14
+ include_directory = sysconfig.get_path("include") or ""
15
+ header_path = os.path.join(include_directory, "Python.h") if include_directory else ""
16
+ library_candidates = []
17
+ if os.name == "nt":
18
+ library_directory = sysconfig.get_config_var("LIBDIR") or os.path.join(base_prefix, "libs")
19
+ configured_library = sysconfig.get_config_var("LDLIBRARY") or ""
20
+ if configured_library:
21
+ library_candidates.append(os.path.join(library_directory, os.path.splitext(configured_library)[0] + ".lib"))
22
+ library_candidates.append(os.path.join(library_directory, f"python{sys.version_info.major}{sys.version_info.minor}.lib"))
23
+ else:
24
+ library_directories = [
25
+ sysconfig.get_config_var("LIBDIR"),
26
+ sysconfig.get_config_var("LIBPL"),
27
+ os.path.join(base_prefix, "lib"),
28
+ ]
29
+ library_names = [
30
+ sysconfig.get_config_var("LDLIBRARY"),
31
+ sysconfig.get_config_var("LIBRARY"),
32
+ ]
33
+ for directory in library_directories:
34
+ for name in library_names:
35
+ if directory and name:
36
+ library_candidates.append(os.path.join(directory, name))
37
+
38
+ library_path = next((candidate for candidate in library_candidates if os.path.isfile(candidate)), "")
39
+ embedding = None
40
+ if os.path.isfile(header_path) and library_path:
41
+ library_name = os.path.basename(library_path)
42
+ library_kind = "import" if os.name == "nt" else ("static" if library_name.endswith(".a") else "shared")
43
+ embedding = {
44
+ "includeDirectory": include_directory,
45
+ "headerPath": header_path,
46
+ "libraryPath": library_path,
47
+ "libraryDirectory": os.path.dirname(library_path),
48
+ "libraryName": library_name,
49
+ "libraryKind": library_kind,
50
+ }
51
+
52
+ release_level = sys.version_info.releaselevel
53
+ release_suffix = "" if release_level == "final" else f"-{release_level}.{sys.version_info.serial}"
54
+
55
+ print(json.dumps({
56
+ "executable": sys.executable,
57
+ "baseExecutable": getattr(sys, "_base_executable", sys.executable),
58
+ "version": ".".join(map(str, sys.version_info[:3])) + release_suffix,
59
+ "major": sys.version_info.major,
60
+ "minor": sys.version_info.minor,
61
+ "patch": sys.version_info.micro,
62
+ "releaseLevel": release_level,
63
+ "implementation": sys.implementation.name,
64
+ "architecture": platform.machine().lower(),
65
+ "pointerBits": struct.calcsize("P") * 8,
66
+ "prefix": sys.prefix,
67
+ "basePrefix": base_prefix,
68
+ "virtualEnvironment": sys.prefix if sys.prefix != base_prefix else None,
69
+ "gilDisabled": bool(sysconfig.get_config_var("Py_GIL_DISABLED")),
70
+ "embedding": embedding,
71
+ }))
72
+ `;
8
73
  export async function findPython(options) {
9
74
  const candidates = [];
10
75
  if (options.python)
@@ -18,11 +83,18 @@ export async function findPython(options) {
18
83
  }
19
84
  for (const candidate of candidates) {
20
85
  const info = await probePython(candidate, options);
21
- if (info && semver.satisfies(info.version, options.pythonRange))
86
+ if (info && pythonSatisfiesRequirements(info, options))
22
87
  return info;
23
88
  }
24
89
  return null;
25
90
  }
91
+ export function pythonSatisfiesRequirements(python, options) {
92
+ return semver.satisfies(python.version, options.pythonRange) &&
93
+ (!options.requireEmbedding || (python.implementation === 'cpython' &&
94
+ python.embedding !== null &&
95
+ pythonArchitectureMatchesRuntime(python))) &&
96
+ (!options.requireGil || !python.gilDisabled);
97
+ }
26
98
  export async function probePython(candidate, options) {
27
99
  const executable = await resolveExecutable(candidate.executable, options.env);
28
100
  if (!executable)
@@ -37,37 +109,30 @@ export async function probePython(candidate, options) {
37
109
  }
38
110
  }
39
111
  export async function findPip(python, options) {
40
- const candidates = [
41
- { executable: python.executable, args: ['-m', 'pip'], boundToPython: true },
42
- ];
43
- if (options.pip)
44
- candidates.push({ executable: options.pip, args: [], boundToPython: false });
45
- candidates.push({ executable: 'pip3', args: [], boundToPython: false }, { executable: 'pip', args: [], boundToPython: false });
46
- for (const candidate of candidates) {
47
- const executable = await resolveExecutable(candidate.executable, options.env);
48
- if (!executable)
49
- continue;
50
- try {
51
- const { stdout } = run(executable, [...candidate.args, '--version'], options.env, options.probeTimeoutMs);
52
- const details = parsePipVersionOutput(stdout);
53
- const version = normalizeVersion(details?.version);
54
- if (!version || !semver.satisfies(version, options.pipRange))
55
- continue;
56
- if (!candidate.boundToPython && (!details || !pipBelongsToPython(details, python)))
57
- continue;
58
- return {
59
- kind: 'pip',
60
- executable,
61
- prefixArgs: candidate.args,
62
- version,
63
- pythonExecutable: python.executable,
64
- };
65
- }
66
- catch {
67
- // Try the next conventional pip spelling.
68
- }
112
+ if (!python.virtualEnvironment) {
113
+ throw new Error('pip discovery requires a virtual-environment Python interpreter.');
114
+ }
115
+ const activeEnv = activateVirtualEnvironment(options.env, python.virtualEnvironment, python.executable);
116
+ try {
117
+ const { stdout } = run(python.executable, ['-m', 'pip', '--version'], activeEnv, options.probeTimeoutMs);
118
+ const details = parsePipVersionOutput(stdout);
119
+ const version = normalizeVersion(details?.version);
120
+ if (!version || !semver.satisfies(version, options.pipRange))
121
+ return null;
122
+ if (!details || !pipBelongsToPython(details, python))
123
+ return null;
124
+ return {
125
+ kind: 'pip',
126
+ executable: python.executable,
127
+ prefixArgs: ['-m', 'pip'],
128
+ version,
129
+ pythonExecutable: python.executable,
130
+ virtualEnvironment: python.virtualEnvironment,
131
+ };
132
+ }
133
+ catch {
134
+ return null;
69
135
  }
70
- return null;
71
136
  }
72
137
  export function parsePipVersionOutput(output) {
73
138
  const match = output.trim().match(/^pip\s+(\S+)\s+from\s+(.+?)\s+\(python\s+(\d+)\.(\d+)(?:\.\d+)?\)$/iu);
@@ -93,7 +158,8 @@ export function pipBelongsToPython(pip, python) {
93
158
  export async function findUv(options) {
94
159
  const configured = options.env['PYFIG_UV'] ?? 'uv';
95
160
  const executable = await resolveExecutable(configured, options.env);
96
- return executable ? probeUv(executable, options) : null;
161
+ const uv = executable ? probeUv(executable, options) : null;
162
+ return uv && semver.satisfies(uv.version, options.uvRange) ? uv : null;
97
163
  }
98
164
  export function probeUv(executable, options) {
99
165
  try {
@@ -113,4 +179,17 @@ function normalizeVersion(value) {
113
179
  function normalizePathForComparison(value) {
114
180
  return process.platform === 'win32' ? value.toLowerCase() : value;
115
181
  }
182
+ function pythonArchitectureMatchesRuntime(python) {
183
+ const architecture = python.architecture.toLowerCase();
184
+ if (python.pointerBits !== (process.arch === 'ia32' ? 32 : 64))
185
+ return false;
186
+ if (process.arch === 'x64')
187
+ return architecture === 'x86_64' || architecture === 'amd64';
188
+ if (process.arch === 'arm64')
189
+ return architecture === 'aarch64' || architecture === 'arm64';
190
+ if (process.arch === 'ia32') {
191
+ return architecture === 'x86' || architecture === 'i386' || architecture === 'i686';
192
+ }
193
+ return architecture === process.arch;
194
+ }
116
195
  //# sourceMappingURL=probes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"probes.js","sourceRoot":"","sources":["../src/probes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"probes.js","sourceRoot":"","sources":["../src/probes.ts"],"names":[],"mappings":"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"}
package/dist/process.d.ts CHANGED
@@ -8,4 +8,6 @@ export interface RunResult {
8
8
  }
9
9
  export declare function resolveExecutable(value: string, env: NodeJS.ProcessEnv): Promise<string | null>;
10
10
  export declare function run(executable: string, args: string[], env: NodeJS.ProcessEnv, timeoutMs: number): RunResult;
11
+ /** Run a child without blocking lock heartbeats or other coordination timers. */
12
+ export declare function runAsync(executable: string, args: string[], env: NodeJS.ProcessEnv, timeoutMs: number, signal?: AbortSignal): Promise<RunResult>;
11
13
  //# sourceMappingURL=process.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"process.d.ts","sourceRoot":"","sources":["../src/process.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,CAAC,UAAU,GACrB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAOxB;AAED,wBAAgB,GAAG,CACjB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,SAAS,EAAE,MAAM,GAChB,SAAS,CAaX"}
1
+ {"version":3,"file":"process.d.ts","sourceRoot":"","sources":["../src/process.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,CAAC,UAAU,GACrB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAOxB;AAED,wBAAgB,GAAG,CACjB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,SAAS,EAAE,MAAM,GAChB,SAAS,CAaX;AAED,iFAAiF;AACjF,wBAAsB,QAAQ,CAC5B,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,SAAS,CAAC,CAyDpB"}
package/dist/process.js CHANGED
@@ -1,4 +1,4 @@
1
- import { spawnSync } from 'node:child_process';
1
+ import { spawn, spawnSync } from 'node:child_process';
2
2
  import path from 'node:path';
3
3
  import which from 'which';
4
4
  export async function resolveExecutable(value, env) {
@@ -25,4 +25,66 @@ export function run(executable, args, env, timeoutMs) {
25
25
  }
26
26
  return { stdout: result.stdout, stderr: result.stderr };
27
27
  }
28
+ /** Run a child without blocking lock heartbeats or other coordination timers. */
29
+ export async function runAsync(executable, args, env, timeoutMs, signal) {
30
+ return new Promise((resolve, reject) => {
31
+ const child = spawn(executable, args, {
32
+ env,
33
+ stdio: ['ignore', 'pipe', 'pipe'],
34
+ windowsHide: true,
35
+ });
36
+ let stdout = '';
37
+ let stderr = '';
38
+ let settled = false;
39
+ const finish = (error, result) => {
40
+ if (settled)
41
+ return;
42
+ settled = true;
43
+ clearTimeout(timer);
44
+ signal?.removeEventListener('abort', abort);
45
+ if (error)
46
+ reject(error);
47
+ else if (result)
48
+ resolve(result);
49
+ };
50
+ const abort = () => {
51
+ child.kill();
52
+ const reason = signal?.reason;
53
+ finish(reason instanceof Error ? reason : new Error(`${path.basename(executable)} was aborted.`));
54
+ };
55
+ const timer = setTimeout(() => {
56
+ child.kill();
57
+ finish(new Error(`${path.basename(executable)} timed out after ${timeoutMs}ms.`));
58
+ }, timeoutMs);
59
+ child.stdout.setEncoding('utf8');
60
+ child.stderr.setEncoding('utf8');
61
+ child.stdout.on('data', (chunk) => {
62
+ stdout += chunk;
63
+ if (stdout.length > 4 * 1024 * 1024) {
64
+ child.kill();
65
+ finish(new Error(`${path.basename(executable)} exceeded the output limit.`));
66
+ }
67
+ });
68
+ child.stderr.on('data', (chunk) => {
69
+ stderr += chunk;
70
+ if (stderr.length > 4 * 1024 * 1024) {
71
+ child.kill();
72
+ finish(new Error(`${path.basename(executable)} exceeded the error-output limit.`));
73
+ }
74
+ });
75
+ child.once('error', (error) => finish(error));
76
+ child.once('close', (code, childSignal) => {
77
+ if (code !== 0) {
78
+ const detail = stderr.trim() || (childSignal ? `signal ${childSignal}` : `exit ${code}`);
79
+ finish(new Error(`${path.basename(executable)} ${args.slice(0, 3).join(' ')} failed: ${detail}`));
80
+ return;
81
+ }
82
+ finish(undefined, { stdout, stderr });
83
+ });
84
+ if (signal?.aborted)
85
+ abort();
86
+ else
87
+ signal?.addEventListener('abort', abort, { once: true });
88
+ });
89
+ }
28
90
  //# sourceMappingURL=process.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"process.js","sourceRoot":"","sources":["../src/process.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,KAAK,MAAM,OAAO,CAAC;AAY1B,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,KAAa,EACb,GAAsB;IAEtB,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,MAAM,KAAK,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAC3F,CAAC;IACD,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACnD,OAAO,MAAM,KAAK,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;AAC3F,CAAC;AAED,MAAM,UAAU,GAAG,CACjB,UAAkB,EAClB,IAAc,EACd,GAAsB,EACtB,SAAiB;IAEjB,MAAM,MAAM,GAAG,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE;QACzC,QAAQ,EAAE,MAAM;QAChB,GAAG;QACH,OAAO,EAAE,SAAS;QAClB,SAAS,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI;QAC1B,WAAW,EAAE,IAAI;KAClB,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,MAAM,CAAC,KAAK,EAAE,OAAO,IAAI,QAAQ,MAAM,CAAC,MAAM,EAAE,CAAC;QACzF,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,MAAM,EAAE,CAAC,CAAC;IAClG,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;AAC1D,CAAC"}
1
+ {"version":3,"file":"process.js","sourceRoot":"","sources":["../src/process.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ /** Resolve the repository root from a working directory without requiring Git. */
2
+ export declare function resolveProjectRoot(startDirectory?: string): string;
3
+ //# sourceMappingURL=project-root.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-root.d.ts","sourceRoot":"","sources":["../src/project-root.ts"],"names":[],"mappings":"AAkBA,kFAAkF;AAClF,wBAAgB,kBAAkB,CAAC,cAAc,GAAE,MAAsB,GAAG,MAAM,CAgBjF"}
@@ -0,0 +1,83 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import { createFileSystemProject } from 'pacwich';
4
+ const PACKAGE_MANAGER_LOCKFILES = [
5
+ 'bun.lock',
6
+ 'bun.lockb',
7
+ 'npm-shrinkwrap.json',
8
+ 'package-lock.json',
9
+ 'pnpm-lock.yaml',
10
+ 'yarn.lock',
11
+ ];
12
+ const PYTHON_PROJECT_MARKERS = [
13
+ 'pyproject.toml',
14
+ 'uv.lock',
15
+ ];
16
+ /** Resolve the repository root from a working directory without requiring Git. */
17
+ export function resolveProjectRoot(startDirectory = process.cwd()) {
18
+ const start = path.resolve(startDirectory);
19
+ const workspaceRoot = findWorkspaceProjectRoot(start);
20
+ if (workspaceRoot) {
21
+ try {
22
+ return path.resolve(createFileSystemProject({
23
+ rootDirectory: start,
24
+ disableExecutableConfigs: true,
25
+ }).rootDirectory);
26
+ }
27
+ catch {
28
+ // Pacwich can reject an otherwise recognizable root when workspace metadata is incomplete.
29
+ return workspaceRoot;
30
+ }
31
+ }
32
+ return findConventionalProjectRoot(start);
33
+ }
34
+ function findWorkspaceProjectRoot(startDirectory) {
35
+ for (const directory of ancestors(startDirectory)) {
36
+ const packageJson = path.join(directory, 'package.json');
37
+ if (!fs.existsSync(packageJson))
38
+ continue;
39
+ if (fs.existsSync(path.join(directory, 'pnpm-workspace.yaml')))
40
+ return directory;
41
+ try {
42
+ const manifest = JSON.parse(fs.readFileSync(packageJson, 'utf8'));
43
+ if (hasWorkspaceDeclaration(manifest.workspaces))
44
+ return directory;
45
+ }
46
+ catch {
47
+ // Keep walking so malformed nested package metadata cannot hide a valid ancestor.
48
+ }
49
+ }
50
+ return null;
51
+ }
52
+ function findConventionalProjectRoot(startDirectory) {
53
+ let nearestPackageDirectory = null;
54
+ let nearestPythonDirectory = null;
55
+ for (const directory of ancestors(startDirectory)) {
56
+ const hasPackage = fs.existsSync(path.join(directory, 'package.json'));
57
+ if (hasPackage && !nearestPackageDirectory)
58
+ nearestPackageDirectory = directory;
59
+ if (!nearestPythonDirectory && PYTHON_PROJECT_MARKERS.some((file) => fs.existsSync(path.join(directory, file)))) {
60
+ nearestPythonDirectory = directory;
61
+ }
62
+ if (hasPackage && PACKAGE_MANAGER_LOCKFILES.some((file) => fs.existsSync(path.join(directory, file)))) {
63
+ return directory;
64
+ }
65
+ if (fs.existsSync(path.join(directory, '.git')))
66
+ return directory;
67
+ }
68
+ return nearestPackageDirectory ?? nearestPythonDirectory ?? startDirectory;
69
+ }
70
+ function hasWorkspaceDeclaration(value) {
71
+ return Array.isArray(value) || (value !== null && typeof value === 'object');
72
+ }
73
+ function* ancestors(startDirectory) {
74
+ let directory = startDirectory;
75
+ while (true) {
76
+ yield directory;
77
+ const parent = path.dirname(directory);
78
+ if (parent === directory)
79
+ return;
80
+ directory = parent;
81
+ }
82
+ }
83
+ //# sourceMappingURL=project-root.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-root.js","sourceRoot":"","sources":["../src/project-root.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,12 @@
1
1
  import { type PyfigOptions } from './config.js';
2
- import { type PackageManagerInfo, type PythonInfo } from './probes.js';
2
+ import { type PackageManagerInfo, type PythonInfo, type UvInfo } from './probes.js';
3
3
  export interface PythonEnvironment {
4
4
  python: PythonInfo;
5
5
  packageManager: PackageManagerInfo;
6
6
  }
7
7
  export declare function ensurePython(options?: PyfigOptions): Promise<PythonInfo>;
8
8
  export declare function ensurePip(options?: PyfigOptions, python?: PythonInfo): Promise<PackageManagerInfo>;
9
+ export declare function ensureVirtualEnvironment(options?: PyfigOptions): Promise<PythonInfo>;
10
+ export declare function ensureUv(options?: PyfigOptions): Promise<UvInfo>;
9
11
  export declare function ensureEnvironment(options?: PyfigOptions): Promise<PythonEnvironment>;
10
12
  //# sourceMappingURL=provision.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"provision.d.ts","sourceRoot":"","sources":["../src/provision.ts"],"names":[],"mappings":"AAKA,OAAO,EAAkB,KAAK,YAAY,EAA6B,MAAM,aAAa,CAAC;AAC3F,OAAO,EAML,KAAK,kBAAkB,EACvB,KAAK,UAAU,EAEhB,MAAM,aAAa,CAAC;AAGrB,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,UAAU,CAAC;IACnB,cAAc,EAAE,kBAAkB,CAAC;CACpC;AAQD,wBAAsB,YAAY,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,CAElF;AAED,wBAAsB,SAAS,CAC7B,OAAO,GAAE,YAAiB,EAC1B,MAAM,CAAC,EAAE,UAAU,GAClB,OAAO,CAAC,kBAAkB,CAAC,CAI7B;AAED,wBAAsB,iBAAiB,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAK9F"}
1
+ {"version":3,"file":"provision.d.ts","sourceRoot":"","sources":["../src/provision.ts"],"names":[],"mappings":"AAmBA,OAAO,EAIL,KAAK,YAAY,EAElB,MAAM,aAAa,CAAC;AAErB,OAAO,EAOL,KAAK,kBAAkB,EACvB,KAAK,UAAU,EACf,KAAK,MAAM,EACZ,MAAM,aAAa,CAAC;AAUrB,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,UAAU,CAAC;IACnB,cAAc,EAAE,kBAAkB,CAAC;CACpC;AAED,wBAAsB,YAAY,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,CASlF;AAED,wBAAsB,SAAS,CAC7B,OAAO,GAAE,YAAiB,EAC1B,MAAM,CAAC,EAAE,UAAU,GAClB,OAAO,CAAC,kBAAkB,CAAC,CAM7B;AAED,wBAAsB,wBAAwB,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,CAW9F;AAED,wBAAsB,QAAQ,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAS1E;AAED,wBAAsB,iBAAiB,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAa9F"}