pynect 0.2.7 → 0.2.9

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 (63) hide show
  1. package/README.md +47 -1
  2. package/dist/cli/codegen.d.ts +3 -0
  3. package/dist/cli/codegen.d.ts.map +1 -1
  4. package/dist/cli/codegen.js +12 -0
  5. package/dist/cli/codegen.js.map +1 -1
  6. package/dist/config/project.d.ts +6 -0
  7. package/dist/config/project.d.ts.map +1 -1
  8. package/dist/config/project.js +20 -0
  9. package/dist/config/project.js.map +1 -1
  10. package/dist/core/py-proxy.d.ts +1 -1
  11. package/dist/core/py-proxy.d.ts.map +1 -1
  12. package/dist/core/py-proxy.js +40 -7
  13. package/dist/core/py-proxy.js.map +1 -1
  14. package/dist/core/py-runtime.d.ts +4 -0
  15. package/dist/core/py-runtime.d.ts.map +1 -1
  16. package/dist/core/py-runtime.js +30 -0
  17. package/dist/core/py-runtime.js.map +1 -1
  18. package/dist/core/pynect-callback.d.ts +25 -0
  19. package/dist/core/pynect-callback.d.ts.map +1 -0
  20. package/dist/core/pynect-callback.js +99 -0
  21. package/dist/core/pynect-callback.js.map +1 -0
  22. package/dist/index.d.ts +7 -2
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +8 -0
  25. package/dist/index.js.map +1 -1
  26. package/dist/native/native-addon-loader.d.ts.map +1 -1
  27. package/dist/native/native-addon-loader.js +15 -5
  28. package/dist/native/native-addon-loader.js.map +1 -1
  29. package/dist/types/addon.d.ts +6 -0
  30. package/dist/types/addon.d.ts.map +1 -1
  31. package/dist/types/addon.js.map +1 -1
  32. package/dist/types/config.d.ts +10 -0
  33. package/dist/types/config.d.ts.map +1 -1
  34. package/dist/types/config.js +6 -0
  35. package/dist/types/config.js.map +1 -1
  36. package/dist/types/index.d.ts +1 -1
  37. package/dist/types/index.d.ts.map +1 -1
  38. package/dist/types/index.js.map +1 -1
  39. package/dist/types/python.d.ts +2 -0
  40. package/dist/types/python.d.ts.map +1 -1
  41. package/package.json +2 -2
  42. package/prebuilds/darwin-arm64/pynect-prebuild.json +1 -1
  43. package/prebuilds/darwin-arm64/pynect_addon.node +0 -0
  44. package/prebuilds/darwin-x64/pynect-prebuild.json +1 -1
  45. package/prebuilds/darwin-x64/pynect_addon.node +0 -0
  46. package/prebuilds/linux-arm64/pynect-prebuild.json +1 -1
  47. package/prebuilds/linux-arm64/pynect_addon.node +0 -0
  48. package/prebuilds/linux-x64/pynect-prebuild.json +1 -1
  49. package/prebuilds/linux-x64/pynect_addon.node +0 -0
  50. package/prebuilds/win32-arm64/pynect-prebuild.json +1 -1
  51. package/prebuilds/win32-arm64/pynect_addon.node +0 -0
  52. package/prebuilds/win32-x64/pynect-prebuild.json +1 -1
  53. package/prebuilds/win32-x64/pynect_addon.node +0 -0
  54. package/python/type_inspector.py +12 -0
  55. package/scripts/smoke-python-boundary.js +70 -0
  56. package/src/native/callback_bridge.h +11 -0
  57. package/src/native/native-addon-loader.ts +13 -4
  58. package/src/native/pynect_addon.cpp +346 -4
  59. package/src/native/python_bridge.cpp +12 -0
  60. package/src/native/python_bridge.h +7 -0
  61. package/src/native/thread_pool.cpp +62 -55
  62. package/src/native/thread_pool.h +13 -0
  63. package/src/native/type_converter.h +2 -0
@@ -31,6 +31,8 @@ export interface AddonInitOptions {
31
31
  enableProfiling: boolean;
32
32
  /** Include Python tracebacks in JavaScript errors */
33
33
  includeTracebacks: boolean;
34
+ /** Callback recursion ceiling; 0 uses Python's active recursion limit. */
35
+ callbackMaxDepth: number;
34
36
  }
