@alloy-js/python 0.5.0-dev.1 → 0.5.0

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 (217) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/dev/src/components/CallSignature.js +2 -2
  3. package/dist/dev/src/components/CallSignature.js.map +1 -1
  4. package/dist/dev/src/components/ConstructorDeclaration.js +1 -1
  5. package/dist/dev/src/components/ConstructorDeclaration.js.map +1 -1
  6. package/dist/dev/src/components/DataclassDeclaration.js +5 -5
  7. package/dist/dev/src/components/DataclassDeclaration.js.map +1 -1
  8. package/dist/dev/src/components/FunctionBase.js +9 -9
  9. package/dist/dev/src/components/FunctionBase.js.map +1 -1
  10. package/dist/dev/src/components/PropertyDeclaration.js +8 -8
  11. package/dist/dev/src/components/PropertyDeclaration.js.map +1 -1
  12. package/dist/dev/src/components/PyDoc.js +64 -64
  13. package/dist/dev/src/components/PyDoc.js.map +1 -1
  14. package/dist/dev/src/components/PydanticClassDeclaration.js +5 -5
  15. package/dist/dev/src/components/PydanticClassDeclaration.js.map +1 -1
  16. package/dist/dev/src/components/SourceFile.js +44 -32
  17. package/dist/dev/src/components/SourceFile.js.map +1 -1
  18. package/dist/dev/src/symbols/python-output-symbol.js.map +1 -1
  19. package/dist/dev/test/callsignatures.test.js +471 -297
  20. package/dist/dev/test/callsignatures.test.js.map +1 -1
  21. package/dist/dev/test/class-method-declaration.test.js +21 -10
  22. package/dist/dev/test/class-method-declaration.test.js.map +1 -1
  23. package/dist/dev/test/classdeclarations.test.js +459 -393
  24. package/dist/dev/test/classdeclarations.test.js.map +1 -1
  25. package/dist/dev/test/classinstantiations.test.js +201 -168
  26. package/dist/dev/test/classinstantiations.test.js.map +1 -1
  27. package/dist/dev/test/constructordeclaration.test.js +22 -11
  28. package/dist/dev/test/constructordeclaration.test.js.map +1 -1
  29. package/dist/dev/test/dataclassdeclarations.test.js +322 -368
  30. package/dist/dev/test/dataclassdeclarations.test.js.map +1 -1
  31. package/dist/dev/test/decoratorlist.test.js +96 -49
  32. package/dist/dev/test/decoratorlist.test.js.map +1 -1
  33. package/dist/dev/test/dundermethoddeclaration.test.js +22 -11
  34. package/dist/dev/test/dundermethoddeclaration.test.js.map +1 -1
  35. package/dist/dev/test/enums.test.js +218 -184
  36. package/dist/dev/test/enums.test.js.map +1 -1
  37. package/dist/dev/test/externals.test.js +57 -45
  38. package/dist/dev/test/externals.test.js.map +1 -1
  39. package/dist/dev/test/factories.test.js +124 -50
  40. package/dist/dev/test/factories.test.js.map +1 -1
  41. package/dist/dev/test/functioncallexpressions.test.js +199 -164
  42. package/dist/dev/test/functioncallexpressions.test.js.map +1 -1
  43. package/dist/dev/test/functiondeclaration.test.js +439 -272
  44. package/dist/dev/test/functiondeclaration.test.js.map +1 -1
  45. package/dist/dev/test/imports.test.js +273 -221
  46. package/dist/dev/test/imports.test.js.map +1 -1
  47. package/dist/dev/test/memberexpressions.test.js +1237 -972
  48. package/dist/dev/test/memberexpressions.test.js.map +1 -1
  49. package/dist/dev/test/methoddeclaration.test.js +142 -78
  50. package/dist/dev/test/methoddeclaration.test.js.map +1 -1
  51. package/dist/dev/test/namepolicies.test.js +130 -94
  52. package/dist/dev/test/namepolicies.test.js.map +1 -1
  53. package/dist/dev/test/propertydeclaration.test.js +88 -59
  54. package/dist/dev/test/propertydeclaration.test.js.map +1 -1
  55. package/dist/dev/test/pydanticclassdeclarations.test.js +299 -347
  56. package/dist/dev/test/pydanticclassdeclarations.test.js.map +1 -1
  57. package/dist/dev/test/pydocs.test.js +888 -715
  58. package/dist/dev/test/pydocs.test.js.map +1 -1
  59. package/dist/dev/test/references.test.js +42 -35
  60. package/dist/dev/test/references.test.js.map +1 -1
  61. package/dist/dev/test/sourcefiles.test.js +1109 -841
  62. package/dist/dev/test/sourcefiles.test.js.map +1 -1
  63. package/dist/dev/test/staticmethoddeclaration.test.js +21 -10
  64. package/dist/dev/test/staticmethoddeclaration.test.js.map +1 -1
  65. package/dist/dev/test/type-checking-imports.test.js +408 -359
  66. package/dist/dev/test/type-checking-imports.test.js.map +1 -1
  67. package/dist/dev/test/typereference.test.js +55 -40
  68. package/dist/dev/test/typereference.test.js.map +1 -1
  69. package/dist/dev/test/uniontypeexpression.test.js +222 -146
  70. package/dist/dev/test/uniontypeexpression.test.js.map +1 -1
  71. package/dist/dev/test/utils.js +39 -77
  72. package/dist/dev/test/utils.js.map +1 -1
  73. package/dist/dev/test/values.test.js +237 -101
  74. package/dist/dev/test/values.test.js.map +1 -1
  75. package/dist/dev/test/variables.test.js +321 -203
  76. package/dist/dev/test/variables.test.js.map +1 -1
  77. package/dist/dev/test/vitest.setup.js +2 -0
  78. package/dist/dev/test/vitest.setup.js.map +1 -0
  79. package/dist/src/components/CallSignature.d.ts.map +1 -1
  80. package/dist/src/components/CallSignature.js.map +1 -1
  81. package/dist/src/components/ConstructorDeclaration.d.ts.map +1 -1
  82. package/dist/src/components/ConstructorDeclaration.js.map +1 -1
  83. package/dist/src/components/DataclassDeclaration.d.ts.map +1 -1
  84. package/dist/src/components/DataclassDeclaration.js.map +1 -1
  85. package/dist/src/components/FunctionBase.d.ts.map +1 -1
  86. package/dist/src/components/FunctionBase.js.map +1 -1
  87. package/dist/src/components/PropertyDeclaration.d.ts.map +1 -1
  88. package/dist/src/components/PropertyDeclaration.js.map +1 -1
  89. package/dist/src/components/PyDoc.d.ts.map +1 -1
  90. package/dist/src/components/PyDoc.js.map +1 -1
  91. package/dist/src/components/PydanticClassDeclaration.d.ts.map +1 -1
  92. package/dist/src/components/PydanticClassDeclaration.js.map +1 -1
  93. package/dist/src/components/SourceFile.d.ts +2 -2
  94. package/dist/src/components/SourceFile.d.ts.map +1 -1
  95. package/dist/src/components/SourceFile.js +12 -0
  96. package/dist/src/components/SourceFile.js.map +1 -1
  97. package/dist/src/symbols/python-output-symbol.d.ts.map +1 -1
  98. package/dist/src/symbols/python-output-symbol.js.map +1 -1
  99. package/dist/test/callsignatures.test.js +346 -272
  100. package/dist/test/callsignatures.test.js.map +1 -1
  101. package/dist/test/class-method-declaration.test.js +7 -4
  102. package/dist/test/class-method-declaration.test.js.map +1 -1
  103. package/dist/test/classdeclarations.test.js +302 -288
  104. package/dist/test/classdeclarations.test.js.map +1 -1
  105. package/dist/test/classinstantiations.test.js +112 -103
  106. package/dist/test/classinstantiations.test.js.map +1 -1
  107. package/dist/test/constructordeclaration.test.js +7 -4
  108. package/dist/test/constructordeclaration.test.js.map +1 -1
  109. package/dist/test/dataclassdeclarations.test.js +134 -184
  110. package/dist/test/dataclassdeclarations.test.js.map +1 -1
  111. package/dist/test/decoratorlist.test.js +59 -36
  112. package/dist/test/decoratorlist.test.js.map +1 -1
  113. package/dist/test/dundermethoddeclaration.test.js +7 -4
  114. package/dist/test/dundermethoddeclaration.test.js.map +1 -1
  115. package/dist/test/enums.test.js +161 -159
  116. package/dist/test/enums.test.js.map +1 -1
  117. package/dist/test/externals.test.js +24 -24
  118. package/dist/test/externals.test.js.map +1 -1
  119. package/dist/test/factories.test.js +75 -33
  120. package/dist/test/factories.test.js.map +1 -1
  121. package/dist/test/functioncallexpressions.test.js +117 -106
  122. package/dist/test/functioncallexpressions.test.js.map +1 -1
  123. package/dist/test/functiondeclaration.test.js +247 -180
  124. package/dist/test/functiondeclaration.test.js.map +1 -1
  125. package/dist/test/imports.test.js +171 -143
  126. package/dist/test/imports.test.js.map +1 -1
  127. package/dist/test/memberexpressions.test.js +582 -453
  128. package/dist/test/memberexpressions.test.js.map +1 -1
  129. package/dist/test/methoddeclaration.test.js +66 -46
  130. package/dist/test/methoddeclaration.test.js.map +1 -1
  131. package/dist/test/namepolicies.test.js +90 -78
  132. package/dist/test/namepolicies.test.js.map +1 -1
  133. package/dist/test/propertydeclaration.test.js +25 -20
  134. package/dist/test/propertydeclaration.test.js.map +1 -1
  135. package/dist/test/pydanticclassdeclarations.test.js +134 -190
  136. package/dist/test/pydanticclassdeclarations.test.js.map +1 -1
  137. package/dist/test/pydocs.test.js +573 -532
  138. package/dist/test/pydocs.test.js.map +1 -1
  139. package/dist/test/references.test.js +31 -28
  140. package/dist/test/references.test.js.map +1 -1
  141. package/dist/test/sourcefiles.test.js +700 -580
  142. package/dist/test/sourcefiles.test.js.map +1 -1
  143. package/dist/test/staticmethoddeclaration.test.js +7 -4
  144. package/dist/test/staticmethoddeclaration.test.js.map +1 -1
  145. package/dist/test/type-checking-imports.test.js +297 -284
  146. package/dist/test/type-checking-imports.test.js.map +1 -1
  147. package/dist/test/typereference.test.js +29 -22
  148. package/dist/test/typereference.test.js.map +1 -1
  149. package/dist/test/uniontypeexpression.test.js +124 -88
  150. package/dist/test/uniontypeexpression.test.js.map +1 -1
  151. package/dist/test/utils.d.ts +10 -17
  152. package/dist/test/utils.d.ts.map +1 -1
  153. package/dist/test/utils.js +32 -74
  154. package/dist/test/utils.js.map +1 -1
  155. package/dist/test/values.test.js +135 -67
  156. package/dist/test/values.test.js.map +1 -1
  157. package/dist/test/variables.test.js +201 -151
  158. package/dist/test/variables.test.js.map +1 -1
  159. package/dist/test/vitest.setup.d.ts +2 -0
  160. package/dist/test/vitest.setup.d.ts.map +1 -0
  161. package/dist/test/vitest.setup.js +2 -0
  162. package/dist/test/vitest.setup.js.map +1 -0
  163. package/dist/tsconfig.tsbuildinfo +1 -1
  164. package/docs/api/components/FunctionalEnumDeclaration.md +3 -6
  165. package/docs/api/components/MemberExpression.md +1 -5
  166. package/docs/api/components/SourceFile.md +20 -8
  167. package/docs/api/components/index.md +0 -2
  168. package/docs/api/functions/isTypeRefContext.md +1 -1
  169. package/docs/api/index.md +2 -2
  170. package/docs/api/types/ReferenceProps.md +7 -0
  171. package/docs/api/types/TypeRefContextProps.md +7 -0
  172. package/docs/api/types/index.md +2 -0
  173. package/package.json +11 -10
  174. package/src/components/CallSignature.tsx +4 -2
  175. package/src/components/ConstructorDeclaration.tsx +4 -2
  176. package/src/components/DataclassDeclaration.tsx +1 -2
  177. package/src/components/FunctionBase.tsx +1 -2
  178. package/src/components/PropertyDeclaration.tsx +8 -4
  179. package/src/components/PyDoc.tsx +12 -6
  180. package/src/components/PydanticClassDeclaration.tsx +1 -2
  181. package/src/components/SourceFile.tsx +6 -1
  182. package/src/symbols/python-output-symbol.ts +1 -2
  183. package/temp/api.json +107 -61
  184. package/test/callsignatures.test.tsx +309 -283
  185. package/test/class-method-declaration.test.tsx +3 -4
  186. package/test/classdeclarations.test.tsx +263 -248
  187. package/test/classinstantiations.test.tsx +115 -109
  188. package/test/constructordeclaration.test.tsx +9 -6
  189. package/test/dataclassdeclarations.test.tsx +243 -361
  190. package/test/decoratorlist.test.tsx +78 -59
  191. package/test/dundermethoddeclaration.test.tsx +3 -4
  192. package/test/enums.test.tsx +65 -81
  193. package/test/externals.test.tsx +25 -25
  194. package/test/factories.test.tsx +64 -22
  195. package/test/functioncallexpressions.test.tsx +123 -109
  196. package/test/functiondeclaration.test.tsx +209 -148
  197. package/test/imports.test.tsx +119 -91
  198. package/test/memberexpressions.test.tsx +265 -207
  199. package/test/methoddeclaration.test.tsx +84 -63
  200. package/test/namepolicies.test.tsx +69 -69
  201. package/test/propertydeclaration.test.tsx +7 -8
  202. package/test/pydanticclassdeclarations.test.tsx +355 -487
  203. package/test/pydocs.test.tsx +531 -579
  204. package/test/references.test.tsx +24 -23
  205. package/test/sourcefiles.test.tsx +527 -492
  206. package/test/staticmethoddeclaration.test.tsx +3 -4
  207. package/test/type-checking-imports.test.tsx +206 -218
  208. package/test/typereference.test.tsx +15 -12
  209. package/test/uniontypeexpression.test.tsx +74 -61
  210. package/test/utils.tsx +26 -110
  211. package/test/values.test.tsx +82 -32
  212. package/test/variables.test.tsx +162 -142
  213. package/test/vitest.setup.ts +1 -0
  214. package/tsdoc-metadata.json +1 -1
  215. package/vitest.config.ts +4 -0
  216. package/docs/api/components/Reference.md +0 -31
  217. package/docs/api/components/TypeRefContext.md +0 -41
