pyfig 0.3.1 → 0.5.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 (67) hide show
  1. package/README.md +116 -123
  2. package/SECURITY.md +2 -2
  3. package/dist/cjs/index.js +525 -888
  4. package/dist/cjs/index.js.map +15 -15
  5. package/dist/cjs/sync-resolver.js +482 -676
  6. package/dist/cjs/sync-resolver.js.map +13 -12
  7. package/dist/cli.js +7 -10
  8. package/dist/cli.js.map +1 -1
  9. package/dist/client.d.ts +3 -8
  10. package/dist/client.d.ts.map +1 -1
  11. package/dist/client.js +13 -11
  12. package/dist/client.js.map +1 -1
  13. package/dist/config.d.ts +9 -18
  14. package/dist/config.d.ts.map +1 -1
  15. package/dist/config.js +22 -59
  16. package/dist/config.js.map +1 -1
  17. package/dist/index.d.ts +5 -6
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +3 -4
  20. package/dist/index.js.map +1 -1
  21. package/dist/package-target.d.ts +7 -11
  22. package/dist/package-target.d.ts.map +1 -1
  23. package/dist/package-target.js +41 -57
  24. package/dist/package-target.js.map +1 -1
  25. package/dist/probes.d.ts +1 -19
  26. package/dist/probes.d.ts.map +1 -1
  27. package/dist/probes.js +13 -74
  28. package/dist/probes.js.map +1 -1
  29. package/dist/process.d.ts +1 -1
  30. package/dist/process.d.ts.map +1 -1
  31. package/dist/process.js +2 -1
  32. package/dist/process.js.map +1 -1
  33. package/dist/project-root.d.ts +1 -1
  34. package/dist/project-root.d.ts.map +1 -1
  35. package/dist/project-root.js +3 -64
  36. package/dist/project-root.js.map +1 -1
  37. package/dist/provision-lock.d.ts +10 -0
  38. package/dist/provision-lock.d.ts.map +1 -0
  39. package/dist/provision-lock.js +24 -0
  40. package/dist/provision-lock.js.map +1 -0
  41. package/dist/provision.d.ts +18 -6
  42. package/dist/provision.d.ts.map +1 -1
  43. package/dist/provision.js +297 -235
  44. package/dist/provision.js.map +1 -1
  45. package/dist/python-version.d.ts +10 -0
  46. package/dist/python-version.d.ts.map +1 -0
  47. package/dist/python-version.js +17 -0
  48. package/dist/python-version.js.map +1 -0
  49. package/dist/runners.d.ts +3 -7
  50. package/dist/runners.d.ts.map +1 -1
  51. package/dist/runners.js +35 -115
  52. package/dist/runners.js.map +1 -1
  53. package/dist/sync-resolver.js +4 -13
  54. package/dist/sync-resolver.js.map +1 -1
  55. package/dist/virtual-environment.d.ts +3 -1
  56. package/dist/virtual-environment.d.ts.map +1 -1
  57. package/dist/virtual-environment.js +8 -1
  58. package/dist/virtual-environment.js.map +1 -1
  59. package/package.json +9 -10
  60. package/dist/coordination.d.ts +0 -25
  61. package/dist/coordination.d.ts.map +0 -1
  62. package/dist/coordination.js +0 -187
  63. package/dist/coordination.js.map +0 -1
  64. package/dist/state.d.ts +0 -10
  65. package/dist/state.d.ts.map +0 -1
  66. package/dist/state.js +0 -62
  67. package/dist/state.js.map +0 -1
package/dist/client.js CHANGED
@@ -1,23 +1,25 @@
1
- import { ensureEnvironment, ensureUv, ensureVirtualEnvironment, } from './provision.js';
2
- import { pipSpawn, pipSpawnSync, pythonSpawn, pythonSpawnSync, uvSpawn, uvSpawnSync, } from './runners.js';
3
- import { clearPyfigCaches } from './state.js';
1
+ import { memoize } from 'loqkit';
2
+ import { ensureEnvironment, ensureUv, } from './provision.js';
3
+ import { uvSpawn, uvSpawnSync } from './runners.js';
4
4
  /** Bind configuration once so consumers cannot accidentally diverge between calls. */
5
5
  export function createPyfig(options = {}) {
6
6
  const scopedOptions = {
7
7
  ...options,
8
8
  env: options.env ? { ...options.env } : undefined,
9
9
  };
10
+ const baseEnvironment = memoize(() => ensureEnvironment(scopedOptions));
11
+ const uvInfo = memoize(() => ensureUv(scopedOptions));
10
12
  return {
11
- prepare: () => ensureEnvironment(scopedOptions),
12
- pythonInfo: () => ensureVirtualEnvironment(scopedOptions),
13
- uvInfo: () => ensureUv(scopedOptions),
14
- python: (args = [], spawnOptions = {}) => pythonSpawn(args, spawnOptions, scopedOptions),
15
- pythonSync: (args = [], spawnOptions = {}) => pythonSpawnSync(args, spawnOptions, scopedOptions),
16
- pip: (args = [], spawnOptions = {}) => pipSpawn(args, spawnOptions, scopedOptions),
17
- pipSync: (args = [], spawnOptions = {}) => pipSpawnSync(args, spawnOptions, scopedOptions),
13
+ prepare: (dependencies = [], dependencyOptions = {}) => dependencies.length === 0 &&
14
+ !dependencyOptions.allExtras &&
15
+ (dependencyOptions.extras?.length ?? 0) === 0 &&
16
+ (dependencyOptions.groups?.length ?? 0) === 0
17
+ ? baseEnvironment()
18
+ : ensureEnvironment(scopedOptions, dependencies, dependencyOptions),
19
+ pythonInfo: async () => (await baseEnvironment()).python,
20
+ uvInfo,
18
21
  uv: (args = [], spawnOptions = {}) => uvSpawn(args, spawnOptions, scopedOptions),
19
22
  uvSync: (args = [], spawnOptions = {}) => uvSpawnSync(args, spawnOptions, scopedOptions),
20
- clearCache: clearPyfigCaches,
21
23
  };
22
24
  }
