@alloy-js/python 0.5.0-dev.0 → 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 (276) hide show
  1. package/dist/dev/src/builtins/python.js +46 -0
  2. package/dist/dev/src/builtins/python.js.map +1 -1
  3. package/dist/dev/src/components/ClassDeclaration.js +19 -10
  4. package/dist/dev/src/components/ClassDeclaration.js.map +1 -1
  5. package/dist/dev/src/components/ClassMethodDeclaration.js +20 -5
  6. package/dist/dev/src/components/ClassMethodDeclaration.js.map +1 -1
  7. package/dist/dev/src/components/DataclassDeclaration.js +14 -12
  8. package/dist/dev/src/components/DataclassDeclaration.js.map +1 -1
  9. package/dist/dev/src/components/DecoratorList.js +55 -0
  10. package/dist/dev/src/components/DecoratorList.js.map +1 -0
  11. package/dist/dev/src/components/EnumDeclaration.js +21 -12
  12. package/dist/dev/src/components/EnumDeclaration.js.map +1 -1
  13. package/dist/dev/src/components/FunctionBase.js +21 -10
  14. package/dist/dev/src/components/FunctionBase.js.map +1 -1
  15. package/dist/dev/src/components/FutureStatement.js +1 -1
  16. package/dist/dev/src/components/MethodBase.js +16 -4
  17. package/dist/dev/src/components/MethodBase.js.map +1 -1
  18. package/dist/dev/src/components/PropertyDeclaration.js +68 -17
  19. package/dist/dev/src/components/PropertyDeclaration.js.map +1 -1
  20. package/dist/dev/src/components/PydanticClassDeclaration.js +136 -0
  21. package/dist/dev/src/components/PydanticClassDeclaration.js.map +1 -0
  22. package/dist/dev/src/components/SourceFile.js +44 -32
  23. package/dist/dev/src/components/SourceFile.js.map +1 -1
  24. package/dist/dev/src/components/StaticMethodDeclaration.js +19 -5
  25. package/dist/dev/src/components/StaticMethodDeclaration.js.map +1 -1
  26. package/dist/dev/src/components/index.js +1 -0
  27. package/dist/dev/src/components/index.js.map +1 -1
  28. package/dist/dev/test/callsignatures.test.js +471 -297
  29. package/dist/dev/test/callsignatures.test.js.map +1 -1
  30. package/dist/dev/test/class-method-declaration.test.js +21 -10
  31. package/dist/dev/test/class-method-declaration.test.js.map +1 -1
  32. package/dist/dev/test/classdeclarations.test.js +480 -381
  33. package/dist/dev/test/classdeclarations.test.js.map +1 -1
  34. package/dist/dev/test/classinstantiations.test.js +201 -168
  35. package/dist/dev/test/classinstantiations.test.js.map +1 -1
  36. package/dist/dev/test/constructordeclaration.test.js +22 -11
  37. package/dist/dev/test/constructordeclaration.test.js.map +1 -1
  38. package/dist/dev/test/dataclassdeclarations.test.js +345 -358
  39. package/dist/dev/test/dataclassdeclarations.test.js.map +1 -1
  40. package/dist/dev/test/decoratorlist.test.js +131 -0
  41. package/dist/dev/test/decoratorlist.test.js.map +1 -0
  42. package/dist/dev/test/dundermethoddeclaration.test.js +22 -11
  43. package/dist/dev/test/dundermethoddeclaration.test.js.map +1 -1
  44. package/dist/dev/test/enums.test.js +231 -166
  45. package/dist/dev/test/enums.test.js.map +1 -1
  46. package/dist/dev/test/externals.test.js +57 -45
  47. package/dist/dev/test/externals.test.js.map +1 -1
  48. package/dist/dev/test/factories.test.js +124 -50
  49. package/dist/dev/test/factories.test.js.map +1 -1
  50. package/dist/dev/test/functioncallexpressions.test.js +199 -164
  51. package/dist/dev/test/functioncallexpressions.test.js.map +1 -1
  52. package/dist/dev/test/functiondeclaration.test.js +452 -265
  53. package/dist/dev/test/functiondeclaration.test.js.map +1 -1
  54. package/dist/dev/test/imports.test.js +273 -221
  55. package/dist/dev/test/imports.test.js.map +1 -1
  56. package/dist/dev/test/memberexpressions.test.js +1237 -972
  57. package/dist/dev/test/memberexpressions.test.js.map +1 -1
  58. package/dist/dev/test/methoddeclaration.test.js +200 -45
  59. package/dist/dev/test/methoddeclaration.test.js.map +1 -1
  60. package/dist/dev/test/namepolicies.test.js +130 -94
  61. package/dist/dev/test/namepolicies.test.js.map +1 -1
  62. package/dist/dev/test/propertydeclaration.test.js +177 -46
  63. package/dist/dev/test/propertydeclaration.test.js.map +1 -1
  64. package/dist/dev/test/pydanticclassdeclarations.test.js +1089 -0
  65. package/dist/dev/test/pydanticclassdeclarations.test.js.map +1 -0
  66. package/dist/dev/test/pydocs.test.js +888 -715
  67. package/dist/dev/test/pydocs.test.js.map +1 -1
  68. package/dist/dev/test/references.test.js +42 -35
  69. package/dist/dev/test/references.test.js.map +1 -1
  70. package/dist/dev/test/sourcefiles.test.js +1109 -841
  71. package/dist/dev/test/sourcefiles.test.js.map +1 -1
  72. package/dist/dev/test/staticmethoddeclaration.test.js +21 -10
  73. package/dist/dev/test/staticmethoddeclaration.test.js.map +1 -1
  74. package/dist/dev/test/type-checking-imports.test.js +408 -359
  75. package/dist/dev/test/type-checking-imports.test.js.map +1 -1
  76. package/dist/dev/test/typereference.test.js +55 -40
  77. package/dist/dev/test/typereference.test.js.map +1 -1
  78. package/dist/dev/test/uniontypeexpression.test.js +222 -146
  79. package/dist/dev/test/uniontypeexpression.test.js.map +1 -1
  80. package/dist/dev/test/utils.js +39 -77
  81. package/dist/dev/test/utils.js.map +1 -1
  82. package/dist/dev/test/values.test.js +237 -101
  83. package/dist/dev/test/values.test.js.map +1 -1
  84. package/dist/dev/test/variables.test.js +321 -203
  85. package/dist/dev/test/variables.test.js.map +1 -1
  86. package/dist/dev/test/vitest.setup.js +2 -0
  87. package/dist/dev/test/vitest.setup.js.map +1 -0
  88. package/dist/src/builtins/python.d.ts +30 -0
  89. package/dist/src/builtins/python.d.ts.map +1 -1
  90. package/dist/src/builtins/python.js +46 -0
  91. package/dist/src/builtins/python.js.map +1 -1
  92. package/dist/src/components/ClassDeclaration.d.ts +21 -0
  93. package/dist/src/components/ClassDeclaration.d.ts.map +1 -1
  94. package/dist/src/components/ClassDeclaration.js +6 -1
  95. package/dist/src/components/ClassDeclaration.js.map +1 -1
  96. package/dist/src/components/ClassMethodDeclaration.d.ts +5 -1
  97. package/dist/src/components/ClassMethodDeclaration.d.ts.map +1 -1
  98. package/dist/src/components/ClassMethodDeclaration.js +14 -3
  99. package/dist/src/components/ClassMethodDeclaration.js.map +1 -1
  100. package/dist/src/components/DataclassDeclaration.d.ts.map +1 -1
  101. package/dist/src/components/DataclassDeclaration.js +10 -4
  102. package/dist/src/components/DataclassDeclaration.js.map +1 -1
  103. package/dist/src/components/DecoratorList.d.ts +43 -0
  104. package/dist/src/components/DecoratorList.d.ts.map +1 -0
  105. package/dist/src/components/DecoratorList.js +47 -0
  106. package/dist/src/components/DecoratorList.js.map +1 -0
  107. package/dist/src/components/EnumDeclaration.d.ts +9 -0
  108. package/dist/src/components/EnumDeclaration.d.ts.map +1 -1
  109. package/dist/src/components/EnumDeclaration.js +6 -1
  110. package/dist/src/components/EnumDeclaration.js.map +1 -1
  111. package/dist/src/components/FunctionBase.d.ts +31 -1
  112. package/dist/src/components/FunctionBase.d.ts.map +1 -1
  113. package/dist/src/components/FunctionBase.js +9 -2
  114. package/dist/src/components/FunctionBase.js.map +1 -1
  115. package/dist/src/components/FutureStatement.d.ts +1 -1
  116. package/dist/src/components/FutureStatement.js +1 -1
  117. package/dist/src/components/MethodBase.d.ts.map +1 -1
  118. package/dist/src/components/MethodBase.js +10 -2
  119. package/dist/src/components/MethodBase.js.map +1 -1
  120. package/dist/src/components/PropertyDeclaration.d.ts +29 -0
  121. package/dist/src/components/PropertyDeclaration.d.ts.map +1 -1
  122. package/dist/src/components/PropertyDeclaration.js +48 -1
  123. package/dist/src/components/PropertyDeclaration.js.map +1 -1
  124. package/dist/src/components/PydanticClassDeclaration.d.ts +120 -0
  125. package/dist/src/components/PydanticClassDeclaration.d.ts.map +1 -0
  126. package/dist/src/components/PydanticClassDeclaration.js +116 -0
  127. package/dist/src/components/PydanticClassDeclaration.js.map +1 -0
  128. package/dist/src/components/SourceFile.d.ts +2 -2
  129. package/dist/src/components/SourceFile.d.ts.map +1 -1
  130. package/dist/src/components/SourceFile.js +12 -0
  131. package/dist/src/components/SourceFile.js.map +1 -1
  132. package/dist/src/components/StaticMethodDeclaration.d.ts +3 -0
  133. package/dist/src/components/StaticMethodDeclaration.d.ts.map +1 -1
  134. package/dist/src/components/StaticMethodDeclaration.js +13 -3
  135. package/dist/src/components/StaticMethodDeclaration.js.map +1 -1
  136. package/dist/src/components/index.d.ts +1 -0
  137. package/dist/src/components/index.d.ts.map +1 -1
  138. package/dist/src/components/index.js +1 -0
  139. package/dist/src/components/index.js.map +1 -1
  140. package/dist/test/callsignatures.test.js +346 -272
  141. package/dist/test/callsignatures.test.js.map +1 -1
  142. package/dist/test/class-method-declaration.test.js +7 -4
  143. package/dist/test/class-method-declaration.test.js.map +1 -1
  144. package/dist/test/classdeclarations.test.js +316 -277
  145. package/dist/test/classdeclarations.test.js.map +1 -1
  146. package/dist/test/classinstantiations.test.js +112 -103
  147. package/dist/test/classinstantiations.test.js.map +1 -1
  148. package/dist/test/constructordeclaration.test.js +7 -4
  149. package/dist/test/constructordeclaration.test.js.map +1 -1
  150. package/dist/test/dataclassdeclarations.test.js +153 -178
  151. package/dist/test/dataclassdeclarations.test.js.map +1 -1
  152. package/dist/test/decoratorlist.test.d.ts +2 -0
  153. package/dist/test/decoratorlist.test.d.ts.map +1 -0
  154. package/dist/test/decoratorlist.test.js +83 -0
  155. package/dist/test/decoratorlist.test.js.map +1 -0
  156. package/dist/test/dundermethoddeclaration.test.js +7 -4
  157. package/dist/test/dundermethoddeclaration.test.js.map +1 -1
  158. package/dist/test/enums.test.js +172 -143
  159. package/dist/test/enums.test.js.map +1 -1
  160. package/dist/test/externals.test.js +24 -24
  161. package/dist/test/externals.test.js.map +1 -1
  162. package/dist/test/factories.test.js +75 -33
  163. package/dist/test/factories.test.js.map +1 -1
  164. package/dist/test/functioncallexpressions.test.js +117 -106
  165. package/dist/test/functioncallexpressions.test.js.map +1 -1
  166. package/dist/test/functiondeclaration.test.js +256 -173
  167. package/dist/test/functiondeclaration.test.js.map +1 -1
  168. package/dist/test/imports.test.js +171 -143
  169. package/dist/test/imports.test.js.map +1 -1
  170. package/dist/test/memberexpressions.test.js +582 -453
  171. package/dist/test/memberexpressions.test.js.map +1 -1
  172. package/dist/test/methoddeclaration.test.js +106 -19
  173. package/dist/test/methoddeclaration.test.js.map +1 -1
  174. package/dist/test/namepolicies.test.js +90 -78
  175. package/dist/test/namepolicies.test.js.map +1 -1
  176. package/dist/test/propertydeclaration.test.js +90 -15
  177. package/dist/test/propertydeclaration.test.js.map +1 -1
  178. package/dist/test/pydanticclassdeclarations.test.d.ts +2 -0
  179. package/dist/test/pydanticclassdeclarations.test.d.ts.map +1 -0
  180. package/dist/test/pydanticclassdeclarations.test.js +773 -0
  181. package/dist/test/pydanticclassdeclarations.test.js.map +1 -0
  182. package/dist/test/pydocs.test.js +573 -532
  183. package/dist/test/pydocs.test.js.map +1 -1
  184. package/dist/test/references.test.js +31 -28
  185. package/dist/test/references.test.js.map +1 -1
  186. package/dist/test/sourcefiles.test.js +700 -580
  187. package/dist/test/sourcefiles.test.js.map +1 -1
  188. package/dist/test/staticmethoddeclaration.test.js +7 -4
  189. package/dist/test/staticmethoddeclaration.test.js.map +1 -1
  190. package/dist/test/type-checking-imports.test.js +297 -284
  191. package/dist/test/type-checking-imports.test.js.map +1 -1
  192. package/dist/test/typereference.test.js +29 -22
  193. package/dist/test/typereference.test.js.map +1 -1
  194. package/dist/test/uniontypeexpression.test.js +124 -88
  195. package/dist/test/uniontypeexpression.test.js.map +1 -1
  196. package/dist/test/utils.d.ts +10 -17
  197. package/dist/test/utils.d.ts.map +1 -1
  198. package/dist/test/utils.js +32 -74
  199. package/dist/test/utils.js.map +1 -1
  200. package/dist/test/values.test.js +135 -67
  201. package/dist/test/values.test.js.map +1 -1
  202. package/dist/test/variables.test.js +201 -151
  203. package/dist/test/variables.test.js.map +1 -1
  204. package/dist/test/vitest.setup.d.ts +2 -0
  205. package/dist/test/vitest.setup.d.ts.map +1 -0
  206. package/dist/test/vitest.setup.js +2 -0
  207. package/dist/test/vitest.setup.js.map +1 -0
  208. package/dist/tsconfig.tsbuildinfo +1 -1
  209. package/docs/api/components/ClassDeclaration.md +10 -7
  210. package/docs/api/components/ClassEnumDeclaration.md +9 -6
  211. package/docs/api/components/ClassMethodDeclaration.md +7 -5
  212. package/docs/api/components/DataclassDeclaration.md +9 -5
  213. package/docs/api/components/DunderMethodDeclaration.md +7 -5
  214. package/docs/api/components/FunctionDeclaration.md +9 -5
  215. package/docs/api/components/FutureStatement.md +1 -1
  216. package/docs/api/components/MethodDeclaration.md +11 -6
  217. package/docs/api/components/PropertyDeclaration.md +11 -8
  218. package/docs/api/components/PydanticClassDeclaration.md +146 -0
  219. package/docs/api/components/SourceFile.md +20 -8
  220. package/docs/api/components/StaticMethodDeclaration.md +7 -5
  221. package/docs/api/components/index.md +1 -0
  222. package/docs/api/index.md +3 -3
  223. package/docs/api/types/CommonFunctionProps.md +4 -3
  224. package/docs/api/types/PydanticModelConfigDictProps.md +32 -0
  225. package/docs/api/types/index.md +1 -0
  226. package/docs/api/variables/index.md +3 -0
  227. package/docs/api/variables/pydanticModule.md +27 -0
  228. package/docs/api/variables/pydanticSettingsModule.md +7 -0
  229. package/docs/api/variables/typingModule.md +9 -0
  230. package/package.json +4 -4
  231. package/src/builtins/python.ts +539 -1
  232. package/src/components/ClassDeclaration.tsx +23 -0
  233. package/src/components/ClassMethodDeclaration.tsx +9 -1
  234. package/src/components/DataclassDeclaration.tsx +18 -11
  235. package/src/components/DecoratorList.tsx +50 -0
  236. package/src/components/EnumDeclaration.tsx +11 -0
  237. package/src/components/FunctionBase.tsx +34 -3
  238. package/src/components/FutureStatement.tsx +1 -1
  239. package/src/components/MethodBase.tsx +6 -2
  240. package/src/components/PropertyDeclaration.tsx +48 -1
  241. package/src/components/PydanticClassDeclaration.tsx +222 -0
  242. package/src/components/SourceFile.tsx +6 -1
  243. package/src/components/StaticMethodDeclaration.tsx +7 -1
  244. package/src/components/index.ts +1 -0
  245. package/temp/api.json +1158 -86
  246. package/test/callsignatures.test.tsx +309 -283
  247. package/test/class-method-declaration.test.tsx +3 -4
  248. package/test/classdeclarations.test.tsx +277 -235
  249. package/test/classinstantiations.test.tsx +115 -109
  250. package/test/constructordeclaration.test.tsx +9 -6
  251. package/test/dataclassdeclarations.test.tsx +256 -349
  252. package/test/decoratorlist.test.tsx +114 -0
  253. package/test/dundermethoddeclaration.test.tsx +3 -4
  254. package/test/enums.test.tsx +84 -71
  255. package/test/externals.test.tsx +25 -25
  256. package/test/factories.test.tsx +64 -22
  257. package/test/functioncallexpressions.test.tsx +123 -109
  258. package/test/functiondeclaration.test.tsx +218 -140
  259. package/test/imports.test.tsx +119 -91
  260. package/test/memberexpressions.test.tsx +265 -207
  261. package/test/methoddeclaration.test.tsx +115 -24
  262. package/test/namepolicies.test.tsx +69 -69
  263. package/test/propertydeclaration.test.tsx +71 -7
  264. package/test/pydanticclassdeclarations.test.tsx +704 -0
  265. package/test/pydocs.test.tsx +531 -579
  266. package/test/references.test.tsx +24 -23
  267. package/test/sourcefiles.test.tsx +527 -492
  268. package/test/staticmethoddeclaration.test.tsx +3 -4
  269. package/test/type-checking-imports.test.tsx +206 -218
  270. package/test/typereference.test.tsx +15 -12
  271. package/test/uniontypeexpression.test.tsx +74 -61
  272. package/test/utils.tsx +26 -110
  273. package/test/values.test.tsx +82 -32
  274. package/test/variables.test.tsx +162 -142
  275. package/test/vitest.setup.ts +1 -0
  276. package/vitest.config.ts +3 -0