@@ -1,33 +1,33 @@
1
1
  import { refkey } from "@alloy-js/core";
2
- import { d } from "@alloy-js/core/testing";
3
2
  import { expect, it } from "vitest";
4
3
  import { createModule } from "../src/create-module.js";
5
4
  import * as py from "../src/index.js";
6
- import { toSourceText } from "./utils.jsx";
5
+ import { TestOutput } from "./utils.js";
7
6
 
8
7
  it("declaration of class instance with variables", () => {
9
- // Creating the reference separately so the naming policy doesn't interfere
10
8
  const classRef = refkey();
11
- const result = toSourceText([
12
- <py.StatementList>
13
- <py.ClassDeclaration name="one-class" refkey={classRef} />
14
- <py.ClassInstantiation
15
- target={classRef}
16
- args={[
17
- <py.Atom jsValue={"A name"} />,
18
- <py.Atom jsValue={42} />,
19
- <py.Atom jsValue={true} />,
20
- ]}
21
- />
22
- </py.StatementList>,
23
- ]);
24
- const expected = d`
9
+ expect(
10
+ <TestOutput>
11
+ <py.StatementList>
12
+ <py.ClassDeclaration name="one-class" refkey={classRef} />
13
+ <py.ClassInstantiation
14
+ target={classRef}
15
+ args={[
16
+ <py.Atom jsValue={"A name"} />,
17
+ <py.Atom jsValue={42} />,
18
+ <py.Atom jsValue={true} />,
19
+ ]}
20
+ />
21
+ </py.StatementList>
22
+ </TestOutput>,
23
+ ).toRenderTo(
24
+ `
25
25
  class OneClass:
26
26
  pass
27
27
 
28
28
  OneClass("A name", 42, True)
29
- `;
30
- expect(result).toRenderTo(expected);
29
+ `,
30
+ );
31
31
  });
