@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,210 +1,230 @@
1
1
  import { namekey, refkey } from "@alloy-js/core";
2
- import { d } from "@alloy-js/core/testing";
3
2
  import { describe, expect, it } from "vitest";
4
3
  import * as py from "../src/index.js";
5
- import {
6
- assertFileContents,
7
- toSourceText,
8
- toSourceTextMultiple,
9
- } from "./utils.jsx";
4
+ import { TestOutput, TestOutputDirectory } from "./utils.js";
10
5
 
11
6
  describe("Python Variable", () => {
12
7
  it("declares a python variable", () => {
13
- const res = toSourceText([
14
- <py.VariableDeclaration name="myVar" type="int" initializer={42} />,
15
- ]);
16
- expect(res).toBe(`my_var: int = 42`);
8
+ expect(
9
+ <TestOutput>
10
+ <py.VariableDeclaration name="myVar" type="int" initializer={42} />
11
+ </TestOutput>,
12
+ ).toRenderTo("my_var: int = 42");
17
13
  });
18
14
 
19
15
  it("takes a namekey", () => {
20
- const res = toSourceText([
21
- <py.VariableDeclaration
22
- name={namekey("my-var")}
23
- type="int"
24
- initializer={42}
25
- />,
26
- ]);
27
- expect(res).toBe(`my_var: int = 42`);
16
+ expect(
17
+ <TestOutput>
18
+ <py.VariableDeclaration
19
+ name={namekey("my-var")}
20
+ type="int"
21
+ initializer={42}
22
+ />
23
+ </TestOutput>,
24
+ ).toRenderTo("my_var: int = 42");
28
25
  });
29
26
 
30
27
  it("takes a namekey", () => {
31
- const res = toSourceText([
32
- <py.VariableDeclaration
33
- name={namekey("my-var")}
34
- type="int"
35
- initializer={42}
36
- />,
37
- ]);
38
- expect(res).toBe(`my_var: int = 42`);
28
+ expect(
29
+ <TestOutput>
30
+ <py.VariableDeclaration
31
+ name={namekey("my-var")}
32
+ type="int"
33
+ initializer={42}
34
+ />
35
+ </TestOutput>,
36
+ ).toRenderTo("my_var: int = 42");
39
37
  });
40
38
 
41
39
  it("declares a python variable without value", () => {
42
- const res = toSourceText([
43
- <py.VariableDeclaration name="myVar" type="int" omitNone />,
44
- ]);
45
- expect(res).toBe(`my_var: int`);
40
+ expect(
41
+ <TestOutput>
42
+ <py.VariableDeclaration name="myVar" type="int" omitNone />
43
+ </TestOutput>,
44
+ ).toRenderTo("my_var: int");
46
45
  });
47
46
 
48
47
  it("declares a python variable without typeAnnotations", () => {
49
- const res = toSourceText([
50
- <py.VariableDeclaration name="myVar" initializer={42} />,
51
- ]);
52
- expect(res).toBe(`my_var = 42`);
48
+ expect(
49
+ <TestOutput>
50
+ <py.VariableDeclaration name="myVar" initializer={42} />
51
+ </TestOutput>,
52
+ ).toRenderTo("my_var = 42");
53
53
  });
54
54
 
55
55
  it("declares a python variable as None when undefined", () => {
56
- const res = toSourceText([<py.VariableDeclaration name="myVar" />]);
57
- expect(res).toBe(`my_var = None`);
56
+ expect(
57
+ <TestOutput>
58
+ <py.VariableDeclaration name="myVar" />
59
+ </TestOutput>,
60
+ ).toRenderTo("my_var = None");
58
61
  });
59
62
 
60
63
  it("declares a python variable as None when null", () => {
61
- const res = toSourceText([
62
- <py.VariableDeclaration
63
- name="myVar"
64
- initializer={<py.Atom jsValue={null} />}
65
- />,
66
- ]);
67
- expect(res).toBe(`my_var = None`);
64
+ expect(
65
+ <TestOutput>
66
+ <py.VariableDeclaration
67
+ name="myVar"
68
+ initializer={<py.Atom jsValue={null} />}
69
+ />
70
+ </TestOutput>,
71
+ ).toRenderTo("my_var = None");
68
72
  });
69
73
 
70
74
  it("declares a python variable that's an array", () => {
71
- const res = toSourceText([
72
- <py.VariableDeclaration
73
- name="numbers"
74
- type={<py.TypeReference name="list" typeArgs={["int"]} />}
75
- initializer={<py.Atom jsValue={[1, 2, 3]} />}
76
- />,
77
- ]);
78
- expect(res).toBe(`numbers: list[int] = [1, 2, 3]`);
75
+ expect(
76
+ <TestOutput>
77
+ <py.VariableDeclaration
78
+ name="numbers"
79
+ type={<py.TypeReference name="list" typeArgs={["int"]} />}
80
+ initializer={<py.Atom jsValue={[1, 2, 3]} />}
81
+ />
82
+ </TestOutput>,
83
+ ).toRenderTo("numbers: list[int] = [1, 2, 3]");
79
84
  });
80
85
 
81
86
  it("declares a python variable with a python value", () => {
82
- const res = toSourceText([
83
- <py.VariableDeclaration
84
- name="nameIdPairs"
85
- initializer={<py.Atom jsValue={{ John: 123, Doe: 234 }} />}
86
- />,
87
- ]);
88
- expect(res).toBe(`name_id_pairs = {"John": 123, "Doe": 234}`);
87
+ expect(
88
+ <TestOutput>
89
+ <py.VariableDeclaration
90
+ name="nameIdPairs"
91
+ initializer={<py.Atom jsValue={{ John: 123, Doe: 234 }} />}
92
+ />
93
+ </TestOutput>,
94
+ ).toRenderTo(`name_id_pairs = {"John": 123, "Doe": 234}`);
89
95
  });
90
96
 
91
97
  it("declares a python variable with omitNone", () => {
92
- const res = toSourceText([
93
- <py.VariableDeclaration name="omitNoneVar" type="int" omitNone={true} />,
94
- ]);
95
- expect(res).toBe(`omit_none_var: int`);
98
+ expect(
99
+ <TestOutput>
100
+ <py.VariableDeclaration name="omitNoneVar" type="int" omitNone={true} />
101
+ </TestOutput>,
102
+ ).toRenderTo("omit_none_var: int");
96
103
  });
97
104
 
98
105
  it("declares a call statement python variable", () => {
99
- const res = toSourceText([
100
- <py.VariableDeclaration
101
- name="callStmtVar"
102
- initializer={12}
103
- callStatementVar={true}
104
- />,
105
- ]);
106
- expect(res).toBe(`call_stmt_var=12`);
106
+ expect(
107
+ <TestOutput>
108
+ <py.VariableDeclaration
109
+ name="callStmtVar"
110
+ initializer={12}
111
+ callStatementVar={true}
112
+ />
113
+ </TestOutput>,
114
+ ).toRenderTo("call_stmt_var=12");
107
115
  });
108
116
 
109
117
  it("declares a call statement python variable without name", () => {
110
- const res = toSourceText([
111
- <py.VariableDeclaration
112
- name=""
113
- initializer={12}
114
- callStatementVar={true}
115
- />,
116
- ]);
117
- expect(res).toBe(`12`);
118
+ expect(
119
+ <TestOutput>
120
+ <py.VariableDeclaration
121
+ name=""
122
+ initializer={12}
123
+ callStatementVar={true}
124
+ />
125
+ </TestOutput>,
126
+ ).toRenderTo("12");
118
127
  });
119
128
 
120
129
  it("declares a python variable with an optional type", () => {
121
- const res = toSourceText([
122
- <py.StatementList>
123
- <py.VariableDeclaration
124
- name="my_var"
125
- type={
126
- <py.UnionTypeExpression>{["int", "None"]}</py.UnionTypeExpression>
127
- }
128
- />
129
- </py.StatementList>,
130
- ]);
131
- expect(res).toBe(d`
132
- my_var: int | None = None`);
130
+ expect(
131
+ <TestOutput>
132
+ <py.StatementList>
133
+ <py.VariableDeclaration
134
+ name="my_var"
135
+ type={
136
+ <py.UnionTypeExpression>{["int", "None"]}</py.UnionTypeExpression>
137
+ }
138
+ />
139
+ </py.StatementList>
140
+ </TestOutput>,
141
+ ).toRenderTo(
142
+ `
143
+ my_var: int | None = None`,
144
+ );
133
145
  });
134
146
 
135
147
  it("declares a python variable with an optional type omitting none", () => {
136
- const res = toSourceText([
137
- <py.StatementList>
138
- <py.VariableDeclaration
139
- name="my_var"
140
- type={
141
- <py.UnionTypeExpression>{["int", "None"]}</py.UnionTypeExpression>
142
- }
143
- omitNone
144
- />
145
- </py.StatementList>,
146
- ]);
147
- expect(res).toBe(d`
148
- my_var: int | None`);
148
+ expect(
149
+ <TestOutput>
150
+ <py.StatementList>
151
+ <py.VariableDeclaration
152
+ name="my_var"
153
+ type={
154
+ <py.UnionTypeExpression>{["int", "None"]}</py.UnionTypeExpression>
155
+ }
156
+ omitNone
157
+ />
158
+ </py.StatementList>
159
+ </TestOutput>,
160
+ ).toRenderTo(
161
+ `
162
+ my_var: int | None`,
163
+ );
149
164
  });
150
165
 
151
166
  it("declares a python variable with a class type", () => {
152
167
  const classKey = refkey();
153
- const res = toSourceText([
154
- <py.StatementList>
155
- <py.ClassDeclaration name="MyClass" refkey={classKey} />
156
- <py.VariableDeclaration
157
- name="my_var"
158
- type={<py.Reference refkey={classKey} />}
159
- />
160
- </py.StatementList>,
161
- ]);
162
- expect(res).toBe(d`
168
+ expect(
169
+ <TestOutput>
170
+ <py.StatementList>
171
+ <py.ClassDeclaration name="MyClass" refkey={classKey} />
172
+ <py.VariableDeclaration
173
+ name="my_var"
174
+ type={<py.Reference refkey={classKey} />}
175
+ />
176
+ </py.StatementList>
177
+ </TestOutput>,
178
+ ).toRenderTo(
179
+ `
163
180
  class MyClass:
164
181
  pass
165
182
 
166
- my_var: MyClass = None`);
183
+ my_var: MyClass = None`,
184
+ );
167
185
  });
168
186
 
169
187
  it("declares a python variable with a class type from a different module", () => {
170
188
  const classKey = refkey();
171
- const res = toSourceTextMultiple([
172
- <py.SourceFile path="classes.py">
173
- <py.ClassDeclaration name="MyClass" refkey={classKey} />
174
- </py.SourceFile>,
175
- <py.SourceFile path="usage.py">
176
- <py.VariableDeclaration name="my_var" type={classKey} />
177
- </py.SourceFile>,
178
- ]);
179
- assertFileContents(res, {
189
+ expect(
190
+ <TestOutputDirectory>
191
+ <py.SourceFile path="classes.py">
192
+ <py.ClassDeclaration name="MyClass" refkey={classKey} />
193
+ </py.SourceFile>
194
+ <py.SourceFile path="usage.py">
195
+ <py.VariableDeclaration name="my_var" type={classKey} />
196
+ </py.SourceFile>
197
+ </TestOutputDirectory>,
198
+ ).toRenderTo({
180
199
  "classes.py": `
181
- class MyClass:
182
- pass
200
+ class MyClass:
201
+ pass
183
202
 
184
- `,
203
+ `,
185
204
  "usage.py": `
186
- from typing import TYPE_CHECKING
205
+ from typing import TYPE_CHECKING
187
206
 
188
- if TYPE_CHECKING:
189
- from classes import MyClass
207
+ if TYPE_CHECKING:
208
+ from classes import MyClass
190
209
 
191
- my_var: MyClass = None
192
- `,
210
+ my_var: MyClass = None
211
+ `,
193
212
  });
194
213
  });
195
214
 
196
215
  it("declares a python variable receiving other variable as value", () => {
197
216
  const varKey = refkey();
198
- const res = toSourceText([
199
- <py.StatementList>
200
- <py.VariableDeclaration
201
- name="my_var"
202
- refkey={varKey}
203
- initializer={42}
204
- />
205
- <py.VariableDeclaration name="my_other_var" initializer={varKey} />
206
- </py.StatementList>,
207
- ]);
208
- expect(res).toBe(`my_var = 42\nmy_other_var = my_var`);
217
+ expect(
218
+ <TestOutput>
219
+ <py.StatementList>
220
+ <py.VariableDeclaration
221
+ name="my_var"
222
+ refkey={varKey}
223
+ initializer={42}
224
+ />
225
+ <py.VariableDeclaration name="my_other_var" initializer={varKey} />
226
+ </py.StatementList>
227
+ </TestOutput>,
228
+ ).toRenderTo("my_var = 42\nmy_other_var = my_var");
209
229
  });
210
230
  });
@@ -0,0 +1 @@
1
+ import "@alloy-js/core/testing";
package/vitest.config.ts CHANGED
@@ -14,5 +14,8 @@ export default defineConfig({
14
14
  jsx: "preserve",
15
15
  sourcemap: "both",
16
16
  },
17
+ test: {
18
+ setupFiles: ["./test/vitest.setup.ts"],
19
+ },
17
20
  plugins: [alloyPlugin()],
18
21
  });