@alloy-js/python 0.5.0-dev.1 → 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 (166) hide show
  1. package/dist/dev/src/components/SourceFile.js +44 -32
  2. package/dist/dev/src/components/SourceFile.js.map +1 -1
  3. package/dist/dev/test/callsignatures.test.js +471 -297
  4. package/dist/dev/test/callsignatures.test.js.map +1 -1
  5. package/dist/dev/test/class-method-declaration.test.js +21 -10
  6. package/dist/dev/test/class-method-declaration.test.js.map +1 -1
  7. package/dist/dev/test/classdeclarations.test.js +459 -393
  8. package/dist/dev/test/classdeclarations.test.js.map +1 -1
  9. package/dist/dev/test/classinstantiations.test.js +201 -168
  10. package/dist/dev/test/classinstantiations.test.js.map +1 -1
  11. package/dist/dev/test/constructordeclaration.test.js +22 -11
  12. package/dist/dev/test/constructordeclaration.test.js.map +1 -1
  13. package/dist/dev/test/dataclassdeclarations.test.js +322 -368
  14. package/dist/dev/test/dataclassdeclarations.test.js.map +1 -1
  15. package/dist/dev/test/decoratorlist.test.js +96 -49
  16. package/dist/dev/test/decoratorlist.test.js.map +1 -1
  17. package/dist/dev/test/dundermethoddeclaration.test.js +22 -11
  18. package/dist/dev/test/dundermethoddeclaration.test.js.map +1 -1
  19. package/dist/dev/test/enums.test.js +218 -184
  20. package/dist/dev/test/enums.test.js.map +1 -1
  21. package/dist/dev/test/externals.test.js +57 -45
  22. package/dist/dev/test/externals.test.js.map +1 -1
  23. package/dist/dev/test/factories.test.js +124 -50
  24. package/dist/dev/test/factories.test.js.map +1 -1
  25. package/dist/dev/test/functioncallexpressions.test.js +199 -164
  26. package/dist/dev/test/functioncallexpressions.test.js.map +1 -1
  27. package/dist/dev/test/functiondeclaration.test.js +439 -272
  28. package/dist/dev/test/functiondeclaration.test.js.map +1 -1
  29. package/dist/dev/test/imports.test.js +273 -221
  30. package/dist/dev/test/imports.test.js.map +1 -1
  31. package/dist/dev/test/memberexpressions.test.js +1237 -972
  32. package/dist/dev/test/memberexpressions.test.js.map +1 -1
  33. package/dist/dev/test/methoddeclaration.test.js +142 -78
  34. package/dist/dev/test/methoddeclaration.test.js.map +1 -1
  35. package/dist/dev/test/namepolicies.test.js +130 -94
  36. package/dist/dev/test/namepolicies.test.js.map +1 -1
  37. package/dist/dev/test/propertydeclaration.test.js +88 -59
  38. package/dist/dev/test/propertydeclaration.test.js.map +1 -1
  39. package/dist/dev/test/pydanticclassdeclarations.test.js +299 -347
  40. package/dist/dev/test/pydanticclassdeclarations.test.js.map +1 -1
  41. package/dist/dev/test/pydocs.test.js +888 -715
  42. package/dist/dev/test/pydocs.test.js.map +1 -1
  43. package/dist/dev/test/references.test.js +42 -35
  44. package/dist/dev/test/references.test.js.map +1 -1
  45. package/dist/dev/test/sourcefiles.test.js +1109 -841
  46. package/dist/dev/test/sourcefiles.test.js.map +1 -1
  47. package/dist/dev/test/staticmethoddeclaration.test.js +21 -10
  48. package/dist/dev/test/staticmethoddeclaration.test.js.map +1 -1
  49. package/dist/dev/test/type-checking-imports.test.js +408 -359
  50. package/dist/dev/test/type-checking-imports.test.js.map +1 -1
  51. package/dist/dev/test/typereference.test.js +55 -40
  52. package/dist/dev/test/typereference.test.js.map +1 -1
  53. package/dist/dev/test/uniontypeexpression.test.js +222 -146
  54. package/dist/dev/test/uniontypeexpression.test.js.map +1 -1
  55. package/dist/dev/test/utils.js +39 -77
  56. package/dist/dev/test/utils.js.map +1 -1
  57. package/dist/dev/test/values.test.js +237 -101
  58. package/dist/dev/test/values.test.js.map +1 -1
  59. package/dist/dev/test/variables.test.js +321 -203
  60. package/dist/dev/test/variables.test.js.map +1 -1
  61. package/dist/dev/test/vitest.setup.js +2 -0
  62. package/dist/dev/test/vitest.setup.js.map +1 -0
  63. package/dist/src/components/SourceFile.d.ts +2 -2
  64. package/dist/src/components/SourceFile.d.ts.map +1 -1
  65. package/dist/src/components/SourceFile.js +12 -0
  66. package/dist/src/components/SourceFile.js.map +1 -1
  67. package/dist/test/callsignatures.test.js +346 -272
  68. package/dist/test/callsignatures.test.js.map +1 -1
  69. package/dist/test/class-method-declaration.test.js +7 -4
  70. package/dist/test/class-method-declaration.test.js.map +1 -1
  71. package/dist/test/classdeclarations.test.js +302 -288
  72. package/dist/test/classdeclarations.test.js.map +1 -1
  73. package/dist/test/classinstantiations.test.js +112 -103
  74. package/dist/test/classinstantiations.test.js.map +1 -1
  75. package/dist/test/constructordeclaration.test.js +7 -4
  76. package/dist/test/constructordeclaration.test.js.map +1 -1
  77. package/dist/test/dataclassdeclarations.test.js +134 -184
  78. package/dist/test/dataclassdeclarations.test.js.map +1 -1
  79. package/dist/test/decoratorlist.test.js +59 -36
  80. package/dist/test/decoratorlist.test.js.map +1 -1
  81. package/dist/test/dundermethoddeclaration.test.js +7 -4
  82. package/dist/test/dundermethoddeclaration.test.js.map +1 -1
  83. package/dist/test/enums.test.js +161 -159
  84. package/dist/test/enums.test.js.map +1 -1
  85. package/dist/test/externals.test.js +24 -24
  86. package/dist/test/externals.test.js.map +1 -1
  87. package/dist/test/factories.test.js +75 -33
  88. package/dist/test/factories.test.js.map +1 -1
  89. package/dist/test/functioncallexpressions.test.js +117 -106
  90. package/dist/test/functioncallexpressions.test.js.map +1 -1
  91. package/dist/test/functiondeclaration.test.js +247 -180
  92. package/dist/test/functiondeclaration.test.js.map +1 -1
  93. package/dist/test/imports.test.js +171 -143
  94. package/dist/test/imports.test.js.map +1 -1
  95. package/dist/test/memberexpressions.test.js +582 -453
  96. package/dist/test/memberexpressions.test.js.map +1 -1
  97. package/dist/test/methoddeclaration.test.js +66 -46
  98. package/dist/test/methoddeclaration.test.js.map +1 -1
  99. package/dist/test/namepolicies.test.js +90 -78
  100. package/dist/test/namepolicies.test.js.map +1 -1
  101. package/dist/test/propertydeclaration.test.js +25 -20
  102. package/dist/test/propertydeclaration.test.js.map +1 -1
  103. package/dist/test/pydanticclassdeclarations.test.js +134 -190
  104. package/dist/test/pydanticclassdeclarations.test.js.map +1 -1
  105. package/dist/test/pydocs.test.js +573 -532
  106. package/dist/test/pydocs.test.js.map +1 -1
  107. package/dist/test/references.test.js +31 -28
  108. package/dist/test/references.test.js.map +1 -1
  109. package/dist/test/sourcefiles.test.js +700 -580
  110. package/dist/test/sourcefiles.test.js.map +1 -1
  111. package/dist/test/staticmethoddeclaration.test.js +7 -4
  112. package/dist/test/staticmethoddeclaration.test.js.map +1 -1
  113. package/dist/test/type-checking-imports.test.js +297 -284
  114. package/dist/test/type-checking-imports.test.js.map +1 -1
  115. package/dist/test/typereference.test.js +29 -22
  116. package/dist/test/typereference.test.js.map +1 -1
  117. package/dist/test/uniontypeexpression.test.js +124 -88
  118. package/dist/test/uniontypeexpression.test.js.map +1 -1
  119. package/dist/test/utils.d.ts +10 -17
  120. package/dist/test/utils.d.ts.map +1 -1
  121. package/dist/test/utils.js +32 -74
  122. package/dist/test/utils.js.map +1 -1
  123. package/dist/test/values.test.js +135 -67
  124. package/dist/test/values.test.js.map +1 -1
  125. package/dist/test/variables.test.js +201 -151
  126. package/dist/test/variables.test.js.map +1 -1
  127. package/dist/test/vitest.setup.d.ts +2 -0
  128. package/dist/test/vitest.setup.d.ts.map +1 -0
  129. package/dist/test/vitest.setup.js +2 -0
  130. package/dist/test/vitest.setup.js.map +1 -0
  131. package/dist/tsconfig.tsbuildinfo +1 -1
  132. package/docs/api/components/SourceFile.md +20 -8
  133. package/package.json +2 -2
  134. package/src/components/SourceFile.tsx +6 -1
  135. package/temp/api.json +16 -2
  136. package/test/callsignatures.test.tsx +309 -283
  137. package/test/class-method-declaration.test.tsx +3 -4
  138. package/test/classdeclarations.test.tsx +263 -248
  139. package/test/classinstantiations.test.tsx +115 -109
  140. package/test/constructordeclaration.test.tsx +9 -6
  141. package/test/dataclassdeclarations.test.tsx +243 -361
  142. package/test/decoratorlist.test.tsx +78 -59
  143. package/test/dundermethoddeclaration.test.tsx +3 -4
  144. package/test/enums.test.tsx +65 -81
  145. package/test/externals.test.tsx +25 -25
  146. package/test/factories.test.tsx +64 -22
  147. package/test/functioncallexpressions.test.tsx +123 -109
  148. package/test/functiondeclaration.test.tsx +209 -148
  149. package/test/imports.test.tsx +119 -91
  150. package/test/memberexpressions.test.tsx +265 -207
  151. package/test/methoddeclaration.test.tsx +84 -63
  152. package/test/namepolicies.test.tsx +69 -69
  153. package/test/propertydeclaration.test.tsx +7 -8
  154. package/test/pydanticclassdeclarations.test.tsx +355 -487
  155. package/test/pydocs.test.tsx +531 -579
  156. package/test/references.test.tsx +24 -23
  157. package/test/sourcefiles.test.tsx +527 -492
  158. package/test/staticmethoddeclaration.test.tsx +3 -4
  159. package/test/type-checking-imports.test.tsx +206 -218
  160. package/test/typereference.test.tsx +15 -12
  161. package/test/uniontypeexpression.test.tsx +74 -61
  162. package/test/utils.tsx +26 -110
  163. package/test/values.test.tsx +82 -32
  164. package/test/variables.test.tsx +162 -142
  165. package/test/vitest.setup.ts +1 -0
  166. package/vitest.config.ts +3 -0
@@ -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
  });