32
32
 
33
33
  it("correct resolving of external module", () => {
@@ -37,114 +37,120 @@ it("correct resolving of external module", () => {
37
37
  models: ["Request"],
38
38
  },
39
39
  });
40
- const result = toSourceText(
41
- [
40
+ expect(
41
+ <TestOutput externals={[requestsLib]}>
42
42
  <py.StatementList>
43
43
  <py.ClassInstantiation target={requestsLib["models"].Request} />
44
- </py.StatementList>,
45
- ],
46
- { externals: [requestsLib] },
47
- );
48
- const expected = d`
44
+ </py.StatementList>
45
+ </TestOutput>,
46
+ ).toRenderTo(
47
+ `
49
48
  from requests.models import Request
50
49
 
51
50
  Request()
52
- `;
53
- expect(result).toRenderTo(expected);
51
+ `,
52
+ );
54
53
  });
55
54
 
56
55
  it("Class instantiation without a reference", () => {
57
- const result = toSourceText([
58
- <py.StatementList>
59
- <py.ClassInstantiation
60
- target={"ExampleClass"}
61
- args={[
62
- <py.Atom jsValue={"A name"} />,
63
- <py.Atom jsValue={42} />,
64
- <py.Atom jsValue={true} />,
65
- ]}
66
- />
67
- </py.StatementList>,
68
- ]);
69
- const expected = d`
56
+ expect(
57
+ <TestOutput>
58
+ <py.StatementList>
59
+ <py.ClassInstantiation
60
+ target={"ExampleClass"}
61
+ args={[
62
+ <py.Atom jsValue={"A name"} />,
63
+ <py.Atom jsValue={42} />,
64
+ <py.Atom jsValue={true} />,
65
+ ]}
66
+ />
67
+ </py.StatementList>
68
+ </TestOutput>,
69
+ ).toRenderTo(
70
+ `
70
71
  ExampleClass("A name", 42, True)
71
- `;
72
- expect(result).toRenderTo(expected);
72
+ `,
73
+ );
73
74
  });