35
37
  export interface AddonImportResult {
36
38
  objectId: number;
@@ -56,6 +58,8 @@ export interface AddonCallOptions {
56
58
  executionTimeout?: number;
57
59
  /** Unique key used for cancellation. */
58
60
  requestId?: string;
61
+ /** Logical callback depth propagated through reentrant Python calls. */
62
+ callbackDepth?: number;
59
63
  }
60
64
  export interface PyCallOptions {
61
65
  /** Cancel a queued or asynchronous Python call. */
@@ -94,6 +98,8 @@ export interface NativeAddon {
94
98
  initializePython(options: AddonInitOptions): Promise<void>;
95
99
  finalizePython(): Promise<void>;
96
100
  isInitialized(): boolean;
101
+ registerCallback(dispatcher: (...args: never[]) => unknown): number;
102
+ disposeCallback(callbackId: number): void;
97
103
  importModule(moduleName: string): Promise<AddonImportResult>;
98
104
  reloadModule(objectId: number): Promise<AddonImportResult>;
99
105
  getAttribute(objectId: number, name: string): Promise<AddonAttributeResult>;
@@ -1 +1 @@
1
- {"version":3,"file":"addon.d.ts","sourceRoot":"","sources":["../../src/types/addon.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"addon.d.ts","sourceRoot":"","sources":["../../src/types/addon.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACZ,cAAc,EACd,UAAU,EACV,aAAa,EACd,MAAM,UAAU,CAAC;AAElB,MAAM,WAAW,gBAAgB;IAC/B,oCAAoC;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,gCAAgC;IAChC,gBAAgB,EAAE,MAAM,CAAC;IACzB,oDAAoD;IACpD,oBAAoB,EAAE,MAAM,CAAC;IAC7B,8EAA8E;IAC9E,YAAY,EAAE,MAAM,CAAC;IACrB,wDAAwD;IACxD,aAAa,EAAE,MAAM,CAAC;IACtB,uBAAuB;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,4BAA4B;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,0CAA0C;IAC1C,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kCAAkC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,yCAAyC;IACzC,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,4BAA4B;IAC5B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,uBAAuB;IACvB,eAAe,EAAE,OAAO,CAAC;IACzB,qDAAqD;IACrD,iBAAiB,EAAE,OAAO,CAAC;IAC3B,0EAA0E;IAC1E,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,2BAA2B;IAC3B,IAAI,EAAE,eAAe,EAAE,CAAC;IACxB,wBAAwB;IACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACxC,iCAAiC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2DAA2D;IAC3D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,mDAAmD;IACnD,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,qDAAqD;IACrD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,2EAA2E;IAC3E,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzC;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAE1B,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,aAAa,IAAI,OAAO,CAAC;IAGzB,gBAAgB,CAAC,UAAU,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,OAAO,GAAG,MAAM,CAAC;IACpE,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAG1C,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC7D,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAG3D,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC5E,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACvF,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACvF,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/D,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAGlE,YAAY,CACV,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,aAAa,EACnB,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,YAAY,CAAC,CAAC;IACzB,UAAU,CACR,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,YAAY,CAAC,CAAC;IACzB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAGhD,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACnD,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAC3D,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACjD,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACnD,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAGnD,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACpF,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAC1D,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAGnD,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IACjF,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAC1D,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAGzD,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAGhC,cAAc,IAAI,gBAAgB,CAAC;IACnC,kBAAkB,IAAI,oBAAoB,CAAC;IAC3C,mBAAmB,IAAI,IAAI,CAAC;IAG5B,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,kBAAkB,IAAI;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CACzE;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,WAAW,CAiB7C"}
@@ -1 +1 @@
1
- {"version":3,"file":"addon.js","sourceRoot":"","sources":["../../src/types/addon.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAyKH,0CAiBC;AApBD;;GAEG;AACH,SAAgB,eAAe;IAC7B,4DAA4D;IAC5D,IAAI,CAAC;QACH,+DAA+D;QAC/D,8DAA8D;QAC9D,MAAM,KAAK,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;QACxC,OAAO,KAAK,CAAC,SAAS,GAAG,SAAS,CAAgB,CAAC;IACrD,CAAC;IAAC,MAAM,CAAC;QACP,mCAAmC;QACnC,IAAI,CAAC;YACH,8DAA8D;YAC9D,OAAO,OAAO,CAAC,uCAAuC,CAAgB,CAAC;QACzE,CAAC;QAAC,MAAM,CAAC;YACP,8DAA8D;YAC9D,OAAO,OAAO,CAAC,qCAAqC,CAAgB,CAAC;QACvE,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"addon.js","sourceRoot":"","sources":["../../src/types/addon.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAiLH,0CAiBC;AApBD;;GAEG;AACH,SAAgB,eAAe;IAC7B,4DAA4D;IAC5D,IAAI,CAAC;QACH,+DAA+D;QAC/D,8DAA8D;QAC9D,MAAM,KAAK,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;QACxC,OAAO,KAAK,CAAC,SAAS,GAAG,SAAS,CAAgB,CAAC;IACrD,CAAC;IAAC,MAAM,CAAC;QACP,mCAAmC;QACnC,IAAI,CAAC;YACH,8DAA8D;YAC9D,OAAO,OAAO,CAAC,uCAAuC,CAAgB,CAAC;QACzE,CAAC;QAAC,MAAM,CAAC;YACP,8DAA8D;YAC9D,OAAO,OAAO,CAAC,qCAAqC,CAAgB,CAAC;QACvE,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -61,6 +61,13 @@ export interface IsolationConfig {
61
61
  /** Working directory for the isolated Python worker. Default: process.cwd(). */
62
62
  cwd?: string;
63
63
  }
64
+ export interface CallbackConfig {
65
+ /**
66
+ * Maximum nested Python -> JavaScript -> Python callback depth.
67
+ * By default Pynect uses the embedded interpreter's active recursion limit.
68
+ */
69
+ maxDepth?: number;
70
+ }
64
71
  export interface MemoryConfig {
65
72
  /** Maximum Python heap size (e.g. '2GB', '512MB'). Default: '2GB' */
66
73
  limit?: string;
@@ -161,6 +168,8 @@ export interface PynectConfig extends PynectPackageManifest {
161
168
  executionTimeout?: number;
162
169
  /** Optional process-isolated, JSON-only calls with hard termination. */
163
170
  isolation?: IsolationConfig;
171
+ /** Registered JavaScript callback behavior. */
172
+ callbacks?: CallbackConfig;
164
173
  /** Callable selection and optional Pydantic validation policy. */
165
174
  dispatcher?: DispatcherConfig;
166
175
  /** Expose raw Python eval, exec, contexts, and native addon access. Default: false. */
@@ -218,6 +227,7 @@ export interface ResolvedPynectConfig {
218
227
  logLevel: LogLevel;
219
228
  callTimeout: number;
220
229
  executionTimeout: number;
230
+ callbackMaxDepth: number;
221
231
  isolation: Required<IsolationConfig>;
222
232
  dispatcher: Required<DispatcherConfig>;
223
233
  allowUnsafeCode: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE7E,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AACtE,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,UAAU,GAAG,KAAK,CAAC;AAEzD,MAAM,WAAW,gBAAgB;IAC/B,gEAAgE;IAChE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,oEAAoE;IACpE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,wDAAwD;IACxD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,4CAA4C;IAC5C,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,wEAAwE;IACxE,UAAU,CAAC,EAAE,cAAc,CAAC;CAC7B;AAED,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2FAA2F;IAC3F,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,+DAA+D;IAC/D,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,6EAA6E;IAC7E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gFAAgF;IAChF,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,SAAS;IACxB;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,sEAAsE;IACtE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oEAAoE;IACpE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qEAAqE;IACrE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,uEAAuE;IACvE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,+EAA+E;IAC/E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gFAAgF;IAChF,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,qEAAqE;IACrE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yEAAyE;IACzE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4DAA4D;IAC5D,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,2CAA2C;IAC3C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,mCAAmC;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sDAAsD;IACtD,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,YAAa,SAAQ,qBAAqB;IACzD,yFAAyF;IACzF,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB,0FAA0F;IAC1F,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,uEAAuE;IACvE,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,+FAA+F;IAC/F,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,4DAA4D;IAC5D,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB,mEAAmE;IACnE,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,wFAAwF;IACxF,wBAAwB,CAAC,EAAE,OAAO,CAAC;IAEnC,6CAA6C;IAC7C,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B,yCAAyC;IACzC,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB,wDAAwD;IACxD,4BAA4B,CAAC,EAAE,OAAO,CAAC;IAEvC,iEAAiE;IACjE,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,4EAA4E;IAC5E,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,gGAAgG;IAChG,QAAQ,CAAC,EAAE,YAAY,CAAC;IAExB,gEAAgE;IAChE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,8DAA8D;IAC9D,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B;;;OAGG;IACH,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAE9B;;OAEG;IACH,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAE9B;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC;IAEtB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAEpB;;OAEG;IACH,SAAS,CAAC,EAAE,eAAe,CAAC;IAE5B;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,uGAAuG;IACvG,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,wEAAwE;IACxE,SAAS,CAAC,EAAE,eAAe,CAAC;IAE5B,+CAA+C;IAC/C,SAAS,CAAC,EAAE,cAAc,CAAC;IAE3B,kEAAkE;IAClE,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAE9B,uFAAuF;IACvF,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B,+DAA+D;IAC/D,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B,sEAAsE;IACtE,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B;;OAEG;IACH,GAAG,CAAC,EAAE,SAAS,CAAC;IAEhB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAE5B;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE7B;;OAEG;IACH,YAAY,CAAC,EAAE;QACb,+DAA+D;QAC/D,iBAAiB,CAAC,EAAE,OAAO,CAAC;QAC5B,+CAA+C;QAC/C,cAAc,CAAC,EAAE,OAAO,CAAC;KAC1B,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,OAAO,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,aAAa,EAAE,OAAO,CAAC;IACvB,4BAA4B,EAAE,OAAO,CAAC;IACtC,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,YAAY,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,OAAO,CAAC;IACvB,QAAQ,EAAE,QAAQ,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;IACrC,UAAU,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IACvC,eAAe,EAAE,OAAO,CAAC;IACzB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,GAAG,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;IACzB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,yBAAyB,EAAE,MAAM,CAAC;IAClC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,cAAc,EAAE,OAAO,CAAC;IACxB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,wBAAgB,aAAa,CAAC,MAAM,GAAE,YAAiB,GAAG,oBAAoB,CAyD7E"}
@@ -8,6 +8,11 @@ exports.resolveConfig = resolveConfig;
8
8
  const os_1 = require("os");
9
9
  const pyfig_1 = require("pyfig");
10
10
  function resolveConfig(config = {}) {
11
+ const callbackMaxDepth = config.callbacks?.maxDepth ?? 0;
12
+ if (!Number.isSafeInteger(callbackMaxDepth) ||
13
+ (config.callbacks?.maxDepth !== undefined && callbackMaxDepth <= 0)) {
14
+ throw new TypeError('callbacks.maxDepth must be a positive integer when provided.');
15
+ }
11
16
  return {
12
17
  autoShutdown: config.autoShutdown ?? true,
13
18
  pythonExecutable: config.python ?? config.pythonPath ?? 'python3',
@@ -31,6 +36,7 @@ function resolveConfig(config = {}) {
31
36
  logLevel: config.logLevel ?? 'warn',
32
37
  callTimeout: config.callTimeout ?? 0,
33
38
  executionTimeout: config.executionTimeout ?? 0,
39
+ callbackMaxDepth,
34
40
  isolation: {
35
41
  enabled: config.isolation?.enabled ?? false,
36
42
  timeout: config.isolation?.timeout ?? 30000,
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAuRH,sCAmDC;AAxUD,2BAA0C;AAC1C,iCAA4C;AAoR5C,SAAgB,aAAa,CAAC,SAAuB,EAAE;IACrD,OAAO;QACL,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,IAAI;QACzC,gBAAgB,EAAE,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,UAAU,IAAI,SAAS;QACjE,UAAU,EAAE,EAAE;QACd,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE;QAChD,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,iBAAiB;QAC1D,iBAAiB,EAAE,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,iBAAiB,IAAI,IAAI;QAC3E,aAAa,EAAE,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,aAAa,IAAI,IAAI;QAC/D,4BAA4B,EAAE,MAAM,CAAC,wBAAwB,IAAI,MAAM,CAAC,4BAA4B,IAAI,IAAI;QAC5G,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,MAAM;QAC7C,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,2BAAmB;QAClD,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,OAAO;QACpC,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,aAAa;QAC1C,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,IAAI,EAAE;QACnD,cAAc,EAAE,MAAM,CAAC,UAAU,EAAE,IAAI,IAAI,MAAM,CAAC,cAAc,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAA,yBAAoB,GAAE,CAAC;QACvG,YAAY,EAAE,MAAM,CAAC,UAAU,EAAE,YAAY,IAAI,IAAI;QACrD,WAAW,EAAE,MAAM,CAAC,UAAU,EAAE,WAAW,IAAI,KAAK;QACpD,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,IAAI,MAAM,CAAC,WAAW,IAAI,KAAK;QAChE,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,IAAI,KAAK;QAChD,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,IAAI,KAAK;QACpD,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,MAAM;QACnC,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,CAAC;QACpC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,IAAI,CAAC;QAC9C,SAAS,EAAE;YACT,OAAO,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,IAAI,KAAK;YAC3C,OAAO,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,IAAI,KAAK;YAC3C,GAAG,EAAE,MAAM,CAAC,SAAS,EAAE,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE;SAC5C;QACD,UAAU,EAAE;YACV,OAAO,EAAE,MAAM,CAAC,UAAU,EAAE,OAAO,IAAI,EAAE;YACzC,OAAO,EAAE,MAAM,CAAC,UAAU,EAAE,OAAO,IAAI,EAAE;YACzC,SAAS,EAAE,MAAM,CAAC,UAAU,EAAE,SAAS,IAAI,KAAK;YAChD,YAAY,EAAE,MAAM,CAAC,UAAU,EAAE,YAAY,IAAI,KAAK;YACtD,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,UAAU,IAAI,MAAM;SACpD;QACD,eAAe,EAAE,MAAM,CAAC,eAAe,IAAI,KAAK;QAChD,mBAAmB,EAAE,MAAM,CAAC,mBAAmB,IAAI,KAAK;QACxD,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,IAAI,KAAK;QACpD,GAAG,EAAE;YACH,eAAe,EAAE,MAAM,CAAC,GAAG,EAAE,eAAe,IAAI,IAAI;YACpD,cAAc,EAAE,MAAM,CAAC,GAAG,EAAE,cAAc,IAAI,KAAK;SACpD;QACD,gBAAgB,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,IAAI,MAAM,CAAC,eAAe,IAAI,KAAK;QAC9E,aAAa,EAAE,MAAM,CAAC,SAAS,EAAE,UAAU;QAC3C,yBAAyB,EAAE,MAAM,CAAC,SAAS,EAAE,gBAAgB,IAAI,IAAI;QACrE,iBAAiB,EAAE,MAAM,CAAC,YAAY,EAAE,iBAAiB,IAAI,IAAI;QACjE,cAAc,EAAE,MAAM,CAAC,YAAY,EAAE,cAAc,IAAI,IAAI;QAC3D,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,EAAE;QACrB,eAAe,EAAE,MAAM,CAAC,gBAAgB,IAAI,EAAE;KAC/C,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  * pynect - Types Index
3
3
  * Re-exports all public type definitions.
4
4
  */
5
- export type { PynectConfig, ResolvedPynectConfig, VirtualenvConfig, GILConfig, ThreadPoolConfig, MemoryConfig, ProfilingConfig, IsolationConfig, DispatcherConfig, LogLevel, } from './config';
5
+ export type { PynectConfig, ResolvedPynectConfig, VirtualenvConfig, GILConfig, ThreadPoolConfig, MemoryConfig, ProfilingConfig, IsolationConfig, CallbackConfig, DispatcherConfig, LogLevel, } from './config';
6
6
  export { resolveConfig } from './config';
7
7
  export type { PyObjectId, PyTypeName, PyTypeInfo, PyParamInfo, PyMemberInfo, PyCallableInfo, PyClassInfo, PyModuleInspection, SerializedFormat, SerializedValue, SerializedMetadata, PyCallResult, PyErrorInfo, PyIteratorState, PyIteratorNext, DataFrameResult, SeriesResult, NumPyArrayResult, AttributePath, PyProxyInterface, } from './python';
8
8
  export type { NativeAddon, AddonInitOptions, AddonImportResult, AddonAttributeResult, AddonCallOptions, AddonIteratorResult, AddonMemoryStats, AddonProfilingReport, PyCallOptions, } from './addon';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,YAAY,EACV,YAAY,EACZ,oBAAoB,EACpB,gBAAgB,EAChB,SAAS,EACT,gBAAgB,EAChB,YAAY,EACZ,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,QAAQ,GACT,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,YAAY,EACV,UAAU,EACV,UAAU,EACV,UAAU,EACV,WAAW,EACX,YAAY,EACZ,cAAc,EACd,WAAW,EACX,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,YAAY,EACZ,WAAW,EACX,eAAe,EACf,cAAc,EACd,eAAe,EACf,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,gBAAgB,GACjB,MAAM,UAAU,CAAC;AAElB,YAAY,EACV,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,EACpB,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,EACpB,aAAa,GACd,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,YAAY,EACV,YAAY,EACZ,oBAAoB,EACpB,gBAAgB,EAChB,SAAS,EACT,gBAAgB,EAChB,YAAY,EACZ,eAAe,EACf,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,QAAQ,GACT,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,YAAY,EACV,UAAU,EACV,UAAU,EACV,UAAU,EACV,WAAW,EACX,YAAY,EACZ,cAAc,EACd,WAAW,EACX,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,YAAY,EACZ,WAAW,EACX,eAAe,EACf,cAAc,EACd,eAAe,EACf,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,gBAAgB,GACjB,MAAM,UAAU,CAAC;AAElB,YAAY,EACV,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,EACpB,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,EACpB,aAAa,GACd,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAeH,mCAAyC;AAAhC,uGAAA,aAAa,OAAA;AAqCtB,iCAA0C;AAAjC,wGAAA,eAAe,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAgBH,mCAAyC;AAAhC,uGAAA,aAAa,OAAA;AAqCtB,iCAA0C;AAAjC,wGAAA,eAAe,OAAA"}
@@ -106,6 +106,8 @@ export interface SerializedValue {
106
106
  export interface SerializedMetadata {
107
107
  /** For python_ref: the object ID */
108
108
  objectId?: number;
109
+ /** For a registered JavaScript callback. */
110
+ callbackId?: number;
109
111
  /** For numpy_array: dtype, shape, strides */
110
112
  dtype?: string;
111
113
  shape?: number[];
@@ -1 +1 @@
1
- {"version":3,"file":"python.d.ts","sourceRoot":"","sources":["../../src/types/python.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"python.d.ts","sourceRoot":"","sources":["../../src/types/python.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pynect",
3
- "version": "0.2.7",
3
+ "version": "0.2.9",
4
4
  "packageManager": "bun@1.4.4",
5
5
  "description": "Typed, optionally Pydantic-validated Python calls from Node.js and Bun through embedded CPython.",
6
6
  "main": "dist/index.js",
@@ -86,7 +86,7 @@
86
86
  "node-gyp": "^11.5.0",
87
87
  "node-gyp-build": "^4.8.4",
88
88
  "pacwich": "^0.7.3",
89
- "pyfig": "^0.6.2",
89
+ "pyfig": "^0.6.3",
90
90
  "semver": "^7.8.5"
91
91
  },
92
92
  "devDependencies": {
@@ -6,5 +6,5 @@
6
6
  "pythonAbi": "cp310-abi3",
7
7
  "pythonLibraryName": "libpython3.dylib",
8
8
  "napi": 8,
9
- "nativeFingerprint": "sha256:e375cc859a1ef9a6e8e72f182886c847c2489e9ed5a6017f08d43dd01425bd52"
9
+ "nativeFingerprint": "sha256:5013f340cf0381386cc99a1837107a2c057d26417de63c5f1690639b2547e5a8"
10
10
  }
@@ -6,5 +6,5 @@
6
6
  "pythonAbi": "cp310-abi3",
7
7
  "pythonLibraryName": "libpython3.dylib",
8
8
  "napi": 8,
9
- "nativeFingerprint": "sha256:e375cc859a1ef9a6e8e72f182886c847c2489e9ed5a6017f08d43dd01425bd52"
9
+ "nativeFingerprint": "sha256:5013f340cf0381386cc99a1837107a2c057d26417de63c5f1690639b2547e5a8"
10
10
  }
@@ -6,6 +6,6 @@
6
6
  "pythonAbi": "cp310-abi3",
7
7
  "pythonLibraryName": "libpython3.so",
8
8
  "napi": 8,
9
- "nativeFingerprint": "sha256:e375cc859a1ef9a6e8e72f182886c847c2489e9ed5a6017f08d43dd01425bd52",
9
+ "nativeFingerprint": "sha256:5013f340cf0381386cc99a1837107a2c057d26417de63c5f1690639b2547e5a8",
10
10
  "glibc": "2.39"
11
11
  }
@@ -6,6 +6,6 @@
6
6
  "pythonAbi": "cp310-abi3",
7
7
  "pythonLibraryName": "libpython3.so",
8
8
  "napi": 8,
9
- "nativeFingerprint": "sha256:e375cc859a1ef9a6e8e72f182886c847c2489e9ed5a6017f08d43dd01425bd52",
9
+ "nativeFingerprint": "sha256:5013f340cf0381386cc99a1837107a2c057d26417de63c5f1690639b2547e5a8",
10
10
  "glibc": "2.35"
11
11
  }
@@ -6,5 +6,5 @@
6
6
  "pythonAbi": "cp310-abi3",
7
7
  "pythonLibraryName": "python3.dll",
8
8
  "napi": 8,
9
- "nativeFingerprint": "sha256:e375cc859a1ef9a6e8e72f182886c847c2489e9ed5a6017f08d43dd01425bd52"
9
+ "nativeFingerprint": "sha256:5013f340cf0381386cc99a1837107a2c057d26417de63c5f1690639b2547e5a8"
10
10
  }
@@ -6,5 +6,5 @@
6
6
  "pythonAbi": "cp310-abi3",
7
7
  "pythonLibraryName": "python3.dll",
8
8
  "napi": 8,
9
- "nativeFingerprint": "sha256:e375cc859a1ef9a6e8e72f182886c847c2489e9ed5a6017f08d43dd01425bd52"
9
+ "nativeFingerprint": "sha256:5013f340cf0381386cc99a1837107a2c057d26417de63c5f1690639b2547e5a8"
10
10
  }
@@ -11,6 +11,7 @@ Returns a JSON-serializable dict matching RawModuleInspection in TypeGenerator.t
11
11
  from __future__ import annotations
12
12
 
13
13
  import inspect
14
+ import collections.abc
14
15
  import json
15
16
  import importlib
16
17
  import sys
@@ -40,6 +41,9 @@ def _get_annotation(annotation: Any) -> str:
40
41
  return 'None'
41
42
  if isinstance(annotation, str):
42
43
  return annotation
44
+ origin = getattr(annotation, '__origin__', None)
45
+ if origin is collections.abc.Callable:
46
+ return _stringify_generic(annotation)
43
47
  if hasattr(annotation, '__name__'):
44
48
  return annotation.__name__
45
49
  if hasattr(annotation, '__origin__'):
@@ -63,6 +67,14 @@ def _stringify_generic(tp: Any) -> str:
63
67
  parts = [_get_annotation(a) for a in args]
64
68
  return f"Union[{', '.join(parts)}]"
65
69
 
70
+ if origin is collections.abc.Callable:
71
+ if len(args) == 2 and args[0] is Ellipsis:
72
+ return f"Callable[..., {_get_annotation(args[1])}]"
73
+ if args:
74
+ parameters = ', '.join(_get_annotation(a) for a in args[:-1])
75
+ return f"Callable[[{parameters}], {_get_annotation(args[-1])}]"
76
+ return 'Callable'
77
+
66
78
  # typing.Optional[X] is Union[X, None]
67
79
  if len(args) == 2 and type(None) in args:
68
80
  non_none = [a for a in args if a is not type(None)][0]
@@ -1,5 +1,7 @@
1
1
  'use strict';
2
2
 
3
+ process.env.PYNECT_PREFER_LOCAL ??= '1';
4
+
3
5
  const path = require('path');
4
6
  const { ensurePynectEnvironment } = require('./pyfig');
5
7
 
@@ -40,6 +42,22 @@ async function main() {
40
42
  );
41
43
  assertSuccess(inspector, 'codegen inspector');
42
44
  JSON.parse(inspector.stdout);
45
+ const callbackInspection = client.pythonSync(
46
+ [path.join(ROOT, 'python', 'type_inspector.py'), 'pynect_callback_fixture'],
47
+ {
48
+ encoding: 'utf8',
49
+ env: {
50
+ ...process.env,
51
+ PYTHONPATH: path.join(ROOT, 'tests', 'fixtures'),
52
+ },
53
+ },
54
+ );
55
+ assertSuccess(callbackInspection, 'callback type inspector');
56
+ const inspectedCallback = JSON.parse(callbackInspection.stdout).functions
57
+ .find(item => item.name === 'invoke')?.parameters?.[0]?.type;
58
+ if (inspectedCallback !== 'Callable[[Any], Any]') {
59
+ throw new Error(`Callback annotation was inspected as ${String(inspectedCallback)}.`);
60
+ }
43
61
 
44
62
  const worker = client.pythonSync(
45
63
  [path.join(ROOT, 'python', 'isolated_worker.py')],
@@ -69,10 +87,52 @@ async function main() {
69
87
  projectRoot: ROOT,
70
88
  allowUnsafeCode: true,
71
89
  logLevel: 'error',
90
+ pythonPath_extra: [path.join(ROOT, 'tests', 'fixtures')],
91
+ threadPool: { size: 1 },
92
+ callbacks: { maxDepth: 2 },
72
93
  });
73
94
  try {
74
95
  const embedded = await pynect.py.eval('__import__("sys").executable');
75
96
  assertSamePython(embedded, expected, 'embedded CPython');
97
+ const fixture = await pynect.importModule('pynect_callback_fixture');
98
+ await assertRejects(
99
+ () => fixture.invoke((value) => value, 1),
100
+ /ctx\.callback\(\)/,
101
+ 'unregistered callback',
102
+ );
103
+
104
+ let disposedCallback;
105
+ await pynect.withCallbacks(async ctx => {
106
+ const asyncCallback = ctx.callback(async value => {
107
+ await Promise.resolve();
108
+ return value * 3;
109
+ });
110
+ if (await fixture.invoke(asyncCallback, 4) !== 12) {
111
+ throw new Error('Async JavaScript callback returned the wrong value.');
112
+ }
113
+
114
+ const reentrantCallback = ctx.callback(async value => fixture.double(value));
115
+ if (await fixture.invoke(reentrantCallback, 5) !== 10) {
116
+ throw new Error('Reentrant JavaScript callback returned the wrong value.');
117
+ }
118
+
119
+ let recursiveCallback;
120
+ recursiveCallback = ctx.callback(async depth => {
121
+ if (depth <= 0) return 0;
122
+ return fixture.invoke(recursiveCallback, depth - 1);
123
+ });
124
+ await assertRejects(
125
+ () => fixture.invoke(recursiveCallback, 2),
126
+ /recursion depth 3 exceeds the configured maximum of 2/,
127
+ 'callback recursion limit',
128
+ );
129
+ disposedCallback = asyncCallback;
130
+ });
131
+ await assertRejects(
132
+ () => fixture.invoke(disposedCallback, 1),
133
+ /disposed/,
134
+ 'callback context disposal',
135
+ );
76
136
  } finally {
77
137
  await pynect.shutdown();
78
138
  }
@@ -80,6 +140,16 @@ async function main() {
80
140
  console.log(`Python ${python.version} boundary verified: ${python.executable}`);
81
141
  }
82
142
 
143
+ async function assertRejects(action, pattern, label) {
144
+ try {
145
+ await action();
146
+ } catch (error) {
147
+ if (pattern.test(String(error?.message || error))) return;
148
+ throw new Error(`${label} failed with an unexpected error: ${error?.message || error}`);
149
+ }
150
+ throw new Error(`${label} did not reject.`);
151
+ }
152
+
83
153
  function assertSuccess(result, label) {
84
154
  if (result.status !== 0 || result.error) {
85
155
  throw new Error(`${label} failed: ${String(result.stderr || result.error?.message || result.status)}`);
@@ -0,0 +1,11 @@
1
+ #pragma once
2
+
3
+ #include <Python.h>
4
+ #include <cstdint>
5
+
6
+ namespace pynect {
7
+
8
+ /** Create a Python callable backed by a registered JavaScript callback. */
9
+ PyObject* createPythonCallback(uint32_t callbackId);
10
+
11
+ } // namespace pynect
@@ -18,15 +18,24 @@ export interface NativeAddonBuildOptions {
18
18
  export function loadOrBuildNativeAddon(options: NativeAddonBuildOptions): NativeAddon {
19
19
  let initialError: unknown = new Error('Native rebuild explicitly requested.');
20
20
  if (process.env['PYNECT_FORCE_BUILD'] !== '1') {
21
+ if (process.env['PYNECT_PREFER_LOCAL'] === '1') {
22
+ try {
23
+ return loadMatchingLocalAddon(options);
24
+ } catch (error) {
25
+ initialError = error;
26
+ }
27
+ }
21
28
  try {
22
29
  return loadMatchingPrebuild(options);
23
30
  } catch (error) {
24
31
  initialError = error;
25
32
  }
26
- try {
27
- return loadMatchingLocalAddon(options);
28
- } catch (error) {
29
- initialError = new AggregateError([initialError, error], 'No compatible native addon loaded.');
33
+ if (process.env['PYNECT_PREFER_LOCAL'] !== '1') {
34
+ try {
35
+ return loadMatchingLocalAddon(options);
36
+ } catch (error) {
37
+ initialError = new AggregateError([initialError, error], 'No compatible native addon loaded.');
38
+ }
30
39
  }
31
40
  }
32
41