tywrap 0.6.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/dist/core/annotation-parser.d.ts.map +1 -1
  2. package/dist/core/annotation-parser.js +19 -14
  3. package/dist/core/annotation-parser.js.map +1 -1
  4. package/dist/core/discovery.d.ts +17 -0
  5. package/dist/core/discovery.d.ts.map +1 -1
  6. package/dist/core/discovery.js +59 -49
  7. package/dist/core/discovery.js.map +1 -1
  8. package/dist/core/generator.d.ts.map +1 -1
  9. package/dist/core/generator.js +40 -9
  10. package/dist/core/generator.js.map +1 -1
  11. package/dist/core/validation.d.ts +23 -0
  12. package/dist/core/validation.d.ts.map +1 -1
  13. package/dist/core/validation.js +52 -48
  14. package/dist/core/validation.js.map +1 -1
  15. package/dist/dev.d.ts.map +1 -1
  16. package/dist/dev.js +175 -133
  17. package/dist/dev.js.map +1 -1
  18. package/dist/runtime/base-bridge.d.ts +57 -0
  19. package/dist/runtime/base-bridge.d.ts.map +1 -0
  20. package/dist/runtime/base-bridge.js +72 -0
  21. package/dist/runtime/base-bridge.js.map +1 -0
  22. package/dist/runtime/bridge-codec.d.ts +15 -0
  23. package/dist/runtime/bridge-codec.d.ts.map +1 -1
  24. package/dist/runtime/bridge-codec.js +45 -48
  25. package/dist/runtime/bridge-codec.js.map +1 -1
  26. package/dist/runtime/http-transport.d.ts +11 -1
  27. package/dist/runtime/http-transport.d.ts.map +1 -1
  28. package/dist/runtime/http-transport.js +19 -0
  29. package/dist/runtime/http-transport.js.map +1 -1
  30. package/dist/runtime/http.d.ts +5 -12
  31. package/dist/runtime/http.d.ts.map +1 -1
  32. package/dist/runtime/http.js +6 -29
  33. package/dist/runtime/http.js.map +1 -1
  34. package/dist/runtime/index.d.ts +1 -1
  35. package/dist/runtime/index.d.ts.map +1 -1
  36. package/dist/runtime/index.js.map +1 -1
  37. package/dist/runtime/node.d.ts +12 -19
  38. package/dist/runtime/node.d.ts.map +1 -1
  39. package/dist/runtime/node.js +14 -34
  40. package/dist/runtime/node.js.map +1 -1
  41. package/dist/runtime/pooled-transport.d.ts +21 -2
  42. package/dist/runtime/pooled-transport.d.ts.map +1 -1
  43. package/dist/runtime/pooled-transport.js +16 -0
  44. package/dist/runtime/pooled-transport.js.map +1 -1
  45. package/dist/runtime/pyodide-bootstrap-core.generated.d.ts.map +1 -1
  46. package/dist/runtime/pyodide-bootstrap-core.generated.js +1 -1
  47. package/dist/runtime/pyodide-bootstrap-core.generated.js.map +1 -1
  48. package/dist/runtime/pyodide-transport.d.ts +12 -1
  49. package/dist/runtime/pyodide-transport.d.ts.map +1 -1
  50. package/dist/runtime/pyodide-transport.js +20 -0
  51. package/dist/runtime/pyodide-transport.js.map +1 -1
  52. package/dist/runtime/pyodide.d.ts +5 -12
  53. package/dist/runtime/pyodide.d.ts.map +1 -1
  54. package/dist/runtime/pyodide.js +6 -29
  55. package/dist/runtime/pyodide.js.map +1 -1
  56. package/dist/runtime/rpc-client.d.ts +32 -1
  57. package/dist/runtime/rpc-client.d.ts.map +1 -1
  58. package/dist/runtime/rpc-client.js +45 -24
  59. package/dist/runtime/rpc-client.js.map +1 -1
  60. package/dist/runtime/subprocess-transport.d.ts +26 -1
  61. package/dist/runtime/subprocess-transport.d.ts.map +1 -1
  62. package/dist/runtime/subprocess-transport.js +72 -35
  63. package/dist/runtime/subprocess-transport.js.map +1 -1
  64. package/dist/runtime/transport.d.ts +59 -0
  65. package/dist/runtime/transport.d.ts.map +1 -1
  66. package/dist/runtime/transport.js +1 -0
  67. package/dist/runtime/transport.js.map +1 -1
  68. package/dist/types/index.d.ts +35 -0
  69. package/dist/types/index.d.ts.map +1 -1
  70. package/dist/tywrap.d.ts +0 -5
  71. package/dist/tywrap.d.ts.map +1 -1
  72. package/dist/tywrap.js +212 -169
  73. package/dist/tywrap.js.map +1 -1
  74. package/dist/utils/cache.d.ts +11 -0
  75. package/dist/utils/cache.d.ts.map +1 -1
  76. package/dist/utils/cache.js +50 -58
  77. package/dist/utils/cache.js.map +1 -1
  78. package/dist/utils/codec.d.ts +2 -0
  79. package/dist/utils/codec.d.ts.map +1 -1
  80. package/dist/utils/codec.js +53 -2
  81. package/dist/utils/codec.js.map +1 -1
  82. package/dist/utils/python.d.ts.map +1 -1
  83. package/dist/utils/python.js +28 -17
  84. package/dist/utils/python.js.map +1 -1
  85. package/dist/utils/runtime.d.ts.map +1 -1
  86. package/dist/utils/runtime.js +22 -16
  87. package/dist/utils/runtime.js.map +1 -1
  88. package/dist/version.js +1 -1
  89. package/package.json +7 -1
  90. package/runtime/__pycache__/_tywrap_member_fixtures.cpython-311.pyc +0 -0
  91. package/runtime/__pycache__/safe_codec.cpython-311.pyc +0 -0
  92. package/runtime/__pycache__/tywrap_bridge_core.cpython-311.pyc +0 -0
  93. package/runtime/tywrap_bridge_core.py +55 -3
  94. package/src/core/annotation-parser.ts +23 -18
  95. package/src/core/discovery.ts +70 -54
  96. package/src/core/generator.ts +50 -11
  97. package/src/core/validation.ts +84 -48
  98. package/src/dev.ts +237 -153
  99. package/src/runtime/base-bridge.ts +106 -0
  100. package/src/runtime/bridge-codec.ts +58 -70
  101. package/src/runtime/http-transport.ts +21 -1
  102. package/src/runtime/http.ts +7 -51
  103. package/src/runtime/index.ts +1 -0
  104. package/src/runtime/node.ts +17 -52
  105. package/src/runtime/pooled-transport.ts +25 -2
  106. package/src/runtime/pyodide-bootstrap-core.generated.ts +1 -1
  107. package/src/runtime/pyodide-transport.ts +22 -0
  108. package/src/runtime/pyodide.ts +7 -52
  109. package/src/runtime/rpc-client.ts +56 -32
  110. package/src/runtime/subprocess-transport.ts +89 -40
  111. package/src/runtime/transport.ts +71 -0
  112. package/src/types/index.ts +37 -0
  113. package/src/tywrap.ts +274 -187
  114. package/src/utils/cache.ts +59 -61
  115. package/src/utils/codec.ts +61 -4
  116. package/src/utils/python.ts +33 -20
  117. package/src/utils/runtime.ts +24 -13
  118. package/src/version.ts +1 -1