74
75
 
75
76
  it("Class instantiation without a reference and with call statement vars", () => {
76
- const result = toSourceText([
77
- <py.StatementList>
78
- <py.ClassInstantiation
79
- target={"ExampleClass"}
80
- args={[
81
- <py.VariableDeclaration
82
- name="name"
83
- initializer={"A name"}
84
- callStatementVar
85
- />,
86
- <py.VariableDeclaration
87
- name="number"
88
- initializer={42}
89
- callStatementVar
90
- />,
91
- <py.VariableDeclaration
92
- name="flag"
93
- initializer={true}
94
- callStatementVar
95
- />,
96
- ]}
97
- />
98
- </py.StatementList>,
99
- ]);
100
- const expected = d`
77
+ expect(
78
+ <TestOutput>
79
+ <py.StatementList>
80
+ <py.ClassInstantiation
81
+ target={"ExampleClass"}
82
+ args={[
83
+ <py.VariableDeclaration
84
+ name="name"
85
+ initializer={"A name"}
86
+ callStatementVar
87
+ />,
88
+ <py.VariableDeclaration
89
+ name="number"
90
+ initializer={42}
91
+ callStatementVar
92
+ />,
93
+ <py.VariableDeclaration
94
+ name="flag"
95
+ initializer={true}
96
+ callStatementVar
97
+ />,
98
+ ]}
99
+ />
100
+ </py.StatementList>
101
+ </TestOutput>,
102
+ ).toRenderTo(
103
+ `
101
104
  ExampleClass(name="A name", number=42, flag=True)
102
- `;
103
- expect(result).toRenderTo(expected);
105
+ `,
106
+ );
104
107
  });
