tywrap 0.2.0 → 0.3.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 (163) hide show
  1. package/README.md +65 -31
  2. package/dist/cli.js +49 -2
  3. package/dist/cli.js.map +1 -1
  4. package/dist/config/index.d.ts +11 -7
  5. package/dist/config/index.d.ts.map +1 -1
  6. package/dist/config/index.js +43 -7
  7. package/dist/config/index.js.map +1 -1
  8. package/dist/core/analyzer.d.ts +1 -0
  9. package/dist/core/analyzer.d.ts.map +1 -1
  10. package/dist/core/analyzer.js +47 -12
  11. package/dist/core/analyzer.js.map +1 -1
  12. package/dist/core/annotation-parser.d.ts +8 -0
  13. package/dist/core/annotation-parser.d.ts.map +1 -0
  14. package/dist/core/annotation-parser.js +409 -0
  15. package/dist/core/annotation-parser.js.map +1 -0
  16. package/dist/core/discovery.d.ts +1 -0
  17. package/dist/core/discovery.d.ts.map +1 -1
  18. package/dist/core/discovery.js +9 -9
  19. package/dist/core/discovery.js.map +1 -1
  20. package/dist/core/generator.d.ts +9 -1
  21. package/dist/core/generator.d.ts.map +1 -1
  22. package/dist/core/generator.js +738 -104
  23. package/dist/core/generator.js.map +1 -1
  24. package/dist/core/mapper.d.ts +9 -7
  25. package/dist/core/mapper.d.ts.map +1 -1
  26. package/dist/core/mapper.js +129 -44
  27. package/dist/core/mapper.js.map +1 -1
  28. package/dist/index.d.ts +23 -7
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +23 -3
  31. package/dist/index.js.map +1 -1
  32. package/dist/runtime/base.d.ts +17 -7
  33. package/dist/runtime/base.d.ts.map +1 -1
  34. package/dist/runtime/base.js +18 -1
  35. package/dist/runtime/base.js.map +1 -1
  36. package/dist/runtime/bounded-context.d.ts +252 -0
  37. package/dist/runtime/bounded-context.d.ts.map +1 -0
  38. package/dist/runtime/bounded-context.js +454 -0
  39. package/dist/runtime/bounded-context.js.map +1 -0
  40. package/dist/runtime/bridge-core.d.ts +1 -0
  41. package/dist/runtime/bridge-core.d.ts.map +1 -1
  42. package/dist/runtime/bridge-core.js +52 -17
  43. package/dist/runtime/bridge-core.js.map +1 -1
  44. package/dist/runtime/bridge-protocol.d.ts +184 -0
  45. package/dist/runtime/bridge-protocol.d.ts.map +1 -0
  46. package/dist/runtime/bridge-protocol.js +344 -0
  47. package/dist/runtime/bridge-protocol.js.map +1 -0
  48. package/dist/runtime/disposable.d.ts +40 -0
  49. package/dist/runtime/disposable.d.ts.map +1 -0
  50. package/dist/runtime/disposable.js +49 -0
  51. package/dist/runtime/disposable.js.map +1 -0
  52. package/dist/runtime/errors.d.ts +10 -0
  53. package/dist/runtime/errors.d.ts.map +1 -1
  54. package/dist/runtime/errors.js +9 -0
  55. package/dist/runtime/errors.js.map +1 -1
  56. package/dist/runtime/http-io.d.ts +91 -0
  57. package/dist/runtime/http-io.d.ts.map +1 -0
  58. package/dist/runtime/http-io.js +195 -0
  59. package/dist/runtime/http-io.js.map +1 -0
  60. package/dist/runtime/http.d.ts +48 -13
  61. package/dist/runtime/http.d.ts.map +1 -1
  62. package/dist/runtime/http.js +60 -73
  63. package/dist/runtime/http.js.map +1 -1
  64. package/dist/runtime/node.d.ts +97 -130
  65. package/dist/runtime/node.d.ts.map +1 -1
  66. package/dist/runtime/node.js +392 -521
  67. package/dist/runtime/node.js.map +1 -1
  68. package/dist/runtime/optimized-node.d.ts +1 -1
  69. package/dist/runtime/optimized-node.d.ts.map +1 -1
  70. package/dist/runtime/optimized-node.js +1 -1
  71. package/dist/runtime/optimized-node.js.map +1 -1
  72. package/dist/runtime/pooled-transport.d.ts +135 -0
  73. package/dist/runtime/pooled-transport.d.ts.map +1 -0
  74. package/dist/runtime/pooled-transport.js +177 -0
  75. package/dist/runtime/pooled-transport.js.map +1 -0
  76. package/dist/runtime/process-io.d.ts +209 -0
  77. package/dist/runtime/process-io.d.ts.map +1 -0
  78. package/dist/runtime/process-io.js +729 -0
  79. package/dist/runtime/process-io.js.map +1 -0
  80. package/dist/runtime/pyodide-io.d.ts +154 -0
  81. package/dist/runtime/pyodide-io.d.ts.map +1 -0
  82. package/dist/runtime/pyodide-io.js +459 -0
  83. package/dist/runtime/pyodide-io.js.map +1 -0
  84. package/dist/runtime/pyodide.d.ts +51 -19
  85. package/dist/runtime/pyodide.d.ts.map +1 -1
  86. package/dist/runtime/pyodide.js +57 -186
  87. package/dist/runtime/pyodide.js.map +1 -1
  88. package/dist/runtime/safe-codec.d.ts +103 -0
  89. package/dist/runtime/safe-codec.d.ts.map +1 -0
  90. package/dist/runtime/safe-codec.js +519 -0
  91. package/dist/runtime/safe-codec.js.map +1 -0
  92. package/dist/runtime/transport.d.ts +191 -0
  93. package/dist/runtime/transport.d.ts.map +1 -0
  94. package/dist/runtime/transport.js +86 -0
  95. package/dist/runtime/transport.js.map +1 -0
  96. package/dist/runtime/validators.d.ts +120 -0
  97. package/dist/runtime/validators.d.ts.map +1 -0
  98. package/dist/runtime/validators.js +229 -0
  99. package/dist/runtime/validators.js.map +1 -0
  100. package/dist/runtime/worker-pool.d.ts +208 -0
  101. package/dist/runtime/worker-pool.d.ts.map +1 -0
  102. package/dist/runtime/worker-pool.js +419 -0
  103. package/dist/runtime/worker-pool.js.map +1 -0
  104. package/dist/types/index.d.ts +51 -1
  105. package/dist/types/index.d.ts.map +1 -1
  106. package/dist/tywrap.d.ts.map +1 -1
  107. package/dist/tywrap.js +227 -328
  108. package/dist/tywrap.js.map +1 -1
  109. package/dist/utils/cache.d.ts.map +1 -1
  110. package/dist/utils/cache.js +53 -5
  111. package/dist/utils/cache.js.map +1 -1
  112. package/dist/utils/codec.d.ts.map +1 -1
  113. package/dist/utils/codec.js +114 -1
  114. package/dist/utils/codec.js.map +1 -1
  115. package/dist/utils/ir-cache.d.ts +28 -0
  116. package/dist/utils/ir-cache.d.ts.map +1 -0
  117. package/dist/utils/ir-cache.js +29 -0
  118. package/dist/utils/ir-cache.js.map +1 -0
  119. package/dist/utils/parallel-processor.d.ts +1 -1
  120. package/dist/utils/parallel-processor.d.ts.map +1 -1
  121. package/dist/utils/parallel-processor.js +111 -40
  122. package/dist/utils/parallel-processor.js.map +1 -1
  123. package/dist/utils/runtime.d.ts +5 -1
  124. package/dist/utils/runtime.d.ts.map +1 -1
  125. package/dist/utils/runtime.js +112 -18
  126. package/dist/utils/runtime.js.map +1 -1
  127. package/package.json +40 -18
  128. package/runtime/python_bridge.py +108 -15
  129. package/runtime/safe_codec.py +344 -0
  130. package/src/cli.ts +61 -2
  131. package/src/config/index.ts +63 -17
  132. package/src/core/analyzer.ts +52 -15
  133. package/src/core/annotation-parser.ts +500 -0
  134. package/src/core/discovery.ts +26 -12
  135. package/src/core/generator.ts +956 -116
  136. package/src/core/mapper.ts +158 -51
  137. package/src/index.ts +78 -6
  138. package/src/runtime/base.ts +18 -26
  139. package/src/runtime/bounded-context.ts +608 -0
  140. package/src/runtime/bridge-core.ts +58 -18
  141. package/src/runtime/bridge-protocol.ts +483 -0
  142. package/src/runtime/disposable.ts +65 -0
  143. package/src/runtime/errors.ts +14 -0
  144. package/src/runtime/http-io.ts +245 -0
  145. package/src/runtime/http.ts +76 -115
  146. package/src/runtime/node.ts +563 -676
  147. package/src/runtime/optimized-node.ts +4 -1
  148. package/src/runtime/pooled-transport.ts +263 -0
  149. package/src/runtime/process-io.ts +930 -0
  150. package/src/runtime/pyodide-io.ts +551 -0
  151. package/src/runtime/pyodide.ts +75 -215
  152. package/src/runtime/safe-codec.ts +651 -0
  153. package/src/runtime/transport.ts +278 -0
  154. package/src/runtime/validators.ts +252 -0
  155. package/src/runtime/worker-pool.ts +559 -0
  156. package/src/types/global.d.ts +11 -1
  157. package/src/types/index.ts +63 -0
  158. package/src/tywrap.ts +279 -358
  159. package/src/utils/cache.ts +59 -5
  160. package/src/utils/codec.ts +122 -1
  161. package/src/utils/ir-cache.ts +51 -0
  162. package/src/utils/parallel-processor.ts +119 -43
  163. package/src/utils/runtime.ts +129 -18