@@ -11,6 +11,15 @@ export interface PythonModule {
11
11
  imports: PythonImport[];
12
12
  exports: string[];
13
13
  }
14
+ /**
15
+ * How a callable is bound on its owning class.
16
+ *
17
+ * Mirrors `IRFunction.method_kind` from the Python IR (tywrap_ir 0.3.0):
18
+ * `'instance'` (default, keeps `self`), `'class'` (keeps `cls`), or
19
+ * `'static'` (no implicit first parameter). Module-level functions retain the
20
+ * `'instance'` default; it is only meaningful for class members.
21
+ */
22
+ export type PythonMethodKind = 'instance' | 'class' | 'static';
14
23
  export interface PythonFunction {
15
24
  name: string;
16
25
  signature: FunctionSignature;
@@ -21,12 +30,38 @@ export interface PythonFunction {
21
30
  typeParameters?: PythonGenericParameter[];
22
31
  returnType: PythonType;
23
32
  parameters: Parameter[];
33
+ /**
34
+ * Binding of this callable on its owning class. Defaults to `'instance'`.
35
+ * @see PythonMethodKind
36
+ */
37
+ methodKind?: PythonMethodKind;
38
+ }
39
+ /**
40
+ * A `@property` or `functools.cached_property` exposed on a class.
41
+ *
42
+ * Mirrors `IRAccessor` from the Python IR (tywrap_ir 0.3.0). Distinct from
43
+ * {@link PythonClass.properties} (which model TypedDict/NamedTuple/dataclass
44
+ * data shapes): accessors are computed attributes backed by a getter.
45
+ */
46
+ export interface PythonAccessor {
47
+ name: string;
48
+ type: PythonType;
49
+ docstring?: string;
50
+ /** True when there is no setter. `undefined` when undeterminable. */
51
+ readOnly?: boolean;
52
+ /** True for `functools.cached_property`. */
53
+ isCached: boolean;
24
54
  }
25
55
  export interface PythonClass {
26
56
  name: string;
27
57
  bases: string[];
28
58
  methods: PythonFunction[];
29
59
  properties: Property[];
60
+ /**
61
+ * `@property` / `functools.cached_property` accessors, emitted as TS getters.
62
+ * @see PythonAccessor
63
+ */
64
+ accessors?: PythonAccessor[];
30
65
  docstring?: string;
31
66
  decorators: string[];
32
67
  kind?: 'class' | 'protocol' | 'typed_dict' | 'namedtuple' | 'dataclass' | 'pydantic';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
package/dist/tywrap.d.ts CHANGED
@@ -13,11 +13,6 @@ export interface TywrapInstance {
13
13
  options: Partial<TywrapOptions>;
14
14
  }
15
15
  export declare function tywrap(options?: Partial<TywrapOptions>): Promise<TywrapInstance>;
16
- export default tywrap;
17
- /**
18
- * Append minimal tsd tests for a generated module (optional dev aid)
19
- */
20
- export declare function emitTypeTestsForModule(moduleName: string, outDir?: string): Promise<void>;
21
16
  export interface GenerateRunOptions {
22
17
  /**
23
18
  * If true, do not write files; instead compare generated output to what's on disk.
@@ -1 +1 @@
1
- {"version":3,"file":"tywrap.d.ts","sourceRoot":"","sources":["../src/tywrap.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,OAAO,KAAK,EACV,aAAa,EAQd,MAAM,kBAAkB,CAAC;AAe1B;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,UAAU,CAAC;IACnB,SAAS,EAAE,aAAa,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;CACjC;AAED,wBAAsB,MAAM,CAAC,OAAO,GAAE,OAAO,CAAC,aAAa,CAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAW1F;AAED,eAAe,MAAM,CAAC;AAEtB;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,MAAM,EAClB,MAAM,SAAqB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAcf;AAED,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,gBAAgB,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAeD;;;GAGG;AACH,wBAAsB,QAAQ,CAC5B,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,EAC/B,UAAU,GAAE,kBAAuB,GAClC,OAAO,CAAC,cAAc,CAAC,CA2NzB"}
1
+ {"version":3,"file":"tywrap.d.ts","sourceRoot":"","sources":["../src/tywrap.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,OAAO,KAAK,EACV,aAAa,EASd,MAAM,kBAAkB,CAAC;AAe1B;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,UAAU,CAAC;IACnB,SAAS,EAAE,aAAa,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;CACjC;AAED,wBAAsB,MAAM,CAAC,OAAO,GAAE,OAAO,CAAC,aAAa,CAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAW1F;AAED,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,gBAAgB,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AA4MD;;;GAGG;AACH,wBAAsB,QAAQ,CAC5B,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,EAC/B,UAAU,GAAE,kBAAuB,GAClC,OAAO,CAAC,cAAc,CAAC,CA6FzB"}
package/dist/tywrap.js CHANGED
@@ -9,7 +9,7 @@ import { fsUtils, pathUtils, processUtils, isWindows } from './utils/runtime.js'
9
9
  import { globalCache } from './utils/cache.js';
10
10
  import { resolvePythonExecutable } from './utils/python.js';
11
11
  import { computeIrCacheFilename } from './utils/ir-cache.js';
12
- const TYWRAP_IR_VERSION = '0.2.0';
12
+ const TYWRAP_IR_VERSION = '0.3.0';
13
13
  // Collect unknown typing constructs encountered during annotation parsing (per-generate run)
14
14
  let unknownTypeNamesCollector = new Map();
15
15
  function recordUnknown(name) {
@@ -26,26 +26,6 @@ export async function tywrap(options = {}) {
26
26
  options,
27
27
  };
28
28
  }
29
- export default tywrap;
30
- /**
31
- * Append minimal tsd tests for a generated module (optional dev aid)
32
- */
33
- export async function emitTypeTestsForModule(moduleName, outDir = 'test-d/generated') {
34
- const { writeFile, mkdir } = await import('fs/promises');
35
- const { join } = await import('path');
36
- try {
37
- await mkdir(outDir, { recursive: true });
38
- }
39
- catch { }
40
- const filePath = join(outDir, `${moduleName}.test-d.ts`);
41
- const content = `import { expectType } from 'tsd';
42
- import * as mod from '../../generated/${moduleName}.generated.ts';
43
-
44
- // Opportunistic: ensure module namespace is an object
45
- expectType<Record<string, unknown>>(mod);
46
- `;
47
- await writeFile(filePath, content, 'utf-8');
48
- }
49
29
  function normalizeForComparison(text) {
50
30
  // Avoid false positives from CRLF vs LF (e.g. Windows checkouts)
51
31
  return text.replace(/\r\n/g, '\n').replace(/\r/g, '\n');
@@ -58,6 +38,157 @@ async function safeReadFile(path) {
58
38
  return null;
59
39
  }
60
40
  }
41
+ const CACHE_DIR = '.tywrap/cache';
42
+ /**
43
+ * Resolve module IR via the Python extractor, consulting and (best-effort)
44
+ * populating the on-disk cache. Mirrors the original inline cache-then-fetch
45
+ * logic exactly: the cache is only read/written when caching is enabled, the
46
+ * filesystem is available, and we are not in check mode.
47
+ */
48
+ async function fetchAndCacheIr(moduleKey, resolvedOptions, pythonPath, cacheKey, caching, checkMode) {
49
+ let ir = null;
50
+ let irError;
51
+ if (caching && fsUtils.isAvailable() && !checkMode) {
52
+ try {
53
+ const cached = await fsUtils.readFile(pathUtils.join(CACHE_DIR, cacheKey));
54
+ ir = JSON.parse(cached);
55
+ }
56
+ catch {
57
+ ir = null;
58
+ }
59
+ }
60
+ if (!ir) {
61
+ const fetchResult = await fetchPythonIr(moduleKey, pythonPath, {
62
+ timeoutMs: resolvedOptions.runtime?.node?.timeout,
63
+ pythonImportPath: resolvedOptions.pythonImportPath,
64
+ });
65
+ ir = fetchResult.ir;
66
+ irError = fetchResult.error;
67
+ if (ir && caching && fsUtils.isAvailable() && !checkMode) {
68
+ try {
69
+ await fsUtils.writeFile(pathUtils.join(CACHE_DIR, cacheKey), JSON.stringify(ir));
70
+ }
71
+ catch { }
72
+ }
73
+ }
74
+ return { ir, error: irError };
75
+ }
76
+ /**
77
+ * Apply module-level export filtering (functions/classes + excludes) in place.
78
+ * Pushes any filtering warnings onto the provided `warnings` array. Behavior is
79
+ * identical to the original inline block.
80
+ */
81
+ function filterModuleExports(moduleModel, moduleConfig, moduleKey, warnings) {
82
+ const builtInDefaultExcludes = new Set([
83
+ 'dataclass',
84
+ 'property',
85
+ 'staticmethod',
86
+ 'classmethod',
87
+ 'abstractmethod',
88
+ 'cached_property',
89
+ ]);
90
+ const excludeExact = new Set((moduleConfig.exclude ?? []).map(String));
91
+ const excludeRegexes = [];
92
+ for (const pattern of moduleConfig.excludePatterns ?? []) {
93
+ try {
94
+ excludeRegexes.push(new RegExp(String(pattern)));
95
+ }
96
+ catch (err) {
97
+ const message = err instanceof Error ? err.message : String(err);
98
+ warnings.push(`Module ${moduleKey}: invalid excludePatterns regex "${String(pattern)}": ${message}`);
99
+ }
100
+ }
101
+ const shouldExclude = (name, applyBuiltInDefaults) => {
102
+ if (excludeExact.has(name)) {
103
+ return true;
104
+ }
105
+ if (excludeRegexes.some(r => r.test(name))) {
106
+ return true;
107
+ }
108
+ if (applyBuiltInDefaults && builtInDefaultExcludes.has(name)) {
109
+ return true;
110
+ }
111
+ return false;
112
+ };
113
+ if (Array.isArray(moduleConfig.functions)) {
114
+ const allow = new Set(moduleConfig.functions.map(String));
115
+ for (const requested of allow) {
116
+ if (!moduleModel.functions.some(f => f.name === requested)) {
117
+ warnings.push(`Module ${moduleKey}: configured function "${requested}" not found in IR`);
118
+ }
119
+ }
120
+ moduleModel.functions = moduleModel.functions.filter(f => allow.has(f.name) && !shouldExclude(f.name, false));
121
+ }
122
+ else {
123
+ moduleModel.functions = moduleModel.functions.filter(f => !shouldExclude(f.name, true));
124
+ }
125
+ if (Array.isArray(moduleConfig.classes)) {
126
+ const allow = new Set(moduleConfig.classes.map(String));
127
+ for (const requested of allow) {
128
+ if (!moduleModel.classes.some(c => c.name === requested)) {
129
+ warnings.push(`Module ${moduleKey}: configured class "${requested}" not found in IR`);
130
+ }
131
+ }
132
+ moduleModel.classes = moduleModel.classes.filter(c => allow.has(c.name) && !shouldExclude(c.name, false));
133
+ }
134
+ else {
135
+ moduleModel.classes = moduleModel.classes.filter(c => !shouldExclude(c.name, true));
136
+ }
137
+ moduleModel.typeAliases = (moduleModel.typeAliases ?? []).filter(alias => !shouldExclude(alias.name, false));
138
+ }
139
+ /**
140
+ * Either compare the generated files against disk (check mode) or write them.
141
+ * Mutates `written`/`outOfDate` exactly as the original inline branches did.
142
+ */
143
+ async function emitOrCompareFiles(filesToEmit, checkMode, written, outOfDate) {
144
+ if (checkMode) {
145
+ for (const file of filesToEmit) {
146
+ const existing = await safeReadFile(file.path);
147
+ if (existing === null) {
148
+ outOfDate.push(file.path);
149
+ continue;
150
+ }
151
+ if (normalizeForComparison(existing) !== normalizeForComparison(file.content)) {
152
+ outOfDate.push(file.path);
153
+ }
154
+ }
155
+ }
156
+ else {
157
+ for (const file of filesToEmit) {
158
+ await fsUtils.writeFile(file.path, file.content);
159
+ written.push(file.path);
160
+ }
161
+ }
162
+ }
163
+ /**
164
+ * Emit the best-effort warning summary of unknown typing constructs collected
165
+ * for the current module, and (outside check mode) write the JSON report.
166
+ */
167
+ async function reportUnknownTypes(baseName, unknownTypeNames, checkMode, warnings) {
168
+ if (unknownTypeNames.size === 0) {
169
+ return;
170
+ }
171
+ const entries = Array.from(unknownTypeNames.entries()).sort((a, b) => b[1] - a[1]);
172
+ const unkList = entries
173
+ .slice(0, 25)
174
+ .map(([n, c]) => `${n}:${c}`)
175
+ .join(', ');
176
+ warnings.push(`Module ${baseName}: unknown typing constructs encountered: ${unkList}${entries.length > 25 ? '…' : ''}`);
177
+ // Write JSON report
178
+ if (!checkMode) {
179
+ try {
180
+ const reportsDir = pathUtils.join('.tywrap', 'reports');
181
+ await fsUtils.writeFile(pathUtils.join(reportsDir, `${baseName}.json`), JSON.stringify({
182
+ module: baseName,
183
+ unknowns: Object.fromEntries(entries),
184
+ generatedAt: new Date().toISOString(),
185
+ }));
186
+ }
187
+ catch {
188
+ // ignore
189
+ }
190
+ }
191
+ }
61
192
  /**
62
193
  * Generate TypeScript wrappers for configured Python modules.
63
194
  * Minimal MVP implementation: resolves module file, analyzes, generates TS, writes to output.dir
@@ -72,7 +203,6 @@ export async function generate(options, runOptions = {}) {
72
203
  const failures = [];
73
204
  const outputDir = resolvedOptions.output.dir;
74
205
  const caching = resolvedOptions.performance.caching;
75
- const cacheDir = '.tywrap/cache';
76
206
  const pythonPath = await resolvePythonExecutable({
77
207
  pythonPath: resolvedOptions.runtime?.node?.pythonPath,
78
208
  virtualEnv: resolvedOptions.runtime?.node?.virtualEnv,
@@ -95,31 +225,7 @@ export async function generate(options, runOptions = {}) {
95
225
  unknownTypeNamesCollector = new Map();
96
226
  // Resolve module IR via the Python extractor (with optional cache)
97
227
  const cacheKey = await computeCacheKey(moduleKey, resolvedOptions);
98
- let ir = null;
99
- let irError;
100
- if (caching && fsUtils.isAvailable() && !checkMode) {
101
- try {
102
- const cached = await fsUtils.readFile(pathUtils.join(cacheDir, cacheKey));
103
- ir = JSON.parse(cached);
104
- }
105
- catch {
106
- ir = null;
107
- }
108
- }
109
- if (!ir) {
110
- const fetchResult = await fetchPythonIr(moduleKey, pythonPath, {
111
- timeoutMs: resolvedOptions.runtime?.node?.timeout,
112
- pythonImportPath: resolvedOptions.pythonImportPath,
113
- });
114
- ir = fetchResult.ir;
115
- irError = fetchResult.error;
116
- if (ir && caching && fsUtils.isAvailable() && !checkMode) {
117
- try {
118
- await fsUtils.writeFile(pathUtils.join(cacheDir, cacheKey), JSON.stringify(ir));
119
- }
120
- catch { }
121
- }
122
- }
228
+ const { ir, error: irError } = await fetchAndCacheIr(moduleKey, resolvedOptions, pythonPath, cacheKey, caching, checkMode);
123
229
  if (!ir) {
124
230
  const message = `No IR produced for module ${moduleKey}${irError ? `: ${irError}` : ''}`;
125
231
  warnings.push(message);
@@ -132,64 +238,7 @@ export async function generate(options, runOptions = {}) {
132
238
  }
133
239
  const moduleModel = transformIrToTsModel(ir);
134
240
  // Apply module-level export filtering (functions/classes + excludes).
135
- {
136
- const builtInDefaultExcludes = new Set([
137
- 'dataclass',
138
- 'property',
139
- 'staticmethod',
140
- 'classmethod',
141
- 'abstractmethod',
142
- 'cached_property',
143
- ]);
144
- const excludeExact = new Set((moduleConfig.exclude ?? []).map(String));
145
- const excludeRegexes = [];
146
- for (const pattern of moduleConfig.excludePatterns ?? []) {
147
- try {
148
- excludeRegexes.push(new RegExp(String(pattern)));
149
- }
150
- catch (err) {
151
- const message = err instanceof Error ? err.message : String(err);
152
- warnings.push(`Module ${moduleKey}: invalid excludePatterns regex "${String(pattern)}": ${message}`);
153
- }
154
- }
155
- const shouldExclude = (name, applyBuiltInDefaults) => {
156
- if (excludeExact.has(name)) {
157
- return true;
158
- }
159
- if (excludeRegexes.some(r => r.test(name))) {
160
- return true;
161
- }
162
- if (applyBuiltInDefaults && builtInDefaultExcludes.has(name)) {
163
- return true;
164
- }
165
- return false;
166
- };
167
- if (Array.isArray(moduleConfig.functions)) {
168
- const allow = new Set(moduleConfig.functions.map(String));
169
- for (const requested of allow) {
170
- if (!moduleModel.functions.some(f => f.name === requested)) {
171
- warnings.push(`Module ${moduleKey}: configured function "${requested}" not found in IR`);
172
- }
173
- }
174
- moduleModel.functions = moduleModel.functions.filter(f => allow.has(f.name) && !shouldExclude(f.name, false));
175
- }
176
- else {
177
- moduleModel.functions = moduleModel.functions.filter(f => !shouldExclude(f.name, true));
178
- }
179
- if (Array.isArray(moduleConfig.classes)) {
180
- const allow = new Set(moduleConfig.classes.map(String));
181
- for (const requested of allow) {
182
- if (!moduleModel.classes.some(c => c.name === requested)) {
183
- warnings.push(`Module ${moduleKey}: configured class "${requested}" not found in IR`);
184
- }
185
- }
186
- moduleModel.classes = moduleModel.classes.filter(c => allow.has(c.name) && !shouldExclude(c.name, false));
187
- }
188
- else {
189
- moduleModel.classes = moduleModel.classes.filter(c => !shouldExclude(c.name, true));
190
- }
191
- moduleModel.typeAliases = (moduleModel.typeAliases ?? []).filter(alias => !shouldExclude(alias.name, false));
192
- }
241
+ filterModuleExports(moduleModel, moduleConfig, moduleKey, warnings);
193
242
  // Generate module code
194
243
  const annotatedJSDoc = Boolean(resolvedOptions.output?.annotatedJSDoc);
195
244
  const gen = instance.generator.generateModuleDefinition(moduleModel, annotatedJSDoc);
@@ -211,53 +260,40 @@ export async function generate(options, runOptions = {}) {
211
260
  content: renderSourceMapPlaceholder(moduleModel.name),
212
261
  });
213
262
  }
214
- if (checkMode) {
215
- for (const file of filesToEmit) {
216
- const existing = await safeReadFile(file.path);
217
- if (existing === null) {
218
- outOfDate.push(file.path);
219
- continue;
220
- }
221
- if (normalizeForComparison(existing) !== normalizeForComparison(file.content)) {
222
- outOfDate.push(file.path);
223
- }
224
- }
225
- }
226
- else {
227
- for (const file of filesToEmit) {
228
- await fsUtils.writeFile(file.path, file.content);
229
- written.push(file.path);
230
- }
231
- }
263
+ await emitOrCompareFiles(filesToEmit, checkMode, written, outOfDate);
232
264
  // Emit warning summary of unknown typing constructs (best-effort)
233
- if (unknownTypeNamesCollector.size > 0) {
234
- const entries = Array.from(unknownTypeNamesCollector.entries()).sort((a, b) => b[1] - a[1]);
235
- const unkList = entries
236
- .slice(0, 25)
237
- .map(([n, c]) => `${n}:${c}`)
238
- .join(', ');
239
- warnings.push(`Module ${baseName}: unknown typing constructs encountered: ${unkList}${entries.length > 25 ? '…' : ''}`);
240
- // Write JSON report
241
- if (!checkMode) {
242
- try {
243
- const reportsDir = pathUtils.join('.tywrap', 'reports');
244
- await fsUtils.writeFile(pathUtils.join(reportsDir, `${baseName}.json`), JSON.stringify({
245
- module: baseName,
246
- unknowns: Object.fromEntries(entries),
247
- generatedAt: new Date().toISOString(),
248
- }));
249
- }
250
- catch {
251
- // ignore
252
- }
253
- }
254
- }
265
+ await reportUnknownTypes(baseName, unknownTypeNamesCollector, checkMode, warnings);
255
266
  }
256
267
  if (checkMode) {
257
268
  return { written: [], warnings, failures, outOfDate };
258
269
  }
259
270
  return { written, warnings, failures };
260
271
  }
272
+ /**
273
+ * Run the IR extractor (`python <command...>`) and parse its JSON stdout.
274
+ *
275
+ * Returns the exec result alongside a parsed-IR outcome. On a zero exit code the
276
+ * stdout is JSON-parsed; on parse failure the supplied `parseErrorLabel` is used
277
+ * to build the error message. The caller is responsible for handling non-zero
278
+ * exit codes (e.g. the module-missing fallback), so a non-zero exit yields
279
+ * `ir: null` with no `error` set here.
280
+ */
281
+ async function execAndParseIr(pythonPath, command, execOptions, parseErrorLabel) {
282
+ const result = await processUtils.exec(pythonPath, command, execOptions);
283
+ if (result.code !== 0) {
284
+ return { result, ir: null };
285
+ }
286
+ try {
287
+ return { result, ir: JSON.parse(result.stdout) };
288
+ }
289
+ catch {
290
+ return {
291
+ result,
292
+ ir: null,
293
+ error: `Failed to parse ${parseErrorLabel}. stderr: ${result.stderr.trim() || 'empty'}`,
294
+ };
295
+ }
296
+ }
261
297
  /**
262
298
  * Invoke the Python IR CLI to get JSON IR for a module.
263
299
  */
@@ -274,20 +310,21 @@ async function fetchPythonIr(moduleName, pythonPath, options = {}) {
274
310
  .filter(Boolean)
275
311
  .join(delimiter);
276
312
  const env = mergedPyPath ? { PYTHONPATH: mergedPyPath } : undefined;
313
+ const execOptions = { timeoutMs: options.timeoutMs, env };
277
314
  try {
278
- const result = await processUtils.exec(pythonPath, ['-m', 'tywrap_ir', '--module', moduleName, '--ir-version', TYWRAP_IR_VERSION, '--no-pretty'], { timeoutMs: options.timeoutMs, env });
279
- if (result.code === 0) {
280
- try {
281
- return { ir: JSON.parse(result.stdout) };
282
- }
283
- catch {
284
- return {
285
- ir: null,
286
- error: `Failed to parse tywrap_ir output. stderr: ${result.stderr.trim() || 'empty'}`,
287
- };
288
- }
315
+ const primary = await execAndParseIr(pythonPath, [
316
+ '-m',
317
+ 'tywrap_ir',
318
+ '--module',
319
+ moduleName,
320
+ '--ir-version',
321
+ TYWRAP_IR_VERSION,
322
+ '--no-pretty',
323
+ ], execOptions, 'tywrap_ir output');
324
+ if (primary.result.code === 0) {
325
+ return { ir: primary.ir, error: primary.error };
289
326
  }
290
- const stderrText = result.stderr.trim();
327
+ const stderrText = primary.result.stderr.trim();
291
328
  const isTywrapIrMissing = stderrText.includes('No module named') && stderrText.includes('tywrap_ir');
292
329
  if (!isTywrapIrMissing) {
293
330
  return { ir: null, error: `tywrap_ir failed. stderr: ${stderrText || 'empty'}` };
@@ -310,22 +347,14 @@ async function fetchPythonIr(moduleName, pythonPath, options = {}) {
310
347
  error: `tywrap_ir not found on PYTHONPATH. stderr: ${stderrText || 'empty'}`,
311
348
  };
312
349
  }
313
- const fallback = await processUtils.exec(pythonPath, [localMain, '--module', moduleName, '--ir-version', TYWRAP_IR_VERSION, '--no-pretty'], { timeoutMs: options.timeoutMs, env });
314
- if (fallback.code !== 0) {
315
- return {
316
- ir: null,
317
- error: `tywrap_ir failed. stderr: ${fallback.stderr.trim() || stderrText || 'empty'}`,
318
- };
319
- }
320
- try {
321
- return { ir: JSON.parse(fallback.stdout) };
322
- }
323
- catch {
350
+ const fallback = await execAndParseIr(pythonPath, [localMain, '--module', moduleName, '--ir-version', TYWRAP_IR_VERSION, '--no-pretty'], execOptions, 'tywrap_ir fallback output');
351
+ if (fallback.result.code !== 0) {
324
352
  return {
325
353
  ir: null,
326
- error: `Failed to parse tywrap_ir fallback output. stderr: ${fallback.stderr.trim() || 'empty'}`,
354
+ error: `tywrap_ir failed. stderr: ${fallback.result.stderr.trim() || stderrText || 'empty'}`,
327
355
  };
328
356
  }
357
+ return { ir: fallback.ir, error: fallback.error };
329
358
  }
330
359
  catch (err) {
331
360
  return { ir: null, error: err instanceof Error ? err.message : String(err) };
@@ -393,6 +422,7 @@ function transformIrToTsModel(ir) {
393
422
  positionalOnly: p.kind === 'POSITIONAL_ONLY',
394
423
  keywordOnly: p.kind === 'KEYWORD_ONLY',
395
424
  });
425
+ const mapMethodKind = (value) => value === 'class' || value === 'static' ? value : 'instance';
396
426
  const mapFunc = (f, inheritedTypeParameters = []) => {
397
427
  const localTypeParameters = mapTypeParameters(f);
398
428
  const annotationTypeParameters = [...inheritedTypeParameters, ...localTypeParameters];
@@ -415,6 +445,7 @@ function transformIrToTsModel(ir) {
415
445
  parameters: Array.isArray(f.parameters)
416
446
  ? f.parameters.map(v => mapParam((v ?? {}), annotationTypeParameters))
417
447
  : [],
448
+ methodKind: mapMethodKind(f.method_kind),
418
449
  };
419
450
  };
420
451
  const mapClass = (c) => {
@@ -438,6 +469,18 @@ function transformIrToTsModel(ir) {
438
469
  };
439
470
  })
440
471
  : [],
472
+ accessors: Array.isArray(c.accessors)
473
+ ? c.accessors.map(v => {
474
+ const a = (v ?? {});
475
+ return {
476
+ name: String(a.name ?? ''),
477
+ type: parseType(a.returns, classTypeParameters),
478
+ docstring: a.docstring ?? undefined,
479
+ readOnly: typeof a.read_only === 'boolean' ? a.read_only : undefined,
480
+ isCached: Boolean(a.is_cached),
481
+ };
482
+ })
483
+ : [],
441
484
  docstring: c.docstring ?? undefined,
442
485
  decorators: c.typed_dict ? ['__typed_dict__'] : [],
443
486
  kind: c.typed_dict