105
108
 
106
109
  it("Class instantiation without a reference mixing unnamed and named vars", () => {
107
- const result = toSourceText([
108
- <py.StatementList>
109
- <py.ClassInstantiation
110
- target={"ExampleClass"}
111
- args={[
112
- <py.Atom jsValue={"A name"} />,
113
- <py.VariableDeclaration
114
- name="number"
115
- initializer={42}
116
- callStatementVar
117
- />,
118
- <py.VariableDeclaration
119
- name="flag"
120
- initializer={true}
121
- callStatementVar
122
- />,
123
- ]}
124
- />
125
- </py.StatementList>,
126
- ]);
127
- const expected = d`
110
+ expect(
111
+ <TestOutput>
112
+ <py.StatementList>
113
+ <py.ClassInstantiation
114
+ target={"ExampleClass"}
115
+ args={[
116
+ <py.Atom jsValue={"A name"} />,
117
+ <py.VariableDeclaration
118
+ name="number"
119
+ initializer={42}
120
+ callStatementVar
121
+ />,
122
+ <py.VariableDeclaration
123
+ name="flag"
124
+ initializer={true}
125
+ callStatementVar
126
+ />,
127
+ ]}
128
+ />
129
+ </py.StatementList>
130
+ </TestOutput>,
131
+ ).toRenderTo(
132
+ `
128
133
  ExampleClass("A name", number=42, flag=True)
129
- `;
130
- expect(result).toRenderTo(expected);
134
+ `,
135
+ );
131
136
  });
