@alloy-js/python 0.5.0-dev.1 → 0.5.0-dev.2

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 (166) hide show
  1. package/dist/dev/src/components/SourceFile.js +44 -32
  2. package/dist/dev/src/components/SourceFile.js.map +1 -1
  3. package/dist/dev/test/callsignatures.test.js +471 -297
  4. package/dist/dev/test/callsignatures.test.js.map +1 -1
  5. package/dist/dev/test/class-method-declaration.test.js +21 -10
  6. package/dist/dev/test/class-method-declaration.test.js.map +1 -1
  7. package/dist/dev/test/classdeclarations.test.js +459 -393
  8. package/dist/dev/test/classdeclarations.test.js.map +1 -1
  9. package/dist/dev/test/classinstantiations.test.js +201 -168
  10. package/dist/dev/test/classinstantiations.test.js.map +1 -1
  11. package/dist/dev/test/constructordeclaration.test.js +22 -11
  12. package/dist/dev/test/constructordeclaration.test.js.map +1 -1
  13. package/dist/dev/test/dataclassdeclarations.test.js +322 -368
  14. package/dist/dev/test/dataclassdeclarations.test.js.map +1 -1
  15. package/dist/dev/test/decoratorlist.test.js +96 -49
  16. package/dist/dev/test/decoratorlist.test.js.map +1 -1
  17. package/dist/dev/test/dundermethoddeclaration.test.js +22 -11
  18. package/dist/dev/test/dundermethoddeclaration.test.js.map +1 -1
  19. package/dist/dev/test/enums.test.js +218 -184
  20. package/dist/dev/test/enums.test.js.map +1 -1
  21. package/dist/dev/test/externals.test.js +57 -45
  22. package/dist/dev/test/externals.test.js.map +1 -1
  23. package/dist/dev/test/factories.test.js +124 -50
  24. package/dist/dev/test/factories.test.js.map +1 -1
  25. package/dist/dev/test/functioncallexpressions.test.js +199 -164
  26. package/dist/dev/test/functioncallexpressions.test.js.map +1 -1
  27. package/dist/dev/test/functiondeclaration.test.js +439 -272
  28. package/dist/dev/test/functiondeclaration.test.js.map +1 -1
  29. package/dist/dev/test/imports.test.js +273 -221
  30. package/dist/dev/test/imports.test.js.map +1 -1
  31. package/dist/dev/test/memberexpressions.test.js +1237 -972
  32. package/dist/dev/test/memberexpressions.test.js.map +1 -1
  33. package/dist/dev/test/methoddeclaration.test.js +142 -78
  34. package/dist/dev/test/methoddeclaration.test.js.map +1 -1
  35. package/dist/dev/test/namepolicies.test.js +130 -94
  36. package/dist/dev/test/namepolicies.test.js.map +1 -1
  37. package/dist/dev/test/propertydeclaration.test.js +88 -59
  38. package/dist/dev/test/propertydeclaration.test.js.map +1 -1
  39. package/dist/dev/test/pydanticclassdeclarations.test.js +299 -347
  40. package/dist/dev/test/pydanticclassdeclarations.test.js.map +1 -1
  41. package/dist/dev/test/pydocs.test.js +888 -715
  42. package/dist/dev/test/pydocs.test.js.map +1 -1
  43. package/dist/dev/test/references.test.js +42 -35
  44. package/dist/dev/test/references.test.js.map +1 -1
  45. package/dist/dev/test/sourcefiles.test.js +1109 -841
  46. package/dist/dev/test/sourcefiles.test.js.map +1 -1
  47. package/dist/dev/test/staticmethoddeclaration.test.js +21 -10
  48. package/dist/dev/test/staticmethoddeclaration.test.js.map +1 -1
  49. package/dist/dev/test/type-checking-imports.test.js +408 -359
  50. package/dist/dev/test/type-checking-imports.test.js.map +1 -1
  51. package/dist/dev/test/typereference.test.js +55 -40
  52. package/dist/dev/test/typereference.test.js.map +1 -1
  53. package/dist/dev/test/uniontypeexpression.test.js +222 -146
  54. package/dist/dev/test/uniontypeexpression.test.js.map +1 -1
  55. package/dist/dev/test/utils.js +39 -77
  56. package/dist/dev/test/utils.js.map +1 -1
  57. package/dist/dev/test/values.test.js +237 -101
  58. package/dist/dev/test/values.test.js.map +1 -1
  59. package/dist/dev/test/variables.test.js +321 -203
  60. package/dist/dev/test/variables.test.js.map +1 -1
  61. package/dist/dev/test/vitest.setup.js +2 -0
  62. package/dist/dev/test/vitest.setup.js.map +1 -0
  63. package/dist/src/components/SourceFile.d.ts +2 -2
  64. package/dist/src/components/SourceFile.d.ts.map +1 -1
  65. package/dist/src/components/SourceFile.js +12 -0
  66. package/dist/src/components/SourceFile.js.map +1 -1
  67. package/dist/test/callsignatures.test.js +346 -272
  68. package/dist/test/callsignatures.test.js.map +1 -1
  69. package/dist/test/class-method-declaration.test.js +7 -4
  70. package/dist/test/class-method-declaration.test.js.map +1 -1
  71. package/dist/test/classdeclarations.test.js +302 -288
  72. package/dist/test/classdeclarations.test.js.map +1 -1
  73. package/dist/test/classinstantiations.test.js +112 -103
  74. package/dist/test/classinstantiations.test.js.map +1 -1
  75. package/dist/test/constructordeclaration.test.js +7 -4
  76. package/dist/test/constructordeclaration.test.js.map +1 -1
  77. package/dist/test/dataclassdeclarations.test.js +134 -184
  78. package/dist/test/dataclassdeclarations.test.js.map +1 -1
  79. package/dist/test/decoratorlist.test.js +59 -36
  80. package/dist/test/decoratorlist.test.js.map +1 -1
  81. package/dist/test/dundermethoddeclaration.test.js +7 -4
  82. package/dist/test/dundermethoddeclaration.test.js.map +1 -1
  83. package/dist/test/enums.test.js +161 -159
  84. package/dist/test/enums.test.js.map +1 -1
  85. package/dist/test/externals.test.js +24 -24
  86. package/dist/test/externals.test.js.map +1 -1
  87. package/dist/test/factories.test.js +75 -33
  88. package/dist/test/factories.test.js.map +1 -1
  89. package/dist/test/functioncallexpressions.test.js +117 -106
  90. package/dist/test/functioncallexpressions.test.js.map +1 -1
  91. package/dist/test/functiondeclaration.test.js +247 -180
  92. package/dist/test/functiondeclaration.test.js.map +1 -1
  93. package/dist/test/imports.test.js +171 -143
  94. package/dist/test/imports.test.js.map +1 -1
  95. package/dist/test/memberexpressions.test.js +582 -453
  96. package/dist/test/memberexpressions.test.js.map +1 -1
  97. package/dist/test/methoddeclaration.test.js +66 -46
  98. package/dist/test/methoddeclaration.test.js.map +1 -1
  99. package/dist/test/namepolicies.test.js +90 -78
  100. package/dist/test/namepolicies.test.js.map +1 -1
  101. package/dist/test/propertydeclaration.test.js +25 -20
  102. package/dist/test/propertydeclaration.test.js.map +1 -1
  103. package/dist/test/pydanticclassdeclarations.test.js +134 -190
  104. package/dist/test/pydanticclassdeclarations.test.js.map +1 -1
  105. package/dist/test/pydocs.test.js +573 -532
  106. package/dist/test/pydocs.test.js.map +1 -1
  107. package/dist/test/references.test.js +31 -28
  108. package/dist/test/references.test.js.map +1 -1
  109. package/dist/test/sourcefiles.test.js +700 -580
  110. package/dist/test/sourcefiles.test.js.map +1 -1
  111. package/dist/test/staticmethoddeclaration.test.js +7 -4
  112. package/dist/test/staticmethoddeclaration.test.js.map +1 -1
  113. package/dist/test/type-checking-imports.test.js +297 -284
  114. package/dist/test/type-checking-imports.test.js.map +1 -1
  115. package/dist/test/typereference.test.js +29 -22
  116. package/dist/test/typereference.test.js.map +1 -1
  117. package/dist/test/uniontypeexpression.test.js +124 -88
  118. package/dist/test/uniontypeexpression.test.js.map +1 -1
  119. package/dist/test/utils.d.ts +10 -17
  120. package/dist/test/utils.d.ts.map +1 -1
  121. package/dist/test/utils.js +32 -74
  122. package/dist/test/utils.js.map +1 -1
  123. package/dist/test/values.test.js +135 -67
  124. package/dist/test/values.test.js.map +1 -1
  125. package/dist/test/variables.test.js +201 -151
  126. package/dist/test/variables.test.js.map +1 -1
  127. package/dist/test/vitest.setup.d.ts +2 -0
  128. package/dist/test/vitest.setup.d.ts.map +1 -0
  129. package/dist/test/vitest.setup.js +2 -0
  130. package/dist/test/vitest.setup.js.map +1 -0
  131. package/dist/tsconfig.tsbuildinfo +1 -1
  132. package/docs/api/components/SourceFile.md +20 -8
  133. package/package.json +2 -2
  134. package/src/components/SourceFile.tsx +6 -1
  135. package/temp/api.json +16 -2
  136. package/test/callsignatures.test.tsx +309 -283
  137. package/test/class-method-declaration.test.tsx +3 -4
  138. package/test/classdeclarations.test.tsx +263 -248
  139. package/test/classinstantiations.test.tsx +115 -109
  140. package/test/constructordeclaration.test.tsx +9 -6
  141. package/test/dataclassdeclarations.test.tsx +243 -361
  142. package/test/decoratorlist.test.tsx +78 -59
  143. package/test/dundermethoddeclaration.test.tsx +3 -4
  144. package/test/enums.test.tsx +65 -81
  145. package/test/externals.test.tsx +25 -25
  146. package/test/factories.test.tsx +64 -22
  147. package/test/functioncallexpressions.test.tsx +123 -109
  148. package/test/functiondeclaration.test.tsx +209 -148
  149. package/test/imports.test.tsx +119 -91
  150. package/test/memberexpressions.test.tsx +265 -207
  151. package/test/methoddeclaration.test.tsx +84 -63
  152. package/test/namepolicies.test.tsx +69 -69
  153. package/test/propertydeclaration.test.tsx +7 -8
  154. package/test/pydanticclassdeclarations.test.tsx +355 -487
  155. package/test/pydocs.test.tsx +531 -579
  156. package/test/references.test.tsx +24 -23
  157. package/test/sourcefiles.test.tsx +527 -492
  158. package/test/staticmethoddeclaration.test.tsx +3 -4
  159. package/test/type-checking-imports.test.tsx +206 -218
  160. package/test/typereference.test.tsx +15 -12
  161. package/test/uniontypeexpression.test.tsx +74 -61
  162. package/test/utils.tsx +26 -110
  163. package/test/values.test.tsx +82 -32
  164. package/test/variables.test.tsx +162 -142
  165. package/test/vitest.setup.ts +1 -0
  166. package/vitest.config.ts +3 -0
