@alloy-js/python 0.4.0-dev.2 → 0.4.0-dev.5

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 (258) hide show
  1. package/dist/dev/src/builtins/python.js +30 -0
  2. package/dist/dev/src/builtins/python.js.map +1 -0
  3. package/dist/dev/src/components/Atom.js +122 -0
  4. package/dist/dev/src/components/Atom.js.map +1 -0
  5. package/dist/dev/src/components/CallSignature.js +195 -0
  6. package/dist/dev/src/components/CallSignature.js.map +1 -0
  7. package/dist/dev/src/components/ClassDeclaration.js +112 -0
  8. package/dist/dev/src/components/ClassDeclaration.js.map +1 -0
  9. package/dist/dev/src/components/ClassInstantiation.js +40 -0
  10. package/dist/dev/src/components/ClassInstantiation.js.map +1 -0
  11. package/dist/dev/src/components/ClassMethodDeclaration.js +40 -0
  12. package/dist/dev/src/components/ClassMethodDeclaration.js.map +1 -0
  13. package/dist/dev/src/components/ConstructorDeclaration.js +39 -0
  14. package/dist/dev/src/components/ConstructorDeclaration.js.map +1 -0
  15. package/dist/dev/src/components/DataclassDeclaration.js +177 -0
  16. package/dist/dev/src/components/DataclassDeclaration.js.map +1 -0
  17. package/dist/dev/src/components/Declaration.js +31 -0
  18. package/dist/dev/src/components/Declaration.js.map +1 -0
  19. package/dist/dev/src/components/DunderMethodDeclaration.js +33 -0
  20. package/dist/dev/src/components/DunderMethodDeclaration.js.map +1 -0
  21. package/dist/dev/src/components/EnumDeclaration.js +259 -0
  22. package/dist/dev/src/components/EnumDeclaration.js.map +1 -0
  23. package/dist/dev/src/components/EnumMember.js +95 -0
  24. package/dist/dev/src/components/EnumMember.js.map +1 -0
  25. package/dist/dev/src/components/FunctionBase.js +130 -0
  26. package/dist/dev/src/components/FunctionBase.js.map +1 -0
  27. package/dist/dev/src/components/FunctionCallExpression.js +53 -0
  28. package/dist/dev/src/components/FunctionCallExpression.js.map +1 -0
  29. package/dist/dev/src/components/FunctionDeclaration.js +45 -0
  30. package/dist/dev/src/components/FunctionDeclaration.js.map +1 -0
  31. package/dist/dev/src/components/FutureStatement.js +31 -0
  32. package/dist/dev/src/components/FutureStatement.js.map +1 -0
  33. package/dist/dev/src/components/ImportStatement.js +167 -0
  34. package/dist/dev/src/components/ImportStatement.js.map +1 -0
  35. package/dist/dev/src/components/LexicalScope.js +26 -0
  36. package/dist/dev/src/components/LexicalScope.js.map +1 -0
  37. package/dist/dev/src/components/MemberExpression.js +290 -0
  38. package/dist/dev/src/components/MemberExpression.js.map +1 -0
  39. package/dist/dev/src/components/MemberScope.js +23 -0
  40. package/dist/dev/src/components/MemberScope.js.map +1 -0
  41. package/dist/dev/src/components/MethodBase.js +40 -0
  42. package/dist/dev/src/components/MethodBase.js.map +1 -0
  43. package/dist/dev/src/components/MethodDeclaration.js +38 -0
  44. package/dist/dev/src/components/MethodDeclaration.js.map +1 -0
  45. package/dist/dev/src/components/PropertyDeclaration.js +287 -0
  46. package/dist/dev/src/components/PropertyDeclaration.js.map +1 -0
  47. package/dist/dev/src/components/PyDoc.js +1478 -0
  48. package/dist/dev/src/components/PyDoc.js.map +1 -0
  49. package/dist/dev/src/components/PythonBlock.js +35 -0
  50. package/dist/dev/src/components/PythonBlock.js.map +1 -0
  51. package/dist/dev/src/components/Reference.js +23 -0
  52. package/dist/dev/src/components/Reference.js.map +1 -0
  53. package/dist/dev/src/components/SourceFile.js +385 -0
  54. package/dist/dev/src/components/SourceFile.js.map +1 -0
  55. package/dist/dev/src/components/StatementList.js +34 -0
  56. package/dist/dev/src/components/StatementList.js.map +1 -0
  57. package/dist/dev/src/components/StaticMethodDeclaration.js +40 -0
  58. package/dist/dev/src/components/StaticMethodDeclaration.js.map +1 -0
  59. package/dist/dev/src/components/TypeArguments.js +22 -0
  60. package/dist/dev/src/components/TypeArguments.js.map +1 -0
  61. package/dist/dev/src/components/TypeRefContext.js +33 -0
  62. package/dist/dev/src/components/TypeRefContext.js.map +1 -0
  63. package/dist/dev/src/components/TypeReference.js +67 -0
  64. package/dist/dev/src/components/TypeReference.js.map +1 -0
  65. package/dist/dev/src/components/UnionTypeExpression.js +57 -0
  66. package/dist/dev/src/components/UnionTypeExpression.js.map +1 -0
  67. package/dist/dev/src/components/VariableDeclaration.js +150 -0
  68. package/dist/dev/src/components/VariableDeclaration.js.map +1 -0
  69. package/dist/dev/src/components/index.js +32 -0
  70. package/dist/dev/src/components/index.js.map +1 -0
  71. package/dist/dev/src/context/index.js +2 -0
  72. package/dist/dev/src/context/index.js.map +1 -0
  73. package/dist/dev/src/context/type-ref-context.js +17 -0
  74. package/dist/dev/src/context/type-ref-context.js.map +1 -0
  75. package/dist/dev/src/create-module.js +64 -0
  76. package/dist/dev/src/create-module.js.map +1 -0
  77. package/dist/dev/src/index.js +8 -0
  78. package/dist/dev/src/index.js.map +1 -0
  79. package/dist/dev/src/name-conflict-resolver.js +8 -0
  80. package/dist/dev/src/name-conflict-resolver.js.map +1 -0
  81. package/dist/dev/src/name-policy.js +48 -0
  82. package/dist/dev/src/name-policy.js.map +1 -0
  83. package/dist/dev/src/parameter-descriptor.js +8 -0
  84. package/dist/dev/src/parameter-descriptor.js.map +1 -0
  85. package/dist/dev/src/symbol-creation.js +58 -0
  86. package/dist/dev/src/symbol-creation.js.map +1 -0
  87. package/dist/dev/src/symbols/factories.js +28 -0
  88. package/dist/dev/src/symbols/factories.js.map +1 -0
  89. package/dist/dev/src/symbols/index.js +8 -0
  90. package/dist/dev/src/symbols/index.js.map +1 -0
  91. package/dist/dev/src/symbols/python-lexical-scope.js +15 -0
  92. package/dist/dev/src/symbols/python-lexical-scope.js.map +1 -0
  93. package/dist/dev/src/symbols/python-member-scope.js +7 -0
  94. package/dist/dev/src/symbols/python-member-scope.js.map +1 -0
  95. package/dist/dev/src/symbols/python-module-scope.js +86 -0
  96. package/dist/dev/src/symbols/python-module-scope.js.map +1 -0
  97. package/dist/dev/src/symbols/python-output-symbol.js +73 -0
  98. package/dist/dev/src/symbols/python-output-symbol.js.map +1 -0
  99. package/dist/dev/src/symbols/reference.js +87 -0
  100. package/dist/dev/src/symbols/reference.js.map +1 -0
  101. package/dist/dev/src/symbols/scopes.js +13 -0
  102. package/dist/dev/src/symbols/scopes.js.map +1 -0
  103. package/dist/dev/src/utils.js +13 -0
  104. package/dist/dev/src/utils.js.map +1 -0
  105. package/dist/dev/test/callsignatures.test.js +482 -0
  106. package/dist/dev/test/callsignatures.test.js.map +1 -0
  107. package/dist/dev/test/class-method-declaration.test.js +85 -0
  108. package/dist/dev/test/class-method-declaration.test.js.map +1 -0
  109. package/dist/dev/test/classdeclarations.test.js +654 -0
  110. package/dist/dev/test/classdeclarations.test.js.map +1 -0
  111. package/dist/dev/test/classinstantiations.test.js +281 -0
  112. package/dist/dev/test/classinstantiations.test.js.map +1 -0
  113. package/dist/dev/test/constructordeclaration.test.js +86 -0
  114. package/dist/dev/test/constructordeclaration.test.js.map +1 -0
  115. package/dist/dev/test/dataclassdeclarations.test.js +1068 -0
  116. package/dist/dev/test/dataclassdeclarations.test.js.map +1 -0
  117. package/dist/dev/test/dundermethoddeclaration.test.js +93 -0
  118. package/dist/dev/test/dundermethoddeclaration.test.js.map +1 -0
  119. package/dist/dev/test/enums.test.js +263 -0
  120. package/dist/dev/test/enums.test.js.map +1 -0
  121. package/dist/dev/test/externals.test.js +307 -0
  122. package/dist/dev/test/externals.test.js.map +1 -0
  123. package/dist/dev/test/factories.test.js +122 -0
  124. package/dist/dev/test/factories.test.js.map +1 -0
  125. package/dist/dev/test/functioncallexpressions.test.js +257 -0
  126. package/dist/dev/test/functioncallexpressions.test.js.map +1 -0
  127. package/dist/dev/test/functiondeclaration.test.js +817 -0
  128. package/dist/dev/test/functiondeclaration.test.js.map +1 -0
  129. package/dist/dev/test/imports.test.js +372 -0
  130. package/dist/dev/test/imports.test.js.map +1 -0
  131. package/dist/dev/test/memberexpressions.test.js +1668 -0
  132. package/dist/dev/test/memberexpressions.test.js.map +1 -0
  133. package/dist/dev/test/methoddeclaration.test.js +344 -0
  134. package/dist/dev/test/methoddeclaration.test.js.map +1 -0
  135. package/dist/dev/test/namepolicies.test.js +154 -0
  136. package/dist/dev/test/namepolicies.test.js.map +1 -0
  137. package/dist/dev/test/propertydeclaration.test.js +354 -0
  138. package/dist/dev/test/propertydeclaration.test.js.map +1 -0
  139. package/dist/dev/test/pydocs.test.js +1675 -0
  140. package/dist/dev/test/pydocs.test.js.map +1 -0
  141. package/dist/dev/test/references.test.js +66 -0
  142. package/dist/dev/test/references.test.js.map +1 -0
  143. package/dist/dev/test/sourcefiles.test.js +1802 -0
  144. package/dist/dev/test/sourcefiles.test.js.map +1 -0
  145. package/dist/dev/test/staticmethoddeclaration.test.js +85 -0
  146. package/dist/dev/test/staticmethoddeclaration.test.js.map +1 -0
  147. package/dist/dev/test/type-checking-imports.test.js +617 -0
  148. package/dist/dev/test/type-checking-imports.test.js.map +1 -0
  149. package/dist/dev/test/typereference.test.js +79 -0
  150. package/dist/dev/test/typereference.test.js.map +1 -0
  151. package/dist/dev/test/uniontypeexpression.test.js +307 -0
  152. package/dist/dev/test/uniontypeexpression.test.js.map +1 -0
  153. package/dist/dev/test/utils.js +100 -0
  154. package/dist/dev/test/utils.js.map +1 -0
  155. package/dist/dev/test/values.test.js +182 -0
  156. package/dist/dev/test/values.test.js.map +1 -0
  157. package/dist/dev/test/variables.test.js +363 -0
  158. package/dist/dev/test/variables.test.js.map +1 -0
  159. package/dist/src/components/CallSignature.d.ts.map +1 -1
  160. package/dist/src/components/CallSignature.js +12 -3
  161. package/dist/src/components/CallSignature.js.map +1 -1
  162. package/dist/src/components/ImportStatement.d.ts +12 -0
  163. package/dist/src/components/ImportStatement.d.ts.map +1 -1
  164. package/dist/src/components/ImportStatement.js +47 -5
  165. package/dist/src/components/ImportStatement.js.map +1 -1
  166. package/dist/src/components/MemberExpression.d.ts +1 -1
  167. package/dist/src/components/MemberExpression.d.ts.map +1 -1
  168. package/dist/src/components/MemberExpression.js +98 -180
  169. package/dist/src/components/MemberExpression.js.map +1 -1
  170. package/dist/src/components/Reference.d.ts.map +1 -1
  171. package/dist/src/components/Reference.js +5 -1
  172. package/dist/src/components/Reference.js.map +1 -1
  173. package/dist/src/components/SourceFile.d.ts +1 -1
  174. package/dist/src/components/SourceFile.d.ts.map +1 -1
  175. package/dist/src/components/SourceFile.js +46 -7
  176. package/dist/src/components/SourceFile.js.map +1 -1
  177. package/dist/src/components/TypeRefContext.d.ts +26 -0
  178. package/dist/src/components/TypeRefContext.d.ts.map +1 -0
  179. package/dist/src/components/TypeRefContext.js +29 -0
  180. package/dist/src/components/TypeRefContext.js.map +1 -0
  181. package/dist/src/components/TypeReference.d.ts +5 -0
  182. package/dist/src/components/TypeReference.d.ts.map +1 -1
  183. package/dist/src/components/TypeReference.js +19 -9
  184. package/dist/src/components/TypeReference.js.map +1 -1
  185. package/dist/src/components/VariableDeclaration.d.ts.map +1 -1
  186. package/dist/src/components/VariableDeclaration.js +7 -2
  187. package/dist/src/components/VariableDeclaration.js.map +1 -1
  188. package/dist/src/components/index.d.ts +1 -1
  189. package/dist/src/components/index.d.ts.map +1 -1
  190. package/dist/src/components/index.js +1 -1
  191. package/dist/src/components/index.js.map +1 -1
  192. package/dist/src/context/index.d.ts +2 -0
  193. package/dist/src/context/index.d.ts.map +1 -0
  194. package/dist/src/context/index.js +2 -0
  195. package/dist/src/context/index.js.map +1 -0
  196. package/dist/src/context/type-ref-context.d.ts +13 -0
  197. package/dist/src/context/type-ref-context.d.ts.map +1 -0
  198. package/dist/src/context/type-ref-context.js +17 -0
  199. package/dist/src/context/type-ref-context.js.map +1 -0
  200. package/dist/src/symbols/python-module-scope.d.ts +13 -1
  201. package/dist/src/symbols/python-module-scope.d.ts.map +1 -1
  202. package/dist/src/symbols/python-module-scope.js +36 -2
  203. package/dist/src/symbols/python-module-scope.js.map +1 -1
  204. package/dist/src/symbols/python-output-symbol.d.ts +11 -0
  205. package/dist/src/symbols/python-output-symbol.d.ts.map +1 -1
  206. package/dist/src/symbols/python-output-symbol.js +26 -2
  207. package/dist/src/symbols/python-output-symbol.js.map +1 -1
  208. package/dist/src/symbols/reference.d.ts +8 -1
  209. package/dist/src/symbols/reference.d.ts.map +1 -1
  210. package/dist/src/symbols/reference.js +4 -2
  211. package/dist/src/symbols/reference.js.map +1 -1
  212. package/dist/test/dataclassdeclarations.test.js +5 -2
  213. package/dist/test/dataclassdeclarations.test.js.map +1 -1
  214. package/dist/test/externals.test.js +8 -2
  215. package/dist/test/externals.test.js.map +1 -1
  216. package/dist/test/functiondeclaration.test.js +6 -3
  217. package/dist/test/functiondeclaration.test.js.map +1 -1
  218. package/dist/test/imports.test.js +3 -3
  219. package/dist/test/imports.test.js.map +1 -1
  220. package/dist/test/references.test.js +1 -1
  221. package/dist/test/references.test.js.map +1 -1
  222. package/dist/test/sourcefiles.test.js +26 -26
  223. package/dist/test/sourcefiles.test.js.map +1 -1
  224. package/dist/test/type-checking-imports.test.d.ts +2 -0
  225. package/dist/test/type-checking-imports.test.d.ts.map +1 -0
  226. package/dist/test/type-checking-imports.test.js +437 -0
  227. package/dist/test/type-checking-imports.test.js.map +1 -0
  228. package/dist/test/uniontypeexpression.test.js +4 -1
  229. package/dist/test/uniontypeexpression.test.js.map +1 -1
  230. package/dist/test/variables.test.js +4 -1
  231. package/dist/test/variables.test.js.map +1 -1
  232. package/dist/tsconfig.tsbuildinfo +1 -1
  233. package/package.json +6 -4
  234. package/src/components/CallSignature.tsx +6 -2
  235. package/src/components/ImportStatement.tsx +52 -5
  236. package/src/components/MemberExpression.tsx +174 -298
  237. package/src/components/Reference.tsx +3 -1
  238. package/src/components/SourceFile.tsx +44 -8
  239. package/src/components/TypeRefContext.tsx +36 -0
  240. package/src/components/TypeReference.tsx +15 -7
  241. package/src/components/VariableDeclaration.tsx +5 -1
  242. package/src/components/index.ts +1 -1
  243. package/src/context/index.ts +1 -0
  244. package/src/context/type-ref-context.tsx +16 -0
  245. package/src/symbols/python-module-scope.ts +55 -2
  246. package/src/symbols/python-output-symbol.ts +32 -1
  247. package/src/symbols/reference.tsx +10 -0
  248. package/temp/api.json +443 -338
  249. package/test/dataclassdeclarations.test.tsx +8 -2
  250. package/test/externals.test.tsx +8 -2
  251. package/test/functiondeclaration.test.tsx +6 -3
  252. package/test/imports.test.tsx +6 -6
  253. package/test/references.test.tsx +1 -1
  254. package/test/sourcefiles.test.tsx +13 -13
  255. package/test/type-checking-imports.test.tsx +363 -0
  256. package/test/uniontypeexpression.test.tsx +4 -1
  257. package/test/variables.test.tsx +4 -1
  258. package/vitest.config.ts +8 -0