@@ -8,6 +8,7 @@ export interface PythonModule {
8
8
  version?: string;
9
9
  functions: PythonFunction[];
10
10
  classes: PythonClass[];
11
+ typeAliases?: PythonTypeAlias[];
11
12
  imports: PythonImport[];
12
13
  exports: string[];
13
14
  }
@@ -19,6 +20,7 @@ export interface PythonFunction {
19
20
  decorators: string[];
20
21
  isAsync: boolean;
21
22
  isGenerator: boolean;
23
+ typeParameters?: PythonGenericParameter[];
22
24
  returnType: PythonType;
23
25
  parameters: Parameter[];
24
26
  }
@@ -31,6 +33,23 @@ export interface PythonClass {
31
33
  docstring?: string;
32
34
  decorators: string[];
33
35
  kind?: 'class' | 'protocol' | 'typed_dict' | 'namedtuple' | 'dataclass' | 'pydantic';
36
+ typeParameters?: PythonGenericParameter[];
37
+ }
38
+
39
+ export interface PythonTypeAlias {
40
+ name: string;
41
+ type: PythonType;
42
+ typeParameters?: PythonGenericParameter[];
43
+ }
44
+
45
+ export type PythonGenericParameterKind = 'typevar' | 'paramspec' | 'typevartuple';
46
+
47
+ export interface PythonGenericParameter {
48
+ name: string;
49
+ kind: PythonGenericParameterKind;
50
+ bound?: PythonType;
51
+ constraints?: PythonType[];
52
+ variance?: 'covariant' | 'contravariant' | 'invariant';
34
53
  }
