@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,96 +1,165 @@
1
1
  import { createComponent as _$createComponent, memo as _$memo } from "@alloy-js/core/jsx-runtime";
2
2
  import { memberRefkey, namekey, refkey } from "@alloy-js/core";
3
- import { d } from "@alloy-js/core/testing";
4
3
  import { describe, expect, it } from "vitest";
5
4
  import * as py from "../src/index.js";
6
- import { assertFileContents, toSourceText, toSourceTextMultiple } from "./utils.js";
5
+ import { TestOutput, TestOutputDirectory } from "./utils.js";
7
6
  describe("Python Class", () => {
8
- it("renders a class with no body as 'pass'", () => {
9
- const result = toSourceText([_$createComponent(py.ClassDeclaration, {
10
- name: "Foo"
7
+ it("renders class-level decorators above `class`", () => {
8
+ expect(_$createComponent(TestOutput, {
9
+ get children() {
10
+ return _$createComponent(py.ClassDeclaration, {
11
+ name: "Foo",
12
+ decorators: ["@final", "@deprecated('use Bar')"]
13
+ }, {
14
+ fileName: import.meta.url,
15
+ lineNumber: 10,
16
+ columnNumber: 9
17
+ });
18
+ }
11
19
  }, {
12
20
  fileName: import.meta.url,
13
- lineNumber: 13,
14
- columnNumber: 34
15
- })]);
16
- expect(result).toRenderTo(d`
21
+ lineNumber: 9,
22
+ columnNumber: 7
23
+ })).toRenderTo(`
24
+ @final
25
+ @deprecated('use Bar')
17
26
  class Foo:
18
27
  pass
19
28
 
20
-
21
29
  `);
22
30
  });
23
- it("takes a namekey", () => {
24
- const result = toSourceText([_$createComponent(py.ClassDeclaration, {
25
- get name() {
26
- return namekey("Foo");
31
+ it("renders nothing extra when decorators is undefined", () => {
32
+ expect(_$createComponent(TestOutput, {
33
+ get children() {
34
+ return _$createComponent(py.ClassDeclaration, {
35
+ name: "Foo"
36
+ }, {
37
+ fileName: import.meta.url,
38
+ lineNumber: 29,
39
+ columnNumber: 9
40
+ });
27
41
  }
28
42
  }, {
29
43
  fileName: import.meta.url,
30
- lineNumber: 24,
44
+ lineNumber: 28,
31
45
  columnNumber: 7
32
- })]);
33
- expect(result).toRenderTo(d`
46
+ })).toRenderTo(`
34
47
  class Foo:
35
48
  pass
36
49
 
37
-
38
50
  `);
39
51
  });
40
- it("renders a class with a body", () => {
41
- const result = toSourceText([_$createComponent(py.ClassDeclaration, {
42
- name: "Bar",
43
- children: "print('hi')"
52
+ it("renders a class with no body as 'pass'", () => {
53
+ expect(_$createComponent(TestOutput, {
54
+ get children() {
55
+ return _$createComponent(py.ClassDeclaration, {
56
+ name: "Foo"
57
+ }, {
58
+ fileName: import.meta.url,
59
+ lineNumber: 43,
60
+ columnNumber: 9
61
+ });
62
+ }
44
63
  }, {
45
64
  fileName: import.meta.url,
46
- lineNumber: 36,
65
+ lineNumber: 42,
47
66
  columnNumber: 7
48
- })]);
49
- expect(result).toRenderTo(d`
50
- class Bar:
51
- print('hi')
52
-
67
+ })).toRenderTo(`
68
+ class Foo:
69
+ pass
53
70
 
54
71
  `);
55
72
  });
56
- it("renders a class with base classes", () => {
57
- const result = toSourceText([_$createComponent(py.StatementList, {
73
+ it("takes a namekey", () => {
74
+ expect(_$createComponent(TestOutput, {
58
75
  get children() {
59
- return [_$createComponent(py.ClassDeclaration, {
60
- name: "Base1",
61
- get refkey() {
62
- return refkey("Base1");
76
+ return _$createComponent(py.ClassDeclaration, {
77
+ get name() {
78
+ return namekey("Foo");
63
79
  }
64
80
  }, {
65
81
  fileName: import.meta.url,
66
- lineNumber: 49,
82
+ lineNumber: 57,
67
83
  columnNumber: 9
68
- }), _$createComponent(py.ClassDeclaration, {
69
- name: "Base2",
70
- get refkey() {
71
- return refkey("Base2");
72
- }
84
+ });
85
+ }
86
+ }, {
87
+ fileName: import.meta.url,
88
+ lineNumber: 56,
89
+ columnNumber: 7
90
+ })).toRenderTo(`
91
+ class Foo:
92
+ pass
93
+
94
+ `);
95
+ });
96
+ it("renders a class with a body", () => {
97
+ expect(_$createComponent(TestOutput, {
98
+ get children() {
99
+ return _$createComponent(py.ClassDeclaration, {
100
+ name: "Bar",
101
+ children: "print('hi')"
73
102
  }, {
74
103
  fileName: import.meta.url,
75
- lineNumber: 50,
104
+ lineNumber: 71,
76
105
  columnNumber: 9
77
- }), _$createComponent(py.ClassDeclaration, {
78
- name: "Baz",
79
- get bases() {
80
- return [refkey("Base1"), refkey("Base2")];
106
+ });
107
+ }
108
+ }, {
109
+ fileName: import.meta.url,
110
+ lineNumber: 70,
111
+ columnNumber: 7
112
+ })).toRenderTo(`
113
+ class Bar:
114
+ print('hi')
115
+
116
+ `);
117
+ });
118
+ it("renders a class with base classes", () => {
119
+ expect(_$createComponent(TestOutput, {
120
+ get children() {
121
+ return _$createComponent(py.StatementList, {
122
+ get children() {
123
+ return [_$createComponent(py.ClassDeclaration, {
124
+ name: "Base1",
125
+ get refkey() {
126
+ return refkey("Base1");
127
+ }
128
+ }, {
129
+ fileName: import.meta.url,
130
+ lineNumber: 86,
131
+ columnNumber: 11
132
+ }), _$createComponent(py.ClassDeclaration, {
133
+ name: "Base2",
134
+ get refkey() {
135
+ return refkey("Base2");
136
+ }
137
+ }, {
138
+ fileName: import.meta.url,
139
+ lineNumber: 87,
140
+ columnNumber: 11
141
+ }), _$createComponent(py.ClassDeclaration, {
142
+ name: "Baz",
143
+ get bases() {
144
+ return [refkey("Base1"), refkey("Base2")];
145
+ }
146
+ }, {
147
+ fileName: import.meta.url,
148
+ lineNumber: 88,
149
+ columnNumber: 11
150
+ })];
81
151
  }
82
152
  }, {
83
153
  fileName: import.meta.url,
84
- lineNumber: 51,
154
+ lineNumber: 85,
85
155
  columnNumber: 9
86
- })];
156
+ });
87
157
  }
88
158
  }, {
89
159
  fileName: import.meta.url,
90
- lineNumber: 48,
160
+ lineNumber: 84,
91
161
  columnNumber: 7
92
- })]);
93
- const expected = d`
162
+ })).toRenderTo(`
94
163
  class Base1:
95
164
  pass
96
165
 
@@ -100,175 +169,183 @@ describe("Python Class", () => {
100
169
  class Baz(Base1, Base2):
101
170
  pass
102
171
 
103
-
104
- `;
105
- expect(result).toRenderTo(expected);
172
+ `);
106
173
  });
107
174
  it("renders a class with base classes and body", () => {
108
- const result = toSourceText([_$createComponent(py.ClassDeclaration, {
109
- name: "Qux",
110
- bases: ["Base"],
111
- children: "print('hello')"
175
+ expect(_$createComponent(TestOutput, {
176
+ get children() {
177
+ return _$createComponent(py.ClassDeclaration, {
178
+ name: "Qux",
179
+ bases: ["Base"],
180
+ children: "print('hello')"
181
+ }, {
182
+ fileName: import.meta.url,
183
+ lineNumber: 112,
184
+ columnNumber: 9
185
+ });
186
+ }
112
187
  }, {
113
188
  fileName: import.meta.url,
114
- lineNumber: 74,
189
+ lineNumber: 111,
115
190
  columnNumber: 7
116
- })]);
117
- expect(result).toRenderTo(d`
191
+ })).toRenderTo(`
118
192
  class Qux(Base):
119
193
  print('hello')
120
194
 
121
-
122
195
  `);
123
196
  });
124
197
  it("renders classes across modules with inheritance", () => {
125
- const result = toSourceTextMultiple([_$createComponent(py.SourceFile, {
126
- path: "mod1.py",
198
+ expect(_$createComponent(TestOutputDirectory, {
127
199
  get children() {
128
- return _$createComponent(py.ClassDeclaration, {
129
- name: "A",
130
- get refkey() {
131
- return refkey("A");
200
+ return [_$createComponent(py.SourceFile, {
201
+ path: "mod1.py",
202
+ get children() {
203
+ return _$createComponent(py.ClassDeclaration, {
204
+ name: "A",
205
+ get refkey() {
206
+ return refkey("A");
207
+ }
208
+ }, {
209
+ fileName: import.meta.url,
210
+ lineNumber: 129,
211
+ columnNumber: 11
212
+ });
132
213
  }
133
214
  }, {
134
215
  fileName: import.meta.url,
135
- lineNumber: 89,
216
+ lineNumber: 128,
136
217
  columnNumber: 9
137
- });
138
- }
139
- }, {
140
- fileName: import.meta.url,
141
- lineNumber: 88,
142
- columnNumber: 7
143
- }), _$createComponent(py.SourceFile, {
144
- path: "folder/mod2.py",
145
- get children() {
146
- return _$createComponent(py.ClassDeclaration, {
147
- name: "B",
148
- get refkey() {
149
- return refkey("B");
150
- },
151
- get bases() {
152
- return [refkey("A")];
218
+ }), _$createComponent(py.SourceFile, {
219
+ path: "folder/mod2.py",
220
+ get children() {
221
+ return _$createComponent(py.ClassDeclaration, {
222
+ name: "B",
223
+ get refkey() {
224
+ return refkey("B");
225
+ },
226
+ get bases() {
227
+ return [refkey("A")];
228
+ }
229
+ }, {
230
+ fileName: import.meta.url,
231
+ lineNumber: 132,
232
+ columnNumber: 11
233
+ });
153
234
  }
154
235
  }, {
155
236
  fileName: import.meta.url,
156
- lineNumber: 92,
237
+ lineNumber: 131,
157
238
  columnNumber: 9
158
- });
159
- }
160
- }, {
161
- fileName: import.meta.url,
162
- lineNumber: 91,
163
- columnNumber: 7
164
- }), _$createComponent(py.SourceFile, {
165
- path: "mod3.py",
166
- get children() {
167
- return _$createComponent(py.ClassDeclaration, {
168
- name: "C",
169
- get bases() {
170
- return [refkey("B")];
239
+ }), _$createComponent(py.SourceFile, {
240
+ path: "mod3.py",
241
+ get children() {
242
+ return _$createComponent(py.ClassDeclaration, {
243
+ name: "C",
244
+ get bases() {
245
+ return [refkey("B")];
246
+ }
247
+ }, {
248
+ fileName: import.meta.url,
249
+ lineNumber: 139,
250
+ columnNumber: 11
251
+ });
171
252
  }
172
253
  }, {
173
254
  fileName: import.meta.url,
174
- lineNumber: 99,
255
+ lineNumber: 138,
175
256
  columnNumber: 9
176
- });
257
+ })];
177
258
  }
178
259
  }, {
179
260
  fileName: import.meta.url,
180
- lineNumber: 98,
261
+ lineNumber: 127,
181
262
  columnNumber: 7
182
- })]);
183
- const mod1Expected = d`
184
- class A:
185
- pass
186
-
187
-
188
- `;
189
- const mod2Expected = d`
190
- from mod1 import A
263
+ })).toRenderTo({
264
+ "mod1.py": `
265
+ class A:
266
+ pass
191
267
 
268
+ `,
269
+ "folder/mod2.py": `
270
+ from mod1 import A
192
271
 
193
- class B(A):
194
- pass
195
272
 
273
+ class B(A):
274
+ pass
196
275
 
197
- `;
198
- const mod3Expected = d`
199
- from folder.mod2 import B
200
-
276
+ `,
277
+ "mod3.py": `
278
+ from folder.mod2 import B
201
279
 
202
- class C(B):
203
- pass
204
280
 
281
+ class C(B):
282
+ pass
205
283
 
206
- `;
207
- assertFileContents(result, {
208
- "mod1.py": mod1Expected
209
- });
210
- assertFileContents(result, {
211
- "folder/mod2.py": mod2Expected
212
- });
213
- assertFileContents(result, {
214
- "mod3.py": mod3Expected
284
+ `
215
285
  });
216
286
  });
217
287
  it("renders a class with class variables like foo: str, and also bar: A where A is another class", () => {
218
- const result = toSourceText([_$createComponent(py.StatementList, {
288
+ expect(_$createComponent(TestOutput, {
219
289
  get children() {
220
- return [_$createComponent(py.ClassDeclaration, {
221
- name: "A",
222
- get refkey() {
223
- return refkey("A");
224
- }
225
- }, {
226
- fileName: import.meta.url,
227
- lineNumber: 134,
228
- columnNumber: 9
229
- }), _$createComponent(py.ClassDeclaration, {
230
- name: "B",
290
+ return _$createComponent(py.StatementList, {
231
291
  get children() {
232
- return _$createComponent(py.StatementList, {
292
+ return [_$createComponent(py.ClassDeclaration, {
293
+ name: "A",
294
+ get refkey() {
295
+ return refkey("A");
296
+ }
297
+ }, {
298
+ fileName: import.meta.url,
299
+ lineNumber: 171,
300
+ columnNumber: 11
301
+ }), _$createComponent(py.ClassDeclaration, {
302
+ name: "B",
233
303
  get children() {
234
- return [_$createComponent(py.VariableDeclaration, {
235
- name: "bar",
236
- get type() {
237
- return refkey("A");
238
- },
239
- omitNone: true
240
- }, {
241
- fileName: import.meta.url,
242
- lineNumber: 137,
243
- columnNumber: 13
244
- }), _$createComponent(py.VariableDeclaration, {
245
- name: "foo",
246
- type: "str",
247
- omitNone: true
304
+ return _$createComponent(py.StatementList, {
305
+ get children() {
306
+ return [_$createComponent(py.VariableDeclaration, {
307
+ name: "bar",
308
+ get type() {
309
+ return refkey("A");
310
+ },
311
+ omitNone: true
312
+ }, {
313
+ fileName: import.meta.url,
314
+ lineNumber: 174,
315
+ columnNumber: 15
316
+ }), _$createComponent(py.VariableDeclaration, {
317
+ name: "foo",
318
+ type: "str",
319
+ omitNone: true
320
+ }, {
321
+ fileName: import.meta.url,
322
+ lineNumber: 175,
323
+ columnNumber: 15
324
+ })];
325
+ }
248
326
  }, {
249
327
  fileName: import.meta.url,
250
- lineNumber: 138,
328
+ lineNumber: 173,
251
329
  columnNumber: 13
252
- })];
330
+ });
253
331
  }
254
332
  }, {
255
333
  fileName: import.meta.url,
256
- lineNumber: 136,
334
+ lineNumber: 172,
257
335
  columnNumber: 11
258
- });
336
+ })];
259
337
  }
260
338
  }, {
261
339
  fileName: import.meta.url,
262
- lineNumber: 135,
340
+ lineNumber: 170,
263
341
  columnNumber: 9
264
- })];
342
+ });
265
343
  }
266
344
  }, {
267
345
  fileName: import.meta.url,
268
- lineNumber: 133,
346
+ lineNumber: 169,
269
347
  columnNumber: 7
270
- })]);
271
- const expected = d`
348
+ })).toRenderTo(`
272
349
  class A:
273
350
  pass
274
351
 
@@ -276,75 +353,80 @@ describe("Python Class", () => {
276
353
  bar: A
277
354
  foo: str
278
355
 
279
-
280
- `;
281
- expect(result).toRenderTo(expected);
356
+ `);
282
357
  });
283
358
  it("renders a class with class variables like foo: str, and another identical class", () => {
284
359
  const fooKey = refkey();
285
360
  const barKey = refkey();
286
- const result = toSourceText([_$createComponent(py.StatementList, {
361
+ expect(_$createComponent(TestOutput, {
287
362
  get children() {
288
- return [_$createComponent(py.ClassDeclaration, {
289
- name: "A",
363
+ return _$createComponent(py.StatementList, {
290
364
  get children() {
291
- return _$createComponent(py.StatementList, {
365
+ return [_$createComponent(py.ClassDeclaration, {
366
+ name: "A",
292
367
  get children() {
293
- return _$createComponent(py.VariableDeclaration, {
294
- name: "foo",
295
- type: "str",
296
- refkey: fooKey,
297
- omitNone: true
368
+ return _$createComponent(py.StatementList, {
369
+ get children() {
370
+ return _$createComponent(py.VariableDeclaration, {
371
+ name: "foo",
372
+ type: "str",
373
+ refkey: fooKey,
374
+ omitNone: true
375
+ }, {
376
+ fileName: import.meta.url,
377
+ lineNumber: 202,
378
+ columnNumber: 15
379
+ });
380
+ }
298
381
  }, {
299
382
  fileName: import.meta.url,
300
- lineNumber: 164,
383
+ lineNumber: 201,
301
384
  columnNumber: 13
302
385
  });
303
386
  }
304
387
  }, {
305
388
  fileName: import.meta.url,
306
- lineNumber: 163,
389
+ lineNumber: 200,
307
390
  columnNumber: 11
308
- });
309
- }
310
- }, {
311
- fileName: import.meta.url,
312
- lineNumber: 162,
313
- columnNumber: 9
314
- }), _$createComponent(py.ClassDeclaration, {
315
- name: "B",
316
- get children() {
317
- return _$createComponent(py.StatementList, {
391
+ }), _$createComponent(py.ClassDeclaration, {
392
+ name: "B",
318
393
  get children() {
319
- return _$createComponent(py.VariableDeclaration, {
320
- name: "foo",
321
- type: "str",
322
- refkey: barKey,
323
- omitNone: true
394
+ return _$createComponent(py.StatementList, {
395
+ get children() {
396
+ return _$createComponent(py.VariableDeclaration, {
397
+ name: "foo",
398
+ type: "str",
399
+ refkey: barKey,
400
+ omitNone: true
401
+ }, {
402
+ fileName: import.meta.url,
403
+ lineNumber: 212,
404
+ columnNumber: 15
405
+ });
406
+ }
324
407
  }, {
325
408
  fileName: import.meta.url,
326
- lineNumber: 174,
409
+ lineNumber: 211,
327
410
  columnNumber: 13
328
411
  });
329
412
  }
330
413
  }, {
331
414
  fileName: import.meta.url,
332
- lineNumber: 173,
415
+ lineNumber: 210,
333
416
  columnNumber: 11
334
- });
417
+ }), fooKey, barKey];
335
418
  }
336
419
  }, {
337
420
  fileName: import.meta.url,
338
- lineNumber: 172,
421
+ lineNumber: 199,
339
422
  columnNumber: 9
340
- }), fooKey, barKey];
423
+ });
341
424
  }
342
425
  }, {
343
426
  fileName: import.meta.url,
344
- lineNumber: 161,
427
+ lineNumber: 198,
345
428
  columnNumber: 7
346
- })]);
347
- const expected = d`
429
+ })).toRenderTo(`
348
430
  class A:
349
431
  foo: str
350
432
 
@@ -353,85 +435,91 @@ describe("Python Class", () => {
353
435
 
354
436
  A.foo
355
437
  B.foo
356
- `;
357
- expect(result).toRenderTo(expected);
438
+ `);
358
439
  });
359
440
  });
360
441
  describe("Python Class - VariableDeclaration", () => {
361
442
  it("renders a class with class fields", () => {
362
- const result = toSourceText([_$createComponent(py.StatementList, {
443
+ expect(_$createComponent(TestOutput, {
363
444
  get children() {
364
- return [_$createComponent(py.ClassDeclaration, {
365
- get refkey() {
366
- return refkey("Base");
367
- },
368
- name: "Base"
369
- }, {
370
- fileName: import.meta.url,
371
- lineNumber: 204,
372
- columnNumber: 9
373
- }), _$createComponent(py.ClassDeclaration, {
374
- get refkey() {
375
- return refkey("A");
376
- },
377
- name: "A",
445
+ return _$createComponent(py.StatementList, {
378
446
  get children() {
379
- return _$createComponent(py.StatementList, {
447
+ return [_$createComponent(py.ClassDeclaration, {
448
+ get refkey() {
449
+ return refkey("Base");
450
+ },
451
+ name: "Base"
452
+ }, {
453
+ fileName: import.meta.url,
454
+ lineNumber: 244,
455
+ columnNumber: 11
456
+ }), _$createComponent(py.ClassDeclaration, {
457
+ get refkey() {
458
+ return refkey("A");
459
+ },
460
+ name: "A",
380
461
  get children() {
381
- return [_$createComponent(py.VariableDeclaration, {
382
- instanceVariable: true,
383
- name: "just_name"
384
- }, {
385
- fileName: import.meta.url,
386
- lineNumber: 210,
387
- columnNumber: 13
388
- }), _$createComponent(py.VariableDeclaration, {
389
- name: "name_and_type",
390
- type: "number",
391
- instanceVariable: true
392
- }, {
393
- fileName: import.meta.url,
394
- lineNumber: 211,
395
- columnNumber: 13
396
- }), _$createComponent(py.VariableDeclaration, {
397
- instanceVariable: true,
398
- name: "name_type_and_value",
399
- type: "number",
400
- initializer: 12
401
- }, {
402
- fileName: import.meta.url,
403
- lineNumber: 216,
404
- columnNumber: 13
405
- }), _$createComponent(py.VariableDeclaration, {
406
- instanceVariable: true,
407
- name: "class_based",
408
- get type() {
409
- return refkey("Base");
462
+ return _$createComponent(py.StatementList, {
463
+ get children() {
464
+ return [_$createComponent(py.VariableDeclaration, {
465
+ instanceVariable: true,
466
+ name: "just_name"
467
+ }, {
468
+ fileName: import.meta.url,
469
+ lineNumber: 250,
470
+ columnNumber: 15
471
+ }), _$createComponent(py.VariableDeclaration, {
472
+ name: "name_and_type",
473
+ type: "number",
474
+ instanceVariable: true
475
+ }, {
476
+ fileName: import.meta.url,
477
+ lineNumber: 251,
478
+ columnNumber: 15
479
+ }), _$createComponent(py.VariableDeclaration, {
480
+ instanceVariable: true,
481
+ name: "name_type_and_value",
482
+ type: "number",
483
+ initializer: 12
484
+ }, {
485
+ fileName: import.meta.url,
486
+ lineNumber: 256,
487
+ columnNumber: 15
488
+ }), _$createComponent(py.VariableDeclaration, {
489
+ instanceVariable: true,
490
+ name: "class_based",
491
+ get type() {
492
+ return refkey("Base");
493
+ }
494
+ }, {
495
+ fileName: import.meta.url,
496
+ lineNumber: 262,
497
+ columnNumber: 15
498
+ })];
410
499
  }
411
500
  }, {
412
501
  fileName: import.meta.url,
413
- lineNumber: 222,
502
+ lineNumber: 249,
414
503
  columnNumber: 13
415
- })];
504
+ });
416
505
  }
417
506
  }, {
418
507
  fileName: import.meta.url,
419
- lineNumber: 209,
508
+ lineNumber: 248,
420
509
  columnNumber: 11
421
- });
510
+ })];
422
511
  }
423
512
  }, {
424
513
  fileName: import.meta.url,
425
- lineNumber: 208,
514
+ lineNumber: 243,
426
515
  columnNumber: 9
427
- })];
516
+ });
428
517
  }
429
518
  }, {
430
519
  fileName: import.meta.url,
431
- lineNumber: 203,
520
+ lineNumber: 242,
432
521
  columnNumber: 7
433
- })]);
434
- const expected = d`
522
+ })).toRenderTo(`
435
523
  class Base:
436
524
  pass
437
525
 
@@ -441,110 +529,115 @@ describe("Python Class - VariableDeclaration", () => {
441
529
  name_type_and_value: number = 12
442
530
  class_based: Base = None
443
531
 
444
-
445
- `;
446
- expect(result).toRenderTo(expected);
532
+ `);
447
533
  });
448
534
  it("correctly access members of its type", () => {
449
535
  const classRk = refkey();
450
536
  const classMemberRk = refkey();
451
537
  const classMethodRk = refkey();
452
538
  const v1Rk = refkey();
453
- const res = toSourceTextMultiple([_$createComponent(py.SourceFile, {
454
- path: "inst.py",
539
+ expect(_$createComponent(TestOutputDirectory, {
455
540
  get children() {
456
- return _$createComponent(py.StatementList, {
541
+ return [_$createComponent(py.SourceFile, {
542
+ path: "inst.py",
457
543
  get children() {
458
- return [_$createComponent(py.VariableDeclaration, {
459
- name: "one",
460
- refkey: v1Rk,
461
- type: classRk,
462
- get initializer() {
463
- return _$createComponent(py.ClassInstantiation, {
464
- target: classRk
544
+ return _$createComponent(py.StatementList, {
545
+ get children() {
546
+ return [_$createComponent(py.VariableDeclaration, {
547
+ name: "one",
548
+ refkey: v1Rk,
549
+ type: classRk,
550
+ get initializer() {
551
+ return _$createComponent(py.ClassInstantiation, {
552
+ target: classRk
553
+ }, {
554
+ fileName: import.meta.url,
555
+ lineNumber: 300,
556
+ columnNumber: 28
557
+ });
558
+ }
465
559
  }, {
466
560
  fileName: import.meta.url,
467
- lineNumber: 259,
468
- columnNumber: 26
469
- });
561
+ lineNumber: 296,
562
+ columnNumber: 13
563
+ }), [_$memo(() => memberRefkey(v1Rk, classMemberRk), false, "memberRefkey(\u2026)")], [_$memo(() => memberRefkey(v1Rk, classMethodRk), false, "memberRefkey(\u2026)"), "()"]];
470
564
  }
471
565
  }, {
472
566
  fileName: import.meta.url,
473
- lineNumber: 255,
567
+ lineNumber: 295,
474
568
  columnNumber: 11
475
- }), [_$memo(() => memberRefkey(v1Rk, classMemberRk), false, "memberRefkey(\u2026)")], [_$memo(() => memberRefkey(v1Rk, classMethodRk), false, "memberRefkey(\u2026)"), "()"]];
569
+ });
476
570
  }
477
571
  }, {
478
572
  fileName: import.meta.url,
479
- lineNumber: 254,
573
+ lineNumber: 294,
480
574
  columnNumber: 9
481
- });
482
- }
483
- }, {
484
- fileName: import.meta.url,
485
- lineNumber: 253,
486
- columnNumber: 7
487
- }), _$createComponent(py.SourceFile, {
488
- path: "decl.py",
489
- get children() {
490
- return _$createComponent(py.ClassDeclaration, {
491
- name: "Bar",
492
- refkey: classRk,
575
+ }), _$createComponent(py.SourceFile, {
576
+ path: "decl.py",
493
577
  get children() {
494
- return _$createComponent(py.StatementList, {
578
+ return _$createComponent(py.ClassDeclaration, {
579
+ name: "Bar",
580
+ refkey: classRk,
495
581
  get children() {
496
- return [_$createComponent(py.VariableDeclaration, {
497
- name: "instanceProp",
498
- refkey: classMemberRk,
499
- initializer: 42,
500
- instanceVariable: true
501
- }, {
502
- fileName: import.meta.url,
503
- lineNumber: 268,
504
- columnNumber: 13
505
- }), _$createComponent(py.MethodDeclaration, {
506
- name: "instanceMethod",
507
- refkey: classMethodRk,
508
- returnType: "int"
582
+ return _$createComponent(py.StatementList, {
583
+ get children() {
584
+ return [_$createComponent(py.VariableDeclaration, {
585
+ name: "instanceProp",
586
+ refkey: classMemberRk,
587
+ initializer: 42,
588
+ instanceVariable: true
589
+ }, {
590
+ fileName: import.meta.url,
591
+ lineNumber: 309,
592
+ columnNumber: 15
593
+ }), _$createComponent(py.MethodDeclaration, {
594
+ name: "instanceMethod",
595
+ refkey: classMethodRk,
596
+ returnType: "int"
597
+ }, {
598
+ fileName: import.meta.url,
599
+ lineNumber: 315,
600
+ columnNumber: 15
601
+ })];
602
+ }
509
603
  }, {
510
604
  fileName: import.meta.url,
511
- lineNumber: 274,
605
+ lineNumber: 308,
512
606
  columnNumber: 13
513
- })];
607
+ });
514
608
  }
515
609
  }, {
516
610
  fileName: import.meta.url,
517
- lineNumber: 267,
611
+ lineNumber: 307,
518
612
  columnNumber: 11
519
613
  });
520
614
  }
521
615
  }, {
522
616
  fileName: import.meta.url,
523
- lineNumber: 266,
617
+ lineNumber: 306,
524
618
  columnNumber: 9
525
- });
619
+ })];
526
620
  }
527
621
  }, {
528
622
  fileName: import.meta.url,
529
- lineNumber: 265,
623
+ lineNumber: 293,
530
624
  columnNumber: 7
531
- })]);
532
- assertFileContents(res, {
625
+ })).toRenderTo({
533
626
  "inst.py": `
534
- from decl import Bar
627
+ from decl import Bar
535
628
 
536
- one: Bar = Bar()
537
- one.instance_prop
538
- one.instance_method()
539
- `,
629
+ one: Bar = Bar()
630
+ one.instance_prop
631
+ one.instance_method()
632
+ `,
540
633
  "decl.py": `
541
- class Bar:
542
- instance_prop = 42
543
- def instance_method(self) -> int:
544
- pass
634
+ class Bar:
635
+ instance_prop = 42
636
+ def instance_method(self) -> int:
637
+ pass
545
638
 
546
639
 
547
- `
640
+ `
548
641
  });
549
642
  });
550
643
  });
@@ -553,84 +646,91 @@ describe("Python Class - FunctionDeclaration", () => {
553
646
  const methodRefkey = refkey();
554
647
  const classMethodRefkey = refkey();
555
648
  const staticMethodRefkey = refkey();
556
- const result = toSourceText([_$createComponent(py.StatementList, {
649
+ expect(_$createComponent(TestOutput, {
557
650
  get children() {
558
- return [_$createComponent(py.ClassDeclaration, {
559
- name: "MyClass",
560
- bases: ["BaseClass"],
651
+ return _$createComponent(py.StatementList, {
561
652
  get children() {
562
- return _$createComponent(py.StatementList, {
653
+ return [_$createComponent(py.ClassDeclaration, {
654
+ name: "MyClass",
655
+ bases: ["BaseClass"],
563
656
  get children() {
564
- return [_$createComponent(py.VariableDeclaration, {
565
- name: "a",
566
- type: "int",
567
- instanceVariable: true
568
- }, {
569
- fileName: import.meta.url,
570
- lineNumber: 314,
571
- columnNumber: 13
572
- }), _$createComponent(py.VariableDeclaration, {
573
- name: "b",
574
- type: "int",
575
- instanceVariable: true
576
- }, {
577
- fileName: import.meta.url,
578
- lineNumber: 315,
579
- columnNumber: 13
580
- }), _$createComponent(py.MethodDeclaration, {
581
- name: "my_method",
582
- parameters: [{
583
- name: "a",
584
- type: "int"
585
- }, {
586
- name: "b",
587
- type: "int"
588
- }],
589
- returnType: "int",
590
- refkey: methodRefkey,
591
- children: "return a + b"
592
- }, {
593
- fileName: import.meta.url,
594
- lineNumber: 316,
595
- columnNumber: 13
596
- }), _$createComponent(py.ClassMethodDeclaration, {
597
- name: "my_class_method",
598
- returnType: "int",
599
- refkey: classMethodRefkey,
600
- children: "pass"
601
- }, {
602
- fileName: import.meta.url,
603
- lineNumber: 327,
604
- columnNumber: 13
605
- }), _$createComponent(py.FunctionDeclaration, {
606
- name: "my_standalone_function",
607
- returnType: "int",
608
- refkey: staticMethodRefkey,
609
- children: "pass"
657
+ return _$createComponent(py.StatementList, {
658
+ get children() {
659
+ return [_$createComponent(py.VariableDeclaration, {
660
+ name: "a",
661
+ type: "int",
662
+ instanceVariable: true
663
+ }, {
664
+ fileName: import.meta.url,
665
+ lineNumber: 355,
666
+ columnNumber: 15
667
+ }), _$createComponent(py.VariableDeclaration, {
668
+ name: "b",
669
+ type: "int",
670
+ instanceVariable: true
671
+ }, {
672
+ fileName: import.meta.url,
673
+ lineNumber: 356,
674
+ columnNumber: 15
675
+ }), _$createComponent(py.MethodDeclaration, {
676
+ name: "my_method",
677
+ parameters: [{
678
+ name: "a",
679
+ type: "int"
680
+ }, {
681
+ name: "b",
682
+ type: "int"
683
+ }],
684
+ returnType: "int",
685
+ refkey: methodRefkey,
686
+ children: "return a + b"
687
+ }, {
688
+ fileName: import.meta.url,
689
+ lineNumber: 357,
690
+ columnNumber: 15
691
+ }), _$createComponent(py.ClassMethodDeclaration, {
692
+ name: "my_class_method",
693
+ returnType: "int",
694
+ refkey: classMethodRefkey,
695
+ children: "pass"
696
+ }, {
697
+ fileName: import.meta.url,
698
+ lineNumber: 368,
699
+ columnNumber: 15
700
+ }), _$createComponent(py.FunctionDeclaration, {
701
+ name: "my_standalone_function",
702
+ returnType: "int",
703
+ refkey: staticMethodRefkey,
704
+ children: "pass"
705
+ }, {
706
+ fileName: import.meta.url,
707
+ lineNumber: 375,
708
+ columnNumber: 15
709
+ })];
710
+ }
610
711
  }, {
611
712
  fileName: import.meta.url,
612
- lineNumber: 334,
713
+ lineNumber: 354,
613
714
  columnNumber: 13
614
- })];
715
+ });
615
716
  }
616
717
  }, {
617
718
  fileName: import.meta.url,
618
- lineNumber: 313,
719
+ lineNumber: 353,
619
720
  columnNumber: 11
620
- });
721
+ }), classMethodRefkey, staticMethodRefkey];
621
722
  }
622
723
  }, {
623
724
  fileName: import.meta.url,
624
- lineNumber: 312,
725
+ lineNumber: 352,
625
726
  columnNumber: 9
626
- }), classMethodRefkey, staticMethodRefkey];
727
+ });
627
728
  }
628
729
  }, {
629
730
  fileName: import.meta.url,
630
- lineNumber: 311,
731
+ lineNumber: 351,
631
732
  columnNumber: 7
632
- })]);
633
- const expected = d`
733
+ })).toRenderTo(`
634
734
  class MyClass(BaseClass):
635
735
  a: int = None
636
736
  b: int = None
@@ -647,8 +747,7 @@ describe("Python Class - FunctionDeclaration", () => {
647
747
 
648
748
  MyClass.my_class_method
649
749
  MyClass.my_standalone_function
650
- `;
651
- expect(result).toRenderTo(expected);
750
+ `);
652
751
  });
653
752
  });
654
753
  //# sourceMappingURL=classdeclarations.test.js.map