@@ -0,0 +1,281 @@
1
+ import { createComponent as _$createComponent } from "@alloy-js/core/jsx-runtime";
2
+ import { refkey } from "@alloy-js/core";
3
+ import { d } from "@alloy-js/core/testing";
4
+ import { expect, it } from "vitest";
5
+ import { createModule } from "../src/create-module.js";
6
+ import * as py from "../src/index.js";
7
+ import { toSourceText } from "./utils.js";
8
+ it("declaration of class instance with variables", () => {
9
+ // Creating the reference separately so the naming policy doesn't interfere
10
+ const classRef = refkey();
11
+ const result = toSourceText([_$createComponent(py.StatementList, {
12
+ get children() {
13
+ return [_$createComponent(py.ClassDeclaration, {
14
+ name: "one-class",
15
+ refkey: classRef
16
+ }, {
17
+ fileName: import.meta.url,
18
+ lineNumber: 13,
19
+ columnNumber: 7
20
+ }), _$createComponent(py.ClassInstantiation, {
21
+ target: classRef,
22
+ get args() {
23
+ return [_$createComponent(py.Atom, {
24
+ jsValue: "A name"
25
+ }, {
26
+ fileName: import.meta.url,
27
+ lineNumber: 17,
28
+ columnNumber: 11
29
+ }), _$createComponent(py.Atom, {
30
+ jsValue: 42
31
+ }, {
32
+ fileName: import.meta.url,
33
+ lineNumber: 18,
34
+ columnNumber: 11
35
+ }), _$createComponent(py.Atom, {
36
+ jsValue: true
37
+ }, {
38
+ fileName: import.meta.url,
39
+ lineNumber: 19,
40
+ columnNumber: 11
41
+ })];
42
+ }
43
+ }, {
44
+ fileName: import.meta.url,
45
+ lineNumber: 14,
46
+ columnNumber: 7
47
+ })];
48
+ }
49
+ }, {
50
+ fileName: import.meta.url,
51
+ lineNumber: 12,
52
+ columnNumber: 5
53
+ })]);
54
+ const expected = d`
55
+ class OneClass:
56
+ pass
57
+
58
+ OneClass("A name", 42, True)
59
+ `;
60
+ expect(result).toRenderTo(expected);
61
+ });
62
+ it("correct resolving of external module", () => {
63
+ const requestsLib = createModule({
64
+ name: "requests",
65
+ descriptor: {
66
+ models: ["Request"]
67
+ }
68
+ });
69
+ const result = toSourceText([_$createComponent(py.StatementList, {
70
+ get children() {
71
+ return _$createComponent(py.ClassInstantiation, {
72
+ get target() {
73
+ return requestsLib["models"].Request;
74
+ }
75
+ }, {
76
+ fileName: import.meta.url,
77
+ lineNumber: 43,
78
+ columnNumber: 9
79
+ });
80
+ }
81
+ }, {
82
+ fileName: import.meta.url,
83
+ lineNumber: 42,
84
+ columnNumber: 7
85
+ })], {
86
+ externals: [requestsLib]
87
+ });
88
+ const expected = d`
89
+ from requests.models import Request
90
+
91
+ Request()
92
+ `;
93
+ expect(result).toRenderTo(expected);
94
+ });
95
+ it("Class instantiation without a reference", () => {
96
+ const result = toSourceText([_$createComponent(py.StatementList, {
97
+ get children() {
98
+ return _$createComponent(py.ClassInstantiation, {
99
+ target: "ExampleClass",
100
+ get args() {
101
+ return [_$createComponent(py.Atom, {
102
+ jsValue: "A name"
103
+ }, {
104
+ fileName: import.meta.url,
105
+ lineNumber: 62,
106
+ columnNumber: 11
107
+ }), _$createComponent(py.Atom, {
108
+ jsValue: 42
109
+ }, {
110
+ fileName: import.meta.url,
111
+ lineNumber: 63,
112
+ columnNumber: 11
113
+ }), _$createComponent(py.Atom, {
114
+ jsValue: true
115
+ }, {
116
+ fileName: import.meta.url,
117
+ lineNumber: 64,
118
+ columnNumber: 11
119
+ })];
120
+ }
121
+ }, {
122
+ fileName: import.meta.url,
123
+ lineNumber: 59,
124
+ columnNumber: 7
125
+ });
126
+ }
127
+ }, {
128
+ fileName: import.meta.url,
129
+ lineNumber: 58,
130
+ columnNumber: 5
131
+ })]);
132
+ const expected = d`
133
+ ExampleClass("A name", 42, True)
134
+ `;
135
+ expect(result).toRenderTo(expected);
136
+ });
137
+ it("Class instantiation without a reference and with call statement vars", () => {
138
+ const result = toSourceText([_$createComponent(py.StatementList, {
139
+ get children() {
140
+ return _$createComponent(py.ClassInstantiation, {
141
+ target: "ExampleClass",
142
+ get args() {
143
+ return [_$createComponent(py.VariableDeclaration, {
144
+ name: "name",
145
+ initializer: "A name",
146
+ callStatementVar: true
147
+ }, {
148
+ fileName: import.meta.url,
149
+ lineNumber: 81,
150
+ columnNumber: 11
151
+ }), _$createComponent(py.VariableDeclaration, {
152
+ name: "number",
153
+ initializer: 42,
154
+ callStatementVar: true
155
+ }, {
156
+ fileName: import.meta.url,
157
+ lineNumber: 86,
158
+ columnNumber: 11
159
+ }), _$createComponent(py.VariableDeclaration, {
160
+ name: "flag",
161
+ initializer: true,
162
+ callStatementVar: true
163
+ }, {
164
+ fileName: import.meta.url,
165
+ lineNumber: 91,
166
+ columnNumber: 11
167
+ })];
168
+ }
169
+ }, {
170
+ fileName: import.meta.url,
171
+ lineNumber: 78,
172
+ columnNumber: 7
173
+ });
174
+ }
175
+ }, {
176
+ fileName: import.meta.url,
177
+ lineNumber: 77,
178
+ columnNumber: 5
179
+ })]);
180
+ const expected = d`
181
+ ExampleClass(name="A name", number=42, flag=True)
182
+ `;
183
+ expect(result).toRenderTo(expected);
184
+ });
185
+ it("Class instantiation without a reference mixing unnamed and named vars", () => {
186
+ const result = toSourceText([_$createComponent(py.StatementList, {
187
+ get children() {
188
+ return _$createComponent(py.ClassInstantiation, {
189
+ target: "ExampleClass",
190
+ get args() {
191
+ return [_$createComponent(py.Atom, {
192
+ jsValue: "A name"
193
+ }, {
194
+ fileName: import.meta.url,
195
+ lineNumber: 112,
196
+ columnNumber: 11
197
+ }), _$createComponent(py.VariableDeclaration, {
198
+ name: "number",
199
+ initializer: 42,
200
+ callStatementVar: true
201
+ }, {
202
+ fileName: import.meta.url,
203
+ lineNumber: 113,
204
+ columnNumber: 11
205
+ }), _$createComponent(py.VariableDeclaration, {
206
+ name: "flag",
207
+ initializer: true,
208
+ callStatementVar: true
209
+ }, {
210
+ fileName: import.meta.url,
211
+ lineNumber: 118,
212
+ columnNumber: 11
213
+ })];
214
+ }
215
+ }, {
216
+ fileName: import.meta.url,
217
+ lineNumber: 109,
218
+ columnNumber: 7
219
+ });
220
+ }
221
+ }, {
222
+ fileName: import.meta.url,
223
+ lineNumber: 108,
224
+ columnNumber: 5
225
+ })]);
226
+ const expected = d`
227
+ ExampleClass("A name", number=42, flag=True)
228
+ `;
229
+ expect(result).toRenderTo(expected);
230
+ });
231
+ it("incorrect Class instantiation works", () => {
232
+ const result = toSourceText([_$createComponent(py.ClassInstantiation, {
233
+ target: "MyClass",
234
+ get args() {
235
+ return [_$createComponent(py.ClassDeclaration, {
236
+ name: "NestedClass"
237
+ }, {
238
+ fileName: import.meta.url,
239
+ lineNumber: 138,
240
+ columnNumber: 9
241
+ }), _$createComponent(py.FunctionDeclaration, {
242
+ name: "myFunc"
243
+ }, {
244
+ fileName: import.meta.url,
245
+ lineNumber: 139,
246
+ columnNumber: 9
247
+ }), _$createComponent(py.StatementList, {
248
+ get children() {
249
+ return _$createComponent(py.VariableDeclaration, {
250
+ name: "x"
251
+ }, {
252
+ fileName: import.meta.url,
253
+ lineNumber: 141,
254
+ columnNumber: 11
255
+ });
256
+ }
257
+ }, {
258
+ fileName: import.meta.url,
259
+ lineNumber: 140,
260
+ columnNumber: 9
261
+ })];
262
+ }
263
+ }, {
264
+ fileName: import.meta.url,
265
+ lineNumber: 135,
266
+ columnNumber: 5
267
+ })]);
268
+ const expected = d`
269
+ MyClass(
270
+ class NestedClass:
271
+ pass
272
+ ,
273
+ def my_func():
274
+ pass
275
+ ,
276
+ x = None
277
+ )
278
+ `;
279
+ expect(result).toRenderTo(expected);
280
+ });
281
+ //# sourceMappingURL=classinstantiations.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["refkey","d","expect","it","createModule","py","toSourceText","classRef","result","_$createComponent","StatementList","children","ClassDeclaration","name","fileName","import","meta","url","lineNumber","columnNumber","ClassInstantiation","target","args","Atom","jsValue","expected","toRenderTo","requestsLib","descriptor","models","Request","externals","VariableDeclaration","initializer","callStatementVar","FunctionDeclaration"],"sources":["../../../test/classinstantiations.test.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,86 @@
1
+ import { createComponent as _$createComponent } from "@alloy-js/core/jsx-runtime";
2
+ import { d } from "@alloy-js/core/testing";
3
+ import { describe, expect, it } from "vitest";
4
+ import * as py from "../src/index.js";
5
+ import { toSourceText } from "./utils.js";
6
+ describe("ConstructorDeclaration", () => {
7
+ it("renders async constructor with return type", () => {
8
+ const decl = _$createComponent(py.StatementList, {
9
+ get children() {
10
+ return _$createComponent(py.ClassDeclaration, {
11
+ name: "MyClass",
12
+ get children() {
13
+ return _$createComponent(py.StatementList, {
14
+ get children() {
15
+ return _$createComponent(py.ConstructorDeclaration, {
16
+ async: true,
17
+ returnType: "MyClass",
18
+ children: "return super().__new__(cls)"
19
+ }, {
20
+ fileName: import.meta.url,
21
+ lineNumber: 12,
22
+ columnNumber: 13
23
+ });
24
+ }
25
+ }, {
26
+ fileName: import.meta.url,
27
+ lineNumber: 11,
28
+ columnNumber: 11
29
+ });
30
+ }
31
+ }, {
32
+ fileName: import.meta.url,
33
+ lineNumber: 10,
34
+ columnNumber: 9
35
+ });
36
+ }
37
+ }, {
38
+ fileName: import.meta.url,
39
+ lineNumber: 9,
40
+ columnNumber: 7
41
+ });
42
+ expect(toSourceText([decl])).toBe(d`
43
+ class MyClass:
44
+ async def __new__(cls) -> MyClass:
45
+ return super().__new__(cls)
46
+
47
+
48
+ `);
49
+ });
50
+ it("renders __new__ with spread args", () => {
51
+ const decl = _$createComponent(py.ClassDeclaration, {
52
+ name: "MyClass",
53
+ get children() {
54
+ return _$createComponent(py.StatementList, {
55
+ get children() {
56
+ return _$createComponent(py.ConstructorDeclaration, {
57
+ args: true,
58
+ kwargs: true,
59
+ children: "pass"
60
+ }, {
61
+ fileName: import.meta.url,
62
+ lineNumber: 33,
63
+ columnNumber: 11
64
+ });
65
+ }
66
+ }, {
67
+ fileName: import.meta.url,
68
+ lineNumber: 32,
69
+ columnNumber: 9
70
+ });
71
+ }
72
+ }, {
73
+ fileName: import.meta.url,
74
+ lineNumber: 31,
75
+ columnNumber: 7
76
+ });
77
+ expect(toSourceText([decl])).toBe(d`
78
+ class MyClass:
79
+ def __new__(cls, *args, **kwargs):
80
+ pass
81
+
82
+
83
+ `);
84
+ });
85
+ });
86
+ //# sourceMappingURL=constructordeclaration.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["d","describe","expect","it","py","toSourceText","decl","_$createComponent","StatementList","children","ClassDeclaration","name","ConstructorDeclaration","async","returnType","fileName","import","meta","url","lineNumber","columnNumber","toBe","args","kwargs"],"sources":["../../../test/constructordeclaration.test.tsx"],"sourcesContent":[null],"mappings":";AAAA,SAASA,CAAC,QAAQ,wBAAwB;AAC1C,SAASC,QAAQ,EAAEC,MAAM,EAAEC,EAAE,QAAQ,QAAQ;AAC7C,OAAO,KAAKC,EAAE,MAAM,iBAAiB;AACrC,SAASC,YAAY,QAAQ,YAAY;AAEzCJ,QAAQ,CAAC,wBAAwB,EAAE,MAAM;EACvCE,EAAE,CAAC,4CAA4C,EAAE,MAAM;IACrD,MAAMG,IAAI,GAAAC,iBAAA,CACPH,EAAE,CAACI,aAAa;MAAA,IAAAC,SAAA;QAAA,OAAAF,iBAAA,CACdH,EAAE,CAACM,gBAAgB;UAACC,IAAI;UAAA,IAAAF,SAAA;YAAA,OAAAF,iBAAA,CACtBH,EAAE,CAACI,aAAa;cAAA,IAAAC,SAAA;gBAAA,OAAAF,iBAAA,CACdH,EAAE,CAACQ,sBAAsB;kBAACC,KAAK;kBAACC,UAAU,EAAE,SAAS;kBAAAL,QAAA;gBAAA;kBAAAM,QAAA,EAAAC,MAAA,CAAAC,IAAA,CAAAC,GAAA;kBAAAC,UAAA;kBAAAC,YAAA;gBAAA;cAAA;YAAA;cAAAL,QAAA,EAAAC,MAAA,CAAAC,IAAA,CAAAC,GAAA;cAAAC,UAAA;cAAAC,YAAA;YAAA;UAAA;QAAA;UAAAL,QAAA,EAAAC,MAAA,CAAAC,IAAA,CAAAC,GAAA;UAAAC,UAAA;UAAAC,YAAA;QAAA;MAAA;IAAA;MAAAL,QAAA,EAAAC,MAAA,CAAAC,IAAA,CAAAC,GAAA;MAAAC,UAAA;MAAAC,YAAA;IAAA,EAM7D;IAEDlB,MAAM,CAACG,YAAY,CAAC,CAACC,IAAI,CAAC,CAAC,CAAC,CAACe,IAAI,CAACrB,CAAC;AACvC;AACA;AACA;AACA;AACA;AACA,KAAK,CAAC;EACJ,CAAC,CAAC;EAEFG,EAAE,CAAC,kCAAkC,EAAE,MAAM;IAC3C,MAAMG,IAAI,GAAAC,iBAAA,CACPH,EAAE,CAACM,gBAAgB;MAACC,IAAI;MAAA,IAAAF,SAAA;QAAA,OAAAF,iBAAA,CACtBH,EAAE,CAACI,aAAa;UAAA,IAAAC,SAAA;YAAA,OAAAF,iBAAA,CACdH,EAAE,CAACQ,sBAAsB;cAACU,IAAI;cAACC,MAAM;cAAAd,QAAA;YAAA;cAAAM,QAAA,EAAAC,MAAA,CAAAC,IAAA,CAAAC,GAAA;cAAAC,UAAA;cAAAC,YAAA;YAAA;UAAA;QAAA;UAAAL,QAAA,EAAAC,MAAA,CAAAC,IAAA,CAAAC,GAAA;UAAAC,UAAA;UAAAC,YAAA;QAAA;MAAA;IAAA;MAAAL,QAAA,EAAAC,MAAA,CAAAC,IAAA,CAAAC,GAAA;MAAAC,UAAA;MAAAC,YAAA;IAAA,EAK3C;IAEDlB,MAAM,CAACG,YAAY,CAAC,CAACC,IAAI,CAAC,CAAC,CAAC,CAACe,IAAI,CAACrB,CAAC;AACvC;AACA;AACA;AACA;AACA;AACA,KAAK,CAAC;EACJ,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}