@@ -1,480 +1,654 @@
1
1
  import { createComponent as _$createComponent } from "@alloy-js/core/jsx-runtime";
2
- import { d } from "@alloy-js/core/testing";
3
2
  import { describe, expect, it } from "vitest";
4
3
  import * as py from "../src/index.js";
5
- import { toSourceText } from "./utils.js";
4
+ import { TestOutput } from "./utils.js";
6
5
  describe("Call Signature Parameters", () => {
7
6
  it("renders simple function parameters", () => {
8
- const result = toSourceText([_$createComponent(py.CallSignatureParameters, {
9
- parameters: ["a", "b"]
7
+ expect(_$createComponent(TestOutput, {
8
+ get children() {
9
+ return _$createComponent(py.CallSignatureParameters, {
10
+ parameters: ["a", "b"]
11
+ }, {
12
+ fileName: import.meta.url,
13
+ lineNumber: 9,
14
+ columnNumber: 9
15
+ });
16
+ }
10
17
  }, {
11
18
  fileName: import.meta.url,
12
- lineNumber: 9,
19
+ lineNumber: 8,
13
20
  columnNumber: 7
14
- })]);
15
- expect(result).toRenderTo(d`
21
+ })).toRenderTo(`
16
22
  a, b
17
23
  `);
18
24
  });
19
25
  it("renders ParameterDescriptor parameters", () => {
20
- const result = toSourceText([_$createComponent(py.CallSignatureParameters, {
21
- parameters: [{
22
- name: "a"
23
- }, {
24
- name: "b"
25
- }]
26
+ expect(_$createComponent(TestOutput, {
27
+ get children() {
28
+ return _$createComponent(py.CallSignatureParameters, {
29
+ parameters: [{
30
+ name: "a"
31
+ }, {
32
+ name: "b"
33
+ }]
34
+ }, {
35
+ fileName: import.meta.url,
36
+ lineNumber: 18,
37
+ columnNumber: 9
38
+ });
39
+ }
26
40
  }, {
27
41
  fileName: import.meta.url,
28
42
  lineNumber: 17,
29
43
  columnNumber: 7
30
- })]);
31
- expect(result).toRenderTo(d`
44
+ })).toRenderTo(`
32
45
  a, b
33
46
  `);
34
47
  });
35
48
  it("renders ParameterDescriptor parameters with types", () => {
36
- const result = toSourceText([_$createComponent(py.CallSignatureParameters, {
37
- parameters: [{
38
- name: "a",
39
- type: "int"
40
- }, {
41
- name: "b",
42
- type: "str"
43
- }]
49
+ expect(_$createComponent(TestOutput, {
50
+ get children() {
51
+ return _$createComponent(py.CallSignatureParameters, {
52
+ parameters: [{
53
+ name: "a",
54
+ type: "int"
55
+ }, {
56
+ name: "b",
57
+ type: "str"
58
+ }]
59
+ }, {
60
+ fileName: import.meta.url,
61
+ lineNumber: 29,
62
+ columnNumber: 9
63
+ });
64
+ }
44
65
  }, {
45
66
  fileName: import.meta.url,
46
- lineNumber: 27,
67
+ lineNumber: 28,
47
68
  columnNumber: 7
48
- })]);
49
- expect(result).toRenderTo(d`
69
+ })).toRenderTo(`
50
70
  a: int, b: str
51
71
  `);
52
72
  });
53
73
  it("renders optional ParameterDescriptor parameters with types", () => {
54
- const result = toSourceText([_$createComponent(py.CallSignatureParameters, {
55
- parameters: [{
56
- name: "a",
57
- type: "int",
58
- default: null
59
- }, {
60
- name: "b",
61
- type: "str",
62
- default: null
63
- }]
74
+ expect(_$createComponent(TestOutput, {
75
+ get children() {
76
+ return _$createComponent(py.CallSignatureParameters, {
77
+ parameters: [{
78
+ name: "a",
79
+ type: "int",
80
+ default: null
81
+ }, {
82
+ name: "b",
83
+ type: "str",
84
+ default: null
85
+ }]
86
+ }, {
87
+ fileName: import.meta.url,
88
+ lineNumber: 49,
89
+ columnNumber: 9
90
+ });
91
+ }
64
92
  }, {
65
93
  fileName: import.meta.url,
66
- lineNumber: 46,
94
+ lineNumber: 48,
67
95
  columnNumber: 7
68
- })]);
69
- expect(result).toRenderTo(d`
96
+ })).toRenderTo(`
70
97
  a: int = None, b: str = None
71
98
  `);
72
99
  });
73
100
  it("renders optional ParameterDescriptor parameters default", () => {
74
- const result = toSourceText([_$createComponent(py.CallSignatureParameters, {
75
- parameters: [{
76
- name: "a",
77
- default: 5
78
- }, {
79
- name: "b",
80
- default: "hello"
81
- }]
101
+ expect(_$createComponent(TestOutput, {
102
+ get children() {
103
+ return _$createComponent(py.CallSignatureParameters, {
104
+ parameters: [{
105
+ name: "a",
106
+ default: 5
107
+ }, {
108
+ name: "b",
109
+ default: "hello"
110
+ }]
111
+ }, {
112
+ fileName: import.meta.url,
113
+ lineNumber: 71,
114
+ columnNumber: 9
115
+ });
116
+ }
82
117
  }, {
83
118
  fileName: import.meta.url,
84
- lineNumber: 67,
119
+ lineNumber: 70,
85
120
  columnNumber: 7
86
- })]);
87
- expect(result).toRenderTo(d`
121
+ })).toRenderTo(`
88
122
  a=5, b="hello"
89
123
  `);
90
124
  });
91
125
  it("renders optional ParameterDescriptor parameters with types and default", () => {
92
- const result = toSourceText([_$createComponent(py.CallSignatureParameters, {
93
- parameters: [{
94
- name: "a",
95
- type: "int",
96
- default: 5
97
- }, {
98
- name: "b",
99
- type: "str",
100
- default: "hello"
101
- }]
126
+ expect(_$createComponent(TestOutput, {
127
+ get children() {
128
+ return _$createComponent(py.CallSignatureParameters, {
129
+ parameters: [{
130
+ name: "a",
131
+ type: "int",
132
+ default: 5
133
+ }, {
134
+ name: "b",
135
+ type: "str",
136
+ default: "hello"
137
+ }]
138
+ }, {
139
+ fileName: import.meta.url,
140
+ lineNumber: 85,
141
+ columnNumber: 9
142
+ });
143
+ }
102
144
  }, {
103
145
  fileName: import.meta.url,
104
- lineNumber: 80,
146
+ lineNumber: 84,
105
147
  columnNumber: 7
106
- })]);
107
- expect(result).toRenderTo(d`
148
+ })).toRenderTo(`
108
149
  a: int = 5, b: str = "hello"
109
150
  `);
110
151
  });
111
152
  it("renders keyword-only parameters with * marker", () => {
112
- const result = toSourceText([_$createComponent(py.CallSignatureParameters, {
113
- parameters: [{
114
- name: "a",
115
- type: "str"
116
- }, "*", {
117
- name: "b",
118
- type: "int",
119
- default: 10
120
- }, {
121
- name: "c",
122
- type: "bool",
123
- default: true
124
- }]
153
+ expect(_$createComponent(TestOutput, {
154
+ get children() {
155
+ return _$createComponent(py.CallSignatureParameters, {
156
+ parameters: [{
157
+ name: "a",
158
+ type: "str"
159
+ }, "*", {
160
+ name: "b",
161
+ type: "int",
162
+ default: 10
163
+ }, {
164
+ name: "c",
165
+ type: "bool",
166
+ default: true
167
+ }]
168
+ }, {
169
+ fileName: import.meta.url,
170
+ lineNumber: 107,
171
+ columnNumber: 9
172
+ });
173
+ }
125
174
  }, {
126
175
  fileName: import.meta.url,
127
- lineNumber: 101,
176
+ lineNumber: 106,
128
177
  columnNumber: 7
129
- })]);
130
- expect(result).toRenderTo(d`
178
+ })).toRenderTo(`
131
179
  a: str, *, b: int = 10, c: bool = True
132
180
  `);
133
181
  });
134
182
  it("renders only keyword-only parameters with * marker at start", () => {
135
- const result = toSourceText([_$createComponent(py.CallSignatureParameters, {
136
- parameters: ["*", {
137
- name: "a",
138
- type: "str",
139
- default: "hello"
140
- }, {
141
- name: "b",
142
- type: "int",
143
- default: 42
144
- }]
183
+ expect(_$createComponent(TestOutput, {
184
+ get children() {
185
+ return _$createComponent(py.CallSignatureParameters, {
186
+ parameters: ["*", {
187
+ name: "a",
188
+ type: "str",
189
+ default: "hello"
190
+ }, {
191
+ name: "b",
192
+ type: "int",
193
+ default: 42
194
+ }]
195
+ }, {
196
+ fileName: import.meta.url,
197
+ lineNumber: 123,
198
+ columnNumber: 9
199
+ });
200
+ }
145
201
  }, {
146
202
  fileName: import.meta.url,
147
- lineNumber: 116,
203
+ lineNumber: 122,
148
204
  columnNumber: 7
149
- })]);
150
- expect(result).toRenderTo(d`
205
+ })).toRenderTo(`
151
206
  *, a: str = "hello", b: int = 42
152
207
  `);
153
208
  });
154
209
  });
155
210
  describe("Call Signature", () => {
156
211
  it("renders a call signature with strings", () => {
157
- const result = toSourceText([_$createComponent(py.CallSignature, {
158
- parameters: ["a", "b"]
212
+ expect(_$createComponent(TestOutput, {
213
+ get children() {
214
+ return _$createComponent(py.CallSignature, {
215
+ parameters: ["a", "b"]
216
+ }, {
217
+ fileName: import.meta.url,
218
+ lineNumber: 141,
219
+ columnNumber: 9
220
+ });
221
+ }
159
222
  }, {
160
223
  fileName: import.meta.url,
161
- lineNumber: 132,
162
- columnNumber: 34
163
- })]);
164
- expect(result).toRenderTo(d`
224
+ lineNumber: 140,
225
+ columnNumber: 7
226
+ })).toRenderTo(`
165
227
  (a, b)
166
228
  `);
167
229
  });
168
230
  it("renders a call signature with parameter descriptors", () => {
169
- const result = toSourceText([_$createComponent(py.CallSignature, {
170
- parameters: [{
171
- name: "a"
172
- }, {
173
- name: "b"
174
- }]
231
+ expect(_$createComponent(TestOutput, {
232
+ get children() {
233
+ return _$createComponent(py.CallSignature, {
234
+ parameters: [{
235
+ name: "a"
236
+ }, {
237
+ name: "b"
238
+ }]
239
+ }, {
240
+ fileName: import.meta.url,
241
+ lineNumber: 150,
242
+ columnNumber: 9
243
+ });
244
+ }
175
245
  }, {
176
246
  fileName: import.meta.url,
177
- lineNumber: 139,
247
+ lineNumber: 149,
178
248
  columnNumber: 7
179
- })]);
180
- expect(result).toRenderTo(d`
249
+ })).toRenderTo(`
181
250
  (a, b)
182
251
  `);
183
252
  });
184
253
  it("renders a call signature with mixed strings and parameter descriptors", () => {
185
- const result = toSourceText([_$createComponent(py.CallSignature, {
186
- parameters: ["a", {
187
- name: "b"
188
- }]
254
+ expect(_$createComponent(TestOutput, {
255
+ get children() {
256
+ return _$createComponent(py.CallSignature, {
257
+ parameters: ["a", {
258
+ name: "b"
259
+ }]
260
+ }, {
261
+ fileName: import.meta.url,
262
+ lineNumber: 159,
263
+ columnNumber: 9
264
+ });
265
+ }
189
266
  }, {
190
267
  fileName: import.meta.url,
191
- lineNumber: 147,
268
+ lineNumber: 158,
192
269
  columnNumber: 7
193
- })]);
194
- expect(result).toRenderTo(d`
270
+ })).toRenderTo(`
195
271
  (a, b)
196
272
  `);
197
273
  });
198
274
  it("renders a simple call signature with args and kwargs", () => {
199
- const result = toSourceText([_$createComponent(py.CallSignature, {
200
- parameters: [{
201
- name: "a"
202
- }, {
203
- name: "b"
204
- }],
205
- args: true,
206
- kwargs: true
275
+ expect(_$createComponent(TestOutput, {
276
+ get children() {
277
+ return _$createComponent(py.CallSignature, {
278
+ parameters: [{
279
+ name: "a"
280
+ }, {
281
+ name: "b"
282
+ }],
283
+ args: true,
284
+ kwargs: true
285
+ }, {
286
+ fileName: import.meta.url,
287
+ lineNumber: 168,
288
+ columnNumber: 9
289
+ });
290
+ }
207
291
  }, {
208
292
  fileName: import.meta.url,
209
- lineNumber: 155,
293
+ lineNumber: 167,
210
294
  columnNumber: 7
211
- })]);
212
- expect(result).toRenderTo(d`
295
+ })).toRenderTo(`
213
296
  (a, b, *args, **kwargs)
214
297
  `);
215
298
  });
216
299
  it("renders a simple call signature with type parameters", () => {
217
- const result = toSourceText([_$createComponent(py.CallSignature, {
218
- parameters: [{
219
- name: "a"
220
- }, {
221
- name: "b"
222
- }],
223
- typeParameters: ["T", "U"]
300
+ expect(_$createComponent(TestOutput, {
301
+ get children() {
302
+ return _$createComponent(py.CallSignature, {
303
+ parameters: [{
304
+ name: "a"
305
+ }, {
306
+ name: "b"
307
+ }],
308
+ typeParameters: ["T", "U"]
309
+ }, {
310
+ fileName: import.meta.url,
311
+ lineNumber: 181,
312
+ columnNumber: 9
313
+ });
314
+ }
224
315
  }, {
225
316
  fileName: import.meta.url,
226
- lineNumber: 167,
317
+ lineNumber: 180,
227
318
  columnNumber: 7
228
- })]);
229
- expect(result).toRenderTo(d`
319
+ })).toRenderTo(`
230
320
  [T, U](a, b)
231
321
  `);
232
322
  });
233
323
  it("renders a simple call signature with return type", () => {
234
- const result = toSourceText([_$createComponent(py.CallSignature, {
235
- parameters: [{
236
- name: "a"
237
- }, {
238
- name: "b"
239
- }],
240
- returnType: "int"
324
+ expect(_$createComponent(TestOutput, {
325
+ get children() {
326
+ return _$createComponent(py.CallSignature, {
327
+ parameters: [{
328
+ name: "a"
329
+ }, {
330
+ name: "b"
331
+ }],
332
+ returnType: "int"
333
+ }, {
334
+ fileName: import.meta.url,
335
+ lineNumber: 193,
336
+ columnNumber: 9
337
+ });
338
+ }
241
339
  }, {
242
340
  fileName: import.meta.url,
243
- lineNumber: 178,
341
+ lineNumber: 192,
244
342
  columnNumber: 7
245
- })]);
246
- expect(result).toRenderTo(d`
343
+ })).toRenderTo(`
247
344
  (a, b) -> int
248
345
  `);
249
346
  });
250
347
  });
251
348
  describe("Call Signature - Parameter Descriptors", () => {
252
349
  it("renders a call signature with parameter descriptors", () => {
253
- const result = toSourceText([_$createComponent(py.CallSignature, {
254
- parameters: [{
255
- name: "a",
256
- type: "int"
257
- }, {
258
- name: "b",
259
- type: "str"
260
- }]
350
+ expect(_$createComponent(TestOutput, {
351
+ get children() {
352
+ return _$createComponent(py.CallSignature, {
353
+ parameters: [{
354
+ name: "a",
355
+ type: "int"
356
+ }, {
357
+ name: "b",
358
+ type: "str"
359
+ }]
360
+ }, {
361
+ fileName: import.meta.url,
362
+ lineNumber: 208,
363
+ columnNumber: 9
364
+ });
365
+ }
261
366
  }, {
262
367
  fileName: import.meta.url,
263
- lineNumber: 192,
368
+ lineNumber: 207,
264
369
  columnNumber: 7
265
- })]);
266
- expect(result).toRenderTo(d`
370
+ })).toRenderTo(`
267
371
  (a: int, b: str)
268
372
  `);
269
373
  });
270
374
  it("renders a call signature with parameter descriptors, args and kwargs", () => {
271
- const result = toSourceText([_$createComponent(py.CallSignature, {
272
- parameters: [{
273
- name: "a",
274
- type: "int"
275
- }, {
276
- name: "b",
277
- type: "str"
278
- }],
279
- args: true,
280
- kwargs: true
375
+ expect(_$createComponent(TestOutput, {
376
+ get children() {
377
+ return _$createComponent(py.CallSignature, {
378
+ parameters: [{
379
+ name: "a",
380
+ type: "int"
381
+ }, {
382
+ name: "b",
383
+ type: "str"
384
+ }],
385
+ args: true,
386
+ kwargs: true
387
+ }, {
388
+ fileName: import.meta.url,
389
+ lineNumber: 228,
390
+ columnNumber: 9
391
+ });
392
+ }
281
393
  }, {
282
394
  fileName: import.meta.url,
283
- lineNumber: 211,
395
+ lineNumber: 227,
284
396
  columnNumber: 7
285
- })]);
286
- expect(result).toRenderTo(d`
397
+ })).toRenderTo(`
287
398
  (a: int, b: str, *args, **kwargs)
288
399
  `);
289
400
  });
290
401
  it("renders a call signature with parameter descriptors and return type", () => {
291
- const result = toSourceText([_$createComponent(py.CallSignature, {
292
- parameters: [{
293
- name: "a",
294
- type: "int"
295
- }, {
296
- name: "b",
297
- type: "str"
298
- }],
299
- returnType: "int"
402
+ expect(_$createComponent(TestOutput, {
403
+ get children() {
404
+ return _$createComponent(py.CallSignature, {
405
+ parameters: [{
406
+ name: "a",
407
+ type: "int"
408
+ }, {
409
+ name: "b",
410
+ type: "str"
411
+ }],
412
+ returnType: "int"
413
+ }, {
414
+ fileName: import.meta.url,
415
+ lineNumber: 250,
416
+ columnNumber: 9
417
+ });
418
+ }
300
419
  }, {
301
420
  fileName: import.meta.url,
302
- lineNumber: 232,
421
+ lineNumber: 249,
303
422
  columnNumber: 7
304
- })]);
305
- expect(result).toRenderTo(d`
423
+ })).toRenderTo(`
306
424
  (a: int, b: str) -> int
307
425
  `);
308
426
  });
309
427
  it("renders a call signature with parameter descriptors for a class function", () => {
310
- const result = toSourceText([_$createComponent(py.CallSignature, {
311
- parameters: [{
312
- name: "a",
313
- type: "int"
314
- }, {
315
- name: "b",
316
- type: "str"
317
- }]
428
+ expect(_$createComponent(TestOutput, {
429
+ get children() {
430
+ return _$createComponent(py.CallSignature, {
431
+ parameters: [{
432
+ name: "a",
433
+ type: "int"
434
+ }, {
435
+ name: "b",
436
+ type: "str"
437
+ }]
438
+ }, {
439
+ fileName: import.meta.url,
440
+ lineNumber: 271,
441
+ columnNumber: 9
442
+ });
443
+ }
318
444
  }, {
319
445
  fileName: import.meta.url,
320
- lineNumber: 252,
446
+ lineNumber: 270,
321
447
  columnNumber: 7
322
- })]);
323
- expect(result).toRenderTo(d`
448
+ })).toRenderTo(`
324
449
  (a: int, b: str)
325
450
  `);
326
451
  });
327
452
  it("renders a call signature with all", () => {
328
- const result = toSourceText([_$createComponent(py.CallSignature, {
329
- parameters: [{
330
- name: "a",
331
- type: "int"
332
- }, {
333
- name: "b",
334
- type: "str"
335
- }],
336
- args: true,
337
- kwargs: true,
338
- returnType: "int"
453
+ expect(_$createComponent(TestOutput, {
454
+ get children() {
455
+ return _$createComponent(py.CallSignature, {
456
+ parameters: [{
457
+ name: "a",
458
+ type: "int"
459
+ }, {
460
+ name: "b",
461
+ type: "str"
462
+ }],
463
+ args: true,
464
+ kwargs: true,
465
+ returnType: "int"
466
+ }, {
467
+ fileName: import.meta.url,
468
+ lineNumber: 291,
469
+ columnNumber: 9
470
+ });
471
+ }
339
472
  }, {
340
473
  fileName: import.meta.url,
341
- lineNumber: 271,
474
+ lineNumber: 290,
342
475
  columnNumber: 7
343
- })]);
344
- expect(result).toRenderTo(d`
476
+ })).toRenderTo(`
345
477
  (a: int, b: str, *args, **kwargs) -> int
346
478
  `);
347
479
  });
348
480
  it("renders a more complex call signature with parameter descriptors", () => {
349
- const result = toSourceText([_$createComponent(py.CallSignature, {
350
- typeParameters: ["T", "U"],
351
- parameters: [{
352
- name: "a",
353
- type: "int"
354
- }, {
355
- name: "b",
356
- type: "str",
357
- default: "default_value"
358
- }],
359
- returnType: "int"
481
+ expect(_$createComponent(TestOutput, {
482
+ get children() {
483
+ return _$createComponent(py.CallSignature, {
484
+ typeParameters: ["T", "U"],
485
+ parameters: [{
486
+ name: "a",
487
+ type: "int"
488
+ }, {
489
+ name: "b",
490
+ type: "str",
491
+ default: "default_value"
492
+ }],
493
+ returnType: "int"
494
+ }, {
495
+ fileName: import.meta.url,
496
+ lineNumber: 314,
497
+ columnNumber: 9
498
+ });
499
+ }
360
500
  }, {
361
501
  fileName: import.meta.url,
362
- lineNumber: 293,
502
+ lineNumber: 313,
363
503
  columnNumber: 7
364
- })]);
365
- expect(result).toRenderTo(d`
504
+ })).toRenderTo(`
366
505
  [T, U](a: int, b: str = "default_value") -> int
367
506
  `);
368
507
  });
369
508
  it("renders a call signature with keyword-only parameters using * marker", () => {
370
- const result = toSourceText([_$createComponent(py.CallSignature, {
371
- parameters: [{
372
- name: "id",
373
- type: "str"
374
- }, "*", {
375
- name: "locale",
376
- type: "str",
377
- default: "en-US"
378
- }, {
379
- name: "debug",
380
- type: "bool",
381
- default: false
382
- }],
383
- returnType: "str"
509
+ expect(_$createComponent(TestOutput, {
510
+ get children() {
511
+ return _$createComponent(py.CallSignature, {
512
+ parameters: [{
513
+ name: "id",
514
+ type: "str"
515
+ }, "*", {
516
+ name: "locale",
517
+ type: "str",
518
+ default: "en-US"
519
+ }, {
520
+ name: "debug",
521
+ type: "bool",
522
+ default: false
523
+ }],
524
+ returnType: "str"
525
+ }, {
526
+ fileName: import.meta.url,
527
+ lineNumber: 337,
528
+ columnNumber: 9
529
+ });
530
+ }
384
531
  }, {
385
532
  fileName: import.meta.url,
386
- lineNumber: 315,
533
+ lineNumber: 336,
387
534
  columnNumber: 7
388
- })]);
389
- expect(result).toRenderTo(d`
535
+ })).toRenderTo(`
390
536
  (id: str, *, locale: str = "en-US", debug: bool = False) -> str
391
537
  `);
392
538
  });
393
539
  it("renders a call signature with only keyword-only parameters", () => {
394
- const result = toSourceText([_$createComponent(py.CallSignature, {
395
- parameters: ["*", {
396
- name: "name",
397
- type: "str",
398
- default: "alice"
399
- }, {
400
- name: "age",
401
- type: "int",
402
- default: 30
403
- }],
404
- returnType: "None"
540
+ expect(_$createComponent(TestOutput, {
541
+ get children() {
542
+ return _$createComponent(py.CallSignature, {
543
+ parameters: ["*", {
544
+ name: "name",
545
+ type: "str",
546
+ default: "alice"
547
+ }, {
548
+ name: "age",
549
+ type: "int",
550
+ default: 30
551
+ }],
552
+ returnType: "None"
553
+ }, {
554
+ fileName: import.meta.url,
555
+ lineNumber: 354,
556
+ columnNumber: 9
557
+ });
558
+ }
405
559
  }, {
406
560
  fileName: import.meta.url,
407
- lineNumber: 331,
561
+ lineNumber: 353,
408
562
  columnNumber: 7
409
- })]);
410
- expect(result).toRenderTo(d`
563
+ })).toRenderTo(`
411
564
  (*, name: str = "alice", age: int = 30) -> None
412
565
  `);
413
566
  });
414
567
  it("renders a call signature with positional, keyword-only, and *args/**kwargs", () => {
415
- const result = toSourceText([_$createComponent(py.CallSignature, {
416
- parameters: [{
417
- name: "a",
418
- type: "int"
419
- }, "*", {
420
- name: "b",
421
- type: "str",
422
- default: "hello"
423
- }],
424
- args: true,
425
- kwargs: true,
426
- returnType: "None"
568
+ expect(_$createComponent(TestOutput, {
569
+ get children() {
570
+ return _$createComponent(py.CallSignature, {
571
+ parameters: [{
572
+ name: "a",
573
+ type: "int"
574
+ }, "*", {
575
+ name: "b",
576
+ type: "str",
577
+ default: "hello"
578
+ }],
579
+ args: true,
580
+ kwargs: true,
581
+ returnType: "None"
582
+ }, {
583
+ fileName: import.meta.url,
584
+ lineNumber: 370,
585
+ columnNumber: 9
586
+ });
587
+ }
427
588
  }, {
428
589
  fileName: import.meta.url,
429
- lineNumber: 346,
590
+ lineNumber: 369,
430
591
  columnNumber: 7
431
- })]);
432
- expect(result).toRenderTo(d`
592
+ })).toRenderTo(`
433
593
  (a: int, *, b: str = "hello", *args, **kwargs) -> None
434
594
  `);
435
595
  });
436
596
  it("renders a call signature with positional-only parameters using / marker", () => {
437
- const result = toSourceText([_$createComponent(py.CallSignature, {
438
- parameters: [{
439
- name: "a",
440
- type: "int"
441
- }, {
442
- name: "b",
443
- type: "str"
444
- }, "/", {
445
- name: "c",
446
- type: "bool"
447
- }],
448
- returnType: "None"
597
+ expect(_$createComponent(TestOutput, {
598
+ get children() {
599
+ return _$createComponent(py.CallSignature, {
600
+ parameters: [{
601
+ name: "a",
602
+ type: "int"
603
+ }, {
604
+ name: "b",
605
+ type: "str"
606
+ }, "/", {
607
+ name: "c",
608
+ type: "bool"
609
+ }],
610
+ returnType: "None"
611
+ }, {
612
+ fileName: import.meta.url,
613
+ lineNumber: 388,
614
+ columnNumber: 9
615
+ });
616
+ }
449
617
  }, {
450
618
  fileName: import.meta.url,
451
- lineNumber: 363,
619
+ lineNumber: 387,
452
620
  columnNumber: 7
453
- })]);
454
- expect(result).toRenderTo(d`
621
+ })).toRenderTo(`
455
622
  (a: int, b: str, /, c: bool) -> None
456
623
  `);
457
624
  });
458
625
  it("renders a call signature with positional-only, regular, and keyword-only parameters", () => {
459
- const result = toSourceText([_$createComponent(py.CallSignature, {
460
- parameters: [{
461
- name: "a",
462
- type: "int"
463
- }, "/", {
464
- name: "b",
465
- type: "str"
466
- }, "*", {
467
- name: "c",
468
- type: "bool",
469
- default: true
470
- }],
471
- returnType: "None"
626
+ expect(_$createComponent(TestOutput, {
627
+ get children() {
628
+ return _$createComponent(py.CallSignature, {
629
+ parameters: [{
630
+ name: "a",
631
+ type: "int"
632
+ }, "/", {
633
+ name: "b",
634
+ type: "str"
635
+ }, "*", {
636
+ name: "c",
637
+ type: "bool",
638
+ default: true
639
+ }],
640
+ returnType: "None"
641
+ }, {
642
+ fileName: import.meta.url,
643
+ lineNumber: 405,
644
+ columnNumber: 9
645
+ });
646
+ }
472
647
  }, {
473
648
  fileName: import.meta.url,
474
- lineNumber: 379,
649
+ lineNumber: 404,
475
650
  columnNumber: 7
476
- })]);
477
- expect(result).toRenderTo(d`
651
+ })).toRenderTo(`
478
652
  (a: int, /, b: str, *, c: bool = True) -> None
479
653
  `);
480
654
  });