nodepyx 1.0.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.
- package/LICENSE +22 -0
- package/README.md +399 -0
- package/binding.gyp +73 -0
- package/dist/core/PyCallable.d.ts +65 -0
- package/dist/core/PyCallable.d.ts.map +1 -0
- package/dist/core/PyCallable.js +109 -0
- package/dist/core/PyCallable.js.map +1 -0
- package/dist/core/PyContext.d.ts +76 -0
- package/dist/core/PyContext.d.ts.map +1 -0
- package/dist/core/PyContext.js +228 -0
- package/dist/core/PyContext.js.map +1 -0
- package/dist/core/PyIterator.d.ts +84 -0
- package/dist/core/PyIterator.d.ts.map +1 -0
- package/dist/core/PyIterator.js +243 -0
- package/dist/core/PyIterator.js.map +1 -0
- package/dist/core/PyModule.d.ts +55 -0
- package/dist/core/PyModule.d.ts.map +1 -0
- package/dist/core/PyModule.js +172 -0
- package/dist/core/PyModule.js.map +1 -0
- package/dist/core/PyProxy.d.ts +65 -0
- package/dist/core/PyProxy.d.ts.map +1 -0
- package/dist/core/PyProxy.js +483 -0
- package/dist/core/PyProxy.js.map +1 -0
- package/dist/core/PyRuntime.d.ts +105 -0
- package/dist/core/PyRuntime.d.ts.map +1 -0
- package/dist/core/PyRuntime.js +438 -0
- package/dist/core/PyRuntime.js.map +1 -0
- package/dist/env/CondaManager.d.ts +118 -0
- package/dist/env/CondaManager.d.ts.map +1 -0
- package/dist/env/CondaManager.js +401 -0
- package/dist/env/CondaManager.js.map +1 -0
- package/dist/env/PackageInstaller.d.ts +233 -0
- package/dist/env/PackageInstaller.d.ts.map +1 -0
- package/dist/env/PackageInstaller.js +609 -0
- package/dist/env/PackageInstaller.js.map +1 -0
- package/dist/env/PythonDetector.d.ts +103 -0
- package/dist/env/PythonDetector.d.ts.map +1 -0
- package/dist/env/PythonDetector.js +381 -0
- package/dist/env/PythonDetector.js.map +1 -0
- package/dist/env/VenvManager.d.ts +117 -0
- package/dist/env/VenvManager.d.ts.map +1 -0
- package/dist/env/VenvManager.js +331 -0
- package/dist/env/VenvManager.js.map +1 -0
- package/dist/index.d.ts +169 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +393 -0
- package/dist/index.js.map +1 -0
- package/dist/plugins/Plugin.interface.d.ts +41 -0
- package/dist/plugins/Plugin.interface.d.ts.map +1 -0
- package/dist/plugins/Plugin.interface.js +12 -0
- package/dist/plugins/Plugin.interface.js.map +1 -0
- package/dist/plugins/PluginManager.d.ts +26 -0
- package/dist/plugins/PluginManager.d.ts.map +1 -0
- package/dist/plugins/PluginManager.js +174 -0
- package/dist/plugins/PluginManager.js.map +1 -0
- package/dist/plugins/builtin/NumpyPlugin.d.ts +17 -0
- package/dist/plugins/builtin/NumpyPlugin.d.ts.map +1 -0
- package/dist/plugins/builtin/NumpyPlugin.js +41 -0
- package/dist/plugins/builtin/NumpyPlugin.js.map +1 -0
- package/dist/plugins/builtin/PandasPlugin.d.ts +19 -0
- package/dist/plugins/builtin/PandasPlugin.d.ts.map +1 -0
- package/dist/plugins/builtin/PandasPlugin.js +57 -0
- package/dist/plugins/builtin/PandasPlugin.js.map +1 -0
- package/dist/plugins/builtin/TorchPlugin.d.ts +23 -0
- package/dist/plugins/builtin/TorchPlugin.d.ts.map +1 -0
- package/dist/plugins/builtin/TorchPlugin.js +50 -0
- package/dist/plugins/builtin/TorchPlugin.js.map +1 -0
- package/dist/plugins/index.d.ts +7 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +12 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/serialization/DataFrameBridge.d.ts +141 -0
- package/dist/serialization/DataFrameBridge.d.ts.map +1 -0
- package/dist/serialization/DataFrameBridge.js +355 -0
- package/dist/serialization/DataFrameBridge.js.map +1 -0
- package/dist/serialization/MsgPackSerializer.d.ts +45 -0
- package/dist/serialization/MsgPackSerializer.d.ts.map +1 -0
- package/dist/serialization/MsgPackSerializer.js +242 -0
- package/dist/serialization/MsgPackSerializer.js.map +1 -0
- package/dist/serialization/NumpyBridge.d.ts +96 -0
- package/dist/serialization/NumpyBridge.d.ts.map +1 -0
- package/dist/serialization/NumpyBridge.js +323 -0
- package/dist/serialization/NumpyBridge.js.map +1 -0
- package/dist/serialization/Serializer.d.ts +78 -0
- package/dist/serialization/Serializer.d.ts.map +1 -0
- package/dist/serialization/Serializer.js +281 -0
- package/dist/serialization/Serializer.js.map +1 -0
- package/dist/types/PythonTypeMapper.d.ts +87 -0
- package/dist/types/PythonTypeMapper.d.ts.map +1 -0
- package/dist/types/PythonTypeMapper.js +449 -0
- package/dist/types/PythonTypeMapper.js.map +1 -0
- package/dist/types/StubCache.d.ts +109 -0
- package/dist/types/StubCache.d.ts.map +1 -0
- package/dist/types/StubCache.js +333 -0
- package/dist/types/StubCache.js.map +1 -0
- package/dist/types/TypeGenerator.d.ts +139 -0
- package/dist/types/TypeGenerator.d.ts.map +1 -0
- package/dist/types/TypeGenerator.js +372 -0
- package/dist/types/TypeGenerator.js.map +1 -0
- package/dist/types/addon.d.ts +114 -0
- package/dist/types/addon.d.ts.map +1 -0
- package/dist/types/addon.js +32 -0
- package/dist/types/addon.js.map +1 -0
- package/dist/types/config.d.ts +175 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +35 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/index.d.ts +10 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +12 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/python.d.ts +235 -0
- package/dist/types/python.d.ts.map +1 -0
- package/dist/types/python.js +7 -0
- package/dist/types/python.js.map +1 -0
- package/dist/utils/ErrorTranslator.d.ts +83 -0
- package/dist/utils/ErrorTranslator.d.ts.map +1 -0
- package/dist/utils/ErrorTranslator.js +210 -0
- package/dist/utils/ErrorTranslator.js.map +1 -0
- package/dist/utils/Logger.d.ts +27 -0
- package/dist/utils/Logger.d.ts.map +1 -0
- package/dist/utils/Logger.js +115 -0
- package/dist/utils/Logger.js.map +1 -0
- package/dist/utils/MemoryMonitor.d.ts +44 -0
- package/dist/utils/MemoryMonitor.d.ts.map +1 -0
- package/dist/utils/MemoryMonitor.js +143 -0
- package/dist/utils/MemoryMonitor.js.map +1 -0
- package/package.json +177 -0
- package/python/error_handler.py +433 -0
- package/python/nodepyx_runtime.py +575 -0
- package/python/serializer.py +379 -0
- package/python/type_inspector.py +288 -0
- package/scripts/build-native.js +68 -0
- package/scripts/download-prebuilds.js +99 -0
- package/scripts/generate-stubs.js +405 -0
- package/scripts/install.js +260 -0
- package/src/core/PyCallable.ts +137 -0
- package/src/core/PyContext.ts +296 -0
- package/src/core/PyIterator.ts +294 -0
- package/src/core/PyModule.ts +194 -0
- package/src/core/PyProxy.ts +605 -0
- package/src/core/PyRuntime.ts +504 -0
- package/src/env/CondaManager.ts +451 -0
- package/src/env/PackageInstaller.ts +738 -0
- package/src/env/PythonDetector.ts +414 -0
- package/src/env/VenvManager.ts +396 -0
- package/src/index.ts +425 -0
- package/src/native/gil_guard.cpp +26 -0
- package/src/native/gil_guard.h +175 -0
- package/src/native/nodepyx_addon.cpp +886 -0
- package/src/native/python_bridge.cpp +790 -0
- package/src/native/python_bridge.h +257 -0
- package/src/native/thread_pool.cpp +336 -0
- package/src/native/thread_pool.h +175 -0
- package/src/native/type_converter.cpp +901 -0
- package/src/native/type_converter.h +272 -0
- package/src/nextjs/PyProvider.tsx +123 -0
- package/src/nextjs/index.ts +21 -0
- package/src/nextjs/usePython.ts +106 -0
- package/src/nextjs/withnodepyx.ts +88 -0
- package/src/plugins/Plugin.interface.ts +51 -0
- package/src/plugins/PluginManager.ts +155 -0
- package/src/plugins/builtin/NumpyPlugin.ts +36 -0
- package/src/plugins/builtin/PandasPlugin.ts +49 -0
- package/src/plugins/builtin/TorchPlugin.ts +56 -0
- package/src/plugins/index.ts +7 -0
- package/src/serialization/DataFrameBridge.ts +398 -0
- package/src/serialization/MsgPackSerializer.ts +220 -0
- package/src/serialization/NumpyBridge.ts +332 -0
- package/src/serialization/Serializer.ts +320 -0
- package/src/types/PythonTypeMapper.ts +495 -0
- package/src/types/StubCache.ts +340 -0
- package/src/types/TypeGenerator.ts +491 -0
- package/src/types/addon.ts +170 -0
- package/src/types/config.ts +226 -0
- package/src/types/index.ts +55 -0
- package/src/types/python.ts +309 -0
- package/src/types/stubs/numpy.d.ts +441 -0
- package/src/types/stubs/pandas.d.ts +575 -0
- package/src/types/stubs/sklearn.d.ts +728 -0
- package/src/types/stubs/torch.d.ts +694 -0
- package/src/utils/ErrorTranslator.ts +220 -0
- package/src/utils/Logger.ts +119 -0
- package/src/utils/MemoryMonitor.ts +175 -0
|
@@ -0,0 +1,483 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* nodepyx — PyProxy
|
|
4
|
+
*
|
|
5
|
+
* The heart of nodepyx's JavaScript API.
|
|
6
|
+
* Every Python object is represented as a PyProxy — a JavaScript Proxy that:
|
|
7
|
+
*
|
|
8
|
+
* 1. Intercepts property access → creates lazy child PyProxy
|
|
9
|
+
* 2. Intercepts function call → sends to Python worker thread
|
|
10
|
+
* 3. Intercepts `then` → resolves the proxy chain into a value (makes it awaitable)
|
|
11
|
+
* 4. Intercepts Symbol.iterator → enables for...of loops
|
|
12
|
+
* 5. Intercepts Symbol.asyncIterator → enables for await...of loops
|
|
13
|
+
* 6. Intercepts property assignment → sets Python attribute
|
|
14
|
+
*
|
|
15
|
+
* The key insight: attributes are NOT resolved eagerly. The chain
|
|
16
|
+
* `df.groupby('country').agg({'sales': 'sum'}).reset_index()`
|
|
17
|
+
* creates a chain of PyProxy objects, each recording the operation,
|
|
18
|
+
* and only executes when you `await` the final result.
|
|
19
|
+
*/
|
|
20
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
|
+
exports.PyProxy = exports.PYPROXY_PATH = exports.PYPROXY_OBJECTID = exports.PYPROXY_INTERNAL = void 0;
|
|
22
|
+
exports.isPyProxy = isPyProxy;
|
|
23
|
+
const ErrorTranslator_1 = require("../utils/ErrorTranslator");
|
|
24
|
+
const Logger_1 = require("../utils/Logger");
|
|
25
|
+
const logger = new Logger_1.Logger('PyProxy');
|
|
26
|
+
// Internal symbols used to brand PyProxy and access internals
|
|
27
|
+
exports.PYPROXY_INTERNAL = Symbol('nodepyx.internal');
|
|
28
|
+
exports.PYPROXY_OBJECTID = Symbol('nodepyx.objectId');
|
|
29
|
+
exports.PYPROXY_PATH = Symbol('nodepyx.path');
|
|
30
|
+
/**
|
|
31
|
+
* PyProxy — wraps any Python object in JavaScript.
|
|
32
|
+
*
|
|
33
|
+
* Usage:
|
|
34
|
+
* ```typescript
|
|
35
|
+
* const pd = await py.import('pandas');
|
|
36
|
+
* const df = await pd.read_csv('data.csv'); // df is a PyProxy
|
|
37
|
+
* const rows = await df.describe().to_dict('records'); // chained calls
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
class PyProxy {
|
|
41
|
+
/** Internal state — do not access directly from outside */
|
|
42
|
+
[exports.PYPROXY_INTERNAL];
|
|
43
|
+
constructor(internal) {
|
|
44
|
+
this[exports.PYPROXY_INTERNAL] = internal;
|
|
45
|
+
return new Proxy(this, PyProxy.handler);
|
|
46
|
+
}
|
|
47
|
+
// ─── Proxy Handler ─────────────────────────────────────────────────────────
|
|
48
|
+
static handler = {
|
|
49
|
+
get(target, prop, receiver) {
|
|
50
|
+
const internal = target[exports.PYPROXY_INTERNAL];
|
|
51
|
+
// ── Internal Symbol Access ──────────────────────────────────────────
|
|
52
|
+
if (prop === exports.PYPROXY_INTERNAL || prop === exports.PYPROXY_OBJECTID || prop === exports.PYPROXY_PATH) {
|
|
53
|
+
return Reflect.get(target, prop, receiver);
|
|
54
|
+
}
|
|
55
|
+
// ── JavaScript built-in symbols ──────────────────────────────────────
|
|
56
|
+
if (typeof prop === 'symbol') {
|
|
57
|
+
// Make for...of work (synchronous iteration via async iterator)
|
|
58
|
+
if (prop === Symbol.asyncIterator) {
|
|
59
|
+
return () => target._makeAsyncIterator(internal);
|
|
60
|
+
}
|
|
61
|
+
// Symbol.iterator — not directly supported for Python objects
|
|
62
|
+
if (prop === Symbol.iterator) {
|
|
63
|
+
return () => {
|
|
64
|
+
throw new Error('Python objects are not synchronously iterable from JavaScript. ' +
|
|
65
|
+
'Use "for await...of" instead.');
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
// Symbol.toPrimitive — for coercion
|
|
69
|
+
if (prop === Symbol.toPrimitive) {
|
|
70
|
+
return (hint) => {
|
|
71
|
+
if (hint === 'string') {
|
|
72
|
+
return `[PyProxy id=${internal.objectId}]`;
|
|
73
|
+
}
|
|
74
|
+
return NaN;
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
// Symbol.toStringTag
|
|
78
|
+
if (prop === Symbol.toStringTag) {
|
|
79
|
+
return 'PyProxy';
|
|
80
|
+
}
|
|
81
|
+
return Reflect.get(target, prop, receiver);
|
|
82
|
+
}
|
|
83
|
+
// ── toString / valueOf ────────────────────────────────────────────────
|
|
84
|
+
if (prop === 'toString') {
|
|
85
|
+
return () => `[PyProxy id=${internal.objectId} path=${internal.path.join('.')}]`;
|
|
86
|
+
}
|
|
87
|
+
if (prop === 'valueOf') {
|
|
88
|
+
return () => target;
|
|
89
|
+
}
|
|
90
|
+
// ── then (Thenable — makes it work with await) ─────────────────────────
|
|
91
|
+
if (prop === 'then') {
|
|
92
|
+
return (onfulfilled, onrejected) => {
|
|
93
|
+
return target._resolve(internal).then(onfulfilled, onrejected);
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
// ── catch / finally (Promise chain support) ───────────────────────────
|
|
97
|
+
if (prop === 'catch') {
|
|
98
|
+
return (onrejected) => target._resolve(internal).catch(onrejected);
|
|
99
|
+
}
|
|
100
|
+
if (prop === 'finally') {
|
|
101
|
+
return (onfinally) => target._resolve(internal).finally(onfinally);
|
|
102
|
+
}
|
|
103
|
+
// ── Internal nodepyx methods ───────────────────────────────────────────
|
|
104
|
+
if (prop.startsWith('__nodepyx_')) {
|
|
105
|
+
return Reflect.get(target, prop, receiver);
|
|
106
|
+
}
|
|
107
|
+
// ── Check child cache (optimization) ──────────────────────────────────
|
|
108
|
+
if (internal.childCache.has(prop)) {
|
|
109
|
+
return internal.childCache.get(prop);
|
|
110
|
+
}
|
|
111
|
+
// ── Create lazy child PyProxy ──────────────────────────────────────────
|
|
112
|
+
const childInternal = {
|
|
113
|
+
objectId: internal.objectId,
|
|
114
|
+
path: [...internal.path, prop],
|
|
115
|
+
addon: internal.addon,
|
|
116
|
+
isResolved: false,
|
|
117
|
+
callTimeout: internal.callTimeout,
|
|
118
|
+
childCache: new Map(),
|
|
119
|
+
};
|
|
120
|
+
const child = new PyProxy(childInternal);
|
|
121
|
+
// Cache it for repeated access
|
|
122
|
+
if (internal.addon) {
|
|
123
|
+
internal.childCache.set(prop, child);
|
|
124
|
+
}
|
|
125
|
+
return child;
|
|
126
|
+
},
|
|
127
|
+
// ── Function call (proxy() or proxy.method()) ──────────────────────────
|
|
128
|
+
apply(target, _thisArg, args) {
|
|
129
|
+
const internal = target[exports.PYPROXY_INTERNAL];
|
|
130
|
+
return target._call(internal, args);
|
|
131
|
+
},
|
|
132
|
+
// ── Property assignment ────────────────────────────────────────────────
|
|
133
|
+
set(target, prop, value) {
|
|
134
|
+
const internal = target[exports.PYPROXY_INTERNAL];
|
|
135
|
+
if (typeof prop === 'symbol' || prop.startsWith('__nodepyx_')) {
|
|
136
|
+
return Reflect.set(target, prop, value);
|
|
137
|
+
}
|
|
138
|
+
// Schedule async setAttribute (best-effort, no await)
|
|
139
|
+
target._setAttr(internal, String(prop), value).catch(err => {
|
|
140
|
+
logger.error(`Failed to set Python attribute '${String(prop)}'`, err);
|
|
141
|
+
});
|
|
142
|
+
return true;
|
|
143
|
+
},
|
|
144
|
+
// ── has() — needed for 'in' operator ──────────────────────────────────
|
|
145
|
+
has(_target, _prop) {
|
|
146
|
+
// We can't know without checking Python; return true for everything
|
|
147
|
+
return true;
|
|
148
|
+
},
|
|
149
|
+
// ── deleteProperty ────────────────────────────────────────────────────
|
|
150
|
+
deleteProperty(target, prop) {
|
|
151
|
+
if (typeof prop === 'string') {
|
|
152
|
+
const internal = target[exports.PYPROXY_INTERNAL];
|
|
153
|
+
internal.addon.deleteAttribute(internal.objectId, prop).catch(err => {
|
|
154
|
+
logger.error(`Failed to delete Python attribute '${prop}'`, err);
|
|
155
|
+
});
|
|
156
|
+
internal.childCache.delete(prop);
|
|
157
|
+
}
|
|
158
|
+
return true;
|
|
159
|
+
},
|
|
160
|
+
// ── ownKeys — for Object.keys() ───────────────────────────────────────
|
|
161
|
+
ownKeys(_target) {
|
|
162
|
+
// Can't synchronously get Python keys; return empty
|
|
163
|
+
return [];
|
|
164
|
+
},
|
|
165
|
+
getOwnPropertyDescriptor(_target, prop) {
|
|
166
|
+
if (typeof prop === 'symbol') {
|
|
167
|
+
return undefined;
|
|
168
|
+
}
|
|
169
|
+
return {
|
|
170
|
+
enumerable: false,
|
|
171
|
+
configurable: true,
|
|
172
|
+
writable: false,
|
|
173
|
+
value: undefined,
|
|
174
|
+
};
|
|
175
|
+
},
|
|
176
|
+
};
|
|
177
|
+
// ─── Resolution (await) ────────────────────────────────────────────────────
|
|
178
|
+
async _resolve(internal) {
|
|
179
|
+
try {
|
|
180
|
+
const addon = internal.addon;
|
|
181
|
+
if (internal.path.length === 0) {
|
|
182
|
+
// Resolve the object itself
|
|
183
|
+
const result = await addon.getObjectValue(internal.objectId);
|
|
184
|
+
return PyProxy._deserializeAddonResult(result, internal);
|
|
185
|
+
}
|
|
186
|
+
// Resolve attribute path
|
|
187
|
+
const result = await addon.getAttributePath(internal.objectId, internal.path);
|
|
188
|
+
return PyProxy._deserializeAddonResult(result, internal);
|
|
189
|
+
}
|
|
190
|
+
catch (err) {
|
|
191
|
+
if (err && typeof err === 'object' && 'pythonType' in err) {
|
|
192
|
+
throw (0, ErrorTranslator_1.translatePythonError)({
|
|
193
|
+
type: err.pythonType,
|
|
194
|
+
message: err.message,
|
|
195
|
+
traceback: err.pythonTraceback || '',
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
throw err;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
// ─── Function Call ─────────────────────────────────────────────────────────
|
|
202
|
+
async _call(internal, args) {
|
|
203
|
+
try {
|
|
204
|
+
const addon = internal.addon;
|
|
205
|
+
// Serialize arguments
|
|
206
|
+
const serializedArgs = await Promise.all(args.map(arg => PyProxy._serializeArg(arg)));
|
|
207
|
+
const callOptions = {
|
|
208
|
+
args: serializedArgs,
|
|
209
|
+
kwargs: {},
|
|
210
|
+
timeout: internal.callTimeout,
|
|
211
|
+
};
|
|
212
|
+
// If last arg is a plain object (not PyProxy/Array), treat as kwargs
|
|
213
|
+
if (args.length > 0) {
|
|
214
|
+
const lastArg = args[args.length - 1];
|
|
215
|
+
if (lastArg !== null &&
|
|
216
|
+
typeof lastArg === 'object' &&
|
|
217
|
+
!Array.isArray(lastArg) &&
|
|
218
|
+
!(lastArg instanceof PyProxy) &&
|
|
219
|
+
!(lastArg instanceof ArrayBuffer) &&
|
|
220
|
+
!ArrayBuffer.isView(lastArg) &&
|
|
221
|
+
!('__pyref__' in lastArg) &&
|
|
222
|
+
PyProxy._isPlainObject(lastArg)) {
|
|
223
|
+
// Treat as kwargs
|
|
224
|
+
callOptions.args = serializedArgs.slice(0, -1);
|
|
225
|
+
const kwargsEntries = await Promise.all(Object.entries(lastArg).map(async ([k, v]) => [k, await PyProxy._serializeArg(v)]));
|
|
226
|
+
callOptions.kwargs = Object.fromEntries(kwargsEntries);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
const result = await addon.callFunction(internal.objectId, internal.path, callOptions);
|
|
230
|
+
return PyProxy._deserializeAddonResult(result, internal);
|
|
231
|
+
}
|
|
232
|
+
catch (err) {
|
|
233
|
+
if (err && typeof err === 'object' && 'pythonType' in err) {
|
|
234
|
+
throw (0, ErrorTranslator_1.translatePythonError)({
|
|
235
|
+
type: err.pythonType,
|
|
236
|
+
message: err.message,
|
|
237
|
+
traceback: err.pythonTraceback || '',
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
throw err;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
// ─── Async Iterator (for await...of) ──────────────────────────────────────
|
|
244
|
+
async *_makeAsyncIterator(internal) {
|
|
245
|
+
const addon = internal.addon;
|
|
246
|
+
// Create Python iterator
|
|
247
|
+
const iterResult = await addon.createIterator(internal.objectId, internal.path);
|
|
248
|
+
const iteratorResult = iterResult;
|
|
249
|
+
if (!iteratorResult.success) {
|
|
250
|
+
const err = iteratorResult.error;
|
|
251
|
+
if (err) {
|
|
252
|
+
throw (0, ErrorTranslator_1.translatePythonError)({
|
|
253
|
+
type: err.type,
|
|
254
|
+
message: err.message,
|
|
255
|
+
traceback: err.traceback || '',
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
throw new Error('Failed to create Python iterator');
|
|
259
|
+
}
|
|
260
|
+
// Parse iteratorId from resultJson
|
|
261
|
+
let iteratorId;
|
|
262
|
+
try {
|
|
263
|
+
const parsed = JSON.parse(iterResult.resultJson || '{}');
|
|
264
|
+
iteratorId = parsed.iteratorId;
|
|
265
|
+
}
|
|
266
|
+
catch {
|
|
267
|
+
throw new Error('Failed to parse iterator ID');
|
|
268
|
+
}
|
|
269
|
+
if (!iteratorId) {
|
|
270
|
+
throw new Error('Iterator ID not returned from Python');
|
|
271
|
+
}
|
|
272
|
+
try {
|
|
273
|
+
while (true) {
|
|
274
|
+
const next = await addon.iteratorNext(iteratorId);
|
|
275
|
+
const nextResult = next;
|
|
276
|
+
if (!nextResult.success) {
|
|
277
|
+
break;
|
|
278
|
+
}
|
|
279
|
+
let parsed;
|
|
280
|
+
try {
|
|
281
|
+
parsed = JSON.parse(nextResult.resultJson || '{"done":true}');
|
|
282
|
+
}
|
|
283
|
+
catch {
|
|
284
|
+
break;
|
|
285
|
+
}
|
|
286
|
+
if (parsed.done) {
|
|
287
|
+
break;
|
|
288
|
+
}
|
|
289
|
+
// Deserialize the value
|
|
290
|
+
const value = parsed.value;
|
|
291
|
+
if (value && typeof value === 'object' && '__pyref__' in value) {
|
|
292
|
+
const refId = value.__pyref__;
|
|
293
|
+
yield PyProxy._createFromObjectId(refId, [], addon, internal.callTimeout);
|
|
294
|
+
}
|
|
295
|
+
else {
|
|
296
|
+
yield value;
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
finally {
|
|
301
|
+
// Always destroy the iterator
|
|
302
|
+
await addon.destroyIterator(iteratorId).catch(() => { });
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
// ─── Set Attribute ────────────────────────────────────────────────────────
|
|
306
|
+
async _setAttr(internal, propName, value) {
|
|
307
|
+
const serialized = await PyProxy._serializeArg(value);
|
|
308
|
+
await internal.addon.setAttribute(internal.objectId, propName, serialized);
|
|
309
|
+
// Invalidate cache
|
|
310
|
+
internal.childCache.delete(propName);
|
|
311
|
+
}
|
|
312
|
+
// ─── Static Helpers ────────────────────────────────────────────────────────
|
|
313
|
+
static _createFromObjectId(objectId, path, addon, callTimeout) {
|
|
314
|
+
return new PyProxy({
|
|
315
|
+
objectId,
|
|
316
|
+
path,
|
|
317
|
+
addon,
|
|
318
|
+
isResolved: false,
|
|
319
|
+
callTimeout,
|
|
320
|
+
childCache: new Map(),
|
|
321
|
+
});
|
|
322
|
+
}
|
|
323
|
+
static _deserializeAddonResult(result, internal) {
|
|
324
|
+
const r = result;
|
|
325
|
+
if (!r.success) {
|
|
326
|
+
if (r.error) {
|
|
327
|
+
throw (0, ErrorTranslator_1.translatePythonError)({
|
|
328
|
+
type: r.error.type,
|
|
329
|
+
message: r.error.message,
|
|
330
|
+
traceback: r.error.traceback || '',
|
|
331
|
+
});
|
|
332
|
+
}
|
|
333
|
+
throw new Error('Python call failed without error details');
|
|
334
|
+
}
|
|
335
|
+
if (r.isObject && r.objectId) {
|
|
336
|
+
// Result is a Python object — wrap in PyProxy
|
|
337
|
+
return PyProxy._createFromObjectId(r.objectId, [], internal.addon, internal.callTimeout);
|
|
338
|
+
}
|
|
339
|
+
// Deserialize JSON result
|
|
340
|
+
if (r.resultJson !== undefined && r.resultJson !== null) {
|
|
341
|
+
try {
|
|
342
|
+
const parsed = JSON.parse(r.resultJson);
|
|
343
|
+
if (parsed && typeof parsed === 'object' && '__pyref__' in parsed) {
|
|
344
|
+
return PyProxy._createFromObjectId(parsed.__pyref__, [], internal.addon, internal.callTimeout);
|
|
345
|
+
}
|
|
346
|
+
return parsed;
|
|
347
|
+
}
|
|
348
|
+
catch {
|
|
349
|
+
return r.resultJson;
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
return null;
|
|
353
|
+
}
|
|
354
|
+
static async _serializeArg(value) {
|
|
355
|
+
// Already a SerializedValue
|
|
356
|
+
if (value !== null &&
|
|
357
|
+
typeof value === 'object' &&
|
|
358
|
+
'format' in value) {
|
|
359
|
+
return value;
|
|
360
|
+
}
|
|
361
|
+
// PyProxy → pass as Python reference
|
|
362
|
+
if (value instanceof PyProxy) {
|
|
363
|
+
const internal = value[exports.PYPROXY_INTERNAL];
|
|
364
|
+
// If proxy has a path, resolve it first to get the objectId
|
|
365
|
+
if (internal.path.length > 0) {
|
|
366
|
+
// We need to resolve it — for now, keep as reference
|
|
367
|
+
// Production: could pre-resolve path to objectId
|
|
368
|
+
}
|
|
369
|
+
return {
|
|
370
|
+
format: 6, // PYTHON_REF
|
|
371
|
+
data: null,
|
|
372
|
+
metadata: { objectId: internal.objectId },
|
|
373
|
+
};
|
|
374
|
+
}
|
|
375
|
+
// null / undefined
|
|
376
|
+
if (value === null || value === undefined) {
|
|
377
|
+
return { format: 0, data: 'null', metadata: {} };
|
|
378
|
+
}
|
|
379
|
+
// TypedArrays → numpy-compatible binary
|
|
380
|
+
if (value instanceof Float32Array ||
|
|
381
|
+
value instanceof Float64Array ||
|
|
382
|
+
value instanceof Int8Array ||
|
|
383
|
+
value instanceof Int16Array ||
|
|
384
|
+
value instanceof Int32Array ||
|
|
385
|
+
value instanceof Uint8Array ||
|
|
386
|
+
value instanceof Uint16Array ||
|
|
387
|
+
value instanceof Uint32Array ||
|
|
388
|
+
value instanceof BigInt64Array ||
|
|
389
|
+
value instanceof BigUint64Array) {
|
|
390
|
+
const ta = value;
|
|
391
|
+
const dtype = PyProxy._getTypedArrayDtype(ta);
|
|
392
|
+
return {
|
|
393
|
+
format: 2, // NUMPY_ARRAY
|
|
394
|
+
data: new Uint8Array(ta.buffer, ta.byteOffset, ta.byteLength),
|
|
395
|
+
metadata: {
|
|
396
|
+
dtype,
|
|
397
|
+
shape: [ta.length],
|
|
398
|
+
},
|
|
399
|
+
};
|
|
400
|
+
}
|
|
401
|
+
// ArrayBuffer
|
|
402
|
+
if (value instanceof ArrayBuffer) {
|
|
403
|
+
return {
|
|
404
|
+
format: 7, // BYTES
|
|
405
|
+
data: new Uint8Array(value),
|
|
406
|
+
metadata: {},
|
|
407
|
+
};
|
|
408
|
+
}
|
|
409
|
+
// Primitive types
|
|
410
|
+
if (typeof value === 'number' ||
|
|
411
|
+
typeof value === 'string' ||
|
|
412
|
+
typeof value === 'boolean') {
|
|
413
|
+
return {
|
|
414
|
+
format: 0, // JSON
|
|
415
|
+
data: JSON.stringify(value),
|
|
416
|
+
metadata: {},
|
|
417
|
+
};
|
|
418
|
+
}
|
|
419
|
+
// Array or object — use JSON
|
|
420
|
+
try {
|
|
421
|
+
return {
|
|
422
|
+
format: 0, // JSON
|
|
423
|
+
data: JSON.stringify(value),
|
|
424
|
+
metadata: {},
|
|
425
|
+
};
|
|
426
|
+
}
|
|
427
|
+
catch {
|
|
428
|
+
// Can't serialize — this shouldn't happen for plain objects
|
|
429
|
+
return { format: 8, data: null, metadata: {} }; // NONE
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
static _getTypedArrayDtype(arr) {
|
|
433
|
+
if (arr instanceof Float32Array) {
|
|
434
|
+
return 'float32';
|
|
435
|
+
}
|
|
436
|
+
if (arr instanceof Float64Array) {
|
|
437
|
+
return 'float64';
|
|
438
|
+
}
|
|
439
|
+
if (arr instanceof Int8Array) {
|
|
440
|
+
return 'int8';
|
|
441
|
+
}
|
|
442
|
+
if (arr instanceof Int16Array) {
|
|
443
|
+
return 'int16';
|
|
444
|
+
}
|
|
445
|
+
if (arr instanceof Int32Array) {
|
|
446
|
+
return 'int32';
|
|
447
|
+
}
|
|
448
|
+
if (arr instanceof BigInt64Array) {
|
|
449
|
+
return 'int64';
|
|
450
|
+
}
|
|
451
|
+
if (arr instanceof Uint8Array) {
|
|
452
|
+
return 'uint8';
|
|
453
|
+
}
|
|
454
|
+
if (arr instanceof Uint16Array) {
|
|
455
|
+
return 'uint16';
|
|
456
|
+
}
|
|
457
|
+
if (arr instanceof Uint32Array) {
|
|
458
|
+
return 'uint32';
|
|
459
|
+
}
|
|
460
|
+
if (arr instanceof BigUint64Array) {
|
|
461
|
+
return 'uint64';
|
|
462
|
+
}
|
|
463
|
+
return 'uint8';
|
|
464
|
+
}
|
|
465
|
+
static _isPlainObject(obj) {
|
|
466
|
+
if (!obj || typeof obj !== 'object') {
|
|
467
|
+
return false;
|
|
468
|
+
}
|
|
469
|
+
const proto = Object.getPrototypeOf(obj);
|
|
470
|
+
return proto === null || proto === Object.prototype;
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
exports.PyProxy = PyProxy;
|
|
474
|
+
/**
|
|
475
|
+
* Check if a value is a PyProxy.
|
|
476
|
+
*/
|
|
477
|
+
function isPyProxy(value) {
|
|
478
|
+
return (value instanceof PyProxy ||
|
|
479
|
+
(value !== null &&
|
|
480
|
+
typeof value === 'object' &&
|
|
481
|
+
exports.PYPROXY_INTERNAL in value));
|
|
482
|
+
}
|
|
483
|
+
//# sourceMappingURL=PyProxy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PyProxy.js","sourceRoot":"","sources":["../../src/core/PyProxy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* nodepyx — PyRuntime
|
|
3
|
+
* The central manager for the Python interpreter lifecycle.
|
|
4
|
+
* Creates, configures, and shuts down the embedded CPython instance.
|
|
5
|
+
*/
|
|
6
|
+
import type { NativeAddon } from '../types/addon';
|
|
7
|
+
import type { nodepyxConfig, ResolvednodepyxConfig } from '../types/config';
|
|
8
|
+
import { PyModule } from './PyModule';
|
|
9
|
+
import { PyContext } from './PyContext';
|
|
10
|
+
/**
|
|
11
|
+
* PyRuntime — manages the lifecycle of the embedded Python interpreter.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* const runtime = await PyRuntime.create({
|
|
16
|
+
* virtualenv: { path: '.venv', packages: ['pandas'], autoInstall: true },
|
|
17
|
+
* });
|
|
18
|
+
*
|
|
19
|
+
* const pd = await runtime.import('pandas');
|
|
20
|
+
* const df = await pd.read_csv('data.csv');
|
|
21
|
+
* const result = await df.to_dict('records');
|
|
22
|
+
*
|
|
23
|
+
* await runtime.shutdown();
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export declare class PyRuntime {
|
|
27
|
+
private readonly _config;
|
|
28
|
+
private readonly _addon;
|
|
29
|
+
private readonly _serializer;
|
|
30
|
+
private readonly _typeGenerator;
|
|
31
|
+
private readonly _pluginManager;
|
|
32
|
+
private readonly _memoryMonitor;
|
|
33
|
+
private readonly _moduleCache;
|
|
34
|
+
private _running;
|
|
35
|
+
private constructor();
|
|
36
|
+
/**
|
|
37
|
+
* Create and initialize a PyRuntime instance.
|
|
38
|
+
*/
|
|
39
|
+
static create(config?: nodepyxConfig): Promise<PyRuntime>;
|
|
40
|
+
private _initialize;
|
|
41
|
+
private _setupPythonEnvironment;
|
|
42
|
+
private _bootstrapPythonRuntime;
|
|
43
|
+
/**
|
|
44
|
+
* Import a Python module and return a PyProxy.
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* ```typescript
|
|
48
|
+
* const pd = await runtime.import('pandas');
|
|
49
|
+
* const df = await pd.read_csv('data.csv');
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
import(moduleName: string): Promise<PyModule>;
|
|
53
|
+
/**
|
|
54
|
+
* Import multiple modules at once (concurrent).
|
|
55
|
+
*/
|
|
56
|
+
importAll(moduleNames: string[]): Promise<Record<string, PyModule>>;
|
|
57
|
+
/**
|
|
58
|
+
* Evaluate a Python expression.
|
|
59
|
+
*/
|
|
60
|
+
eval(expression: string): Promise<unknown>;
|
|
61
|
+
/**
|
|
62
|
+
* Execute Python statements.
|
|
63
|
+
*/
|
|
64
|
+
exec(code: string): Promise<void>;
|
|
65
|
+
/**
|
|
66
|
+
* Run a Python script file.
|
|
67
|
+
*/
|
|
68
|
+
runFile(filePath: string): Promise<unknown>;
|
|
69
|
+
/**
|
|
70
|
+
* Create an isolated Python execution context.
|
|
71
|
+
*/
|
|
72
|
+
createContext(): Promise<PyContext>;
|
|
73
|
+
/**
|
|
74
|
+
* Install Python packages into the active environment.
|
|
75
|
+
*/
|
|
76
|
+
installPackages(packages: string[]): Promise<void>;
|
|
77
|
+
/**
|
|
78
|
+
* Get current memory statistics.
|
|
79
|
+
*/
|
|
80
|
+
getMemoryStats(): ReturnType<NativeAddon['getMemoryStats']>;
|
|
81
|
+
/**
|
|
82
|
+
* Trigger Python garbage collection.
|
|
83
|
+
*/
|
|
84
|
+
collectGarbage(): Promise<void>;
|
|
85
|
+
/**
|
|
86
|
+
* Get the underlying native addon.
|
|
87
|
+
* Advanced use only.
|
|
88
|
+
*/
|
|
89
|
+
getAddon(): NativeAddon;
|
|
90
|
+
isRunning(): boolean;
|
|
91
|
+
getConfig(): ResolvednodepyxConfig;
|
|
92
|
+
/**
|
|
93
|
+
* Gracefully shut down the Python runtime.
|
|
94
|
+
* Releases all Python objects and finalizes the interpreter.
|
|
95
|
+
*/
|
|
96
|
+
shutdown(): Promise<void>;
|
|
97
|
+
/**
|
|
98
|
+
* Synchronous shutdown (for process.on('exit') handler).
|
|
99
|
+
* Best-effort only — may not complete all cleanup.
|
|
100
|
+
*/
|
|
101
|
+
shutdownSync(): void;
|
|
102
|
+
private _ensureRunning;
|
|
103
|
+
private _parseBytes;
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=PyRuntime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PyRuntime.d.ts","sourceRoot":"","sources":["../../src/core/PyRuntime.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,KAAK,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAG5E,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAkBxC;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwB;IAChD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IACzC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;IAC/C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;IAC/C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;IAC/C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA+B;IAC5D,OAAO,CAAC,QAAQ,CAAS;IAEzB,OAAO;IAYP;;OAEG;WACU,MAAM,CAAC,MAAM,GAAE,aAAkB,GAAG,OAAO,CAAC,SAAS,CAAC;YA4BrD,WAAW;YAyCX,uBAAuB;YAkCvB,uBAAuB;IA8BrC;;;;;;;;OAQG;IACG,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IA0DnD;;OAEG;IACG,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IASzE;;OAEG;IACG,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA0ChD;;OAEG;IACG,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBvC;;OAEG;IACG,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA2BjD;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,SAAS,CAAC;IAOzC;;OAEG;IACG,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAYxD;;OAEG;IACH,cAAc,IAAI,UAAU,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;IAK3D;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAOrC;;;OAGG;IACH,QAAQ,IAAI,WAAW;IAMvB,SAAS,IAAI,OAAO;IAIpB,SAAS,IAAI,qBAAqB;IAMlC;;;OAGG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAsB/B;;;OAGG;IACH,YAAY,IAAI,IAAI;IAWpB,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,WAAW;CAUpB"}
|