pyfig 0.7.0 → 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.
- package/README.md +76 -178
- package/SECURITY.md +16 -5
- package/dist/cjs/index.js +482 -1131
- package/dist/cjs/index.js.map +6 -16
- package/dist/index.d.ts +2 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -5
- package/dist/index.js.map +1 -1
- package/dist/process.d.ts +6 -12
- package/dist/process.d.ts.map +1 -1
- package/dist/process.js +35 -54
- package/dist/process.js.map +1 -1
- package/dist/pyfig.d.ts +31 -0
- package/dist/pyfig.d.ts.map +1 -0
- package/dist/pyfig.js +275 -0
- package/dist/pyfig.js.map +1 -0
- package/dist/uv.d.ts +3 -0
- package/dist/uv.d.ts.map +1 -0
- package/dist/uv.js +423 -0
- package/dist/uv.js.map +1 -0
- package/package.json +6 -12
- package/dist/cjs/sync-resolver.js +0 -1342
- package/dist/cjs/sync-resolver.js.map +0 -20
- package/dist/cli.d.ts +0 -3
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js +0 -57
- package/dist/cli.js.map +0 -1
- package/dist/client.d.ts +0 -15
- package/dist/client.d.ts.map +0 -1
- package/dist/client.js +0 -35
- package/dist/client.js.map +0 -1
- package/dist/config.d.ts +0 -69
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js +0 -159
- package/dist/config.js.map +0 -1
- package/dist/package-target.d.ts +0 -8
- package/dist/package-target.d.ts.map +0 -1
- package/dist/package-target.js +0 -81
- package/dist/package-target.js.map +0 -1
- package/dist/pep440.d.ts +0 -12
- package/dist/pep440.d.ts.map +0 -1
- package/dist/pep440.js +0 -21
- package/dist/pep440.js.map +0 -1
- package/dist/probes.d.ts +0 -37
- package/dist/probes.d.ts.map +0 -1
- package/dist/probes.js +0 -145
- package/dist/probes.js.map +0 -1
- package/dist/project-root.d.ts +0 -3
- package/dist/project-root.d.ts.map +0 -1
- package/dist/project-root.js +0 -22
- package/dist/project-root.js.map +0 -1
- package/dist/provision-lock.d.ts +0 -10
- package/dist/provision-lock.d.ts.map +0 -1
- package/dist/provision-lock.js +0 -24
- package/dist/provision-lock.js.map +0 -1
- package/dist/provision.d.ts +0 -20
- package/dist/provision.d.ts.map +0 -1
- package/dist/provision.js +0 -673
- package/dist/provision.js.map +0 -1
- package/dist/python-venv.d.ts +0 -12
- package/dist/python-venv.d.ts.map +0 -1
- package/dist/python-venv.js +0 -52
- package/dist/python-venv.js.map +0 -1
- package/dist/runners.d.ts +0 -14
- package/dist/runners.d.ts.map +0 -1
- package/dist/runners.js +0 -71
- package/dist/runners.js.map +0 -1
- package/dist/runtime-files.d.ts +0 -3
- package/dist/runtime-files.d.ts.map +0 -1
- package/dist/runtime-files.js +0 -12
- package/dist/runtime-files.js.map +0 -1
- package/dist/sync-resolver.d.ts +0 -2
- package/dist/sync-resolver.d.ts.map +0 -1
- package/dist/sync-resolver.js +0 -15
- package/dist/sync-resolver.js.map +0 -1
- package/dist/venv-identity.d.ts +0 -36
- package/dist/venv-identity.d.ts.map +0 -1
- package/dist/venv-identity.js +0 -80
- package/dist/venv-identity.js.map +0 -1
package/dist/config.js
DELETED
|
@@ -1,159 +0,0 @@
|
|
|
1
|
-
import path from 'node:path';
|
|
2
|
-
import * as envPaths from 'env-paths';
|
|
3
|
-
import { isValidPep440Specifier, pep440VersionSatisfies, } from './pep440.js';
|
|
4
|
-
import { resolveProjectRoot } from './project-root.js';
|
|
5
|
-
export const DEFAULT_REQUIRES_PYTHON = '>=3.10,<4';
|
|
6
|
-
export const DEFAULT_MANAGED_PYTHON = '3.12';
|
|
7
|
-
// External uv only needs to support the command and isolation flags Pyfig uses.
|
|
8
|
-
// The installer resolves the greatest published release allowed by this policy.
|
|
9
|
-
export const DEFAULT_REQUIRES_UV = '>=0.10,<1';
|
|
10
|
-
const DEFAULT_PROBE_TIMEOUT_MS = 10_000;
|
|
11
|
-
const DEFAULT_INSTALL_TIMEOUT_MS = 10 * 60_000;
|
|
12
|
-
const DEFAULT_DOWNLOAD_TIMEOUT_MS = 5 * 60_000;
|
|
13
|
-
// Bun's CommonJS bundler wraps an external ESM default one level deeper than
|
|
14
|
-
// Node.js. Normalize that boundary once instead of leaking runtime checks into
|
|
15
|
-
// configuration resolution.
|
|
16
|
-
const envPathsFunction = (() => {
|
|
17
|
-
const imported = envPaths.default;
|
|
18
|
-
const implementation = typeof imported === 'function' ? imported : imported.default;
|
|
19
|
-
if (!implementation)
|
|
20
|
-
throw new TypeError('env-paths did not expose its default function.');
|
|
21
|
-
return implementation;
|
|
22
|
-
})();
|
|
23
|
-
export function resolveOptions(options = {}) {
|
|
24
|
-
// Snapshot the environment so callers cannot change an in-flight policy by
|
|
25
|
-
// mutating process.env or a reused options object after resolution.
|
|
26
|
-
const env = { ...(options.env ?? process.env) };
|
|
27
|
-
const requiresPython = options.requiresPython ??
|
|
28
|
-
env['PYFIG_REQUIRES_PYTHON'] ?? DEFAULT_REQUIRES_PYTHON;
|
|
29
|
-
const requiresUv = options.requiresUv ?? env['PYFIG_REQUIRES_UV'] ?? DEFAULT_REQUIRES_UV;
|
|
30
|
-
assertPep440Specifier('requires-python', requiresPython);
|
|
31
|
-
assertPep440Specifier('requires-uv', requiresUv);
|
|
32
|
-
const managedPython = options.managedPython ??
|
|
33
|
-
env['PYFIG_MANAGED_PYTHON'] ?? DEFAULT_MANAGED_PYTHON;
|
|
34
|
-
assertManagedPythonRequest(managedPython, requiresPython);
|
|
35
|
-
const probeTimeoutMs = resolveDuration('probeTimeoutMs', options.probeTimeoutMs, env['PYFIG_PROBE_TIMEOUT_MS'], DEFAULT_PROBE_TIMEOUT_MS);
|
|
36
|
-
const installTimeoutMs = resolveDuration('installTimeoutMs', options.installTimeoutMs, env['PYFIG_INSTALL_TIMEOUT_MS'], DEFAULT_INSTALL_TIMEOUT_MS);
|
|
37
|
-
const downloadTimeoutMs = resolveDuration('downloadTimeoutMs', options.downloadTimeoutMs, env['PYFIG_DOWNLOAD_TIMEOUT_MS'], DEFAULT_DOWNLOAD_TIMEOUT_MS);
|
|
38
|
-
const coordinationTimeoutMs = resolveDuration('coordinationTimeoutMs', options.coordinationTimeoutMs, env['PYFIG_COORDINATION_TIMEOUT_MS'], installTimeoutMs + downloadTimeoutMs + 60_000);
|
|
39
|
-
const configuredHome = options.cacheDir ?? env['PYFIG_HOME'];
|
|
40
|
-
const cacheDir = configuredHome
|
|
41
|
-
? path.resolve(configuredHome)
|
|
42
|
-
: envPathsFunction('pyfig', { suffix: '' }).cache;
|
|
43
|
-
const configuredProjectRoot = options.projectRoot ?? env['PYFIG_PROJECT_ROOT'];
|
|
44
|
-
const projectRoot = configuredProjectRoot
|
|
45
|
-
? path.resolve(configuredProjectRoot)
|
|
46
|
-
: resolveProjectRoot(env['INIT_CWD'] ?? process.cwd());
|
|
47
|
-
const autoInstall = options.autoInstall ?? parseBoolean(env['PYFIG_AUTO_INSTALL'], true);
|
|
48
|
-
const dependencies = normalizeDependencies(options.dependencies ?? []);
|
|
49
|
-
const requirements = normalizeRequirements(options.requirements ?? [], projectRoot);
|
|
50
|
-
return {
|
|
51
|
-
dependencies,
|
|
52
|
-
requirements,
|
|
53
|
-
python: options.python ?? env['PYFIG_PYTHON'] ?? '',
|
|
54
|
-
requiresPython,
|
|
55
|
-
managedPython,
|
|
56
|
-
requiresUv,
|
|
57
|
-
requireEmbedding: options.requireEmbedding ?? parseBoolean(env['PYFIG_REQUIRE_EMBEDDING'], false),
|
|
58
|
-
requireGil: options.requireGil ?? parseBoolean(env['PYFIG_REQUIRE_GIL'], false),
|
|
59
|
-
autoInstall,
|
|
60
|
-
installPython: options.installPython ?? parseBoolean(env['PYFIG_INSTALL_PYTHON'], autoInstall),
|
|
61
|
-
installUv: options.installUv ?? parseBoolean(env['PYFIG_INSTALL_UV'], autoInstall),
|
|
62
|
-
createVirtualEnvironment: options.createVirtualEnvironment ??
|
|
63
|
-
parseBoolean(env['PYFIG_CREATE_VIRTUAL_ENVIRONMENT'], autoInstall),
|
|
64
|
-
cacheDir,
|
|
65
|
-
projectRoot,
|
|
66
|
-
probeTimeoutMs,
|
|
67
|
-
installTimeoutMs,
|
|
68
|
-
downloadTimeoutMs,
|
|
69
|
-
coordinationTimeoutMs,
|
|
70
|
-
env,
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
|
-
export function hasRuntimeRequirements(options) {
|
|
74
|
-
return options.dependencies.length > 0 || options.requirements.length > 0;
|
|
75
|
-
}
|
|
76
|
-
/** Keep uv data private while preferring a compatible system interpreter. */
|
|
77
|
-
export function uvProcessEnvironment(options) {
|
|
78
|
-
return {
|
|
79
|
-
...options.env,
|
|
80
|
-
UV_PYTHON_INSTALL_DIR: path.join(options.cacheDir, 'python'),
|
|
81
|
-
UV_CACHE_DIR: path.join(options.cacheDir, 'uv-cache'),
|
|
82
|
-
UV_PYTHON_PREFERENCE: 'system',
|
|
83
|
-
UV_NO_CONFIG: '1',
|
|
84
|
-
};
|
|
85
|
-
}
|
|
86
|
-
function assertPep440Specifier(name, specifier) {
|
|
87
|
-
if (!isValidPep440Specifier(specifier)) {
|
|
88
|
-
throw new TypeError(`Invalid ${name} PEP 440 specifier: ${specifier}`);
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
function assertManagedPythonRequest(request, requiresPython) {
|
|
92
|
-
if (!request || /[\\/\0\r\n]/u.test(request) || request.includes('..')) {
|
|
93
|
-
throw new TypeError(`Invalid managed Python request: ${request}`);
|
|
94
|
-
}
|
|
95
|
-
if (/^\d+\.\d+(?:\.\d+)?$/u.test(request)) {
|
|
96
|
-
const normalized = request.split('.').length === 2 ? `${request}.0` : request;
|
|
97
|
-
if (!pep440VersionSatisfies(normalized, requiresPython)) {
|
|
98
|
-
throw new TypeError(`Managed Python ${request} cannot satisfy requires-python ${requiresPython}.`);
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
function resolveDuration(name, explicit, environment, fallback, allowZero = false) {
|
|
103
|
-
const value = explicit ?? (environment === undefined ? fallback : Number(environment));
|
|
104
|
-
const minimum = allowZero ? 0 : 1;
|
|
105
|
-
if (!Number.isSafeInteger(value) || value < minimum) {
|
|
106
|
-
throw new TypeError(`${name} must be ${allowZero ? 'a non-negative' : 'a positive'} integer.`);
|
|
107
|
-
}
|
|
108
|
-
return value;
|
|
109
|
-
}
|
|
110
|
-
function parseBoolean(value, fallback) {
|
|
111
|
-
if (value === undefined)
|
|
112
|
-
return fallback;
|
|
113
|
-
if (/^(1|true|yes|on)$/iu.test(value))
|
|
114
|
-
return true;
|
|
115
|
-
if (/^(0|false|no|off)$/iu.test(value))
|
|
116
|
-
return false;
|
|
117
|
-
throw new TypeError(`Invalid boolean value: ${value}`);
|
|
118
|
-
}
|
|
119
|
-
function normalizeDependencies(dependencies) {
|
|
120
|
-
const normalized = dependencies.map((dependency) => dependency.trim());
|
|
121
|
-
for (const dependency of normalized) {
|
|
122
|
-
if (!dependency || /[\0\r\n]/u.test(dependency)) {
|
|
123
|
-
throw new TypeError(`Invalid runtime dependency: ${JSON.stringify(dependency)}`);
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
// uv owns requirement parsing and source priority. Preserve caller order so
|
|
127
|
-
// direct URLs, Git references, local files, and index directives retain uv's semantics.
|
|
128
|
-
return normalized;
|
|
129
|
-
}
|
|
130
|
-
function normalizeRequirements(requirements, projectRoot) {
|
|
131
|
-
const normalized = [];
|
|
132
|
-
for (const requirement of requirements) {
|
|
133
|
-
const candidate = requirement.trim();
|
|
134
|
-
if (!candidate || /[\0\r\n]/u.test(candidate)) {
|
|
135
|
-
throw new TypeError(`Invalid requirements file path: ${JSON.stringify(candidate)}`);
|
|
136
|
-
}
|
|
137
|
-
const absolute = path.resolve(projectRoot, candidate);
|
|
138
|
-
const basename = path.basename(absolute).toLowerCase();
|
|
139
|
-
if (isPythonProjectFile(basename)) {
|
|
140
|
-
throw new TypeError(`Expected a requirements file, not Python project metadata: ${absolute}`);
|
|
141
|
-
}
|
|
142
|
-
normalized.push(absolute);
|
|
143
|
-
}
|
|
144
|
-
return normalized;
|
|
145
|
-
}
|
|
146
|
-
const PYTHON_PROJECT_FILES = new Set([
|
|
147
|
-
'pdm.lock',
|
|
148
|
-
'pipfile',
|
|
149
|
-
'pipfile.lock',
|
|
150
|
-
'poetry.lock',
|
|
151
|
-
'pyproject.toml',
|
|
152
|
-
'setup.cfg',
|
|
153
|
-
'setup.py',
|
|
154
|
-
'uv.lock',
|
|
155
|
-
]);
|
|
156
|
-
function isPythonProjectFile(basename) {
|
|
157
|
-
return PYTHON_PROJECT_FILES.has(basename) || /^pylock(?:\.[^.]+)?\.toml$/u.test(basename);
|
|
158
|
-
}
|
|
159
|
-
//# sourceMappingURL=config.js.map
|
package/dist/config.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/package-target.d.ts
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { PythonInfo } from './probes.js';
|
|
2
|
-
export declare function uvCommandNeedsPython(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 uvCommandProcessEnvironment(env: NodeJS.ProcessEnv, python?: PythonInfo): NodeJS.ProcessEnv;
|
|
6
|
-
/** Remove inherited values that could redirect uv away from an explicit target. */
|
|
7
|
-
export declare function sanitizeUvProcessEnvironment(env: NodeJS.ProcessEnv): NodeJS.ProcessEnv;
|
|
8
|
-
//# sourceMappingURL=package-target.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
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,oBAAoB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAErE;AAED,kEAAkE;AAClE,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,MAAM,EAAE,UAAU,GACjB,MAAM,EAAE,CAYV;AAED,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,MAAM,CAAC,EAAE,UAAU,GAClB,MAAM,CAAC,UAAU,CAWnB;AAED,mFAAmF;AACnF,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAMtF"}
|
package/dist/package-target.js
DELETED
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
import { activatePythonVenv } from './python-venv.js';
|
|
2
|
-
const TARGET_OPTIONS = new Set([
|
|
3
|
-
'--active',
|
|
4
|
-
'--config-file',
|
|
5
|
-
'--directory',
|
|
6
|
-
'--isolated',
|
|
7
|
-
'--prefix',
|
|
8
|
-
'--project',
|
|
9
|
-
'--python',
|
|
10
|
-
'--root',
|
|
11
|
-
'--system',
|
|
12
|
-
'--target',
|
|
13
|
-
'--user',
|
|
14
|
-
]);
|
|
15
|
-
const TARGET_ENVIRONMENT_VARIABLES = new Set([
|
|
16
|
-
'CONDA_PREFIX',
|
|
17
|
-
'PIP_PREFIX',
|
|
18
|
-
'PIP_PYTHON',
|
|
19
|
-
'PIP_ROOT',
|
|
20
|
-
'PIP_TARGET',
|
|
21
|
-
'PIP_USER',
|
|
22
|
-
'PYTHONHOME',
|
|
23
|
-
'PYTHONUSERBASE',
|
|
24
|
-
'UV_CONFIG_FILE',
|
|
25
|
-
'UV_PROJECT',
|
|
26
|
-
'UV_PROJECT_ENVIRONMENT',
|
|
27
|
-
'UV_PYTHON',
|
|
28
|
-
'UV_PREFIX',
|
|
29
|
-
'UV_ROOT',
|
|
30
|
-
'UV_SYSTEM_PYTHON',
|
|
31
|
-
'UV_TARGET',
|
|
32
|
-
]);
|
|
33
|
-
export function uvCommandNeedsPython(args) {
|
|
34
|
-
return args[0] === 'pip' || args[0] === 'run';
|
|
35
|
-
}
|
|
36
|
-
/** Pin uv pip and uv run to the environment selected by Pyfig. */
|
|
37
|
-
export function targetUvArguments(args, python) {
|
|
38
|
-
if (!python.virtualEnvironment) {
|
|
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)];
|
|
47
|
-
}
|
|
48
|
-
return [...args];
|
|
49
|
-
}
|
|
50
|
-
export function uvCommandProcessEnvironment(env, python) {
|
|
51
|
-
const sanitized = sanitizeUvProcessEnvironment(env);
|
|
52
|
-
if (!python?.virtualEnvironment)
|
|
53
|
-
return sanitized;
|
|
54
|
-
return {
|
|
55
|
-
...activatePythonVenv(sanitized, python.virtualEnvironment, python.executable),
|
|
56
|
-
UV_PYTHON: python.executable,
|
|
57
|
-
};
|
|
58
|
-
}
|
|
59
|
-
/** Remove inherited values that could redirect uv away from an explicit target. */
|
|
60
|
-
export function sanitizeUvProcessEnvironment(env) {
|
|
61
|
-
const sanitized = { ...env };
|
|
62
|
-
for (const key of Object.keys(sanitized)) {
|
|
63
|
-
if (TARGET_ENVIRONMENT_VARIABLES.has(key.toUpperCase()))
|
|
64
|
-
delete sanitized[key];
|
|
65
|
-
}
|
|
66
|
-
return sanitized;
|
|
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
|
-
}
|
|
81
|
-
//# sourceMappingURL=package-target.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"package-target.js","sourceRoot":"","sources":["../src/package-target.ts"],"names":[],"mappings":"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"}
|
package/dist/pep440.d.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/** Validate a PEP 440 version specifier used by a runtime policy. */
|
|
2
|
-
export declare function isValidPep440Specifier(specifier: string): boolean;
|
|
3
|
-
/** Normalize a PEP 440 version, or reject invalid input. */
|
|
4
|
-
export declare function normalizePep440Version(version: string): string | null;
|
|
5
|
-
/**
|
|
6
|
-
* Match a version using PEP 440 specifier-set behavior, including its
|
|
7
|
-
* pre-release fallback when the candidate set has no matching final release.
|
|
8
|
-
*/
|
|
9
|
-
export declare function pep440VersionSatisfies(version: string, specifier: string): boolean;
|
|
10
|
-
/** Select the greatest PEP 440 version allowed by a specifier. */
|
|
11
|
-
export declare function maxPep440Version(versions: readonly string[], specifier: string): string | null;
|
|
12
|
-
//# sourceMappingURL=pep440.d.ts.map
|
package/dist/pep440.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pep440.d.ts","sourceRoot":"","sources":["../src/pep440.ts"],"names":[],"mappings":"AAOA,qEAAqE;AACrE,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAEjE;AAED,4DAA4D;AAC5D,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAErE;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAElF;AAED,kEAAkE;AAClE,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,SAAS,MAAM,EAAE,EAC3B,SAAS,EAAE,MAAM,GAChB,MAAM,GAAG,IAAI,CAEf"}
|
package/dist/pep440.js
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { filter, maxSatisfying, valid as validPep440Version, validRange as validPep440Specifier, } from '@renovatebot/pep440';
|
|
2
|
-
/** Validate a PEP 440 version specifier used by a runtime policy. */
|
|
3
|
-
export function isValidPep440Specifier(specifier) {
|
|
4
|
-
return validPep440Specifier(specifier);
|
|
5
|
-
}
|
|
6
|
-
/** Normalize a PEP 440 version, or reject invalid input. */
|
|
7
|
-
export function normalizePep440Version(version) {
|
|
8
|
-
return validPep440Version(version);
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* Match a version using PEP 440 specifier-set behavior, including its
|
|
12
|
-
* pre-release fallback when the candidate set has no matching final release.
|
|
13
|
-
*/
|
|
14
|
-
export function pep440VersionSatisfies(version, specifier) {
|
|
15
|
-
return filter([version], specifier).length === 1;
|
|
16
|
-
}
|
|
17
|
-
/** Select the greatest PEP 440 version allowed by a specifier. */
|
|
18
|
-
export function maxPep440Version(versions, specifier) {
|
|
19
|
-
return maxSatisfying([...versions], specifier);
|
|
20
|
-
}
|
|
21
|
-
//# sourceMappingURL=pep440.js.map
|
package/dist/pep440.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pep440.js","sourceRoot":"","sources":["../src/pep440.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,aAAa,EACb,KAAK,IAAI,kBAAkB,EAC3B,UAAU,IAAI,oBAAoB,GACnC,MAAM,qBAAqB,CAAC;AAE7B,qEAAqE;AACrE,MAAM,UAAU,sBAAsB,CAAC,SAAiB;IACtD,OAAO,oBAAoB,CAAC,SAAS,CAAC,CAAC;AACzC,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,sBAAsB,CAAC,OAAe;IACpD,OAAO,kBAAkB,CAAC,OAAO,CAAC,CAAC;AACrC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAe,EAAE,SAAiB;IACvE,OAAO,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;AACnD,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,gBAAgB,CAC9B,QAA2B,EAC3B,SAAiB;IAEjB,OAAO,aAAa,CAAC,CAAC,GAAG,QAAQ,CAAC,EAAE,SAAS,CAAC,CAAC;AACjD,CAAC"}
|
package/dist/probes.d.ts
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import type { ResolvedPyfigOptions } from './config.js';
|
|
2
|
-
import { type CommandSpec } from './process.js';
|
|
3
|
-
export interface PythonInfo {
|
|
4
|
-
executable: string;
|
|
5
|
-
baseExecutable: string;
|
|
6
|
-
version: string;
|
|
7
|
-
major: number;
|
|
8
|
-
minor: number;
|
|
9
|
-
patch: number;
|
|
10
|
-
releaseLevel: string;
|
|
11
|
-
implementation: string;
|
|
12
|
-
architecture: string;
|
|
13
|
-
pointerBits: number;
|
|
14
|
-
prefix: string;
|
|
15
|
-
basePrefix: string;
|
|
16
|
-
virtualEnvironment: string | null;
|
|
17
|
-
gilDisabled: boolean;
|
|
18
|
-
embedding: PythonEmbeddingInfo | null;
|
|
19
|
-
}
|
|
20
|
-
export interface PythonEmbeddingInfo {
|
|
21
|
-
includeDirectory: string;
|
|
22
|
-
headerPath: string;
|
|
23
|
-
libraryPath: string;
|
|
24
|
-
libraryDirectory: string;
|
|
25
|
-
libraryName: string;
|
|
26
|
-
libraryKind: 'import' | 'shared' | 'static';
|
|
27
|
-
stableAbiLibraryPath: string | null;
|
|
28
|
-
}
|
|
29
|
-
export interface UvInfo {
|
|
30
|
-
executable: string;
|
|
31
|
-
version: string;
|
|
32
|
-
}
|
|
33
|
-
export declare function pythonSatisfiesPolicy(python: PythonInfo, options: Pick<ResolvedPyfigOptions, 'requiresPython' | 'requireEmbedding' | 'requireGil'>): boolean;
|
|
34
|
-
export declare function probePython(candidate: CommandSpec, options: ResolvedPyfigOptions): Promise<PythonInfo | null>;
|
|
35
|
-
export declare function findUv(options: ResolvedPyfigOptions): Promise<UvInfo | null>;
|
|
36
|
-
export declare function probeUv(executable: string, options: ResolvedPyfigOptions): UvInfo | null;
|
|
37
|
-
//# sourceMappingURL=probes.d.ts.map
|
package/dist/probes.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"probes.d.ts","sourceRoot":"","sources":["../src/probes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAExD,OAAO,EAA0B,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAExE,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;IAC5C,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC;AAED,MAAM,WAAW,MAAM;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AA2FD,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"}
|
package/dist/probes.js
DELETED
|
@@ -1,145 +0,0 @@
|
|
|
1
|
-
import { normalizePep440Version, pep440VersionSatisfies } from './pep440.js';
|
|
2
|
-
import { resolveExecutable, run } from './process.js';
|
|
3
|
-
const PYTHON_PROBE = `
|
|
4
|
-
import json
|
|
5
|
-
import os
|
|
6
|
-
import platform
|
|
7
|
-
import struct
|
|
8
|
-
import sys
|
|
9
|
-
import sysconfig
|
|
10
|
-
|
|
11
|
-
base_prefix = getattr(sys, "base_prefix", sys.prefix)
|
|
12
|
-
include_directory = sysconfig.get_path("include") or ""
|
|
13
|
-
header_path = os.path.join(include_directory, "Python.h") if include_directory else ""
|
|
14
|
-
library_candidates = []
|
|
15
|
-
stable_abi_library_candidates = []
|
|
16
|
-
if os.name == "nt":
|
|
17
|
-
library_directory = sysconfig.get_config_var("LIBDIR") or os.path.join(base_prefix, "libs")
|
|
18
|
-
configured_library = sysconfig.get_config_var("LDLIBRARY") or ""
|
|
19
|
-
if configured_library:
|
|
20
|
-
library_candidates.append(os.path.join(library_directory, os.path.splitext(configured_library)[0] + ".lib"))
|
|
21
|
-
library_candidates.append(os.path.join(library_directory, f"python{sys.version_info.major}{sys.version_info.minor}.lib"))
|
|
22
|
-
stable_abi_library_candidates.append(os.path.join(library_directory, "python3.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
|
-
if directory:
|
|
38
|
-
stable_abi_library_candidates.extend([
|
|
39
|
-
os.path.join(directory, "libpython3.so"),
|
|
40
|
-
os.path.join(directory, "libpython3.dylib"),
|
|
41
|
-
])
|
|
42
|
-
|
|
43
|
-
library_path = next((candidate for candidate in library_candidates if os.path.isfile(candidate)), "")
|
|
44
|
-
stable_abi_library_path = next(
|
|
45
|
-
(candidate for candidate in stable_abi_library_candidates if os.path.isfile(candidate)),
|
|
46
|
-
None,
|
|
47
|
-
)
|
|
48
|
-
embedding = None
|
|
49
|
-
if os.path.isfile(header_path) and library_path:
|
|
50
|
-
library_name = os.path.basename(library_path)
|
|
51
|
-
library_kind = "import" if os.name == "nt" else ("static" if library_name.endswith(".a") else "shared")
|
|
52
|
-
embedding = {
|
|
53
|
-
"includeDirectory": include_directory,
|
|
54
|
-
"headerPath": header_path,
|
|
55
|
-
"libraryPath": library_path,
|
|
56
|
-
"libraryDirectory": os.path.dirname(library_path),
|
|
57
|
-
"libraryName": library_name,
|
|
58
|
-
"libraryKind": library_kind,
|
|
59
|
-
"stableAbiLibraryPath": stable_abi_library_path,
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
release_level = sys.version_info.releaselevel
|
|
63
|
-
release_suffixes = {
|
|
64
|
-
"alpha": "a",
|
|
65
|
-
"beta": "b",
|
|
66
|
-
"candidate": "rc",
|
|
67
|
-
"final": "",
|
|
68
|
-
}
|
|
69
|
-
release_suffix = release_suffixes[release_level]
|
|
70
|
-
if release_suffix:
|
|
71
|
-
release_suffix += str(sys.version_info.serial)
|
|
72
|
-
|
|
73
|
-
print(json.dumps({
|
|
74
|
-
"executable": sys.executable,
|
|
75
|
-
"baseExecutable": getattr(sys, "_base_executable", sys.executable),
|
|
76
|
-
"version": ".".join(map(str, sys.version_info[:3])) + release_suffix,
|
|
77
|
-
"major": sys.version_info.major,
|
|
78
|
-
"minor": sys.version_info.minor,
|
|
79
|
-
"patch": sys.version_info.micro,
|
|
80
|
-
"releaseLevel": release_level,
|
|
81
|
-
"implementation": sys.implementation.name,
|
|
82
|
-
"architecture": platform.machine().lower(),
|
|
83
|
-
"pointerBits": struct.calcsize("P") * 8,
|
|
84
|
-
"prefix": sys.prefix,
|
|
85
|
-
"basePrefix": base_prefix,
|
|
86
|
-
"virtualEnvironment": sys.prefix if sys.prefix != base_prefix else None,
|
|
87
|
-
"gilDisabled": bool(sysconfig.get_config_var("Py_GIL_DISABLED")),
|
|
88
|
-
"embedding": embedding,
|
|
89
|
-
}))
|
|
90
|
-
`;
|
|
91
|
-
export function pythonSatisfiesPolicy(python, options) {
|
|
92
|
-
return pep440VersionSatisfies(python.version, options.requiresPython) &&
|
|
93
|
-
(!options.requireEmbedding || (python.implementation === 'cpython' &&
|
|
94
|
-
python.embedding !== null &&
|
|
95
|
-
pythonArchitectureMatchesRuntime(python))) &&
|
|
96
|
-
(!options.requireGil || !python.gilDisabled);
|
|
97
|
-
}
|
|
98
|
-
export async function probePython(candidate, options) {
|
|
99
|
-
const executable = await resolveExecutable(candidate.executable, options.env);
|
|
100
|
-
if (!executable)
|
|
101
|
-
return null;
|
|
102
|
-
try {
|
|
103
|
-
const { stdout } = run(executable, [...candidate.args, '-c', PYTHON_PROBE], options.env, options.probeTimeoutMs);
|
|
104
|
-
const info = JSON.parse(stdout.trim());
|
|
105
|
-
return normalizePep440Version(info.version) ? info : null;
|
|
106
|
-
}
|
|
107
|
-
catch {
|
|
108
|
-
return null;
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
export async function findUv(options) {
|
|
112
|
-
const configured = options.env['PYFIG_UV'] ?? 'uv';
|
|
113
|
-
const executable = await resolveExecutable(configured, options.env);
|
|
114
|
-
const uv = executable ? probeUv(executable, options) : null;
|
|
115
|
-
return uv && pep440VersionSatisfies(uv.version, options.requiresUv) ? uv : null;
|
|
116
|
-
}
|
|
117
|
-
export function probeUv(executable, options) {
|
|
118
|
-
try {
|
|
119
|
-
const { stdout } = run(executable, ['--version'], options.env, options.probeTimeoutMs);
|
|
120
|
-
const version = normalizeVersion(stdout.match(/^uv\s+(\S+)/iu)?.[1]);
|
|
121
|
-
return version ? { executable, version } : null;
|
|
122
|
-
}
|
|
123
|
-
catch {
|
|
124
|
-
return null;
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
function normalizeVersion(value) {
|
|
128
|
-
if (!value)
|
|
129
|
-
return null;
|
|
130
|
-
return normalizePep440Version(value);
|
|
131
|
-
}
|
|
132
|
-
function pythonArchitectureMatchesRuntime(python) {
|
|
133
|
-
const architecture = python.architecture.toLowerCase();
|
|
134
|
-
if (python.pointerBits !== (process.arch === 'ia32' ? 32 : 64))
|
|
135
|
-
return false;
|
|
136
|
-
if (process.arch === 'x64')
|
|
137
|
-
return architecture === 'x86_64' || architecture === 'amd64';
|
|
138
|
-
if (process.arch === 'arm64')
|
|
139
|
-
return architecture === 'aarch64' || architecture === 'arm64';
|
|
140
|
-
if (process.arch === 'ia32') {
|
|
141
|
-
return architecture === 'x86' || architecture === 'i386' || architecture === 'i686';
|
|
142
|
-
}
|
|
143
|
-
return architecture === process.arch;
|
|
144
|
-
}
|
|
145
|
-
//# sourceMappingURL=probes.js.map
|
package/dist/probes.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"probes.js","sourceRoot":"","sources":["../src/probes.ts"],"names":[],"mappings":"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"}
|
package/dist/project-root.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"project-root.d.ts","sourceRoot":"","sources":["../src/project-root.ts"],"names":[],"mappings":"AAGA,+EAA+E;AAC/E,wBAAgB,kBAAkB,CAAC,cAAc,GAAE,MAAsB,GAAG,MAAM,CAMjF"}
|
package/dist/project-root.js
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import fs from 'node:fs';
|
|
2
|
-
import path from 'node:path';
|
|
3
|
-
/** Resolve the nearest Git worktree without interpreting project manifests. */
|
|
4
|
-
export function resolveProjectRoot(startDirectory = process.cwd()) {
|
|
5
|
-
const start = path.resolve(startDirectory);
|
|
6
|
-
for (const directory of ancestors(start)) {
|
|
7
|
-
if (fs.existsSync(path.join(directory, '.git')))
|
|
8
|
-
return directory;
|
|
9
|
-
}
|
|
10
|
-
return start;
|
|
11
|
-
}
|
|
12
|
-
function* ancestors(startDirectory) {
|
|
13
|
-
let directory = startDirectory;
|
|
14
|
-
while (true) {
|
|
15
|
-
yield directory;
|
|
16
|
-
const parent = path.dirname(directory);
|
|
17
|
-
if (parent === directory)
|
|
18
|
-
return;
|
|
19
|
-
directory = parent;
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
//# sourceMappingURL=project-root.js.map
|
package/dist/project-root.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"project-root.js","sourceRoot":"","sources":["../src/project-root.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,+EAA+E;AAC/E,MAAM,UAAU,kBAAkB,CAAC,cAAc,GAAW,OAAO,CAAC,GAAG,EAAE;IACvE,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAC3C,KAAK,MAAM,SAAS,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;QACzC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YAAE,OAAO,SAAS,CAAC;IACpE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,QAAQ,CAAC,CAAC,SAAS,CAAC,cAAsB;IACxC,IAAI,SAAS,GAAG,cAAc,CAAC;IAC/B,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,SAAS,CAAC;QAChB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACvC,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO;QACjC,SAAS,GAAG,MAAM,CAAC;IACrB,CAAC;AACH,CAAC"}
|
package/dist/provision-lock.d.ts
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export interface ProvisioningLockOptions<T> {
|
|
2
|
-
/** Stable logical identity shared by every caller of the protected resource. */
|
|
3
|
-
key: string;
|
|
4
|
-
timeoutMs: number;
|
|
5
|
-
check: () => Promise<T | null>;
|
|
6
|
-
mutate: () => Promise<T>;
|
|
7
|
-
}
|
|
8
|
-
/** Use Loqkit's layered lock and predicate checks for one idempotent mutation. */
|
|
9
|
-
export declare function withProvisioningLock<T>(options: ProvisioningLockOptions<T>): Promise<T>;
|
|
10
|
-
//# sourceMappingURL=provision-lock.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"provision-lock.d.ts","sourceRoot":"","sources":["../src/provision-lock.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,uBAAuB,CAAC,CAAC;IACxC,gFAAgF;IAChF,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAC/B,MAAM,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC;CAC1B;AAED,kFAAkF;AAClF,wBAAsB,oBAAoB,CAAC,CAAC,EAC1C,OAAO,EAAE,uBAAuB,CAAC,CAAC,CAAC,GAClC,OAAO,CAAC,CAAC,CAAC,CAsBZ"}
|
package/dist/provision-lock.js
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { withLock } from 'loqkit';
|
|
2
|
-
/** Use Loqkit's layered lock and predicate checks for one idempotent mutation. */
|
|
3
|
-
export async function withProvisioningLock(options) {
|
|
4
|
-
let existing;
|
|
5
|
-
const result = await withLock({ resource: options.key }, options.mutate, {
|
|
6
|
-
key: options.key,
|
|
7
|
-
name: 'Pyfig provisioning',
|
|
8
|
-
namespace: 'pyfig',
|
|
9
|
-
timeout: options.timeoutMs,
|
|
10
|
-
predicate: async () => {
|
|
11
|
-
const value = await options.check();
|
|
12
|
-
if (value === null)
|
|
13
|
-
return true;
|
|
14
|
-
existing = { value };
|
|
15
|
-
return false;
|
|
16
|
-
},
|
|
17
|
-
});
|
|
18
|
-
if (result.context.state === 'executed')
|
|
19
|
-
return result.value;
|
|
20
|
-
if (existing)
|
|
21
|
-
return existing.value;
|
|
22
|
-
throw new Error(`Provisioning check for ${options.key} did not produce a resource.`);
|
|
23
|
-
}
|
|
24
|
-
//# sourceMappingURL=provision-lock.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"provision-lock.js","sourceRoot":"","sources":["../src/provision-lock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAUlC,kFAAkF;AAClF,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,OAAmC;IAEnC,IAAI,QAAkC,CAAC;IACvC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAC3B,EAAE,QAAQ,EAAE,OAAO,CAAC,GAAG,EAAE,EACzB,OAAO,CAAC,MAAM,EACd;QACE,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,IAAI,EAAE,oBAAoB;QAC1B,SAAS,EAAE,OAAO;QAClB,OAAO,EAAE,OAAO,CAAC,SAAS;QAC1B,SAAS,EAAE,KAAK,IAAI,EAAE;YACpB,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YACpC,IAAI,KAAK,KAAK,IAAI;gBAAE,OAAO,IAAI,CAAC;YAChC,QAAQ,GAAG,EAAE,KAAK,EAAE,CAAC;YACrB,OAAO,KAAK,CAAC;QACf,CAAC;KACF,CACF,CAAC;IAEF,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,KAAK,UAAU;QAAE,OAAO,MAAM,CAAC,KAAU,CAAC;IAClE,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC,KAAK,CAAC;IACpC,MAAM,IAAI,KAAK,CAAC,0BAA0B,OAAO,CAAC,GAAG,8BAA8B,CAAC,CAAC;AACvF,CAAC"}
|
package/dist/provision.d.ts
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { type PyfigOptions } from './config.js';
|
|
2
|
-
import { type PythonInfo, type UvInfo } from './probes.js';
|
|
3
|
-
export interface PythonEnvironment {
|
|
4
|
-
python: PythonInfo;
|
|
5
|
-
uv: UvInfo;
|
|
6
|
-
/** True when the venv lives below node_modules/.pyfig/venvs. */
|
|
7
|
-
managed: boolean;
|
|
8
|
-
/** Full content identity for managed venvs; null for an externally owned venv. */
|
|
9
|
-
venvId: string | null;
|
|
10
|
-
}
|
|
11
|
-
/** Ensure a compatible uv executable, preferring an existing installation. */
|
|
12
|
-
export declare function ensureUv(options?: PyfigOptions): Promise<UvInfo>;
|
|
13
|
-
/**
|
|
14
|
-
* Select an external dependency-free venv or a private content-addressed venv.
|
|
15
|
-
* Only caller-provided dependency specifiers and requirements files are resolved.
|
|
16
|
-
*/
|
|
17
|
-
export declare function ensurePython(options?: PyfigOptions): Promise<PythonEnvironment>;
|
|
18
|
-
/** Build GitHub API headers without exposing credentials outside the request. */
|
|
19
|
-
export declare function githubApiHeaders(env: NodeJS.ProcessEnv): Record<string, string>;
|
|
20
|
-
//# sourceMappingURL=provision.d.ts.map
|
package/dist/provision.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"provision.d.ts","sourceRoot":"","sources":["../src/provision.ts"],"names":[],"mappings":"AAqBA,OAAO,EAIL,KAAK,YAAY,EAElB,MAAM,aAAa,CAAC;AAiBrB,OAAO,EAKL,KAAK,UAAU,EACf,KAAK,MAAM,EACZ,MAAM,aAAa,CAAC;AAUrB,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,UAAU,CAAC;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,gEAAgE;IAChE,OAAO,EAAE,OAAO,CAAC;IACjB,kFAAkF;IAClF,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAOD,8EAA8E;AAC9E,wBAAsB,QAAQ,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAE1E;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAChC,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,iBAAiB,CAAC,CAe5B;AAggBD,iFAAiF;AACjF,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAY/E"}
|