35
54
 
36
55
  export interface PythonImport {
@@ -47,12 +66,15 @@ export interface Parameter {
47
66
  defaultValue?: unknown;
48
67
  varArgs: boolean;
49
68
  kwArgs: boolean;
69
+ positionalOnly?: boolean;
70
+ keywordOnly?: boolean;
50
71
  }
51
72
 
52
73
  export interface Property {
53
74
  name: string;
54
75
  type: PythonType;
55
76
  readonly: boolean;
77
+ optional?: boolean;
56
78
  setter?: boolean;
57
79
  getter?: boolean;
58
80
  }
@@ -76,6 +98,11 @@ export type PythonType =
76
98
  | AnnotatedType
77
99
  | CustomType
78
100
  | TypeVarType
101
+ | ParamSpecType
102
+ | ParamSpecArgsType
103
+ | ParamSpecKwargsType
104
+ | TypeVarTupleType
105
+ | UnpackType
79
106
  | FinalType
80
107
  | ClassVarType;
81
108
 
@@ -103,6 +130,7 @@ export interface OptionalType {
103
130
  export interface GenericType {
104
131
  kind: 'generic';
105
132
  name: string;
133
+ module?: string;
106
134
  typeArgs: PythonType[];
107
135
  }
108
136
 
@@ -115,6 +143,7 @@ export interface CustomType {
115
143
  export interface CallableType {
116
144
  kind: 'callable';
117
145
  parameters: PythonType[];
146
+ parameterSpec?: ParamSpecType;
118
147
  returnType: PythonType;
119
148
  }
120
149
 
@@ -137,6 +166,31 @@ export interface TypeVarType {
137
166
  variance?: 'covariant' | 'contravariant' | 'invariant';
138
167
  }
139
168
 
169
+ export interface ParamSpecType {
170
+ kind: 'paramspec';
171
+ name: string;
172
+ }
173
+
174
+ export interface ParamSpecArgsType {
175
+ kind: 'paramspec_args';
176
+ name: string;
177
+ }
178
+
179
+ export interface ParamSpecKwargsType {
180
+ kind: 'paramspec_kwargs';
181
+ name: string;
182
+ }
183
+
184
+ export interface TypeVarTupleType {
185
+ kind: 'typevartuple';
186
+ name: string;
187
+ }
188
+
189
+ export interface UnpackType {
190
+ kind: 'unpack';
191
+ type: PythonType;
192
+ }
193
+
140
194
  export interface FinalType {
141
195
  kind: 'final';
142
196
  type: PythonType;
@@ -242,6 +296,11 @@ export type RuntimeStrategy = 'pyodide' | 'node' | 'http' | 'auto';
242
296
 
243
297
  export interface TywrapOptions {
244
298
  pythonModules: Record<string, PythonModuleConfig>;
299
+ /**
300
+ * Additional Python import paths to prepend to PYTHONPATH during code generation
301
+ * and discovery (IR extraction). Useful for local modules not installed in site-packages.
302
+ */
303
+ pythonImportPath?: string[];
245
304
  output: OutputConfig;
246
305
  runtime: RuntimeConfig;
247
306
  performance: PerformanceConfig;
@@ -255,6 +314,10 @@ export interface PythonModuleConfig {
255
314
  runtime: RuntimeStrategy;
256
315
  functions?: string[];
257
316
  classes?: string[];
317
+ /** Exclude specific exports by exact name. */
318
+ exclude?: string[];
319
+ /** Exclude exports matching one or more regex patterns (JavaScript RegExp source). */
320
+ excludePatterns?: string[];
258
321
  alias?: string;
259
322
  typeHints: 'strict' | 'loose' | 'ignore';
260
323
  watch?: boolean;