wrapture
Version:
Wrapture lets you go from a Python-trained model to deployable JavaScript with a single command. It generates TypeScript bindings and a Web/Node-compatible wrapper, using WebGPU/WASM-ready ONNX runtimes.
56 lines (48 loc) • 1.33 kB
text/typescript
/* global process */
import chalk from 'chalk';
import { spawnSync } from 'node:child_process';
const printError = (title: string, body: string) => {
console.error(`\n${chalk.red.bold('✘')} ${chalk.red.bold(title)}`);
console.error(chalk.white(body));
};
export const checkPythonAvailable = (): void => {
const result = spawnSync('python3', ['--version'], { encoding: 'utf-8' });
if (result.error || result.status !== 0) {
printError(
'Python 3 is not available.',
'Please install it from https://www.python.org/downloads/ and ensure it is added to your PATH.'
);
process.exit(1);
}
};
export const checkPythonDeps = (): void => {
const check = spawnSync(
'python3',
[
'-c',
`
import sys
missing = []
for module in ['torch', 'onnx', 'onnxsim', 'onnxruntime']:
try:
__import__(module)
except ImportError:
missing.append(module)
if missing:
print(', '.join(missing))
sys.exit(1)
`
],
{ encoding: 'utf-8' }
);
if (check.status !== 0) {
const missing = check.stdout.trim().split(',').filter(Boolean);
printError(
'Missing Python dependencies.',
`Please install the following packages:\n\n ${chalk.yellow(
`python3 -m pip install ${missing.join(' ')}`
)}`
);
process.exit(1);
}
};