@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,280 +1,384 @@
1
1
  import { createComponent as _$createComponent } from "@alloy-js/core/jsx-runtime";
2
2
  import { 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 Variable", () => {
8
7
  it("declares a python variable", () => {
9
- const res = toSourceText([_$createComponent(py.VariableDeclaration, {
10
- name: "myVar",
11
- type: "int",
12
- initializer: 42
8
+ expect(_$createComponent(TestOutput, {
9
+ get children() {
10
+ return _$createComponent(py.VariableDeclaration, {
11
+ name: "myVar",
12
+ type: "int",
13
+ initializer: 42
14
+ }, {
15
+ fileName: import.meta.url,
16
+ lineNumber: 10,
17
+ columnNumber: 9
18
+ });
19
+ }
13
20
  }, {
14
21
  fileName: import.meta.url,
15
- lineNumber: 14,
22
+ lineNumber: 9,
16
23
  columnNumber: 7
17
- })]);
18
- expect(res).toBe(`my_var: int = 42`);
24
+ })).toRenderTo("my_var: int = 42");
19
25
  });
20
26
  it("takes a namekey", () => {
21
- const res = toSourceText([_$createComponent(py.VariableDeclaration, {
22
- get name() {
23
- return namekey("my-var");
24
- },
25
- type: "int",
26
- initializer: 42
27
+ expect(_$createComponent(TestOutput, {
28
+ get children() {
29
+ return _$createComponent(py.VariableDeclaration, {
30
+ get name() {
31
+ return namekey("my-var");
32
+ },
33
+ type: "int",
34
+ initializer: 42
35
+ }, {
36
+ fileName: import.meta.url,
37
+ lineNumber: 18,
38
+ columnNumber: 9
39
+ });
40
+ }
27
41
  }, {
28
42
  fileName: import.meta.url,
29
- lineNumber: 21,
43
+ lineNumber: 17,
30
44
  columnNumber: 7
31
- })]);
32
- expect(res).toBe(`my_var: int = 42`);
45
+ })).toRenderTo("my_var: int = 42");
33
46
  });
34
47
  it("takes a namekey", () => {
35
- const res = toSourceText([_$createComponent(py.VariableDeclaration, {
36
- get name() {
37
- return namekey("my-var");
38
- },
39
- type: "int",
40
- initializer: 42
48
+ expect(_$createComponent(TestOutput, {
49
+ get children() {
50
+ return _$createComponent(py.VariableDeclaration, {
51
+ get name() {
52
+ return namekey("my-var");
53
+ },
54
+ type: "int",
55
+ initializer: 42
56
+ }, {
57
+ fileName: import.meta.url,
58
+ lineNumber: 30,
59
+ columnNumber: 9
60
+ });
61
+ }
41
62
  }, {
42
63
  fileName: import.meta.url,
43
- lineNumber: 32,
64
+ lineNumber: 29,
44
65
  columnNumber: 7
45
- })]);
46
- expect(res).toBe(`my_var: int = 42`);
66
+ })).toRenderTo("my_var: int = 42");
47
67
  });
48
68
  it("declares a python variable without value", () => {
49
- const res = toSourceText([_$createComponent(py.VariableDeclaration, {
50
- name: "myVar",
51
- type: "int",
52
- omitNone: true
69
+ expect(_$createComponent(TestOutput, {
70
+ get children() {
71
+ return _$createComponent(py.VariableDeclaration, {
72
+ name: "myVar",
73
+ type: "int",
74
+ omitNone: true
75
+ }, {
76
+ fileName: import.meta.url,
77
+ lineNumber: 42,
78
+ columnNumber: 9
79
+ });
80
+ }
53
81
  }, {
54
82
  fileName: import.meta.url,
55
- lineNumber: 43,
83
+ lineNumber: 41,
56
84
  columnNumber: 7
57
- })]);
58
- expect(res).toBe(`my_var: int`);
85
+ })).toRenderTo("my_var: int");
59
86
  });
60
87
  it("declares a python variable without typeAnnotations", () => {
61
- const res = toSourceText([_$createComponent(py.VariableDeclaration, {
62
- name: "myVar",
63
- initializer: 42
88
+ expect(_$createComponent(TestOutput, {
89
+ get children() {
90
+ return _$createComponent(py.VariableDeclaration, {
91
+ name: "myVar",
92
+ initializer: 42
93
+ }, {
94
+ fileName: import.meta.url,
95
+ lineNumber: 50,
96
+ columnNumber: 9
97
+ });
98
+ }
64
99
  }, {
65
100
  fileName: import.meta.url,
66
- lineNumber: 50,
101
+ lineNumber: 49,
67
102
  columnNumber: 7
68
- })]);
69
- expect(res).toBe(`my_var = 42`);
103
+ })).toRenderTo("my_var = 42");
70
104
  });
71
105
  it("declares a python variable as None when undefined", () => {
72
- const res = toSourceText([_$createComponent(py.VariableDeclaration, {
73
- name: "myVar"
106
+ expect(_$createComponent(TestOutput, {
107
+ get children() {
108
+ return _$createComponent(py.VariableDeclaration, {
109
+ name: "myVar"
110
+ }, {
111
+ fileName: import.meta.url,
112
+ lineNumber: 58,
113
+ columnNumber: 9
114
+ });
115
+ }
74
116
  }, {
75
117
  fileName: import.meta.url,
76
- lineNumber: 56,
77
- columnNumber: 31
78
- })]);
79
- expect(res).toBe(`my_var = None`);
118
+ lineNumber: 57,
119
+ columnNumber: 7
120
+ })).toRenderTo("my_var = None");
80
121
  });
81
122
  it("declares a python variable as None when null", () => {
82
- const res = toSourceText([_$createComponent(py.VariableDeclaration, {
83
- name: "myVar",
84
- get initializer() {
85
- return _$createComponent(py.Atom, {
86
- jsValue: null
123
+ expect(_$createComponent(TestOutput, {
124
+ get children() {
125
+ return _$createComponent(py.VariableDeclaration, {
126
+ name: "myVar",
127
+ get initializer() {
128
+ return _$createComponent(py.Atom, {
129
+ jsValue: null
130
+ }, {
131
+ fileName: import.meta.url,
132
+ lineNumber: 68,
133
+ columnNumber: 24
134
+ });
135
+ }
87
136
  }, {
88
137
  fileName: import.meta.url,
89
- lineNumber: 64,
90
- columnNumber: 22
138
+ lineNumber: 66,
139
+ columnNumber: 9
91
140
  });
92
141
  }
93
142
  }, {
94
143
  fileName: import.meta.url,
95
- lineNumber: 62,
144
+ lineNumber: 65,
96
145
  columnNumber: 7
97
- })]);
98
- expect(res).toBe(`my_var = None`);
146
+ })).toRenderTo("my_var = None");
99
147
  });
100
148
  it("declares a python variable that's an array", () => {
101
- const res = toSourceText([_$createComponent(py.VariableDeclaration, {
102
- name: "numbers",
103
- get type() {
104
- return _$createComponent(py.TypeReference, {
105
- name: "list",
106
- typeArgs: ["int"]
107
- }, {
108
- fileName: import.meta.url,
109
- lineNumber: 74,
110
- columnNumber: 15
111
- });
112
- },
113
- get initializer() {
114
- return _$createComponent(py.Atom, {
115
- jsValue: [1, 2, 3]
149
+ expect(_$createComponent(TestOutput, {
150
+ get children() {
151
+ return _$createComponent(py.VariableDeclaration, {
152
+ name: "numbers",
153
+ get type() {
154
+ return _$createComponent(py.TypeReference, {
155
+ name: "list",
156
+ typeArgs: ["int"]
157
+ }, {
158
+ fileName: import.meta.url,
159
+ lineNumber: 79,
160
+ columnNumber: 17
161
+ });
162
+ },
163
+ get initializer() {
164
+ return _$createComponent(py.Atom, {
165
+ jsValue: [1, 2, 3]
166
+ }, {
167
+ fileName: import.meta.url,
168
+ lineNumber: 80,
169
+ columnNumber: 24
170
+ });
171
+ }
116
172
  }, {
117
173
  fileName: import.meta.url,
118
- lineNumber: 75,
119
- columnNumber: 22
174
+ lineNumber: 77,
175
+ columnNumber: 9
120
176
  });
121
177
  }
122
178
  }, {
123
179
  fileName: import.meta.url,
124
- lineNumber: 72,
180
+ lineNumber: 76,
125
181
  columnNumber: 7
126
- })]);
127
- expect(res).toBe(`numbers: list[int] = [1, 2, 3]`);
182
+ })).toRenderTo("numbers: list[int] = [1, 2, 3]");
128
183
  });
129
184
  it("declares a python variable with a python value", () => {
130
- const res = toSourceText([_$createComponent(py.VariableDeclaration, {
131
- name: "nameIdPairs",
132
- get initializer() {
133
- return _$createComponent(py.Atom, {
134
- jsValue: {
135
- John: 123,
136
- Doe: 234
185
+ expect(_$createComponent(TestOutput, {
186
+ get children() {
187
+ return _$createComponent(py.VariableDeclaration, {
188
+ name: "nameIdPairs",
189
+ get initializer() {
190
+ return _$createComponent(py.Atom, {
191
+ jsValue: {
192
+ John: 123,
193
+ Doe: 234
194
+ }
195
+ }, {
196
+ fileName: import.meta.url,
197
+ lineNumber: 91,
198
+ columnNumber: 24
199
+ });
137
200
  }
138
201
  }, {
139
202
  fileName: import.meta.url,
140
- lineNumber: 85,
141
- columnNumber: 22
203
+ lineNumber: 89,
204
+ columnNumber: 9
142
205
  });
143
206
  }
144
207
  }, {
145
208
  fileName: import.meta.url,
146
- lineNumber: 83,
209
+ lineNumber: 88,
147
210
  columnNumber: 7
148
- })]);
149
- expect(res).toBe(`name_id_pairs = {"John": 123, "Doe": 234}`);
211
+ })).toRenderTo(`name_id_pairs = {"John": 123, "Doe": 234}`);
150
212
  });
151
213
  it("declares a python variable with omitNone", () => {
152
- const res = toSourceText([_$createComponent(py.VariableDeclaration, {
153
- name: "omitNoneVar",
154
- type: "int",
155
- omitNone: true
214
+ expect(_$createComponent(TestOutput, {
215
+ get children() {
216
+ return _$createComponent(py.VariableDeclaration, {
217
+ name: "omitNoneVar",
218
+ type: "int",
219
+ omitNone: true
220
+ }, {
221
+ fileName: import.meta.url,
222
+ lineNumber: 100,
223
+ columnNumber: 9
224
+ });
225
+ }
156
226
  }, {
157
227
  fileName: import.meta.url,
158
- lineNumber: 93,
228
+ lineNumber: 99,
159
229
  columnNumber: 7
160
- })]);
161
- expect(res).toBe(`omit_none_var: int`);
230
+ })).toRenderTo("omit_none_var: int");
162
231
  });
163
232
  it("declares a call statement python variable", () => {
164
- const res = toSourceText([_$createComponent(py.VariableDeclaration, {
165
- name: "callStmtVar",
166
- initializer: 12,
167
- callStatementVar: true
233
+ expect(_$createComponent(TestOutput, {
234
+ get children() {
235
+ return _$createComponent(py.VariableDeclaration, {
236
+ name: "callStmtVar",
237
+ initializer: 12,
238
+ callStatementVar: true
239
+ }, {
240
+ fileName: import.meta.url,
241
+ lineNumber: 108,
242
+ columnNumber: 9
243
+ });
244
+ }
168
245
  }, {
169
246
  fileName: import.meta.url,
170
- lineNumber: 100,
247
+ lineNumber: 107,
171
248
  columnNumber: 7
172
- })]);
173
- expect(res).toBe(`call_stmt_var=12`);
249
+ })).toRenderTo("call_stmt_var=12");
174
250
  });
175
251
  it("declares a call statement python variable without name", () => {
176
- const res = toSourceText([_$createComponent(py.VariableDeclaration, {
177
- name: "",
178
- initializer: 12,
179
- callStatementVar: true
252
+ expect(_$createComponent(TestOutput, {
253
+ get children() {
254
+ return _$createComponent(py.VariableDeclaration, {
255
+ name: "",
256
+ initializer: 12,
257
+ callStatementVar: true
258
+ }, {
259
+ fileName: import.meta.url,
260
+ lineNumber: 120,
261
+ columnNumber: 9
262
+ });
263
+ }
180
264
  }, {
181
265
  fileName: import.meta.url,
182
- lineNumber: 111,
266
+ lineNumber: 119,
183
267
  columnNumber: 7
184
- })]);
185
- expect(res).toBe(`12`);
268
+ })).toRenderTo("12");
186
269
  });
187
270
  it("declares a python variable with an optional type", () => {
188
- const res = toSourceText([_$createComponent(py.StatementList, {
271
+ expect(_$createComponent(TestOutput, {
189
272
  get children() {
190
- return _$createComponent(py.VariableDeclaration, {
191
- name: "my_var",
192
- get type() {
193
- return _$createComponent(py.UnionTypeExpression, {
194
- children: ["int", "None"]
273
+ return _$createComponent(py.StatementList, {
274
+ get children() {
275
+ return _$createComponent(py.VariableDeclaration, {
276
+ name: "my_var",
277
+ get type() {
278
+ return _$createComponent(py.UnionTypeExpression, {
279
+ children: ["int", "None"]
280
+ }, {
281
+ fileName: import.meta.url,
282
+ lineNumber: 136,
283
+ columnNumber: 15
284
+ });
285
+ }
195
286
  }, {
196
287
  fileName: import.meta.url,
197
- lineNumber: 126,
198
- columnNumber: 13
288
+ lineNumber: 133,
289
+ columnNumber: 11
199
290
  });
200
291
  }
201
292
  }, {
202
293
  fileName: import.meta.url,
203
- lineNumber: 123,
294
+ lineNumber: 132,
204
295
  columnNumber: 9
205
296
  });
206
297
  }
207
298
  }, {
208
299
  fileName: import.meta.url,
209
- lineNumber: 122,
300
+ lineNumber: 131,
210
301
  columnNumber: 7
211
- })]);
212
- expect(res).toBe(d`
302
+ })).toRenderTo(`
213
303
  my_var: int | None = None`);
214
304
  });
215
305
  it("declares a python variable with an optional type omitting none", () => {
216
- const res = toSourceText([_$createComponent(py.StatementList, {
306
+ expect(_$createComponent(TestOutput, {
217
307
  get children() {
218
- return _$createComponent(py.VariableDeclaration, {
219
- name: "my_var",
220
- get type() {
221
- return _$createComponent(py.UnionTypeExpression, {
222
- children: ["int", "None"]
308
+ return _$createComponent(py.StatementList, {
309
+ get children() {
310
+ return _$createComponent(py.VariableDeclaration, {
311
+ name: "my_var",
312
+ get type() {
313
+ return _$createComponent(py.UnionTypeExpression, {
314
+ children: ["int", "None"]
315
+ }, {
316
+ fileName: import.meta.url,
317
+ lineNumber: 154,
318
+ columnNumber: 15
319
+ });
320
+ },
321
+ omitNone: true
223
322
  }, {
224
323
  fileName: import.meta.url,
225
- lineNumber: 141,
226
- columnNumber: 13
324
+ lineNumber: 151,
325
+ columnNumber: 11
227
326
  });
228
- },
229
- omitNone: true
327
+ }
230
328
  }, {
231
329
  fileName: import.meta.url,
232
- lineNumber: 138,
330
+ lineNumber: 150,
233
331
  columnNumber: 9
234
332
  });
235
333
  }
236
334
  }, {
237
335
  fileName: import.meta.url,
238
- lineNumber: 137,
336
+ lineNumber: 149,
239
337
  columnNumber: 7
240
- })]);
241
- expect(res).toBe(d`
338
+ })).toRenderTo(`
242
339
  my_var: int | None`);
243
340
  });
244
341
  it("declares a python variable with a class type", () => {
245
342
  const classKey = refkey();
246
- const res = toSourceText([_$createComponent(py.StatementList, {
343
+ expect(_$createComponent(TestOutput, {
247
344
  get children() {
248
- return [_$createComponent(py.ClassDeclaration, {
249
- name: "MyClass",
250
- refkey: classKey
251
- }, {
252
- fileName: import.meta.url,
253
- lineNumber: 155,
254
- columnNumber: 9
255
- }), _$createComponent(py.VariableDeclaration, {
256
- name: "my_var",
257
- get type() {
258
- return _$createComponent(py.Reference, {
345
+ return _$createComponent(py.StatementList, {
346
+ get children() {
347
+ return [_$createComponent(py.ClassDeclaration, {
348
+ name: "MyClass",
259
349
  refkey: classKey
260
350
  }, {
261
351
  fileName: import.meta.url,
262
- lineNumber: 158,
263
- columnNumber: 17
264
- });
352
+ lineNumber: 171,
353
+ columnNumber: 11
354
+ }), _$createComponent(py.VariableDeclaration, {
355
+ name: "my_var",
356
+ get type() {
357
+ return _$createComponent(py.Reference, {
358
+ refkey: classKey
359
+ }, {
360
+ fileName: import.meta.url,
361
+ lineNumber: 174,
362
+ columnNumber: 19
363
+ });
364
+ }
365
+ }, {
366
+ fileName: import.meta.url,
367
+ lineNumber: 172,
368
+ columnNumber: 11
369
+ })];
265
370
  }
266
371
  }, {
267
372
  fileName: import.meta.url,
268
- lineNumber: 156,
373
+ lineNumber: 170,
269
374
  columnNumber: 9
270
- })];
375
+ });
271
376
  }
272
377
  }, {
273
378
  fileName: import.meta.url,
274
- lineNumber: 154,
379
+ lineNumber: 169,
275
380
  columnNumber: 7
276
- })]);
277
- expect(res).toBe(d`
381
+ })).toRenderTo(`
278
382
  class MyClass:
279
383
  pass
280
384
 
@@ -282,82 +386,96 @@ describe("Python Variable", () => {
282
386
  });
283
387
  it("declares a python variable with a class type from a different module", () => {
284
388
  const classKey = refkey();
285
- const res = toSourceTextMultiple([_$createComponent(py.SourceFile, {
286
- path: "classes.py",
389
+ expect(_$createComponent(TestOutputDirectory, {
287
390
  get children() {
288
- return _$createComponent(py.ClassDeclaration, {
289
- name: "MyClass",
290
- refkey: classKey
391
+ return [_$createComponent(py.SourceFile, {
392
+ path: "classes.py",
393
+ get children() {
394
+ return _$createComponent(py.ClassDeclaration, {
395
+ name: "MyClass",
396
+ refkey: classKey
397
+ }, {
398
+ fileName: import.meta.url,
399
+ lineNumber: 192,
400
+ columnNumber: 11
401
+ });
402
+ }
291
403
  }, {
292
404
  fileName: import.meta.url,
293
- lineNumber: 173,
405
+ lineNumber: 191,
294
406
  columnNumber: 9
295
- });
296
- }
297
- }, {
298
- fileName: import.meta.url,
299
- lineNumber: 172,
300
- columnNumber: 7
301
- }), _$createComponent(py.SourceFile, {
302
- path: "usage.py",
303
- get children() {
304
- return _$createComponent(py.VariableDeclaration, {
305
- name: "my_var",
306
- type: classKey
407
+ }), _$createComponent(py.SourceFile, {
408
+ path: "usage.py",
409
+ get children() {
410
+ return _$createComponent(py.VariableDeclaration, {
411
+ name: "my_var",
412
+ type: classKey
413
+ }, {
414
+ fileName: import.meta.url,
415
+ lineNumber: 195,
416
+ columnNumber: 11
417
+ });
418
+ }
307
419
  }, {
308
420
  fileName: import.meta.url,
309
- lineNumber: 176,
421
+ lineNumber: 194,
310
422
  columnNumber: 9
311
- });
423
+ })];
312
424
  }
313
425
  }, {
314
426
  fileName: import.meta.url,
315
- lineNumber: 175,
427
+ lineNumber: 190,
316
428
  columnNumber: 7
317
- })]);
318
- assertFileContents(res, {
429
+ })).toRenderTo({
319
430
  "classes.py": `
320
- class MyClass:
321
- pass
431
+ class MyClass:
432
+ pass
322
433
 
323
- `,
434
+ `,
324
435
  "usage.py": `
325
- from typing import TYPE_CHECKING
436
+ from typing import TYPE_CHECKING
326
437
 
327
- if TYPE_CHECKING:
328
- from classes import MyClass
438
+ if TYPE_CHECKING:
439
+ from classes import MyClass
329
440
 
330
- my_var: MyClass = None
331
- `
441
+ my_var: MyClass = None
442
+ `
332
443
  });
333
444
  });
334
445
  it("declares a python variable receiving other variable as value", () => {
335
446
  const varKey = refkey();
336
- const res = toSourceText([_$createComponent(py.StatementList, {
447
+ expect(_$createComponent(TestOutput, {
337
448
  get children() {
338
- return [_$createComponent(py.VariableDeclaration, {
339
- name: "my_var",
340
- refkey: varKey,
341
- initializer: 42
342
- }, {
343
- fileName: import.meta.url,
344
- lineNumber: 200,
345
- columnNumber: 9
346
- }), _$createComponent(py.VariableDeclaration, {
347
- name: "my_other_var",
348
- initializer: varKey
449
+ return _$createComponent(py.StatementList, {
450
+ get children() {
451
+ return [_$createComponent(py.VariableDeclaration, {
452
+ name: "my_var",
453
+ refkey: varKey,
454
+ initializer: 42
455
+ }, {
456
+ fileName: import.meta.url,
457
+ lineNumber: 220,
458
+ columnNumber: 11
459
+ }), _$createComponent(py.VariableDeclaration, {
460
+ name: "my_other_var",
461
+ initializer: varKey
462
+ }, {
463
+ fileName: import.meta.url,
464
+ lineNumber: 225,
465
+ columnNumber: 11
466
+ })];
467
+ }
349
468
  }, {
350
469
  fileName: import.meta.url,
351
- lineNumber: 205,
470
+ lineNumber: 219,
352
471
  columnNumber: 9
353
- })];
472
+ });
354
473
  }
355
474
  }, {
356
475
  fileName: import.meta.url,
357
- lineNumber: 199,
476
+ lineNumber: 218,
358
477
  columnNumber: 7
359
- })]);
360
- expect(res).toBe(`my_var = 42\nmy_other_var = my_var`);
478
+ })).toRenderTo("my_var = 42\nmy_other_var = my_var");
361
479
  });
362
480
  });
363
481
  //# sourceMappingURL=variables.test.js.map