23
25
  //# sourceMappingURL=client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,iBAAiB,EACjB,QAAQ,EACR,wBAAwB,GAEzB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,WAAW,EACX,eAAe,EACf,OAAO,EACP,WAAW,GACZ,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAyB9C,sFAAsF;AACtF,MAAM,UAAU,WAAW,CAAC,OAAO,GAAiB,EAAE;IACpD,MAAM,aAAa,GAAiB;QAClC,GAAG,OAAO;QACV,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS;KAClD,CAAC;IACF,OAAO;QACL,OAAO,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,aAAa,CAAC;QAC/C,UAAU,EAAE,GAAG,EAAE,CAAC,wBAAwB,CAAC,aAAa,CAAC;QACzD,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;QACrC,MAAM,EAAE,CAAC,IAAI,GAAG,EAAE,EAAE,YAAY,GAAG,EAAE,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,YAAY,EAAE,aAAa,CAAC;QACxF,UAAU,EAAE,CAAC,IAAI,GAAG,EAAE,EAAE,YAAY,GAAG,EAAE,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,YAAY,EAAE,aAAa,CAAC;QAChG,GAAG,EAAE,CAAC,IAAI,GAAG,EAAE,EAAE,YAAY,GAAG,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,YAAY,EAAE,aAAa,CAAC;QAClF,OAAO,EAAE,CAAC,IAAI,GAAG,EAAE,EAAE,YAAY,GAAG,EAAE,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,YAAY,EAAE,aAAa,CAAC;QAC1F,EAAE,EAAE,CAAC,IAAI,GAAG,EAAE,EAAE,YAAY,GAAG,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,YAAY,EAAE,aAAa,CAAC;QAChF,MAAM,EAAE,CAAC,IAAI,GAAG,EAAE,EAAE,YAAY,GAAG,EAAE,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,YAAY,EAAE,aAAa,CAAC;QACxF,UAAU,EAAE,gBAAgB;KAC7B,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAGjC,OAAO,EACL,iBAAiB,EACjB,QAAQ,GAGT,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAiBpD,sFAAsF;AACtF,MAAM,UAAU,WAAW,CAAC,OAAO,GAAiB,EAAE;IACpD,MAAM,aAAa,GAAiB;QAClC,GAAG,OAAO;QACV,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS;KAClD,CAAC;IACF,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC,CAAC;IACxE,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;IACtD,OAAO;QACL,OAAO,EAAE,CAAC,YAAY,GAAG,EAAE,EAAE,iBAAiB,GAAG,EAAE,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC;YAC/E,CAAC,iBAAiB,CAAC,SAAS;YAC5B,CAAC,iBAAiB,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC;YAC7C,CAAC,iBAAiB,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC;YAC7C,CAAC,CAAC,eAAe,EAAE;YACnB,CAAC,CAAC,iBAAiB,CAAC,aAAa,EAAE,YAAY,EAAE,iBAAiB,CAAC;QACrE,UAAU,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,eAAe,EAAE,CAAC,CAAC,MAAM;QACxD,MAAM;QACN,EAAE,EAAE,CAAC,IAAI,GAAG,EAAE,EAAE,YAAY,GAAG,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,YAAY,EAAE,aAAa,CAAC;QAChF,MAAM,EAAE,CAAC,IAAI,GAAG,EAAE,EAAE,YAAY,GAAG,EAAE,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,YAAY,EAAE,aAAa,CAAC;KACzF,CAAC;AACJ,CAAC"}
package/dist/config.d.ts CHANGED
@@ -1,15 +1,12 @@
1
- export declare const DEFAULT_PYTHON_RANGE = ">=3.10.0 <4.0.0";
2
- export declare const DEFAULT_PIP_RANGE = ">=20.3.0";
1
+ export declare const DEFAULT_REQUIRES_PYTHON = ">=3.10,<4";
3
2
  export declare const DEFAULT_MANAGED_PYTHON = "3.12";
4
3
  export declare const DEFAULT_UV_VERSION = "0.13.6";