@@ -1,231 +1,316 @@
1
1
  import { createComponent as _$createComponent } from "@alloy-js/core/jsx-runtime";
2
- import { code, namekey, refkey } from "@alloy-js/core";
3
- import { d } from "@alloy-js/core/testing";
2
+ import { code, namekey, refkey, render } from "@alloy-js/core";
4
3
  import { describe, expect, it } from "vitest";
5
4
  import * as py from "../src/index.js";
6
5
  import { abcModule } from "../src/index.js";
7
- import { assertFileContents, toSourceText, toSourceTextMultiple } from "./utils.js";
6
+ import { TestOutput, TestOutputDirectory } from "./utils.js";
8
7
  describe("Function Declaration", () => {
8
+ it("renders multiple decorators above def without blank lines", () => {
9
+ expect(_$createComponent(TestOutput, {
10
+ get children() {
11
+ return _$createComponent(py.FunctionDeclaration, {
12
+ name: "f",
13
+ decorators: ["@a", "@b", "@c"],
14
+ children: "pass"
15
+ }, {
16
+ fileName: import.meta.url,
17
+ lineNumber: 11,
18
+ columnNumber: 9
19
+ });
20
+ }
21
+ }, {
22
+ fileName: import.meta.url,
23
+ lineNumber: 10,
24
+ columnNumber: 7
25
+ })).toRenderTo(`
26
+ @a
27
+ @b
28
+ @c
29
+ def f():
30
+ pass
31
+
32
+ `);
33
+ });
9
34
  it("renders a function with no body as 'pass'", () => {
10
- const result = toSourceText([_$createComponent(py.FunctionDeclaration, {
11
- name: "foo"
35
+ expect(_$createComponent(TestOutput, {
36
+ get children() {
37
+ return _$createComponent(py.FunctionDeclaration, {
38
+ name: "foo"
39
+ }, {
40
+ fileName: import.meta.url,
41
+ lineNumber: 30,
42
+ columnNumber: 9
43
+ });
44
+ }
12
45
  }, {
13
46
  fileName: import.meta.url,
14
- lineNumber: 14,
15
- columnNumber: 34
16
- })]);
17
- expect(result).toRenderTo(d`
47
+ lineNumber: 29,
48
+ columnNumber: 7
49
+ })).toRenderTo(`
18
50
  def foo():
19
51
  pass
20
52
 
21
-
22
53
  `);
23
54
  });
24
55
  it("takes a namekey", () => {
25
- const result = toSourceText([_$createComponent(py.FunctionDeclaration, {
26
- get name() {
27
- return namekey("foo-bar");
56
+ expect(_$createComponent(TestOutput, {
57
+ get children() {
58
+ return _$createComponent(py.FunctionDeclaration, {
59
+ get name() {
60
+ return namekey("foo-bar");
61
+ }
62
+ }, {
63
+ fileName: import.meta.url,
64
+ lineNumber: 44,
65
+ columnNumber: 9
66
+ });
28
67
  }
29
68
  }, {
30
69
  fileName: import.meta.url,
31
- lineNumber: 25,
70
+ lineNumber: 43,
32
71
  columnNumber: 7
33
- })]);
34
- expect(result).toRenderTo(d`
72
+ })).toRenderTo(`
35
73
  def foo_bar():
36
74
  pass
37
75
 
38
-
39
76
  `);
40
77
  });
41
78
  it("renders a function with no body as 'pass' with return type", () => {
42
- const result = toSourceText([_$createComponent(py.FunctionDeclaration, {
43
- name: "foo",
44
- returnType: "int"
79
+ expect(_$createComponent(TestOutput, {
80
+ get children() {
81
+ return _$createComponent(py.FunctionDeclaration, {
82
+ name: "foo",
83
+ returnType: "int"
84
+ }, {
85
+ fileName: import.meta.url,
86
+ lineNumber: 58,
87
+ columnNumber: 9
88
+ });
89
+ }
45
90
  }, {
46
91
  fileName: import.meta.url,
47
- lineNumber: 37,
92
+ lineNumber: 57,
48
93
  columnNumber: 7
49
- })]);
50
- expect(result).toRenderTo(d`
94
+ })).toRenderTo(`
51
95
  def foo() -> int:
52
96
  pass
53
97
 
54
-
55
98
  `);
56
99
  });
57
100
  it("renders a function that calls another function", () => {
58
101
  const refkeyFoo = refkey();
59
- const result = toSourceText([_$createComponent(py.StatementList, {
102
+ expect(_$createComponent(TestOutput, {
60
103
  get children() {
61
- return [_$createComponent(py.FunctionDeclaration, {
62
- name: "foo",
63
- returnType: "int",
64
- refkey: refkeyFoo
65
- }, {
66
- fileName: import.meta.url,
67
- lineNumber: 51,
68
- columnNumber: 9
69
- }), _$createComponent(py.FunctionDeclaration, {
70
- name: "bar",
71
- returnType: "int",
104
+ return _$createComponent(py.StatementList, {
72
105
  get children() {
73
- return _$createComponent(py.VariableDeclaration, {
74
- name: "result",
75
- type: "int",
76
- get initializer() {
77
- return _$createComponent(py.FunctionCallExpression, {
78
- target: refkeyFoo,
79
- args: []
106
+ return [_$createComponent(py.FunctionDeclaration, {
107
+ name: "foo",
108
+ returnType: "int",
109
+ refkey: refkeyFoo
110
+ }, {
111
+ fileName: import.meta.url,
112
+ lineNumber: 74,
113
+ columnNumber: 11
114
+ }), _$createComponent(py.FunctionDeclaration, {
115
+ name: "bar",
116
+ returnType: "int",
117
+ get children() {
118
+ return _$createComponent(py.VariableDeclaration, {
119
+ name: "result",
120
+ type: "int",
121
+ get initializer() {
122
+ return _$createComponent(py.FunctionCallExpression, {
123
+ target: refkeyFoo,
124
+ args: []
125
+ }, {
126
+ fileName: import.meta.url,
127
+ lineNumber: 84,
128
+ columnNumber: 17
129
+ });
130
+ }
80
131
  }, {
81
132
  fileName: import.meta.url,
82
- lineNumber: 61,
83
- columnNumber: 15
133
+ lineNumber: 80,
134
+ columnNumber: 13
84
135
  });
85
136
  }
86
137
  }, {
87
138
  fileName: import.meta.url,
88
- lineNumber: 57,
139
+ lineNumber: 79,
89
140
  columnNumber: 11
90
- });
141
+ })];
91
142
  }
92
143
  }, {
93
144
  fileName: import.meta.url,
94
- lineNumber: 56,
145
+ lineNumber: 73,
95
146
  columnNumber: 9
96
- })];
147
+ });
97
148
  }
98
149
  }, {
99
150
  fileName: import.meta.url,
100
- lineNumber: 50,
151
+ lineNumber: 72,
101
152
  columnNumber: 7
102
- })]);
103
- expect(result).toRenderTo(d`
153
+ })).toRenderTo(`
104
154
  def foo() -> int:
105
155
  pass
106
156
 
107
157
  def bar() -> int:
108
158
  result: int = foo()
109
159
 
110
-
111
160
  `);
112
161
  });
113
162
  it("renders a function with parameters", () => {
114
- const result = toSourceText([_$createComponent(py.FunctionDeclaration, {
115
- name: "baz",
116
- parameters: [{
117
- name: "x",
118
- type: "int"
119
- }, {
120
- name: "y",
121
- default: 0
122
- }, {
123
- name: "z",
124
- type: "int",
125
- default: 42
126
- }],
127
- args: true,
128
- kwargs: true,
129
- children: "print(x, y)"
163
+ expect(_$createComponent(TestOutput, {
164
+ get children() {
165
+ return _$createComponent(py.FunctionDeclaration, {
166
+ name: "baz",
167
+ parameters: [{
168
+ name: "x",
169
+ type: "int"
170
+ }, {
171
+ name: "y",
172
+ default: 0
173
+ }, {
174
+ name: "z",
175
+ type: "int",
176
+ default: 42
177
+ }],
178
+ args: true,
179
+ kwargs: true,
180
+ children: "print(x, y)"
181
+ }, {
182
+ fileName: import.meta.url,
183
+ lineNumber: 105,
184
+ columnNumber: 9
185
+ });
186
+ }
130
187
  }, {
131
188
  fileName: import.meta.url,
132
- lineNumber: 80,
189
+ lineNumber: 104,
133
190
  columnNumber: 7
134
- })]);
135
- expect(result).toRenderTo(d`
191
+ })).toRenderTo(`
136
192
  def baz(x: int, y=0, z: int = 42, *args, **kwargs):
137
193
  print(x, y)
138
194
 
139
-
140
195
  `);
141
196
  });
142
197
  it("renders an __init__ function with no body as 'pass'", () => {
143
- const result = toSourceText([_$createComponent(py.ClassDeclaration, {
144
- name: "MyClass",
198
+ expect(_$createComponent(TestOutput, {
145
199
  get children() {
146
- return _$createComponent(py.DunderMethodDeclaration, {
147
- name: "__init__",
148
- parameters: [{
149
- name: "x"
150
- }]
200
+ return _$createComponent(py.ClassDeclaration, {
201
+ name: "MyClass",
202
+ get children() {
203
+ return _$createComponent(py.DunderMethodDeclaration, {
204
+ name: "__init__",
205
+ parameters: [{
206
+ name: "x"
207
+ }]
208
+ }, {
209
+ fileName: import.meta.url,
210
+ lineNumber: 131,
211
+ columnNumber: 11
212
+ });
213
+ }
151
214
  }, {
152
215
  fileName: import.meta.url,
153
- lineNumber: 106,
216
+ lineNumber: 130,
154
217
  columnNumber: 9
155
218
  });
156
219
  }
157
220
  }, {
158
221
  fileName: import.meta.url,
159
- lineNumber: 105,
222
+ lineNumber: 129,
160
223
  columnNumber: 7
161
- })]);
162
- expect(result).toRenderTo(d`
224
+ })).toRenderTo(`
163
225
  class MyClass:
164
226
  def __init__(self, x):
165
227
  pass
166
228
 
167
-
168
-
229
+
169
230
  `);
170
231
  });
171
232
  it("can be an async function", () => {
172
- expect(toSourceText([_$createComponent(py.FunctionDeclaration, {
173
- async: true,
174
- name: "foo"
233
+ expect(_$createComponent(TestOutput, {
234
+ get children() {
235
+ return _$createComponent(py.FunctionDeclaration, {
236
+ async: true,
237
+ name: "foo"
238
+ }, {
239
+ fileName: import.meta.url,
240
+ lineNumber: 151,
241
+ columnNumber: 9
242
+ });
243
+ }
175
244
  }, {
176
245
  fileName: import.meta.url,
177
- lineNumber: 123,
178
- columnNumber: 26
179
- })])).toBe(d`
246
+ lineNumber: 150,
247
+ columnNumber: 7
248
+ })).toRenderTo(`
180
249
  async def foo():
181
250
  pass
182
251
 
183
252
  `);
184
253
  });
185
254
  it("can be an async function with returnType", () => {
186
- expect(toSourceText([_$createComponent(py.FunctionDeclaration, {
187
- async: true,
188
- name: "foo",
189
- returnType: "Foo"
255
+ expect(_$createComponent(TestOutput, {
256
+ get children() {
257
+ return _$createComponent(py.FunctionDeclaration, {
258
+ async: true,
259
+ name: "foo",
260
+ returnType: "Foo"
261
+ }, {
262
+ fileName: import.meta.url,
263
+ lineNumber: 165,
264
+ columnNumber: 9
265
+ });
266
+ }
190
267
  }, {
191
268
  fileName: import.meta.url,
192
- lineNumber: 133,
193
- columnNumber: 9
194
- })])).toBe(d`
269
+ lineNumber: 164,
270
+ columnNumber: 7
271
+ })).toRenderTo(`
195
272
  async def foo() -> Foo:
196
273
  pass
197
274
 
198
275
  `);
199
276
  });
200
277
  it("can be an async function with returnType element with Reference", () => {
201
- expect(toSourceText([_$createComponent(py.StatementList, {
278
+ expect(_$createComponent(TestOutput, {
202
279
  get children() {
203
- return [_$createComponent(py.ClassDeclaration, {
204
- name: "Foo",
205
- get refkey() {
206
- return refkey("Foo");
207
- }
208
- }, {
209
- fileName: import.meta.url,
210
- lineNumber: 146,
211
- columnNumber: 11
212
- }), _$createComponent(py.FunctionDeclaration, {
213
- async: true,
214
- name: "foo",
215
- get returnType() {
216
- return refkey("Foo");
280
+ return _$createComponent(py.StatementList, {
281
+ get children() {
282
+ return [_$createComponent(py.ClassDeclaration, {
283
+ name: "Foo",
284
+ get refkey() {
285
+ return refkey("Foo");
286
+ }
287
+ }, {
288
+ fileName: import.meta.url,
289
+ lineNumber: 180,
290
+ columnNumber: 11
291
+ }), _$createComponent(py.FunctionDeclaration, {
292
+ async: true,
293
+ name: "foo",
294
+ get returnType() {
295
+ return refkey("Foo");
296
+ }
297
+ }, {
298
+ fileName: import.meta.url,
299
+ lineNumber: 181,
300
+ columnNumber: 11
301
+ })];
217
302
  }
218
303
  }, {
219
304
  fileName: import.meta.url,
220
- lineNumber: 147,
221
- columnNumber: 11
222
- })];
305
+ lineNumber: 179,
306
+ columnNumber: 9
307
+ });
223
308
  }
224
309
  }, {
225
310
  fileName: import.meta.url,
226
- lineNumber: 145,
227
- columnNumber: 9
228
- })])).toBe(d`
311
+ lineNumber: 178,
312
+ columnNumber: 7
313
+ })).toRenderTo(`
229
314
  class Foo:
230
315
  pass
231
316
 
@@ -235,34 +320,42 @@ describe("Function Declaration", () => {
235
320
  `);
236
321
  });
237
322
  it("can be an async function with returnType element with list of References", () => {
238
- expect(toSourceText([_$createComponent(py.StatementList, {
323
+ expect(_$createComponent(TestOutput, {
239
324
  get children() {
240
- return [_$createComponent(py.ClassDeclaration, {
241
- name: "Foo",
242
- get refkey() {
243
- return refkey("Foo");
244
- }
245
- }, {
246
- fileName: import.meta.url,
247
- lineNumber: 164,
248
- columnNumber: 11
249
- }), _$createComponent(py.FunctionDeclaration, {
250
- async: true,
251
- name: "foo",
252
- get returnType() {
253
- return code`list[${refkey("Foo")}]`;
325
+ return _$createComponent(py.StatementList, {
326
+ get children() {
327
+ return [_$createComponent(py.ClassDeclaration, {
328
+ name: "Foo",
329
+ get refkey() {
330
+ return refkey("Foo");
331
+ }
332
+ }, {
333
+ fileName: import.meta.url,
334
+ lineNumber: 200,
335
+ columnNumber: 11
336
+ }), _$createComponent(py.FunctionDeclaration, {
337
+ async: true,
338
+ name: "foo",
339
+ get returnType() {
340
+ return code`list[${refkey("Foo")}]`;
341
+ }
342
+ }, {
343
+ fileName: import.meta.url,
344
+ lineNumber: 201,
345
+ columnNumber: 11
346
+ })];
254
347
  }
255
348
  }, {
256
349
  fileName: import.meta.url,
257
- lineNumber: 165,
258
- columnNumber: 11
259
- })];
350
+ lineNumber: 199,
351
+ columnNumber: 9
352
+ });
260
353
  }
261
354
  }, {
262
355
  fileName: import.meta.url,
263
- lineNumber: 163,
264
- columnNumber: 9
265
- })])).toBe(d`
356
+ lineNumber: 198,
357
+ columnNumber: 7
358
+ })).toRenderTo(`
266
359
  class Foo:
267
360
  pass
268
361
 
@@ -286,28 +379,34 @@ describe("Function Declaration", () => {
286
379
  children: "return self"
287
380
  }, {
288
381
  fileName: import.meta.url,
289
- lineNumber: 187,
382
+ lineNumber: 225,
290
383
  columnNumber: 13
291
384
  });
292
385
  }
293
386
  }, {
294
387
  fileName: import.meta.url,
295
- lineNumber: 186,
388
+ lineNumber: 224,
296
389
  columnNumber: 11
297
390
  });
298
391
  }
299
392
  }, {
300
393
  fileName: import.meta.url,
301
- lineNumber: 185,
394
+ lineNumber: 223,
302
395
  columnNumber: 9
303
396
  });
304
397
  }
305
398
  }, {
306
399
  fileName: import.meta.url,
307
- lineNumber: 184,
400
+ lineNumber: 222,
308
401
  columnNumber: 7
309
402
  });
310
- expect(toSourceText([decl])).toBe(d`
403
+ expect(_$createComponent(TestOutput, {
404
+ children: decl
405
+ }, {
406
+ fileName: import.meta.url,
407
+ lineNumber: 237,
408
+ columnNumber: 12
409
+ })).toRenderTo(`
311
410
  class MyClass:
312
411
  async def __aenter__(self) -> MyClass:
313
412
  return self
@@ -329,28 +428,34 @@ describe("Function Declaration", () => {
329
428
  children: "return super().__new__(cls)"
330
429
  }, {
331
430
  fileName: import.meta.url,
332
- lineNumber: 213,
431
+ lineNumber: 253,
333
432
  columnNumber: 13
334
433
  });
335
434
  }
336
435
  }, {
337
436
  fileName: import.meta.url,
338
- lineNumber: 212,
437
+ lineNumber: 252,
339
438
  columnNumber: 11
340
439
  });
341
440
  }
342
441
  }, {
343
442
  fileName: import.meta.url,
344
- lineNumber: 211,
443
+ lineNumber: 251,
345
444
  columnNumber: 9
346
445
  });
347
446
  }
348
447
  }, {
349
448
  fileName: import.meta.url,
350
- lineNumber: 210,
449
+ lineNumber: 250,
351
450
  columnNumber: 7
352
451
  });
353
- expect(toSourceText([decl])).toBe(d`
452
+ expect(_$createComponent(TestOutput, {
453
+ children: decl
454
+ }, {
455
+ fileName: import.meta.url,
456
+ lineNumber: 261,
457
+ columnNumber: 12
458
+ })).toRenderTo(`
354
459
  class MyClass:
355
460
  async def __new__(cls) -> MyClass:
356
461
  return super().__new__(cls)
@@ -369,10 +474,16 @@ describe("Function Declaration", () => {
369
474
  children: "return a + b"
370
475
  }, {
371
476
  fileName: import.meta.url,
372
- lineNumber: 232,
477
+ lineNumber: 274,
373
478
  columnNumber: 7
374
479
  });
375
- expect(toSourceText([decl])).toBe(d`
480
+ expect(_$createComponent(TestOutput, {
481
+ children: decl
482
+ }, {
483
+ fileName: import.meta.url,
484
+ lineNumber: 282,
485
+ columnNumber: 12
486
+ })).toRenderTo(`
376
487
  def foo(a, b):
377
488
  return a + b
378
489
 
@@ -390,10 +501,16 @@ describe("Function Declaration", () => {
390
501
  children: "return a + b"
391
502
  }, {
392
503
  fileName: import.meta.url,
393
- lineNumber: 248,
504
+ lineNumber: 293,
394
505
  columnNumber: 7
395
506
  });
396
- expect(toSourceText([decl])).toBe(d`
507
+ expect(_$createComponent(TestOutput, {
508
+ children: decl
509
+ }, {
510
+ fileName: import.meta.url,
511
+ lineNumber: 302,
512
+ columnNumber: 12
513
+ })).toRenderTo(`
397
514
  def foo[T, U](a, b):
398
515
  return a + b
399
516
 
@@ -417,7 +534,7 @@ describe("Function Declaration", () => {
417
534
  abstract: true
418
535
  }, {
419
536
  fileName: import.meta.url,
420
- lineNumber: 269,
537
+ lineNumber: 317,
421
538
  columnNumber: 13
422
539
  }), _$createComponent(py.ClassMethodDeclaration, {
423
540
  name: "classdef",
@@ -425,7 +542,7 @@ describe("Function Declaration", () => {
425
542
  abstract: true
426
543
  }, {
427
544
  fileName: import.meta.url,
428
- lineNumber: 274,
545
+ lineNumber: 322,
429
546
  columnNumber: 13
430
547
  }), _$createComponent(py.StaticMethodDeclaration, {
431
548
  name: "staticdef",
@@ -433,30 +550,35 @@ describe("Function Declaration", () => {
433
550
  abstract: true
434
551
  }, {
435
552
  fileName: import.meta.url,
436
- lineNumber: 279,
553
+ lineNumber: 327,
437
554
  columnNumber: 13
438
555
  })];
439
556
  }
440
557
  }, {
441
558
  fileName: import.meta.url,
442
- lineNumber: 268,
559
+ lineNumber: 316,
443
560
  columnNumber: 11
444
561
  });
445
562
  }
446
563
  }, {
447
564
  fileName: import.meta.url,
448
- lineNumber: 267,
565
+ lineNumber: 315,
449
566
  columnNumber: 9
450
567
  });
451
568
  }
452
569
  }, {
453
570
  fileName: import.meta.url,
454
- lineNumber: 266,
571
+ lineNumber: 314,
455
572
  columnNumber: 7
456
573
  });
457
- expect(toSourceText([decl], {
458
- externals: [abcModule]
459
- })).toBe(d`
574
+ expect(_$createComponent(TestOutput, {
575
+ externals: [abcModule],
576
+ children: decl
577
+ }, {
578
+ fileName: import.meta.url,
579
+ lineNumber: 337,
580
+ columnNumber: 12
581
+ })).toRenderTo(`
460
582
  from abc import abstractmethod
461
583
 
462
584
 
@@ -494,7 +616,7 @@ describe("Function Declaration", () => {
494
616
  children: "self.attribute = \"value\""
495
617
  }, {
496
618
  fileName: import.meta.url,
497
- lineNumber: 316,
619
+ lineNumber: 367,
498
620
  columnNumber: 11
499
621
  }), _$createComponent(py.DunderMethodDeclaration, {
500
622
  name: "__repr__",
@@ -502,22 +624,28 @@ describe("Function Declaration", () => {
502
624
  children: "return \"MyClass\""
503
625
  }, {
504
626
  fileName: import.meta.url,
505
- lineNumber: 319,
627
+ lineNumber: 370,
506
628
  columnNumber: 11
507
629
  })];
508
630
  }
509
631
  }, {
510
632
  fileName: import.meta.url,
511
- lineNumber: 315,
633
+ lineNumber: 366,
512
634
  columnNumber: 9
513
635
  });
514
636
  }
515
637
  }, {
516
638
  fileName: import.meta.url,
517
- lineNumber: 314,
639
+ lineNumber: 365,
518
640
  columnNumber: 7
519
641
  });
520
- expect(toSourceText([decl])).toBe(d`
642
+ expect(_$createComponent(TestOutput, {
643
+ children: decl
644
+ }, {
645
+ fileName: import.meta.url,
646
+ lineNumber: 377,
647
+ columnNumber: 12
648
+ })).toRenderTo(`
521
649
  class MyClass:
522
650
  def __init__(self, x: int):
523
651
  self.attribute = "value"
@@ -540,22 +668,28 @@ describe("Function Declaration", () => {
540
668
  children: "pass"
541
669
  }, {
542
670
  fileName: import.meta.url,
543
- lineNumber: 342,
671
+ lineNumber: 395,
544
672
  columnNumber: 11
545
673
  });
546
674
  }
547
675
  }, {
548
676
  fileName: import.meta.url,
549
- lineNumber: 341,
677
+ lineNumber: 394,
550
678
  columnNumber: 9
551
679
  });
552
680
  }
553
681
  }, {
554
682
  fileName: import.meta.url,
555
- lineNumber: 340,
683
+ lineNumber: 393,
556
684
  columnNumber: 7
557
685
  });
558
- expect(toSourceText([decl])).toBe(d`
686
+ expect(_$createComponent(TestOutput, {
687
+ children: decl
688
+ }, {
689
+ fileName: import.meta.url,
690
+ lineNumber: 402,
691
+ columnNumber: 12
692
+ })).toRenderTo(`
559
693
  class MyClass:
560
694
  def __new__(cls, *args, **kwargs):
561
695
  pass
@@ -596,7 +730,7 @@ describe("Function Declaration", () => {
596
730
  children: "return z * 2"
597
731
  }, {
598
732
  fileName: import.meta.url,
599
- lineNumber: 376,
733
+ lineNumber: 431,
600
734
  columnNumber: 11
601
735
  }), "return", " ", _$createComponent(py.FunctionCallExpression, {
602
736
  target: foobarRef,
@@ -605,19 +739,19 @@ describe("Function Declaration", () => {
605
739
  jsValue: 2
606
740
  }, {
607
741
  fileName: import.meta.url,
608
- lineNumber: 386,
742
+ lineNumber: 441,
609
743
  columnNumber: 20
610
744
  })];
611
745
  }
612
746
  }, {
613
747
  fileName: import.meta.url,
614
- lineNumber: 384,
748
+ lineNumber: 439,
615
749
  columnNumber: 11
616
750
  })];
617
751
  }
618
752
  }, {
619
753
  fileName: import.meta.url,
620
- lineNumber: 371,
754
+ lineNumber: 426,
621
755
  columnNumber: 9
622
756
  }), "return", " ", _$createComponent(py.FunctionCallExpression, {
623
757
  target: barRef,
@@ -626,22 +760,28 @@ describe("Function Declaration", () => {
626
760
  jsValue: 3
627
761
  }, {
628
762
  fileName: import.meta.url,
629
- lineNumber: 392,
763
+ lineNumber: 447,
630
764
  columnNumber: 18
631
765
  })];
632
766
  }
633
767
  }, {
634
768
  fileName: import.meta.url,
635
- lineNumber: 390,
769
+ lineNumber: 445,
636
770
  columnNumber: 9
637
771
  })];
638
772
  }
639
773
  }, {
640
774
  fileName: import.meta.url,
641
- lineNumber: 366,
775
+ lineNumber: 421,
642
776
  columnNumber: 7
643
777
  });
644
- expect(toSourceText([decl])).toBe(d`
778
+ expect(_$createComponent(TestOutput, {
779
+ children: decl
780
+ }, {
781
+ fileName: import.meta.url,
782
+ lineNumber: 452,
783
+ columnNumber: 12
784
+ })).toRenderTo(`
645
785
  def foo(x: int):
646
786
  def bar(y: int):
647
787
  def foobar(z: int):
@@ -652,83 +792,90 @@ describe("Function Declaration", () => {
652
792
  `);
653
793
  });
654
794
  it("renders complex typing structure", () => {
655
- const res = toSourceTextMultiple([_$createComponent(py.SourceFile, {
656
- path: "mod1.py",
795
+ expect(_$createComponent(TestOutputDirectory, {
657
796
  get children() {
658
- return _$createComponent(py.ClassDeclaration, {
659
- name: "Foo",
660
- get refkey() {
661
- return refkey("Foo");
662
- }
663
- }, {
664
- fileName: import.meta.url,
665
- lineNumber: 410,
666
- columnNumber: 9
667
- });
668
- }
669
- }, {
670
- fileName: import.meta.url,
671
- lineNumber: 409,
672
- columnNumber: 7
673
- }), _$createComponent(py.SourceFile, {
674
- path: "mod2.py",
675
- get children() {
676
- return [_$createComponent(py.ClassDeclaration, {
677
- name: "A",
678
- get refkey() {
679
- return refkey("A");
797
+ return [_$createComponent(py.SourceFile, {
798
+ path: "mod1.py",
799
+ get children() {
800
+ return _$createComponent(py.ClassDeclaration, {
801
+ name: "Foo",
802
+ get refkey() {
803
+ return refkey("Foo");
804
+ }
805
+ }, {
806
+ fileName: import.meta.url,
807
+ lineNumber: 469,
808
+ columnNumber: 11
809
+ });
680
810
  }
681
811
  }, {
682
812
  fileName: import.meta.url,
683
- lineNumber: 413,
813
+ lineNumber: 468,
684
814
  columnNumber: 9
685
- }), _$createComponent(py.ClassDeclaration, {
686
- name: "B",
687
- get refkey() {
688
- return refkey("B");
815
+ }), _$createComponent(py.SourceFile, {
816
+ path: "mod2.py",
817
+ get children() {
818
+ return [_$createComponent(py.ClassDeclaration, {
819
+ name: "A",
820
+ get refkey() {
821
+ return refkey("A");
822
+ }
823
+ }, {
824
+ fileName: import.meta.url,
825
+ lineNumber: 472,
826
+ columnNumber: 11
827
+ }), _$createComponent(py.ClassDeclaration, {
828
+ name: "B",
829
+ get refkey() {
830
+ return refkey("B");
831
+ }
832
+ }, {
833
+ fileName: import.meta.url,
834
+ lineNumber: 473,
835
+ columnNumber: 11
836
+ })];
689
837
  }
690
838
  }, {
691
839
  fileName: import.meta.url,
692
- lineNumber: 414,
840
+ lineNumber: 471,
693
841
  columnNumber: 9
694
- })];
695
- }
696
- }, {
697
- fileName: import.meta.url,
698
- lineNumber: 412,
699
- columnNumber: 7
700
- }), _$createComponent(py.SourceFile, {
701
- path: "usage.py",
702
- get children() {
703
- return _$createComponent(py.FunctionDeclaration, {
704
- async: true,
705
- name: "foo",
706
- get parameters() {
707
- return [{
708
- name: "x",
709
- type: refkey("A")
842
+ }), _$createComponent(py.SourceFile, {
843
+ path: "usage.py",
844
+ get children() {
845
+ return _$createComponent(py.FunctionDeclaration, {
846
+ async: true,
847
+ name: "foo",
848
+ get parameters() {
849
+ return [{
850
+ name: "x",
851
+ type: refkey("A")
852
+ }, {
853
+ name: "y",
854
+ type: refkey("B")
855
+ }];
856
+ },
857
+ args: true,
858
+ kwargs: true,
859
+ get returnType() {
860
+ return refkey("Foo");
861
+ }
710
862
  }, {
711
- name: "y",
712
- type: refkey("B")
713
- }];
714
- },
715
- args: true,
716
- kwargs: true,
717
- get returnType() {
718
- return refkey("Foo");
863
+ fileName: import.meta.url,
864
+ lineNumber: 476,
865
+ columnNumber: 11
866
+ });
719
867
  }
720
868
  }, {
721
869
  fileName: import.meta.url,
722
- lineNumber: 417,
870
+ lineNumber: 475,
723
871
  columnNumber: 9
724
- });
872
+ })];
725
873
  }
726
874
  }, {
727
875
  fileName: import.meta.url,
728
- lineNumber: 416,
876
+ lineNumber: 467,
729
877
  columnNumber: 7
730
- })]);
731
- assertFileContents(res, {
878
+ })).toRenderTo({
732
879
  "mod1.py": `
733
880
  class Foo:
734
881
  pass
@@ -760,57 +907,97 @@ describe("Function Declaration", () => {
760
907
  });
761
908
  it("throws error when PropertyDeclaration is used outside of a class", () => {
762
909
  expect(() => {
763
- toSourceText([_$createComponent(py.PropertyDeclaration, {
764
- name: "x"
910
+ render(_$createComponent(TestOutput, {
911
+ get children() {
912
+ return _$createComponent(py.PropertyDeclaration, {
913
+ name: "x"
914
+ }, {
915
+ fileName: import.meta.url,
916
+ lineNumber: 530,
917
+ columnNumber: 11
918
+ });
919
+ }
765
920
  }, {
766
921
  fileName: import.meta.url,
767
- lineNumber: 470,
768
- columnNumber: 21
769
- })]);
922
+ lineNumber: 529,
923
+ columnNumber: 9
924
+ }));
770
925
  }).toThrow('Method "x" must be declared inside a class (member scope)');
771
926
  });
772
927
  it("throws error when MethodDeclaration is used outside of a class", () => {
773
928
  expect(() => {
774
- toSourceText([_$createComponent(py.MethodDeclaration, {
775
- name: "my_method"
929
+ render(_$createComponent(TestOutput, {
930
+ get children() {
931
+ return _$createComponent(py.MethodDeclaration, {
932
+ name: "my_method"
933
+ }, {
934
+ fileName: import.meta.url,
935
+ lineNumber: 540,
936
+ columnNumber: 11
937
+ });
938
+ }
776
939
  }, {
777
940
  fileName: import.meta.url,
778
- lineNumber: 476,
779
- columnNumber: 21
780
- })]);
941
+ lineNumber: 539,
942
+ columnNumber: 9
943
+ }));
781
944
  }).toThrow('Method "my_method" must be declared inside a class (member scope)');
782
945
  });
783
946
  it("throws error when ClassMethodDeclaration is used outside of a class", () => {
784
947
  expect(() => {
785
- toSourceText([_$createComponent(py.ClassMethodDeclaration, {
786
- name: "my_class_method"
948
+ render(_$createComponent(TestOutput, {
949
+ get children() {
950
+ return _$createComponent(py.ClassMethodDeclaration, {
951
+ name: "my_class_method"
952
+ }, {
953
+ fileName: import.meta.url,
954
+ lineNumber: 552,
955
+ columnNumber: 11
956
+ });
957
+ }
787
958
  }, {
788
959
  fileName: import.meta.url,
789
- lineNumber: 484,
790
- columnNumber: 21
791
- })]);
960
+ lineNumber: 551,
961
+ columnNumber: 9
962
+ }));
792
963
  }).toThrow('Method "my_class_method" must be declared inside a class (member scope)');
793
964
  });
794
965
  it("throws error when StaticMethodDeclaration is used outside of a class", () => {
795
966
  expect(() => {
796
- toSourceText([_$createComponent(py.StaticMethodDeclaration, {
797
- name: "my_static_method"
967
+ render(_$createComponent(TestOutput, {
968
+ get children() {
969
+ return _$createComponent(py.StaticMethodDeclaration, {
970
+ name: "my_static_method"
971
+ }, {
972
+ fileName: import.meta.url,
973
+ lineNumber: 564,
974
+ columnNumber: 11
975
+ });
976
+ }
798
977
  }, {
799
978
  fileName: import.meta.url,
800
- lineNumber: 492,
801
- columnNumber: 21
802
- })]);
979
+ lineNumber: 563,
980
+ columnNumber: 9
981
+ }));
803
982
  }).toThrow('Method "my_static_method" must be declared inside a class (member scope)');
804
983
  });
805
984
  it("throws error when DunderMethodDeclaration is used outside of a class", () => {
806
985
  expect(() => {
807
- toSourceText([_$createComponent(py.DunderMethodDeclaration, {
808
- name: "__init__"
986
+ render(_$createComponent(TestOutput, {
987
+ get children() {
988
+ return _$createComponent(py.DunderMethodDeclaration, {
989
+ name: "__init__"
990
+ }, {
991
+ fileName: import.meta.url,
992
+ lineNumber: 576,
993
+ columnNumber: 11
994
+ });
995
+ }
809
996
  }, {
810
997
  fileName: import.meta.url,
811
- lineNumber: 500,
812
- columnNumber: 21
813
- })]);
998
+ lineNumber: 575,
999
+ columnNumber: 9
1000
+ }));
814
1001
  }).toThrow('Method "__init__" must be declared inside a class (member scope)');
815
1002
  });
816
1003
  });