132
137
 
133
138
  it("incorrect Class instantiation works", () => {
134
- const result = toSourceText([
135
- <py.ClassInstantiation
136
- target="MyClass"
137
- args={[
138
- <py.ClassDeclaration name="NestedClass" />,
139
- <py.FunctionDeclaration name="myFunc" />,
140
- <py.StatementList>
141
- <py.VariableDeclaration name="x" />
142
- </py.StatementList>,
143
- ]}
144
- />,
145
- ]);
146
-
147
- const expected = d`
139
+ expect(
140
+ <TestOutput>
141
+ <py.ClassInstantiation
142
+ target="MyClass"
143
+ args={[
144
+ <py.ClassDeclaration name="NestedClass" />,
145
+ <py.FunctionDeclaration name="myFunc" />,
146
+ <py.StatementList>
147
+ <py.VariableDeclaration name="x" />
148
+ </py.StatementList>,
149
+ ]}
150
+ />
151
+ </TestOutput>,
152
+ ).toRenderTo(
153
+ `
148
154
  MyClass(
149
155
  class NestedClass:
150
156
  pass
@@ -154,6 +160,6 @@ it("incorrect Class instantiation works", () => {
154
160
  ,
155
161
  x = None
156
162
  )
157
- `;
158
- expect(result).toRenderTo(expected);
163
+ `,
164
+ );
159
165
  });
@@ -1,7 +1,6 @@
1
- import { d } from "@alloy-js/core/testing";
2
1
  import { describe, expect, it } from "vitest";
3
2
  import * as py from "../src/index.js";
4
- import { toSourceText } from "./utils.js";
3
+ import { TestOutput } from "./utils.js";
5
4
 
6
5
  describe("ConstructorDeclaration", () => {
7
6
  it("renders async constructor with return type", () => {
@@ -17,13 +16,15 @@ describe("ConstructorDeclaration", () => {
17
16
  </py.StatementList>
18
17
  );
19
18
 
20
- expect(toSourceText([decl])).toBe(d`
19
+ expect(<TestOutput>{decl}</TestOutput>).toRenderTo(
20
+ `
21
21
  class MyClass:
22
22
  async def __new__(cls) -> MyClass:
23
23
  return super().__new__(cls)
24
24
 
25
25
 
26
- `);
26
+ `,
27
+ );
27
28
  });
28
29
 
29
30
  it("renders __new__ with spread args", () => {
@@ -37,12 +38,14 @@ describe("ConstructorDeclaration", () => {
37
38
  </py.ClassDeclaration>
38
39
  );
39
40
 
40
- expect(toSourceText([decl])).toBe(d`
41
+ expect(<TestOutput>{decl}</TestOutput>).toRenderTo(
42
+ `
41
43
  class MyClass:
42
44
  def __new__(cls, *args, **kwargs):
43
45
  pass
44
46
 
45
47
 
46
- `);
48
+ `,
49
+ );
47
50
  });
48
51
  });