@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,380 +1,454 @@
1
1
  import { createComponent as _$createComponent } from "@alloy-js/core/jsx-runtime";
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 { toSourceText } from "./utils.js";
4
+ import { TestOutput } from "./utils.js";
6
5
  describe("Call Signature Parameters", () => {
7
6
  it("renders simple function parameters", () => {
8
- const result = toSourceText([_$createComponent(py.CallSignatureParameters, {
9
- parameters: ["a", "b"]
10
- })]);
11
- expect(result).toRenderTo(d`
7
+ expect(_$createComponent(TestOutput, {
8
+ get children() {
9
+ return _$createComponent(py.CallSignatureParameters, {
10
+ parameters: ["a", "b"]
11
+ });
12
+ }
13
+ })).toRenderTo(`
12
14
  a, b
13
15
  `);
14
16
  });
15
17
  it("renders ParameterDescriptor parameters", () => {
16
- const result = toSourceText([_$createComponent(py.CallSignatureParameters, {
17
- parameters: [{
18
- name: "a"
19
- }, {
20
- name: "b"
21
- }]
22
- })]);
23
- expect(result).toRenderTo(d`
18
+ expect(_$createComponent(TestOutput, {
19
+ get children() {
20
+ return _$createComponent(py.CallSignatureParameters, {
21
+ parameters: [{
22
+ name: "a"
23
+ }, {
24
+ name: "b"
25
+ }]
26
+ });
27
+ }
28
+ })).toRenderTo(`
24
29
  a, b
25
30
  `);
26
31
  });
27
32
  it("renders ParameterDescriptor parameters with types", () => {
28
- const result = toSourceText([_$createComponent(py.CallSignatureParameters, {
29
- parameters: [{
30
- name: "a",
31
- type: "int"
32
- }, {
33
- name: "b",
34
- type: "str"
35
- }]
36
- })]);
37
- expect(result).toRenderTo(d`
33
+ expect(_$createComponent(TestOutput, {
34
+ get children() {
35
+ return _$createComponent(py.CallSignatureParameters, {
36
+ parameters: [{
37
+ name: "a",
38
+ type: "int"
39
+ }, {
40
+ name: "b",
41
+ type: "str"
42
+ }]
43
+ });
44
+ }
45
+ })).toRenderTo(`
38
46
  a: int, b: str
39
47
  `);
40
48
  });
41
49
  it("renders optional ParameterDescriptor parameters with types", () => {
42
- const result = toSourceText([_$createComponent(py.CallSignatureParameters, {
43
- parameters: [{
44
- name: "a",
45
- type: "int",
46
- default: null
47
- }, {
48
- name: "b",
49
- type: "str",
50
- default: null
51
- }]
52
- })]);
53
- expect(result).toRenderTo(d`
50
+ expect(_$createComponent(TestOutput, {
51
+ get children() {
52
+ return _$createComponent(py.CallSignatureParameters, {
53
+ parameters: [{
54
+ name: "a",
55
+ type: "int",
56
+ default: null
57
+ }, {
58
+ name: "b",
59
+ type: "str",
60
+ default: null
61
+ }]
62
+ });
63
+ }
64
+ })).toRenderTo(`
54
65
  a: int = None, b: str = None
55
66
  `);
56
67
  });
57
68
  it("renders optional ParameterDescriptor parameters default", () => {
58
- const result = toSourceText([_$createComponent(py.CallSignatureParameters, {
59
- parameters: [{
60
- name: "a",
61
- default: 5
62
- }, {
63
- name: "b",
64
- default: "hello"
65
- }]
66
- })]);
67
- expect(result).toRenderTo(d`
69
+ expect(_$createComponent(TestOutput, {
70
+ get children() {
71
+ return _$createComponent(py.CallSignatureParameters, {
72
+ parameters: [{
73
+ name: "a",
74
+ default: 5
75
+ }, {
76
+ name: "b",
77
+ default: "hello"
78
+ }]
79
+ });
80
+ }
81
+ })).toRenderTo(`
68
82
  a=5, b="hello"
69
83
  `);
70
84
  });
71
85
  it("renders optional ParameterDescriptor parameters with types and default", () => {
72
- const result = toSourceText([_$createComponent(py.CallSignatureParameters, {
73
- parameters: [{
74
- name: "a",
75
- type: "int",
76
- default: 5
77
- }, {
78
- name: "b",
79
- type: "str",
80
- default: "hello"
81
- }]
82
- })]);
83
- expect(result).toRenderTo(d`
86
+ expect(_$createComponent(TestOutput, {
87
+ get children() {
88
+ return _$createComponent(py.CallSignatureParameters, {
89
+ parameters: [{
90
+ name: "a",
91
+ type: "int",
92
+ default: 5
93
+ }, {
94
+ name: "b",
95
+ type: "str",
96
+ default: "hello"
97
+ }]
98
+ });
99
+ }
100
+ })).toRenderTo(`
84
101
  a: int = 5, b: str = "hello"
85
102
  `);
86
103
  });
87
104
  it("renders keyword-only parameters with * marker", () => {
88
- const result = toSourceText([_$createComponent(py.CallSignatureParameters, {
89
- parameters: [{
90
- name: "a",
91
- type: "str"
92
- }, "*", {
93
- name: "b",
94
- type: "int",
95
- default: 10
96
- }, {
97
- name: "c",
98
- type: "bool",
99
- default: true
100
- }]
101
- })]);
102
- expect(result).toRenderTo(d`
105
+ expect(_$createComponent(TestOutput, {
106
+ get children() {
107
+ return _$createComponent(py.CallSignatureParameters, {
108
+ parameters: [{
109
+ name: "a",
110
+ type: "str"
111
+ }, "*", {
112
+ name: "b",
113
+ type: "int",
114
+ default: 10
115
+ }, {
116
+ name: "c",
117
+ type: "bool",
118
+ default: true
119
+ }]
120
+ });
121
+ }
122
+ })).toRenderTo(`
103
123
  a: str, *, b: int = 10, c: bool = True
104
124
  `);
105
125
  });
106
126
  it("renders only keyword-only parameters with * marker at start", () => {
107
- const result = toSourceText([_$createComponent(py.CallSignatureParameters, {
108
- parameters: ["*", {
109
- name: "a",
110
- type: "str",
111
- default: "hello"
112
- }, {
113
- name: "b",
114
- type: "int",
115
- default: 42
116
- }]
117
- })]);
118
- expect(result).toRenderTo(d`
127
+ expect(_$createComponent(TestOutput, {
128
+ get children() {
129
+ return _$createComponent(py.CallSignatureParameters, {
130
+ parameters: ["*", {
131
+ name: "a",
132
+ type: "str",
133
+ default: "hello"
134
+ }, {
135
+ name: "b",
136
+ type: "int",
137
+ default: 42
138
+ }]
139
+ });
140
+ }
141
+ })).toRenderTo(`
119
142
  *, a: str = "hello", b: int = 42
120
143
  `);
121
144
  });
122
145
  });
123
146
  describe("Call Signature", () => {
124
147
  it("renders a call signature with strings", () => {
125
- const result = toSourceText([_$createComponent(py.CallSignature, {
126
- parameters: ["a", "b"]
127
- })]);
128
- expect(result).toRenderTo(d`
148
+ expect(_$createComponent(TestOutput, {
149
+ get children() {
150
+ return _$createComponent(py.CallSignature, {
151
+ parameters: ["a", "b"]
152
+ });
153
+ }
154
+ })).toRenderTo(`
129
155
  (a, b)
130
156
  `);
131
157
  });
132
158
  it("renders a call signature with parameter descriptors", () => {
133
- const result = toSourceText([_$createComponent(py.CallSignature, {
134
- parameters: [{
135
- name: "a"
136
- }, {
137
- name: "b"
138
- }]
139
- })]);
140
- expect(result).toRenderTo(d`
159
+ expect(_$createComponent(TestOutput, {
160
+ get children() {
161
+ return _$createComponent(py.CallSignature, {
162
+ parameters: [{
163
+ name: "a"
164
+ }, {
165
+ name: "b"
166
+ }]
167
+ });
168
+ }
169
+ })).toRenderTo(`
141
170
  (a, b)
142
171
  `);
143
172
  });
144
173
  it("renders a call signature with mixed strings and parameter descriptors", () => {
145
- const result = toSourceText([_$createComponent(py.CallSignature, {
146
- parameters: ["a", {
147
- name: "b"
148
- }]
149
- })]);
150
- expect(result).toRenderTo(d`
174
+ expect(_$createComponent(TestOutput, {
175
+ get children() {
176
+ return _$createComponent(py.CallSignature, {
177
+ parameters: ["a", {
178
+ name: "b"
179
+ }]
180
+ });
181
+ }
182
+ })).toRenderTo(`
151
183
  (a, b)
152
184
  `);
153
185
  });
154
186
  it("renders a simple call signature with args and kwargs", () => {
155
- const result = toSourceText([_$createComponent(py.CallSignature, {
156
- parameters: [{
157
- name: "a"
158
- }, {
159
- name: "b"
160
- }],
161
- args: true,
162
- kwargs: true
163
- })]);
164
- expect(result).toRenderTo(d`
187
+ expect(_$createComponent(TestOutput, {
188
+ get children() {
189
+ return _$createComponent(py.CallSignature, {
190
+ parameters: [{
191
+ name: "a"
192
+ }, {
193
+ name: "b"
194
+ }],
195
+ args: true,
196
+ kwargs: true
197
+ });
198
+ }
199
+ })).toRenderTo(`
165
200
  (a, b, *args, **kwargs)
166
201
  `);
167
202
  });
168
203
  it("renders a simple call signature with type parameters", () => {
169
- const result = toSourceText([_$createComponent(py.CallSignature, {
170
- parameters: [{
171
- name: "a"
172
- }, {
173
- name: "b"
174
- }],
175
- typeParameters: ["T", "U"]
176
- })]);
177
- expect(result).toRenderTo(d`
204
+ expect(_$createComponent(TestOutput, {
205
+ get children() {
206
+ return _$createComponent(py.CallSignature, {
207
+ parameters: [{
208
+ name: "a"
209
+ }, {
210
+ name: "b"
211
+ }],
212
+ typeParameters: ["T", "U"]
213
+ });
214
+ }
215
+ })).toRenderTo(`
178
216
  [T, U](a, b)
179
217
  `);
180
218
  });
181
219
  it("renders a simple call signature with return type", () => {
182
- const result = toSourceText([_$createComponent(py.CallSignature, {
183
- parameters: [{
184
- name: "a"
185
- }, {
186
- name: "b"
187
- }],
188
- returnType: "int"
189
- })]);
190
- expect(result).toRenderTo(d`
220
+ expect(_$createComponent(TestOutput, {
221
+ get children() {
222
+ return _$createComponent(py.CallSignature, {
223
+ parameters: [{
224
+ name: "a"
225
+ }, {
226
+ name: "b"
227
+ }],
228
+ returnType: "int"
229
+ });
230
+ }
231
+ })).toRenderTo(`
191
232
  (a, b) -> int
192
233
  `);
193
234
  });
194
235
  });
195
236
  describe("Call Signature - Parameter Descriptors", () => {
196
237
  it("renders a call signature with parameter descriptors", () => {
197
- const result = toSourceText([_$createComponent(py.CallSignature, {
198
- parameters: [{
199
- name: "a",
200
- type: "int"
201
- }, {
202
- name: "b",
203
- type: "str"
204
- }]
205
- })]);
206
- expect(result).toRenderTo(d`
238
+ expect(_$createComponent(TestOutput, {
239
+ get children() {
240
+ return _$createComponent(py.CallSignature, {
241
+ parameters: [{
242
+ name: "a",
243
+ type: "int"
244
+ }, {
245
+ name: "b",
246
+ type: "str"
247
+ }]
248
+ });
249
+ }
250
+ })).toRenderTo(`
207
251
  (a: int, b: str)
208
252
  `);
209
253
  });
210
254
  it("renders a call signature with parameter descriptors, args and kwargs", () => {
211
- const result = toSourceText([_$createComponent(py.CallSignature, {
212
- parameters: [{
213
- name: "a",
214
- type: "int"
215
- }, {
216
- name: "b",
217
- type: "str"
218
- }],
219
- args: true,
220
- kwargs: true
221
- })]);
222
- expect(result).toRenderTo(d`
255
+ expect(_$createComponent(TestOutput, {
256
+ get children() {
257
+ return _$createComponent(py.CallSignature, {
258
+ parameters: [{
259
+ name: "a",
260
+ type: "int"
261
+ }, {
262
+ name: "b",
263
+ type: "str"
264
+ }],
265
+ args: true,
266
+ kwargs: true
267
+ });
268
+ }
269
+ })).toRenderTo(`
223
270
  (a: int, b: str, *args, **kwargs)
224
271
  `);
225
272
  });
226
273
  it("renders a call signature with parameter descriptors and return type", () => {
227
- const result = toSourceText([_$createComponent(py.CallSignature, {
228
- parameters: [{
229
- name: "a",
230
- type: "int"
231
- }, {
232
- name: "b",
233
- type: "str"
234
- }],
235
- returnType: "int"
236
- })]);
237
- expect(result).toRenderTo(d`
274
+ expect(_$createComponent(TestOutput, {
275
+ get children() {
276
+ return _$createComponent(py.CallSignature, {
277
+ parameters: [{
278
+ name: "a",
279
+ type: "int"
280
+ }, {
281
+ name: "b",
282
+ type: "str"
283
+ }],
284
+ returnType: "int"
285
+ });
286
+ }
287
+ })).toRenderTo(`
238
288
  (a: int, b: str) -> int
239
289
  `);
240
290
  });
241
291
  it("renders a call signature with parameter descriptors for a class function", () => {
242
- const result = toSourceText([_$createComponent(py.CallSignature, {
243
- parameters: [{
244
- name: "a",
245
- type: "int"
246
- }, {
247
- name: "b",
248
- type: "str"
249
- }]
250
- })]);
251
- expect(result).toRenderTo(d`
292
+ expect(_$createComponent(TestOutput, {
293
+ get children() {
294
+ return _$createComponent(py.CallSignature, {
295
+ parameters: [{
296
+ name: "a",
297
+ type: "int"
298
+ }, {
299
+ name: "b",
300
+ type: "str"
301
+ }]
302
+ });
303
+ }
304
+ })).toRenderTo(`
252
305
  (a: int, b: str)
253
306
  `);
254
307
  });
255
308
  it("renders a call signature with all", () => {
256
- const result = toSourceText([_$createComponent(py.CallSignature, {
257
- parameters: [{
258
- name: "a",
259
- type: "int"
260
- }, {
261
- name: "b",
262
- type: "str"
263
- }],
264
- args: true,
265
- kwargs: true,
266
- returnType: "int"
267
- })]);
268
- expect(result).toRenderTo(d`
309
+ expect(_$createComponent(TestOutput, {
310
+ get children() {
311
+ return _$createComponent(py.CallSignature, {
312
+ parameters: [{
313
+ name: "a",
314
+ type: "int"
315
+ }, {
316
+ name: "b",
317
+ type: "str"
318
+ }],
319
+ args: true,
320
+ kwargs: true,
321
+ returnType: "int"
322
+ });
323
+ }
324
+ })).toRenderTo(`
269
325
  (a: int, b: str, *args, **kwargs) -> int
270
326
  `);
271
327
  });
272
328
  it("renders a more complex call signature with parameter descriptors", () => {
273
- const result = toSourceText([_$createComponent(py.CallSignature, {
274
- typeParameters: ["T", "U"],
275
- parameters: [{
276
- name: "a",
277
- type: "int"
278
- }, {
279
- name: "b",
280
- type: "str",
281
- default: "default_value"
282
- }],
283
- returnType: "int"
284
- })]);
285
- expect(result).toRenderTo(d`
329
+ expect(_$createComponent(TestOutput, {
330
+ get children() {
331
+ return _$createComponent(py.CallSignature, {
332
+ typeParameters: ["T", "U"],
333
+ parameters: [{
334
+ name: "a",
335
+ type: "int"
336
+ }, {
337
+ name: "b",
338
+ type: "str",
339
+ default: "default_value"
340
+ }],
341
+ returnType: "int"
342
+ });
343
+ }
344
+ })).toRenderTo(`
286
345
  [T, U](a: int, b: str = "default_value") -> int
287
346
  `);
288
347
  });
289
348
  it("renders a call signature with keyword-only parameters using * marker", () => {
290
- const result = toSourceText([_$createComponent(py.CallSignature, {
291
- parameters: [{
292
- name: "id",
293
- type: "str"
294
- }, "*", {
295
- name: "locale",
296
- type: "str",
297
- default: "en-US"
298
- }, {
299
- name: "debug",
300
- type: "bool",
301
- default: false
302
- }],
303
- returnType: "str"
304
- })]);
305
- expect(result).toRenderTo(d`
349
+ expect(_$createComponent(TestOutput, {
350
+ get children() {
351
+ return _$createComponent(py.CallSignature, {
352
+ parameters: [{
353
+ name: "id",
354
+ type: "str"
355
+ }, "*", {
356
+ name: "locale",
357
+ type: "str",
358
+ default: "en-US"
359
+ }, {
360
+ name: "debug",
361
+ type: "bool",
362
+ default: false
363
+ }],
364
+ returnType: "str"
365
+ });
366
+ }
367
+ })).toRenderTo(`
306
368
  (id: str, *, locale: str = "en-US", debug: bool = False) -> str
307
369
  `);
308
370
  });
309
371
  it("renders a call signature with only keyword-only parameters", () => {
310
- const result = toSourceText([_$createComponent(py.CallSignature, {
311
- parameters: ["*", {
312
- name: "name",
313
- type: "str",
314
- default: "alice"
315
- }, {
316
- name: "age",
317
- type: "int",
318
- default: 30
319
- }],
320
- returnType: "None"
321
- })]);
322
- expect(result).toRenderTo(d`
372
+ expect(_$createComponent(TestOutput, {
373
+ get children() {
374
+ return _$createComponent(py.CallSignature, {
375
+ parameters: ["*", {
376
+ name: "name",
377
+ type: "str",
378
+ default: "alice"
379
+ }, {
380
+ name: "age",
381
+ type: "int",
382
+ default: 30
383
+ }],
384
+ returnType: "None"
385
+ });
386
+ }
387
+ })).toRenderTo(`
323
388
  (*, name: str = "alice", age: int = 30) -> None
324
389
  `);
325
390
  });
326
391
  it("renders a call signature with positional, keyword-only, and *args/**kwargs", () => {
327
- const result = toSourceText([_$createComponent(py.CallSignature, {
328
- parameters: [{
329
- name: "a",
330
- type: "int"
331
- }, "*", {
332
- name: "b",
333
- type: "str",
334
- default: "hello"
335
- }],
336
- args: true,
337
- kwargs: true,
338
- returnType: "None"
339
- })]);
340
- expect(result).toRenderTo(d`
392
+ expect(_$createComponent(TestOutput, {
393
+ get children() {
394
+ return _$createComponent(py.CallSignature, {
395
+ parameters: [{
396
+ name: "a",
397
+ type: "int"
398
+ }, "*", {
399
+ name: "b",
400
+ type: "str",
401
+ default: "hello"
402
+ }],
403
+ args: true,
404
+ kwargs: true,
405
+ returnType: "None"
406
+ });
407
+ }
408
+ })).toRenderTo(`
341
409
  (a: int, *, b: str = "hello", *args, **kwargs) -> None
342
410
  `);
343
411
  });
344
412
  it("renders a call signature with positional-only parameters using / marker", () => {
345
- const result = toSourceText([_$createComponent(py.CallSignature, {
346
- parameters: [{
347
- name: "a",
348
- type: "int"
349
- }, {
350
- name: "b",
351
- type: "str"
352
- }, "/", {
353
- name: "c",
354
- type: "bool"
355
- }],
356
- returnType: "None"
357
- })]);
358
- expect(result).toRenderTo(d`
413
+ expect(_$createComponent(TestOutput, {
414
+ get children() {
415
+ return _$createComponent(py.CallSignature, {
416
+ parameters: [{
417
+ name: "a",
418
+ type: "int"
419
+ }, {
420
+ name: "b",
421
+ type: "str"
422
+ }, "/", {
423
+ name: "c",
424
+ type: "bool"
425
+ }],
426
+ returnType: "None"
427
+ });
428
+ }
429
+ })).toRenderTo(`
359
430
  (a: int, b: str, /, c: bool) -> None
360
431
  `);
361
432
  });
362
433
  it("renders a call signature with positional-only, regular, and keyword-only parameters", () => {
363
- const result = toSourceText([_$createComponent(py.CallSignature, {
364
- parameters: [{
365
- name: "a",
366
- type: "int"
367
- }, "/", {
368
- name: "b",
369
- type: "str"
370
- }, "*", {
371
- name: "c",
372
- type: "bool",
373
- default: true
374
- }],
375
- returnType: "None"
376
- })]);
377
- expect(result).toRenderTo(d`
434
+ expect(_$createComponent(TestOutput, {
435
+ get children() {
436
+ return _$createComponent(py.CallSignature, {
437
+ parameters: [{
438
+ name: "a",
439
+ type: "int"
440
+ }, "/", {
441
+ name: "b",
442
+ type: "str"
443
+ }, "*", {
444
+ name: "c",
445
+ type: "bool",
446
+ default: true
447
+ }],
448
+ returnType: "None"
449
+ });
450
+ }
451
+ })).toRenderTo(`
378
452
  (a: int, /, b: str, *, c: bool = True) -> None
379
453
  `);
380
454
  });