5
- export declare const DEFAULT_UV_RANGE = ">=0.13.6 <1.0.0";
4
+ export declare const DEFAULT_UV_RANGE = ">=0.10.0 <1.0.0";
6
5
  export interface PyfigOptions {
7
6
  /** Exact interpreter path that an existing or newly created venv must derive from. */
8
7
  python?: string;
9
- /** Accepted Python language-version range. */
10
- pythonRange?: string;
11
- /** Accepted python -m pip version when uv installation is disabled. */
12
- pipRange?: string;
8
+ /** PEP 440 Python version specifier, matching pyproject.toml requires-python. */
9
+ requiresPython?: string;
13
10
  /** uv Python request used only when no compatible interpreter exists. */
14
11
  managedPython?: string;
15
12
  /** Exact uv release installed into Pyfig's private cache. */
@@ -20,17 +17,17 @@ export interface PyfigOptions {
20
17
  requireEmbedding?: boolean;
21
18
  /** Reject free-threaded CPython builds when the consumer requires the GIL ABI. */
22
19
  requireGil?: boolean;
23
- /** Backward-compatible default for the three specific setup policies. */
20
+ /** Shared default for the three specific setup policies. */
24
21
  autoInstall?: boolean;
25
22
  /** Allow uv to install a managed Python when no compatible interpreter exists. */
26
23
  installPython?: boolean;
27
24
  /** Allow Pyfig to install its pinned, checksum-verified uv executable. */
28
25
  installUv?: boolean;
29
- /** Allow creation of the repository-root .venv. */
26
+ /** Allow creation of Pyfig's private environment under node_modules. */
30
27
  createVirtualEnvironment?: boolean;
31
28
  /** Private cache root for uv, managed Python, downloads, and coordination. */
32
29
  cacheDir?: string;
33
- /** Repository root that owns the single `.venv`. */
30
+ /** Repository root that owns node_modules/.pyfig. */
34
31
  projectRoot?: string;
35
32
  /** Maximum duration of one executable capability probe. */
36
33
  probeTimeoutMs?: number;
@@ -40,15 +37,12 @@ export interface PyfigOptions {
40
37
  downloadTimeoutMs?: number;
41
38
  /** Maximum wait for another worker or process provisioning the same resource. */
42
39
  coordinationTimeoutMs?: number;
43
- /** Lifetime of validated realm-local resolution results; zero disables completed caching. */
44
- cacheTtlMs?: number;
45
40
  /** Complete child environment and configuration source for this invocation. */
46
41
  env?: NodeJS.ProcessEnv;
47
42
  }
48
43
  export interface ResolvedPyfigOptions {
49
44
  python: string;
50
- pythonRange: string;
51
- pipRange: string;
45
+ requiresPython: string;
52
46
  managedPython: string;
53
47
  uvVersion: string;
54
48
  uvRange: string;
@@ -64,12 +58,9 @@ export interface ResolvedPyfigOptions {
64
58
  installTimeoutMs: number;
65
59
  downloadTimeoutMs: number;
66
60
  coordinationTimeoutMs: number;
67
- cacheTtlMs: number;
68
61
  env: NodeJS.ProcessEnv;
69
62
  }
70
63
  export declare function resolveOptions(options?: PyfigOptions): ResolvedPyfigOptions;
71
- /** Opaque identity shared by every async and sync resolution cache. */
72
- export declare function configurationFingerprint(options: ResolvedPyfigOptions): string;
73
- /** Keep uv-managed Python and cache data inside pyfig's configured cache root. */
64
+ /** Keep uv data private while preferring a compatible system interpreter. */
74
65
  export declare function uvEnvironment(options: ResolvedPyfigOptions): NodeJS.ProcessEnv;
75
66
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,oBAAoB,oBAAoB,CAAC;AACtD,eAAO,MAAM,iBAAiB,aAAa,CAAC;AAC5C,eAAO,MAAM,sBAAsB,SAAS,CAAC;AAC7C,eAAO,MAAM,kBAAkB,WAAW,CAAC;AAC3C,eAAO,MAAM,gBAAgB,oBAAmC,CAAC;AAmBjE,MAAM,WAAW,YAAY;IAC3B,sFAAsF;IACtF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8CAA8C;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uEAAuE;IACvE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yEAAyE;IACzE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gEAAgE;IAChE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yEAAyE;IACzE,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,kFAAkF;IAClF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,yEAAyE;IACzE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,kFAAkF;IAClF,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,0EAA0E;IAC1E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,mDAAmD;IACnD,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2DAA2D;IAC3D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,yEAAyE;IACzE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,8DAA8D;IAC9D,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iFAAiF;IACjF,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,6FAA6F;IAC7F,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+EAA+E;IAC/E,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACzB;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,OAAO,CAAC;IACvB,SAAS,EAAE,OAAO,CAAC;IACnB,wBAAwB,EAAE,OAAO,CAAC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;CACxB;AAED,wBAAgB,cAAc,CAAC,OAAO,GAAE,YAAiB,GAAG,oBAAoB,CAkF/E;AAED,uEAAuE;AACvE,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,oBAAoB,GAAG,MAAM,CAwB9E;AAED,kFAAkF;AAClF,wBAAgB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,MAAM,CAAC,UAAU,CAM9E"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,uBAAuB,cAAc,CAAC;AACnD,eAAO,MAAM,sBAAsB,SAAS,CAAC;AAC7C,eAAO,MAAM,kBAAkB,WAAW,CAAC;AAG3C,eAAO,MAAM,gBAAgB,oBAAoB,CAAC;AAkBlD,MAAM,WAAW,YAAY;IAC3B,sFAAsF;IACtF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iFAAiF;IACjF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,yEAAyE;IACzE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gEAAgE;IAChE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yEAAyE;IACzE,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,kFAAkF;IAClF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,4DAA4D;IAC5D,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,kFAAkF;IAClF,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,0EAA0E;IAC1E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,wEAAwE;IACxE,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qDAAqD;IACrD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2DAA2D;IAC3D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,yEAAyE;IACzE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,8DAA8D;IAC9D,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iFAAiF;IACjF,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,+EAA+E;IAC/E,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACzB;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,OAAO,CAAC;IACvB,SAAS,EAAE,OAAO,CAAC;IACnB,wBAAwB,EAAE,OAAO,CAAC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;CACxB;AAED,wBAAgB,cAAc,CAAC,OAAO,GAAE,YAAiB,GAAG,oBAAoB,CAuE/E;AAED,6EAA6E;AAC7E,wBAAgB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,MAAM,CAAC,UAAU,CAQ9E"}
package/dist/config.js CHANGED
@@ -1,17 +1,17 @@
1
- import { createHash } from 'node:crypto';
2
1
  import path from 'node:path';
3
2
  import * as envPaths from 'env-paths';
4
3
  import semver from 'semver';
5
4
  import { resolveProjectRoot } from './project-root.js';
6
- export const DEFAULT_PYTHON_RANGE = '>=3.10.0 <4.0.0';
7
- export const DEFAULT_PIP_RANGE = '>=20.3.0';
5
+ import { isValidPythonSpecifier, pythonVersionSatisfies } from './python-version.js';
6
+ export const DEFAULT_REQUIRES_PYTHON = '>=3.10,<4';
8
7
  export const DEFAULT_MANAGED_PYTHON = '3.12';
9
8
  export const DEFAULT_UV_VERSION = '0.13.6';
10
- export const DEFAULT_UV_RANGE = `>=${DEFAULT_UV_VERSION} <1.0.0`;
9
+ // External uv only needs to support the command and isolation flags Pyfig uses.
10
+ // Keep that compatibility floor separate from the newer version Pyfig installs.
11
+ export const DEFAULT_UV_RANGE = '>=0.10.0 <1.0.0';
11
12
  const DEFAULT_PROBE_TIMEOUT_MS = 10_000;
12
13
  const DEFAULT_INSTALL_TIMEOUT_MS = 10 * 60_000;
13
14
  const DEFAULT_DOWNLOAD_TIMEOUT_MS = 5 * 60_000;
14
- const DEFAULT_CACHE_TTL_MS = 30_000;
15
15
  // Bun's CommonJS bundler wraps an external ESM default one level deeper than
16
16
  // Node.js. Normalize that boundary once instead of leaking runtime checks into
17
17
  // configuration resolution.
@@ -26,22 +26,20 @@ export function resolveOptions(options = {}) {
26
26
  // Snapshot the environment so callers cannot change an in-flight policy by
27
27
  // mutating process.env or a reused options object after resolution.
28
28
  const env = { ...(options.env ?? process.env) };
29
- const pythonRange = options.pythonRange ?? env['PYFIG_PYTHON_RANGE'] ?? DEFAULT_PYTHON_RANGE;
30
- const pipRange = options.pipRange ?? env['PYFIG_PIP_RANGE'] ?? DEFAULT_PIP_RANGE;
29
+ const requiresPython = options.requiresPython ??
30
+ env['PYFIG_REQUIRES_PYTHON'] ?? DEFAULT_REQUIRES_PYTHON;
31
31
  const uvRange = options.uvRange ?? env['PYFIG_UV_RANGE'] ?? DEFAULT_UV_RANGE;
32
- assertRange('Python', pythonRange);
33
- assertRange('pip', pipRange);
32
+ assertPythonSpecifier(requiresPython);
34
33
  assertRange('uv', uvRange);
35
34
  const managedPython = options.managedPython ??
36
35
  env['PYFIG_MANAGED_PYTHON'] ?? DEFAULT_MANAGED_PYTHON;
37
36
  const uvVersion = options.uvVersion ?? env['PYFIG_UV_VERSION'] ?? DEFAULT_UV_VERSION;
38
- assertManagedPythonRequest(managedPython, pythonRange);
37
+ assertManagedPythonRequest(managedPython, requiresPython);
39
38
  assertUvVersion(uvVersion, uvRange);
40
39
  const probeTimeoutMs = resolveDuration('probeTimeoutMs', options.probeTimeoutMs, env['PYFIG_PROBE_TIMEOUT_MS'], DEFAULT_PROBE_TIMEOUT_MS);
41
40
  const installTimeoutMs = resolveDuration('installTimeoutMs', options.installTimeoutMs, env['PYFIG_INSTALL_TIMEOUT_MS'], DEFAULT_INSTALL_TIMEOUT_MS);
42
41
  const downloadTimeoutMs = resolveDuration('downloadTimeoutMs', options.downloadTimeoutMs, env['PYFIG_DOWNLOAD_TIMEOUT_MS'], DEFAULT_DOWNLOAD_TIMEOUT_MS);
43
42
  const coordinationTimeoutMs = resolveDuration('coordinationTimeoutMs', options.coordinationTimeoutMs, env['PYFIG_COORDINATION_TIMEOUT_MS'], installTimeoutMs + downloadTimeoutMs + 60_000);
44
- const cacheTtlMs = resolveDuration('cacheTtlMs', options.cacheTtlMs, env['PYFIG_CACHE_TTL_MS'], DEFAULT_CACHE_TTL_MS, true);
45
43
  const configuredHome = options.cacheDir ?? env['PYFIG_HOME'];
46
44
  const cacheDir = configuredHome
47
45
  ? path.resolve(configuredHome)
@@ -49,12 +47,11 @@ export function resolveOptions(options = {}) {
49
47
  const configuredProjectRoot = options.projectRoot ?? env['PYFIG_PROJECT_ROOT'];
50
48
  const projectRoot = configuredProjectRoot
51
49
  ? path.resolve(configuredProjectRoot)
52
- : resolveProjectRoot();
50
+ : resolveProjectRoot(env['INIT_CWD'] ?? process.cwd());
53
51
  const autoInstall = options.autoInstall ?? parseBoolean(env['PYFIG_AUTO_INSTALL'], true);
54
52
  return {
55
53
  python: options.python ?? env['PYFIG_PYTHON'] ?? '',
56
- pythonRange,
57
- pipRange,
54
+ requiresPython,
58
55
  managedPython,
59
56
  uvVersion,
60
57
  uvRange,
@@ -71,42 +68,17 @@ export function resolveOptions(options = {}) {
71
68
  installTimeoutMs,
72
69
  downloadTimeoutMs,
73
70
  coordinationTimeoutMs,
74
- cacheTtlMs,
75
71
  env,
76
72
  };
77
73
  }
78
- /** Opaque identity shared by every async and sync resolution cache. */
79
- export function configurationFingerprint(options) {
80
- const policy = [
81
- normalizedPath(options.projectRoot),
82
- normalizedPath(options.cacheDir),
83
- options.python,
84
- options.pythonRange,
85
- options.pipRange,
86
- options.managedPython,
87
- options.uvVersion,
88
- options.uvRange,
89
- options.requireEmbedding,
90
- options.requireGil,
91
- options.autoInstall,
92
- options.installPython,
93
- options.installUv,
94
- options.createVirtualEnvironment,
95
- options.probeTimeoutMs,
96
- options.installTimeoutMs,
97
- options.downloadTimeoutMs,
98
- options.coordinationTimeoutMs,
99
- options.cacheTtlMs,
100
- environmentFingerprint(options.env),
101
- ];
102
- return createHash('sha256').update(JSON.stringify(policy)).digest('hex');
103
- }
104
- /** Keep uv-managed Python and cache data inside pyfig's configured cache root. */
74
+ /** Keep uv data private while preferring a compatible system interpreter. */
105
75
  export function uvEnvironment(options) {
106
76
  return {
107
77
  ...options.env,
108
78
  UV_PYTHON_INSTALL_DIR: path.join(options.cacheDir, 'python'),
109
79
  UV_CACHE_DIR: path.join(options.cacheDir, 'uv-cache'),
80
+ UV_PYTHON_PREFERENCE: 'system',
81
+ UV_NO_CONFIG: '1',
110
82
  };
111
83
  }
112
84
  function assertRange(tool, range) {
@@ -122,14 +94,19 @@ function assertUvVersion(version, range) {
122
94
  throw new TypeError(`Pinned uv ${version} does not satisfy supported range ${range}.`);
123
95
  }
124
96
  }
125
- function assertManagedPythonRequest(request, pythonRange) {
97
+ function assertPythonSpecifier(specifier) {
98
+ if (!isValidPythonSpecifier(specifier)) {
99
+ throw new TypeError(`Invalid requires-python PEP 440 specifier: ${specifier}`);
100
+ }
101
+ }
102
+ function assertManagedPythonRequest(request, requiresPython) {
126
103
  if (!request || /[\\/\0\r\n]/u.test(request) || request.includes('..')) {
127
104
  throw new TypeError(`Invalid managed Python request: ${request}`);
128
105
  }
129
106
  if (/^\d+\.\d+(?:\.\d+)?$/u.test(request)) {
130
107
  const normalized = request.split('.').length === 2 ? `${request}.0` : request;
131
- if (!semver.satisfies(normalized, pythonRange)) {
132
- throw new TypeError(`Managed Python ${request} cannot satisfy configured range ${pythonRange}.`);
108
+ if (!pythonVersionSatisfies(normalized, requiresPython)) {
109
+ throw new TypeError(`Managed Python ${request} cannot satisfy requires-python ${requiresPython}.`);
133
110
  }
134
111
  }
135
112
  }
@@ -150,18 +127,4 @@ function parseBoolean(value, fallback) {
150
127
  return false;
151
128
  throw new TypeError(`Invalid boolean value: ${value}`);
152
129
  }
153
- function environmentFingerprint(env) {
154
- const entries = Object.entries(env)
155
- .filter((entry) => entry[1] !== undefined)
156
- .map(([key, value]) => [
157
- process.platform === 'win32' ? key.toUpperCase() : key,
158
- value,
159
- ])
160
- .sort(([left], [right]) => left.localeCompare(right));
161
- return createHash('sha256').update(JSON.stringify(entries)).digest('hex');
162
- }
163
- function normalizedPath(value) {
164
- const resolved = path.resolve(value);
165
- return process.platform === 'win32' ? resolved.toLowerCase() : resolved;
166
- }
167
130
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,KAAK,QAAQ,MAAM,WAAW,CAAC;AACtC,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAErF,MAAM,CAAC,MAAM,uBAAuB,GAAG,WAAW,CAAC;AACnD,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAM,CAAC;AAC7C,MAAM,CAAC,MAAM,kBAAkB,GAAG,QAAQ,CAAC;AAC3C,gFAAgF;AAChF,gFAAgF;AAChF,MAAM,CAAC,MAAM,gBAAgB,GAAG,iBAAiB,CAAC;AAElD,MAAM,wBAAwB,GAAG,MAAM,CAAC;AACxC,MAAM,0BAA0B,GAAG,EAAE,GAAG,MAAM,CAAC;AAC/C,MAAM,2BAA2B,GAAG,CAAC,GAAG,MAAM,CAAC;AAE/C,6EAA6E;AAC7E,+EAA+E;AAC/E,4BAA4B;AAC5B,MAAM,gBAAgB,GAAG,CAAC,GAAG,EAAE;IAC7B,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAEzB,CAAC;IACF,MAAM,cAAc,GAAG,OAAO,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;IACpF,IAAI,CAAC,cAAc;QAAE,MAAM,IAAI,SAAS,CAAC,gDAAgD,CAAC,CAAC;IAC3F,OAAO,cAAc,CAAC;AACxB,CAAC,CAAC,EAAE,CAAC;AA8DL,MAAM,UAAU,cAAc,CAAC,OAAO,GAAiB,EAAE;IACvD,2EAA2E;IAC3E,oEAAoE;IACpE,MAAM,GAAG,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;IAChD,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc;QAC3C,GAAG,CAAC,uBAAuB,CAAC,IAAI,uBAAuB,CAAC;IAC1D,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,GAAG,CAAC,gBAAgB,CAAC,IAAI,gBAAgB,CAAC;IAC7E,qBAAqB,CAAC,cAAc,CAAC,CAAC;IACtC,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAE3B,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa;QACzC,GAAG,CAAC,sBAAsB,CAAC,IAAI,sBAAsB,CAAC;IACxD,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,GAAG,CAAC,kBAAkB,CAAC,IAAI,kBAAkB,CAAC;IACrF,0BAA0B,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;IAC1D,eAAe,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAEpC,MAAM,cAAc,GAAG,eAAe,CACpC,gBAAgB,EAChB,OAAO,CAAC,cAAc,EACtB,GAAG,CAAC,wBAAwB,CAAC,EAC7B,wBAAwB,CACzB,CAAC;IACF,MAAM,gBAAgB,GAAG,eAAe,CACtC,kBAAkB,EAClB,OAAO,CAAC,gBAAgB,EACxB,GAAG,CAAC,0BAA0B,CAAC,EAC/B,0BAA0B,CAC3B,CAAC;IACF,MAAM,iBAAiB,GAAG,eAAe,CACvC,mBAAmB,EACnB,OAAO,CAAC,iBAAiB,EACzB,GAAG,CAAC,2BAA2B,CAAC,EAChC,2BAA2B,CAC5B,CAAC;IACF,MAAM,qBAAqB,GAAG,eAAe,CAC3C,uBAAuB,EACvB,OAAO,CAAC,qBAAqB,EAC7B,GAAG,CAAC,+BAA+B,CAAC,EACpC,gBAAgB,GAAG,iBAAiB,GAAG,MAAM,CAC9C,CAAC;IACF,MAAM,cAAc,GAAG,OAAO,CAAC,QAAQ,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC;IAC7D,MAAM,QAAQ,GAAG,cAAc;QAC7B,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC;QAC9B,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;IACpD,MAAM,qBAAqB,GAAG,OAAO,CAAC,WAAW,IAAI,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAC/E,MAAM,WAAW,GAAG,qBAAqB;QACvC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC;QACrC,CAAC,CAAC,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACzD,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,YAAY,CAAC,GAAG,CAAC,oBAAoB,CAAC,EAAE,IAAI,CAAC,CAAC;IAEzF,OAAO;QACL,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE;QACnD,cAAc;QACd,aAAa;QACb,SAAS;QACT,OAAO;QACP,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,IAAI,YAAY,CAAC,GAAG,CAAC,yBAAyB,CAAC,EAAE,KAAK,CAAC;QACjG,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,YAAY,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAE,KAAK,CAAC;QAC/E,WAAW;QACX,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,YAAY,CAAC,GAAG,CAAC,sBAAsB,CAAC,EAAE,WAAW,CAAC;QAC9F,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,YAAY,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE,WAAW,CAAC;QAClF,wBAAwB,EAAE,OAAO,CAAC,wBAAwB;YACxD,YAAY,CAAC,GAAG,CAAC,kCAAkC,CAAC,EAAE,WAAW,CAAC;QACpE,QAAQ;QACR,WAAW;QACX,cAAc;QACd,gBAAgB;QAChB,iBAAiB;QACjB,qBAAqB;QACrB,GAAG;KACJ,CAAC;AACJ,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,aAAa,CAAC,OAA6B;IACzD,OAAO;QACL,GAAG,OAAO,CAAC,GAAG;QACd,qBAAqB,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC;QAC5D,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC;QACrD,oBAAoB,EAAE,QAAQ;QAC9B,YAAY,EAAE,GAAG;KAClB,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,IAAY,EAAE,KAAa;IAC9C,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,SAAS,CAAC,WAAW,IAAI,kBAAkB,KAAK,EAAE,CAAC,CAAC;IAChE,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,OAAe,EAAE,KAAa;IACrD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,SAAS,CAAC,6BAA6B,OAAO,EAAE,CAAC,CAAC;IAC9D,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,SAAS,CAAC,aAAa,OAAO,qCAAqC,KAAK,GAAG,CAAC,CAAC;IACzF,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,SAAiB;IAC9C,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,SAAS,CAAC,8CAA8C,SAAS,EAAE,CAAC,CAAC;IACjF,CAAC;AACH,CAAC;AAED,SAAS,0BAA0B,CAAC,OAAe,EAAE,cAAsB;IACzE,IAAI,CAAC,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACvE,MAAM,IAAI,SAAS,CAAC,mCAAmC,OAAO,EAAE,CAAC,CAAC;IACpE,CAAC;IACD,IAAI,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1C,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;QAC9E,IAAI,CAAC,sBAAsB,CAAC,UAAU,EAAE,cAAc,CAAC,EAAE,CAAC;YACxD,MAAM,IAAI,SAAS,CACjB,kBAAkB,OAAO,mCAAmC,cAAc,GAAG,CAC9E,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CACtB,IAAY,EACZ,QAA4B,EAC5B,WAA+B,EAC/B,QAAgB,EAChB,SAAS,GAAG,KAAK;IAEjB,MAAM,KAAK,GAAG,QAAQ,IAAI,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;IACvF,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,OAAO,EAAE,CAAC;QACpD,MAAM,IAAI,SAAS,CAAC,GAAG,IAAI,YAAY,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAAY,WAAW,CAAC,CAAC;IACjG,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,YAAY,CAAC,KAAyB,EAAE,QAAiB;IAChE,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC;IACzC,IAAI,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACnD,IAAI,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACrD,MAAM,IAAI,SAAS,CAAC,0BAA0B,KAAK,EAAE,CAAC,CAAC;AACzD,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,11 +1,10 @@
1
- export { DEFAULT_MANAGED_PYTHON, DEFAULT_PIP_RANGE, DEFAULT_PYTHON_RANGE, DEFAULT_UV_RANGE, DEFAULT_UV_VERSION, } from './config.js';
1
+ export { DEFAULT_MANAGED_PYTHON, DEFAULT_REQUIRES_PYTHON, DEFAULT_UV_RANGE, DEFAULT_UV_VERSION, } from './config.js';
2
2
  export type { PyfigOptions } from './config.js';
3
3
  export { createPyfig } from './client.js';
4
4
  export type { PyfigClient } from './client.js';
5
5
  export { resolveProjectRoot } from './project-root.js';
6
- export type { PackageManagerInfo, PythonEmbeddingInfo, PythonInfo, UvInfo, } from './probes.js';
7
- export { ensureEnvironment, ensureUv, ensureVirtualEnvironment, } from './provision.js';
8
- export type { PythonEnvironment } from './provision.js';
9
- export { pipSpawn, pipSpawnSync, pythonSpawn, pythonSpawnSync, uvSpawn, uvSpawnSync, } from './runners.js';
10
- export { clearPyfigCaches } from './state.js';
6
+ export type { PythonEmbeddingInfo, PythonInfo, UvInfo, } from './probes.js';
7
+ export { ensureEnvironment, ensureUv, } from './provision.js';
8
+ export type { PythonEnvironment, RuntimeDependencyOptions } from './provision.js';
9
+ export { uvSpawn, uvSpawnSync, } from './runners.js';
11
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,oBAAoB,EACpB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,YAAY,EACV,kBAAkB,EAClB,mBAAmB,EACnB,UAAU,EACV,MAAM,GACP,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,iBAAiB,EACjB,QAAQ,EACR,wBAAwB,GACzB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,WAAW,EACX,eAAe,EACf,OAAO,EACP,WAAW,GACZ,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,YAAY,EACV,mBAAmB,EACnB,UAAU,EACV,MAAM,GACP,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,iBAAiB,EACjB,QAAQ,GACT,MAAM,gBAAgB,CAAC;AACxB,YAAY,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAClF,OAAO,EACL,OAAO,EACP,WAAW,GACZ,MAAM,cAAc,CAAC"}
package/dist/index.js CHANGED
@@ -1,7 +1,6 @@
1
- export { DEFAULT_MANAGED_PYTHON, DEFAULT_PIP_RANGE, DEFAULT_PYTHON_RANGE, DEFAULT_UV_RANGE, DEFAULT_UV_VERSION, } from './config.js';
1
+ export { DEFAULT_MANAGED_PYTHON, DEFAULT_REQUIRES_PYTHON, DEFAULT_UV_RANGE, DEFAULT_UV_VERSION, } from './config.js';
2
2
  export { createPyfig } from './client.js';
3
3
  export { resolveProjectRoot } from './project-root.js';
4
- export { ensureEnvironment, ensureUv, ensureVirtualEnvironment, } from './provision.js';
5
- export { pipSpawn, pipSpawnSync, pythonSpawn, pythonSpawnSync, uvSpawn, uvSpawnSync, } from './runners.js';
6
- export { clearPyfigCaches } from './state.js';
4
+ export { ensureEnvironment, ensureUv, } from './provision.js';
5
+ export { uvSpawn, uvSpawnSync, } from './runners.js';
7
6
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,oBAAoB,EACpB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAOvD,OAAO,EACL,iBAAiB,EACjB,QAAQ,EACR,wBAAwB,GACzB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,WAAW,EACX,eAAe,EACf,OAAO,EACP,WAAW,GACZ,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAMvD,OAAO,EACL,iBAAiB,EACjB,QAAQ,GACT,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,OAAO,EACP,WAAW,GACZ,MAAM,cAAc,CAAC"}
@@ -1,12 +1,8 @@
1
- import type { PackageManagerInfo, PythonInfo } from './probes.js';
2
- /** Reject package-manager arguments that can escape the selected repository venv. */
3
- export declare function assertSafePackageArguments(args: readonly string[]): void;
4
- /** Build a package-manager environment whose target cannot be inherited or configured elsewhere. */
5
- export declare function packageManagerEnvironment(env: NodeJS.ProcessEnv, packageManager: PackageManagerInfo): NodeJS.ProcessEnv;
6
- /** Apply the same strict target policy to a direct `uv pip` invocation. */
7
- export declare function uvPipEnvironment(env: NodeJS.ProcessEnv, python: PythonInfo): NodeJS.ProcessEnv;
8
- /** Package installation and removal must use uv so its target-environment lock is authoritative. */
9
- export declare function assertMutationUsesUv(packageManager: PackageManagerInfo, args: readonly string[]): void;
10
- export declare function isPackageMutation(args: readonly string[]): boolean;
11
- export declare function isUvPipCommand(args: readonly string[]): boolean;
1
+ import type { PythonInfo } from './probes.js';
2
+ export declare function uvCommandNeedsEnvironment(args: readonly string[]): boolean;
3
+ /** Pin uv pip and uv run to the environment selected by Pyfig. */
4
+ export declare function targetUvArguments(args: readonly string[], python: PythonInfo): string[];
5
+ export declare function uvCommandEnvironment(env: NodeJS.ProcessEnv, python?: PythonInfo): NodeJS.ProcessEnv;
6
+ /** Remove inherited values that could redirect uv away from an explicit target. */
7
+ export declare function sanitizeUvEnvironment(env: NodeJS.ProcessEnv): NodeJS.ProcessEnv;
12
8
  //# sourceMappingURL=package-target.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"package-target.d.ts","sourceRoot":"","sources":["../src/package-target.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAkClE,qFAAqF;AACrF,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAgBxE;AAED,oGAAoG;AACpG,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,cAAc,EAAE,kBAAkB,GACjC,MAAM,CAAC,UAAU,CAmBnB;AAED,2EAA2E;AAC3E,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,MAAM,EAAE,UAAU,GACjB,MAAM,CAAC,UAAU,CAanB;AAED,oGAAoG;AACpG,wBAAgB,oBAAoB,CAClC,cAAc,EAAE,kBAAkB,EAClC,IAAI,EAAE,SAAS,MAAM,EAAE,GACtB,IAAI,CAON;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAGlE;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAI/D"}
1
+ {"version":3,"file":"package-target.d.ts","sourceRoot":"","sources":["../src/package-target.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAoC9C,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAE1E;AAED,kEAAkE;AAClE,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,MAAM,EAAE,UAAU,GACjB,MAAM,EAAE,CAYV;AAED,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,MAAM,CAAC,EAAE,UAAU,GAClB,MAAM,CAAC,UAAU,CAWnB;AAED,mFAAmF;AACnF,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAM/E"}
@@ -1,18 +1,19 @@
1
- import os from 'node:os';
2
1
  import { activateVirtualEnvironment } from './virtual-environment.js';
3
- const TARGET_CHANGING_OPTIONS = new Set([
2
+ const TARGET_OPTIONS = new Set([
3
+ '--active',
4
4
  '--config-file',
5
+ '--directory',
6
+ '--isolated',
5
7
  '--prefix',
8
+ '--project',
6
9
  '--python',
7
10
  '--root',
8
11
  '--system',
9
12
  '--target',
10
13
  '--user',
11
14
  ]);
12
- const TARGET_CHANGING_SHORT_OPTIONS = new Set(['-p', '-t']);
13
15
  const TARGET_ENVIRONMENT_VARIABLES = new Set([
14
16
  'CONDA_PREFIX',
15
- 'PIP_CONFIG_FILE',
16
17
  'PIP_PREFIX',
17
18
  'PIP_PYTHON',
18
19
  'PIP_ROOT',
@@ -21,72 +22,42 @@ const TARGET_ENVIRONMENT_VARIABLES = new Set([
21
22
  'PYTHONHOME',
22
23
  'PYTHONUSERBASE',
23
24
  'UV_CONFIG_FILE',
25
+ 'UV_PROJECT',
24
26
  'UV_PROJECT_ENVIRONMENT',
25
- 'UV_PREFIX',
26
27
  'UV_PYTHON',
28
+ 'UV_PREFIX',
27
29
  'UV_ROOT',
28
30
  'UV_SYSTEM_PYTHON',
29
31
  'UV_TARGET',
30
32
  ]);
31
- /** Reject package-manager arguments that can escape the selected repository venv. */
32
- export function assertSafePackageArguments(args) {
33
- for (const argument of args) {
34
- if (argument === '--')
35
- break;
36
- const [name] = argument.split('=', 1);
37
- if (name && TARGET_CHANGING_OPTIONS.has(name)) {
38
- throw new Error(`${name} is not allowed because Pyfig package commands are pinned to the repository .venv.`);
39
- }
40
- const shortName = argument.slice(0, 2);
41
- if (TARGET_CHANGING_SHORT_OPTIONS.has(shortName)) {
42
- throw new Error(`${shortName} is not allowed because Pyfig package commands are pinned to the repository .venv.`);
43
- }
44
- }
45
- }
46
- /** Build a package-manager environment whose target cannot be inherited or configured elsewhere. */
47
- export function packageManagerEnvironment(env, packageManager) {
48
- const active = sanitizedTargetEnvironment(env);
49
- const activated = activateVirtualEnvironment(active, packageManager.virtualEnvironment, packageManager.pythonExecutable);
50
- return packageManager.kind === 'uv'
51
- ? {
52
- ...activated,
53
- UV_NO_CONFIG: '1',
54
- UV_PYTHON: packageManager.pythonExecutable,
55
- }
56
- : {
57
- ...activated,
58
- PIP_CONFIG_FILE: os.devNull,
59
- PIP_REQUIRE_VIRTUALENV: '1',
60
- PYTHONNOUSERSITE: '1',
61
- };
33
+ export function uvCommandNeedsEnvironment(args) {
34
+ return args[0] === 'pip' || args[0] === 'run';
62
35
  }
63
- /** Apply the same strict target policy to a direct `uv pip` invocation. */
64
- export function uvPipEnvironment(env, python) {
36
+ /** Pin uv pip and uv run to the environment selected by Pyfig. */
37
+ export function targetUvArguments(args, python) {
65
38
  if (!python.virtualEnvironment) {
66
- throw new Error('uv pip commands require the repository virtual environment.');
39
+ throw new Error('Targeted uv commands require a virtual environment.');
40
+ }
41
+ assertNoTargetOverride(args);
42
+ if (args[0] === 'run') {
43
+ return ['run', '--no-project', '--python', python.executable, ...args.slice(1)];
44
+ }
45
+ if (args[0] === 'pip' && args[1]) {
46
+ return ['pip', args[1], '--python', python.executable, ...args.slice(2)];
67
47
  }
48
+ return [...args];
49
+ }
50
+ export function uvCommandEnvironment(env, python) {
51
+ const sanitized = sanitizeUvEnvironment(env);
52
+ if (!python?.virtualEnvironment)
53
+ return sanitized;
68
54
  return {
69
- ...activateVirtualEnvironment(sanitizedTargetEnvironment(env), python.virtualEnvironment, python.executable),
70
- UV_NO_CONFIG: '1',
55
+ ...activateVirtualEnvironment(sanitized, python.virtualEnvironment, python.executable),
71
56
  UV_PYTHON: python.executable,
72
57
  };
73
58
  }
74
- /** Package installation and removal must use uv so its target-environment lock is authoritative. */
75
- export function assertMutationUsesUv(packageManager, args) {
76
- if (packageManager.kind === 'pip' && isPackageMutation(args)) {
77
- throw new Error('Package mutation requires uv so the repository environment is locked across processes. ' +
78
- 'Enable uv installation or use a read-only pip command.');
79
- }
80
- }
81
- export function isPackageMutation(args) {
82
- return args.some((argument) => argument === 'install' || argument === 'sync' || argument === 'uninstall');
83
- }
84
- export function isUvPipCommand(args) {
85
- const separator = args.indexOf('--');
86
- const commandArguments = separator === -1 ? args : args.slice(0, separator);
87
- return commandArguments.includes('pip');
88
- }
89
- function sanitizedTargetEnvironment(env) {
59
+ /** Remove inherited values that could redirect uv away from an explicit target. */
60
+ export function sanitizeUvEnvironment(env) {
90
61
  const sanitized = { ...env };
91
62
  for (const key of Object.keys(sanitized)) {
92
63
  if (TARGET_ENVIRONMENT_VARIABLES.has(key.toUpperCase()))
@@ -94,4 +65,17 @@ function sanitizedTargetEnvironment(env) {
94
65
  }
95
66
  return sanitized;
96
67
  }
68
+ function assertNoTargetOverride(args) {
69
+ for (const argument of args.slice(1)) {
70
+ if (argument === '--')
71
+ return;
72
+ const [name] = argument.split('=', 1);
73
+ if (name && TARGET_OPTIONS.has(name)) {
74
+ throw new Error(`${name} cannot override the environment selected by Pyfig.`);
75
+ }
76
+ if (argument === '-p' || argument.startsWith('-p=') || /^-p[^-]/u.test(argument)) {
77
+ throw new Error('-p cannot override the environment selected by Pyfig.');
78
+ }
79
+ }
80
+ }
97
81
  //# sourceMappingURL=package-target.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"package-target.js","sourceRoot":"","sources":["../src/package-target.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AAEzB,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAEtE,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC;IACtC,eAAe;IACf,UAAU;IACV,UAAU;IACV,QAAQ;IACR,UAAU;IACV,UAAU;IACV,QAAQ;CACT,CAAC,CAAC;AAEH,MAAM,6BAA6B,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AAE5D,MAAM,4BAA4B,GAAG,IAAI,GAAG,CAAC;IAC3C,cAAc;IACd,iBAAiB;IACjB,YAAY;IACZ,YAAY;IACZ,UAAU;IACV,YAAY;IACZ,UAAU;IACV,YAAY;IACZ,gBAAgB;IAChB,gBAAgB;IAChB,wBAAwB;IACxB,WAAW;IACX,WAAW;IACX,SAAS;IACT,kBAAkB;IAClB,WAAW;CACZ,CAAC,CAAC;AAEH,qFAAqF;AACrF,MAAM,UAAU,0BAA0B,CAAC,IAAuB;IAChE,KAAK,MAAM,QAAQ,IAAI,IAAI,EAAE,CAAC;QAC5B,IAAI,QAAQ,KAAK,IAAI;YAAE,MAAM;QAC7B,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACtC,IAAI,IAAI,IAAI,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CACb,GAAG,IAAI,oFAAoF,CAC5F,CAAC;QACJ,CAAC;QACD,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,6BAA6B,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACjD,MAAM,IAAI,KAAK,CACb,GAAG,SAAS,oFAAoF,CACjG,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAED,oGAAoG;AACpG,MAAM,UAAU,yBAAyB,CACvC,GAAsB,EACtB,cAAkC;IAElC,MAAM,MAAM,GAAG,0BAA0B,CAAC,GAAG,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,0BAA0B,CAC1C,MAAM,EACN,cAAc,CAAC,kBAAkB,EACjC,cAAc,CAAC,gBAAgB,CAChC,CAAC;IACF,OAAO,cAAc,CAAC,IAAI,KAAK,IAAI;QACjC,CAAC,CAAC;YACE,GAAG,SAAS;YACZ,YAAY,EAAE,GAAG;YACjB,SAAS,EAAE,cAAc,CAAC,gBAAgB;SAC3C;QACH,CAAC,CAAC;YACE,GAAG,SAAS;YACZ,eAAe,EAAE,EAAE,CAAC,OAAO;YAC3B,sBAAsB,EAAE,GAAG;YAC3B,gBAAgB,EAAE,GAAG;SACtB,CAAC;AACR,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,gBAAgB,CAC9B,GAAsB,EACtB,MAAkB;IAElB,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;IACjF,CAAC;IACD,OAAO;QACL,GAAG,0BAA0B,CAC3B,0BAA0B,CAAC,GAAG,CAAC,EAC/B,MAAM,CAAC,kBAAkB,EACzB,MAAM,CAAC,UAAU,CAClB;QACD,YAAY,EAAE,GAAG;QACjB,SAAS,EAAE,MAAM,CAAC,UAAU;KAC7B,CAAC;AACJ,CAAC;AAED,oGAAoG;AACpG,MAAM,UAAU,oBAAoB,CAClC,cAAkC,EAClC,IAAuB;IAEvB,IAAI,cAAc,CAAC,IAAI,KAAK,KAAK,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7D,MAAM,IAAI,KAAK,CACb,yFAAyF;YACzF,wDAAwD,CACzD,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAuB;IACvD,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAC5B,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,WAAW,CAAC,CAAC;AAC/E,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAuB;IACpD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,gBAAgB,GAAG,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IAC5E,OAAO,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC1C,CAAC;AAED,SAAS,0BAA0B,CAAC,GAAsB;IACxD,MAAM,SAAS,GAAG,EAAE,GAAG,GAAG,EAAE,CAAC;IAC7B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QACzC,IAAI,4BAA4B,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;YAAE,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;IACjF,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"package-target.js","sourceRoot":"","sources":["../src/package-target.ts"],"names":[],"mappings":"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"}
package/dist/probes.d.ts CHANGED
@@ -25,30 +25,12 @@ export interface PythonEmbeddingInfo {
25
25
  libraryName: string;
26
26
  libraryKind: 'import' | 'shared' | 'static';
27
27
  }
28
- export interface PackageManagerInfo {
29
- kind: 'pip' | 'uv';
30
- executable: string;
31
- prefixArgs: string[];
32
- version: string;
33
- pythonExecutable: string;
34
- virtualEnvironment: string;
35
- }
36
28
  export interface UvInfo {
37
29
  executable: string;
38
30
  version: string;
39
31
  }
40
- export declare function findPython(options: ResolvedPyfigOptions): Promise<PythonInfo | null>;
41
- export declare function pythonSatisfiesRequirements(python: PythonInfo, options: Pick<ResolvedPyfigOptions, 'pythonRange' | 'requireEmbedding' | 'requireGil'>): boolean;
32
+ export declare function pythonSatisfiesPolicy(python: PythonInfo, options: Pick<ResolvedPyfigOptions, 'requiresPython' | 'requireEmbedding' | 'requireGil'>): boolean;
42
33
  export declare function probePython(candidate: CommandSpec, options: ResolvedPyfigOptions): Promise<PythonInfo | null>;
43
- export declare function findPip(python: PythonInfo, options: ResolvedPyfigOptions): Promise<PackageManagerInfo | null>;
44
- export interface PipVersionDetails {
45
- version: string;
46
- location: string;
47
- pythonMajor: number;
48
- pythonMinor: number;
49
- }
50
- export declare function parsePipVersionOutput(output: string): PipVersionDetails | null;
51
- export declare function pipBelongsToPython(pip: PipVersionDetails, python: PythonInfo): boolean;
52
34
  export declare function findUv(options: ResolvedPyfigOptions): Promise<UvInfo | null>;
53
35
  export declare function probeUv(executable: string, options: ResolvedPyfigOptions): UvInfo | null;
54
36
  //# sourceMappingURL=probes.d.ts.map
@@ -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;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"}
1
+ {"version":3,"file":"probes.d.ts","sourceRoot":"","sources":["../src/probes.ts"],"names":[],"mappings":"AACA,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,MAAM;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AA+ED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,IAAI,CAAC,oBAAoB,EAAE,gBAAgB,GAAG,kBAAkB,GAAG,YAAY,CAAC,GACxF,OAAO,CAQT;AAED,wBAAsB,WAAW,CAC/B,SAAS,EAAE,WAAW,EACtB,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAe5B;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"}