@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.
- package/dist/dev/src/components/SourceFile.js +44 -32
- package/dist/dev/src/components/SourceFile.js.map +1 -1
- package/dist/dev/test/callsignatures.test.js +471 -297
- package/dist/dev/test/callsignatures.test.js.map +1 -1
- package/dist/dev/test/class-method-declaration.test.js +21 -10
- package/dist/dev/test/class-method-declaration.test.js.map +1 -1
- package/dist/dev/test/classdeclarations.test.js +459 -393
- package/dist/dev/test/classdeclarations.test.js.map +1 -1
- package/dist/dev/test/classinstantiations.test.js +201 -168
- package/dist/dev/test/classinstantiations.test.js.map +1 -1
- package/dist/dev/test/constructordeclaration.test.js +22 -11
- package/dist/dev/test/constructordeclaration.test.js.map +1 -1
- package/dist/dev/test/dataclassdeclarations.test.js +322 -368
- package/dist/dev/test/dataclassdeclarations.test.js.map +1 -1
- package/dist/dev/test/decoratorlist.test.js +96 -49
- package/dist/dev/test/decoratorlist.test.js.map +1 -1
- package/dist/dev/test/dundermethoddeclaration.test.js +22 -11
- package/dist/dev/test/dundermethoddeclaration.test.js.map +1 -1
- package/dist/dev/test/enums.test.js +218 -184
- package/dist/dev/test/enums.test.js.map +1 -1
- package/dist/dev/test/externals.test.js +57 -45
- package/dist/dev/test/externals.test.js.map +1 -1
- package/dist/dev/test/factories.test.js +124 -50
- package/dist/dev/test/factories.test.js.map +1 -1
- package/dist/dev/test/functioncallexpressions.test.js +199 -164
- package/dist/dev/test/functioncallexpressions.test.js.map +1 -1
- package/dist/dev/test/functiondeclaration.test.js +439 -272
- package/dist/dev/test/functiondeclaration.test.js.map +1 -1
- package/dist/dev/test/imports.test.js +273 -221
- package/dist/dev/test/imports.test.js.map +1 -1
- package/dist/dev/test/memberexpressions.test.js +1237 -972
- package/dist/dev/test/memberexpressions.test.js.map +1 -1
- package/dist/dev/test/methoddeclaration.test.js +142 -78
- package/dist/dev/test/methoddeclaration.test.js.map +1 -1
- package/dist/dev/test/namepolicies.test.js +130 -94
- package/dist/dev/test/namepolicies.test.js.map +1 -1
- package/dist/dev/test/propertydeclaration.test.js +88 -59
- package/dist/dev/test/propertydeclaration.test.js.map +1 -1
- package/dist/dev/test/pydanticclassdeclarations.test.js +299 -347
- package/dist/dev/test/pydanticclassdeclarations.test.js.map +1 -1
- package/dist/dev/test/pydocs.test.js +888 -715
- package/dist/dev/test/pydocs.test.js.map +1 -1
- package/dist/dev/test/references.test.js +42 -35
- package/dist/dev/test/references.test.js.map +1 -1
- package/dist/dev/test/sourcefiles.test.js +1109 -841
- package/dist/dev/test/sourcefiles.test.js.map +1 -1
- package/dist/dev/test/staticmethoddeclaration.test.js +21 -10
- package/dist/dev/test/staticmethoddeclaration.test.js.map +1 -1
- package/dist/dev/test/type-checking-imports.test.js +408 -359
- package/dist/dev/test/type-checking-imports.test.js.map +1 -1
- package/dist/dev/test/typereference.test.js +55 -40
- package/dist/dev/test/typereference.test.js.map +1 -1
- package/dist/dev/test/uniontypeexpression.test.js +222 -146
- package/dist/dev/test/uniontypeexpression.test.js.map +1 -1
- package/dist/dev/test/utils.js +39 -77
- package/dist/dev/test/utils.js.map +1 -1
- package/dist/dev/test/values.test.js +237 -101
- package/dist/dev/test/values.test.js.map +1 -1
- package/dist/dev/test/variables.test.js +321 -203
- package/dist/dev/test/variables.test.js.map +1 -1
- package/dist/dev/test/vitest.setup.js +2 -0
- package/dist/dev/test/vitest.setup.js.map +1 -0
- package/dist/src/components/SourceFile.d.ts +2 -2
- package/dist/src/components/SourceFile.d.ts.map +1 -1
- package/dist/src/components/SourceFile.js +12 -0
- package/dist/src/components/SourceFile.js.map +1 -1
- package/dist/test/callsignatures.test.js +346 -272
- package/dist/test/callsignatures.test.js.map +1 -1
- package/dist/test/class-method-declaration.test.js +7 -4
- package/dist/test/class-method-declaration.test.js.map +1 -1
- package/dist/test/classdeclarations.test.js +302 -288
- package/dist/test/classdeclarations.test.js.map +1 -1
- package/dist/test/classinstantiations.test.js +112 -103
- package/dist/test/classinstantiations.test.js.map +1 -1
- package/dist/test/constructordeclaration.test.js +7 -4
- package/dist/test/constructordeclaration.test.js.map +1 -1
- package/dist/test/dataclassdeclarations.test.js +134 -184
- package/dist/test/dataclassdeclarations.test.js.map +1 -1
- package/dist/test/decoratorlist.test.js +59 -36
- package/dist/test/decoratorlist.test.js.map +1 -1
- package/dist/test/dundermethoddeclaration.test.js +7 -4
- package/dist/test/dundermethoddeclaration.test.js.map +1 -1
- package/dist/test/enums.test.js +161 -159
- package/dist/test/enums.test.js.map +1 -1
- package/dist/test/externals.test.js +24 -24
- package/dist/test/externals.test.js.map +1 -1
- package/dist/test/factories.test.js +75 -33
- package/dist/test/factories.test.js.map +1 -1
- package/dist/test/functioncallexpressions.test.js +117 -106
- package/dist/test/functioncallexpressions.test.js.map +1 -1
- package/dist/test/functiondeclaration.test.js +247 -180
- package/dist/test/functiondeclaration.test.js.map +1 -1
- package/dist/test/imports.test.js +171 -143
- package/dist/test/imports.test.js.map +1 -1
- package/dist/test/memberexpressions.test.js +582 -453
- package/dist/test/memberexpressions.test.js.map +1 -1
- package/dist/test/methoddeclaration.test.js +66 -46
- package/dist/test/methoddeclaration.test.js.map +1 -1
- package/dist/test/namepolicies.test.js +90 -78
- package/dist/test/namepolicies.test.js.map +1 -1
- package/dist/test/propertydeclaration.test.js +25 -20
- package/dist/test/propertydeclaration.test.js.map +1 -1
- package/dist/test/pydanticclassdeclarations.test.js +134 -190
- package/dist/test/pydanticclassdeclarations.test.js.map +1 -1
- package/dist/test/pydocs.test.js +573 -532
- package/dist/test/pydocs.test.js.map +1 -1
- package/dist/test/references.test.js +31 -28
- package/dist/test/references.test.js.map +1 -1
- package/dist/test/sourcefiles.test.js +700 -580
- package/dist/test/sourcefiles.test.js.map +1 -1
- package/dist/test/staticmethoddeclaration.test.js +7 -4
- package/dist/test/staticmethoddeclaration.test.js.map +1 -1
- package/dist/test/type-checking-imports.test.js +297 -284
- package/dist/test/type-checking-imports.test.js.map +1 -1
- package/dist/test/typereference.test.js +29 -22
- package/dist/test/typereference.test.js.map +1 -1
- package/dist/test/uniontypeexpression.test.js +124 -88
- package/dist/test/uniontypeexpression.test.js.map +1 -1
- package/dist/test/utils.d.ts +10 -17
- package/dist/test/utils.d.ts.map +1 -1
- package/dist/test/utils.js +32 -74
- package/dist/test/utils.js.map +1 -1
- package/dist/test/values.test.js +135 -67
- package/dist/test/values.test.js.map +1 -1
- package/dist/test/variables.test.js +201 -151
- package/dist/test/variables.test.js.map +1 -1
- package/dist/test/vitest.setup.d.ts +2 -0
- package/dist/test/vitest.setup.d.ts.map +1 -0
- package/dist/test/vitest.setup.js +2 -0
- package/dist/test/vitest.setup.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/docs/api/components/SourceFile.md +20 -8
- package/package.json +2 -2
- package/src/components/SourceFile.tsx +6 -1
- package/temp/api.json +16 -2
- package/test/callsignatures.test.tsx +309 -283
- package/test/class-method-declaration.test.tsx +3 -4
- package/test/classdeclarations.test.tsx +263 -248
- package/test/classinstantiations.test.tsx +115 -109
- package/test/constructordeclaration.test.tsx +9 -6
- package/test/dataclassdeclarations.test.tsx +243 -361
- package/test/decoratorlist.test.tsx +78 -59
- package/test/dundermethoddeclaration.test.tsx +3 -4
- package/test/enums.test.tsx +65 -81
- package/test/externals.test.tsx +25 -25
- package/test/factories.test.tsx +64 -22
- package/test/functioncallexpressions.test.tsx +123 -109
- package/test/functiondeclaration.test.tsx +209 -148
- package/test/imports.test.tsx +119 -91
- package/test/memberexpressions.test.tsx +265 -207
- package/test/methoddeclaration.test.tsx +84 -63
- package/test/namepolicies.test.tsx +69 -69
- package/test/propertydeclaration.test.tsx +7 -8
- package/test/pydanticclassdeclarations.test.tsx +355 -487
- package/test/pydocs.test.tsx +531 -579
- package/test/references.test.tsx +24 -23
- package/test/sourcefiles.test.tsx +527 -492
- package/test/staticmethoddeclaration.test.tsx +3 -4
- package/test/type-checking-imports.test.tsx +206 -218
- package/test/typereference.test.tsx +15 -12
- package/test/uniontypeexpression.test.tsx +74 -61
- package/test/utils.tsx +26 -110
- package/test/values.test.tsx +82 -32
- package/test/variables.test.tsx +162 -142
- package/test/vitest.setup.ts +1 -0
- package/vitest.config.ts +3 -0
|
@@ -1,129 +1,165 @@
|
|
|
1
1
|
import { createComponent as _$createComponent, memo as _$memo } from "@alloy-js/core/jsx-runtime";
|
|
2
2
|
import { memberRefkey, namekey, refkey } from "@alloy-js/core";
|
|
3
|
-
import { d } from "@alloy-js/core/testing";
|
|
4
3
|
import { describe, expect, it } from "vitest";
|
|
5
4
|
import * as py from "../src/index.js";
|
|
6
|
-
import {
|
|
5
|
+
import { TestOutput, TestOutputDirectory } from "./utils.js";
|
|
7
6
|
describe("Python Class", () => {
|
|
8
7
|
it("renders class-level decorators above `class`", () => {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
expect(_$createComponent(TestOutput, {
|
|
9
|
+
get children() {
|
|
10
|
+
return _$createComponent(py.ClassDeclaration, {
|
|
11
|
+
name: "Foo",
|
|
12
|
+
decorators: ["@final", "@deprecated('use Bar')"]
|
|
13
|
+
}, {
|
|
14
|
+
fileName: import.meta.url,
|
|
15
|
+
lineNumber: 10,
|
|
16
|
+
columnNumber: 9
|
|
17
|
+
});
|
|
18
|
+
}
|
|
12
19
|
}, {
|
|
13
20
|
fileName: import.meta.url,
|
|
14
|
-
lineNumber:
|
|
21
|
+
lineNumber: 9,
|
|
15
22
|
columnNumber: 7
|
|
16
|
-
})
|
|
17
|
-
expect(result).toRenderTo(d`
|
|
23
|
+
})).toRenderTo(`
|
|
18
24
|
@final
|
|
19
25
|
@deprecated('use Bar')
|
|
20
26
|
class Foo:
|
|
21
27
|
pass
|
|
22
28
|
|
|
23
|
-
|
|
24
29
|
`);
|
|
25
30
|
});
|
|
26
31
|
it("renders nothing extra when decorators is undefined", () => {
|
|
27
|
-
|
|
28
|
-
|
|
32
|
+
expect(_$createComponent(TestOutput, {
|
|
33
|
+
get children() {
|
|
34
|
+
return _$createComponent(py.ClassDeclaration, {
|
|
35
|
+
name: "Foo"
|
|
36
|
+
}, {
|
|
37
|
+
fileName: import.meta.url,
|
|
38
|
+
lineNumber: 29,
|
|
39
|
+
columnNumber: 9
|
|
40
|
+
});
|
|
41
|
+
}
|
|
29
42
|
}, {
|
|
30
43
|
fileName: import.meta.url,
|
|
31
|
-
lineNumber:
|
|
32
|
-
columnNumber:
|
|
33
|
-
})
|
|
34
|
-
expect(result).toRenderTo(d`
|
|
44
|
+
lineNumber: 28,
|
|
45
|
+
columnNumber: 7
|
|
46
|
+
})).toRenderTo(`
|
|
35
47
|
class Foo:
|
|
36
48
|
pass
|
|
37
49
|
|
|
38
|
-
|
|
39
50
|
`);
|
|
40
51
|
});
|
|
41
52
|
it("renders a class with no body as 'pass'", () => {
|
|
42
|
-
|
|
43
|
-
|
|
53
|
+
expect(_$createComponent(TestOutput, {
|
|
54
|
+
get children() {
|
|
55
|
+
return _$createComponent(py.ClassDeclaration, {
|
|
56
|
+
name: "Foo"
|
|
57
|
+
}, {
|
|
58
|
+
fileName: import.meta.url,
|
|
59
|
+
lineNumber: 43,
|
|
60
|
+
columnNumber: 9
|
|
61
|
+
});
|
|
62
|
+
}
|
|
44
63
|
}, {
|
|
45
64
|
fileName: import.meta.url,
|
|
46
|
-
lineNumber:
|
|
47
|
-
columnNumber:
|
|
48
|
-
})
|
|
49
|
-
expect(result).toRenderTo(d`
|
|
65
|
+
lineNumber: 42,
|
|
66
|
+
columnNumber: 7
|
|
67
|
+
})).toRenderTo(`
|
|
50
68
|
class Foo:
|
|
51
69
|
pass
|
|
52
70
|
|
|
53
|
-
|
|
54
71
|
`);
|
|
55
72
|
});
|
|
56
73
|
it("takes a namekey", () => {
|
|
57
|
-
|
|
58
|
-
get
|
|
59
|
-
return
|
|
74
|
+
expect(_$createComponent(TestOutput, {
|
|
75
|
+
get children() {
|
|
76
|
+
return _$createComponent(py.ClassDeclaration, {
|
|
77
|
+
get name() {
|
|
78
|
+
return namekey("Foo");
|
|
79
|
+
}
|
|
80
|
+
}, {
|
|
81
|
+
fileName: import.meta.url,
|
|
82
|
+
lineNumber: 57,
|
|
83
|
+
columnNumber: 9
|
|
84
|
+
});
|
|
60
85
|
}
|
|
61
86
|
}, {
|
|
62
87
|
fileName: import.meta.url,
|
|
63
|
-
lineNumber:
|
|
88
|
+
lineNumber: 56,
|
|
64
89
|
columnNumber: 7
|
|
65
|
-
})
|
|
66
|
-
expect(result).toRenderTo(d`
|
|
90
|
+
})).toRenderTo(`
|
|
67
91
|
class Foo:
|
|
68
92
|
pass
|
|
69
93
|
|
|
70
|
-
|
|
71
94
|
`);
|
|
72
95
|
});
|
|
73
96
|
it("renders a class with a body", () => {
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
97
|
+
expect(_$createComponent(TestOutput, {
|
|
98
|
+
get children() {
|
|
99
|
+
return _$createComponent(py.ClassDeclaration, {
|
|
100
|
+
name: "Bar",
|
|
101
|
+
children: "print('hi')"
|
|
102
|
+
}, {
|
|
103
|
+
fileName: import.meta.url,
|
|
104
|
+
lineNumber: 71,
|
|
105
|
+
columnNumber: 9
|
|
106
|
+
});
|
|
107
|
+
}
|
|
77
108
|
}, {
|
|
78
109
|
fileName: import.meta.url,
|
|
79
|
-
lineNumber:
|
|
110
|
+
lineNumber: 70,
|
|
80
111
|
columnNumber: 7
|
|
81
|
-
})
|
|
82
|
-
expect(result).toRenderTo(d`
|
|
112
|
+
})).toRenderTo(`
|
|
83
113
|
class Bar:
|
|
84
114
|
print('hi')
|
|
85
115
|
|
|
86
|
-
|
|
87
116
|
`);
|
|
88
117
|
});
|
|
89
118
|
it("renders a class with base classes", () => {
|
|
90
|
-
|
|
119
|
+
expect(_$createComponent(TestOutput, {
|
|
91
120
|
get children() {
|
|
92
|
-
return
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
121
|
+
return _$createComponent(py.StatementList, {
|
|
122
|
+
get children() {
|
|
123
|
+
return [_$createComponent(py.ClassDeclaration, {
|
|
124
|
+
name: "Base1",
|
|
125
|
+
get refkey() {
|
|
126
|
+
return refkey("Base1");
|
|
127
|
+
}
|
|
128
|
+
}, {
|
|
129
|
+
fileName: import.meta.url,
|
|
130
|
+
lineNumber: 86,
|
|
131
|
+
columnNumber: 11
|
|
132
|
+
}), _$createComponent(py.ClassDeclaration, {
|
|
133
|
+
name: "Base2",
|
|
134
|
+
get refkey() {
|
|
135
|
+
return refkey("Base2");
|
|
136
|
+
}
|
|
137
|
+
}, {
|
|
138
|
+
fileName: import.meta.url,
|
|
139
|
+
lineNumber: 87,
|
|
140
|
+
columnNumber: 11
|
|
141
|
+
}), _$createComponent(py.ClassDeclaration, {
|
|
142
|
+
name: "Baz",
|
|
143
|
+
get bases() {
|
|
144
|
+
return [refkey("Base1"), refkey("Base2")];
|
|
145
|
+
}
|
|
146
|
+
}, {
|
|
147
|
+
fileName: import.meta.url,
|
|
148
|
+
lineNumber: 88,
|
|
149
|
+
columnNumber: 11
|
|
150
|
+
})];
|
|
114
151
|
}
|
|
115
152
|
}, {
|
|
116
153
|
fileName: import.meta.url,
|
|
117
|
-
lineNumber:
|
|
154
|
+
lineNumber: 85,
|
|
118
155
|
columnNumber: 9
|
|
119
|
-
})
|
|
156
|
+
});
|
|
120
157
|
}
|
|
121
158
|
}, {
|
|
122
159
|
fileName: import.meta.url,
|
|
123
|
-
lineNumber:
|
|
160
|
+
lineNumber: 84,
|
|
124
161
|
columnNumber: 7
|
|
125
|
-
})
|
|
126
|
-
const expected = d`
|
|
162
|
+
})).toRenderTo(`
|
|
127
163
|
class Base1:
|
|
128
164
|
pass
|
|
129
165
|
|
|
@@ -133,175 +169,183 @@ describe("Python Class", () => {
|
|
|
133
169
|
class Baz(Base1, Base2):
|
|
134
170
|
pass
|
|
135
171
|
|
|
136
|
-
|
|
137
|
-
`;
|
|
138
|
-
expect(result).toRenderTo(expected);
|
|
172
|
+
`);
|
|
139
173
|
});
|
|
140
174
|
it("renders a class with base classes and body", () => {
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
175
|
+
expect(_$createComponent(TestOutput, {
|
|
176
|
+
get children() {
|
|
177
|
+
return _$createComponent(py.ClassDeclaration, {
|
|
178
|
+
name: "Qux",
|
|
179
|
+
bases: ["Base"],
|
|
180
|
+
children: "print('hello')"
|
|
181
|
+
}, {
|
|
182
|
+
fileName: import.meta.url,
|
|
183
|
+
lineNumber: 112,
|
|
184
|
+
columnNumber: 9
|
|
185
|
+
});
|
|
186
|
+
}
|
|
145
187
|
}, {
|
|
146
188
|
fileName: import.meta.url,
|
|
147
|
-
lineNumber:
|
|
189
|
+
lineNumber: 111,
|
|
148
190
|
columnNumber: 7
|
|
149
|
-
})
|
|
150
|
-
expect(result).toRenderTo(d`
|
|
191
|
+
})).toRenderTo(`
|
|
151
192
|
class Qux(Base):
|
|
152
193
|
print('hello')
|
|
153
194
|
|
|
154
|
-
|
|
155
195
|
`);
|
|
156
196
|
});
|
|
157
197
|
it("renders classes across modules with inheritance", () => {
|
|
158
|
-
|
|
159
|
-
path: "mod1.py",
|
|
198
|
+
expect(_$createComponent(TestOutputDirectory, {
|
|
160
199
|
get children() {
|
|
161
|
-
return _$createComponent(py.
|
|
162
|
-
|
|
163
|
-
get
|
|
164
|
-
return
|
|
200
|
+
return [_$createComponent(py.SourceFile, {
|
|
201
|
+
path: "mod1.py",
|
|
202
|
+
get children() {
|
|
203
|
+
return _$createComponent(py.ClassDeclaration, {
|
|
204
|
+
name: "A",
|
|
205
|
+
get refkey() {
|
|
206
|
+
return refkey("A");
|
|
207
|
+
}
|
|
208
|
+
}, {
|
|
209
|
+
fileName: import.meta.url,
|
|
210
|
+
lineNumber: 129,
|
|
211
|
+
columnNumber: 11
|
|
212
|
+
});
|
|
165
213
|
}
|
|
166
214
|
}, {
|
|
167
215
|
fileName: import.meta.url,
|
|
168
|
-
lineNumber:
|
|
216
|
+
lineNumber: 128,
|
|
169
217
|
columnNumber: 9
|
|
170
|
-
})
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
218
|
+
}), _$createComponent(py.SourceFile, {
|
|
219
|
+
path: "folder/mod2.py",
|
|
220
|
+
get children() {
|
|
221
|
+
return _$createComponent(py.ClassDeclaration, {
|
|
222
|
+
name: "B",
|
|
223
|
+
get refkey() {
|
|
224
|
+
return refkey("B");
|
|
225
|
+
},
|
|
226
|
+
get bases() {
|
|
227
|
+
return [refkey("A")];
|
|
228
|
+
}
|
|
229
|
+
}, {
|
|
230
|
+
fileName: import.meta.url,
|
|
231
|
+
lineNumber: 132,
|
|
232
|
+
columnNumber: 11
|
|
233
|
+
});
|
|
186
234
|
}
|
|
187
235
|
}, {
|
|
188
236
|
fileName: import.meta.url,
|
|
189
|
-
lineNumber:
|
|
237
|
+
lineNumber: 131,
|
|
190
238
|
columnNumber: 9
|
|
191
|
-
})
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
239
|
+
}), _$createComponent(py.SourceFile, {
|
|
240
|
+
path: "mod3.py",
|
|
241
|
+
get children() {
|
|
242
|
+
return _$createComponent(py.ClassDeclaration, {
|
|
243
|
+
name: "C",
|
|
244
|
+
get bases() {
|
|
245
|
+
return [refkey("B")];
|
|
246
|
+
}
|
|
247
|
+
}, {
|
|
248
|
+
fileName: import.meta.url,
|
|
249
|
+
lineNumber: 139,
|
|
250
|
+
columnNumber: 11
|
|
251
|
+
});
|
|
204
252
|
}
|
|
205
253
|
}, {
|
|
206
254
|
fileName: import.meta.url,
|
|
207
|
-
lineNumber:
|
|
255
|
+
lineNumber: 138,
|
|
208
256
|
columnNumber: 9
|
|
209
|
-
});
|
|
257
|
+
})];
|
|
210
258
|
}
|
|
211
259
|
}, {
|
|
212
260
|
fileName: import.meta.url,
|
|
213
|
-
lineNumber:
|
|
261
|
+
lineNumber: 127,
|
|
214
262
|
columnNumber: 7
|
|
215
|
-
})
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
`;
|
|
222
|
-
const mod2Expected = d`
|
|
223
|
-
from mod1 import A
|
|
224
|
-
|
|
263
|
+
})).toRenderTo({
|
|
264
|
+
"mod1.py": `
|
|
265
|
+
class A:
|
|
266
|
+
pass
|
|
225
267
|
|
|
226
|
-
|
|
227
|
-
|
|
268
|
+
`,
|
|
269
|
+
"folder/mod2.py": `
|
|
270
|
+
from mod1 import A
|
|
228
271
|
|
|
229
272
|
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
from folder.mod2 import B
|
|
273
|
+
class B(A):
|
|
274
|
+
pass
|
|
233
275
|
|
|
276
|
+
`,
|
|
277
|
+
"mod3.py": `
|
|
278
|
+
from folder.mod2 import B
|
|
234
279
|
|
|
235
|
-
class C(B):
|
|
236
|
-
pass
|
|
237
280
|
|
|
281
|
+
class C(B):
|
|
282
|
+
pass
|
|
238
283
|
|
|
239
|
-
|
|
240
|
-
assertFileContents(result, {
|
|
241
|
-
"mod1.py": mod1Expected
|
|
242
|
-
});
|
|
243
|
-
assertFileContents(result, {
|
|
244
|
-
"folder/mod2.py": mod2Expected
|
|
245
|
-
});
|
|
246
|
-
assertFileContents(result, {
|
|
247
|
-
"mod3.py": mod3Expected
|
|
284
|
+
`
|
|
248
285
|
});
|
|
249
286
|
});
|
|
250
287
|
it("renders a class with class variables like foo: str, and also bar: A where A is another class", () => {
|
|
251
|
-
|
|
288
|
+
expect(_$createComponent(TestOutput, {
|
|
252
289
|
get children() {
|
|
253
|
-
return
|
|
254
|
-
name: "A",
|
|
255
|
-
get refkey() {
|
|
256
|
-
return refkey("A");
|
|
257
|
-
}
|
|
258
|
-
}, {
|
|
259
|
-
fileName: import.meta.url,
|
|
260
|
-
lineNumber: 161,
|
|
261
|
-
columnNumber: 9
|
|
262
|
-
}), _$createComponent(py.ClassDeclaration, {
|
|
263
|
-
name: "B",
|
|
290
|
+
return _$createComponent(py.StatementList, {
|
|
264
291
|
get children() {
|
|
265
|
-
return _$createComponent(py.
|
|
292
|
+
return [_$createComponent(py.ClassDeclaration, {
|
|
293
|
+
name: "A",
|
|
294
|
+
get refkey() {
|
|
295
|
+
return refkey("A");
|
|
296
|
+
}
|
|
297
|
+
}, {
|
|
298
|
+
fileName: import.meta.url,
|
|
299
|
+
lineNumber: 171,
|
|
300
|
+
columnNumber: 11
|
|
301
|
+
}), _$createComponent(py.ClassDeclaration, {
|
|
302
|
+
name: "B",
|
|
266
303
|
get children() {
|
|
267
|
-
return
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
304
|
+
return _$createComponent(py.StatementList, {
|
|
305
|
+
get children() {
|
|
306
|
+
return [_$createComponent(py.VariableDeclaration, {
|
|
307
|
+
name: "bar",
|
|
308
|
+
get type() {
|
|
309
|
+
return refkey("A");
|
|
310
|
+
},
|
|
311
|
+
omitNone: true
|
|
312
|
+
}, {
|
|
313
|
+
fileName: import.meta.url,
|
|
314
|
+
lineNumber: 174,
|
|
315
|
+
columnNumber: 15
|
|
316
|
+
}), _$createComponent(py.VariableDeclaration, {
|
|
317
|
+
name: "foo",
|
|
318
|
+
type: "str",
|
|
319
|
+
omitNone: true
|
|
320
|
+
}, {
|
|
321
|
+
fileName: import.meta.url,
|
|
322
|
+
lineNumber: 175,
|
|
323
|
+
columnNumber: 15
|
|
324
|
+
})];
|
|
325
|
+
}
|
|
281
326
|
}, {
|
|
282
327
|
fileName: import.meta.url,
|
|
283
|
-
lineNumber:
|
|
328
|
+
lineNumber: 173,
|
|
284
329
|
columnNumber: 13
|
|
285
|
-
})
|
|
330
|
+
});
|
|
286
331
|
}
|
|
287
332
|
}, {
|
|
288
333
|
fileName: import.meta.url,
|
|
289
|
-
lineNumber:
|
|
334
|
+
lineNumber: 172,
|
|
290
335
|
columnNumber: 11
|
|
291
|
-
});
|
|
336
|
+
})];
|
|
292
337
|
}
|
|
293
338
|
}, {
|
|
294
339
|
fileName: import.meta.url,
|
|
295
|
-
lineNumber:
|
|
340
|
+
lineNumber: 170,
|
|
296
341
|
columnNumber: 9
|
|
297
|
-
})
|
|
342
|
+
});
|
|
298
343
|
}
|
|
299
344
|
}, {
|
|
300
345
|
fileName: import.meta.url,
|
|
301
|
-
lineNumber:
|
|
346
|
+
lineNumber: 169,
|
|
302
347
|
columnNumber: 7
|
|
303
|
-
})
|
|
304
|
-
const expected = d`
|
|
348
|
+
})).toRenderTo(`
|
|
305
349
|
class A:
|
|
306
350
|
pass
|
|
307
351
|
|
|
@@ -309,75 +353,80 @@ describe("Python Class", () => {
|
|
|
309
353
|
bar: A
|
|
310
354
|
foo: str
|
|
311
355
|
|
|
312
|
-
|
|
313
|
-
`;
|
|
314
|
-
expect(result).toRenderTo(expected);
|
|
356
|
+
`);
|
|
315
357
|
});
|
|
316
358
|
it("renders a class with class variables like foo: str, and another identical class", () => {
|
|
317
359
|
const fooKey = refkey();
|
|
318
360
|
const barKey = refkey();
|
|
319
|
-
|
|
361
|
+
expect(_$createComponent(TestOutput, {
|
|
320
362
|
get children() {
|
|
321
|
-
return
|
|
322
|
-
name: "A",
|
|
363
|
+
return _$createComponent(py.StatementList, {
|
|
323
364
|
get children() {
|
|
324
|
-
return _$createComponent(py.
|
|
365
|
+
return [_$createComponent(py.ClassDeclaration, {
|
|
366
|
+
name: "A",
|
|
325
367
|
get children() {
|
|
326
|
-
return _$createComponent(py.
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
368
|
+
return _$createComponent(py.StatementList, {
|
|
369
|
+
get children() {
|
|
370
|
+
return _$createComponent(py.VariableDeclaration, {
|
|
371
|
+
name: "foo",
|
|
372
|
+
type: "str",
|
|
373
|
+
refkey: fooKey,
|
|
374
|
+
omitNone: true
|
|
375
|
+
}, {
|
|
376
|
+
fileName: import.meta.url,
|
|
377
|
+
lineNumber: 202,
|
|
378
|
+
columnNumber: 15
|
|
379
|
+
});
|
|
380
|
+
}
|
|
331
381
|
}, {
|
|
332
382
|
fileName: import.meta.url,
|
|
333
|
-
lineNumber:
|
|
383
|
+
lineNumber: 201,
|
|
334
384
|
columnNumber: 13
|
|
335
385
|
});
|
|
336
386
|
}
|
|
337
387
|
}, {
|
|
338
388
|
fileName: import.meta.url,
|
|
339
|
-
lineNumber:
|
|
389
|
+
lineNumber: 200,
|
|
340
390
|
columnNumber: 11
|
|
341
|
-
})
|
|
342
|
-
|
|
343
|
-
}, {
|
|
344
|
-
fileName: import.meta.url,
|
|
345
|
-
lineNumber: 189,
|
|
346
|
-
columnNumber: 9
|
|
347
|
-
}), _$createComponent(py.ClassDeclaration, {
|
|
348
|
-
name: "B",
|
|
349
|
-
get children() {
|
|
350
|
-
return _$createComponent(py.StatementList, {
|
|
391
|
+
}), _$createComponent(py.ClassDeclaration, {
|
|
392
|
+
name: "B",
|
|
351
393
|
get children() {
|
|
352
|
-
return _$createComponent(py.
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
394
|
+
return _$createComponent(py.StatementList, {
|
|
395
|
+
get children() {
|
|
396
|
+
return _$createComponent(py.VariableDeclaration, {
|
|
397
|
+
name: "foo",
|
|
398
|
+
type: "str",
|
|
399
|
+
refkey: barKey,
|
|
400
|
+
omitNone: true
|
|
401
|
+
}, {
|
|
402
|
+
fileName: import.meta.url,
|
|
403
|
+
lineNumber: 212,
|
|
404
|
+
columnNumber: 15
|
|
405
|
+
});
|
|
406
|
+
}
|
|
357
407
|
}, {
|
|
358
408
|
fileName: import.meta.url,
|
|
359
|
-
lineNumber:
|
|
409
|
+
lineNumber: 211,
|
|
360
410
|
columnNumber: 13
|
|
361
411
|
});
|
|
362
412
|
}
|
|
363
413
|
}, {
|
|
364
414
|
fileName: import.meta.url,
|
|
365
|
-
lineNumber:
|
|
415
|
+
lineNumber: 210,
|
|
366
416
|
columnNumber: 11
|
|
367
|
-
});
|
|
417
|
+
}), fooKey, barKey];
|
|
368
418
|
}
|
|
369
419
|
}, {
|
|
370
420
|
fileName: import.meta.url,
|
|
371
421
|
lineNumber: 199,
|
|
372
422
|
columnNumber: 9
|
|
373
|
-
})
|
|
423
|
+
});
|
|
374
424
|
}
|
|
375
425
|
}, {
|
|
376
426
|
fileName: import.meta.url,
|
|
377
|
-
lineNumber:
|
|
427
|
+
lineNumber: 198,
|
|
378
428
|
columnNumber: 7
|
|
379
|
-
})
|
|
380
|
-
const expected = d`
|
|
429
|
+
})).toRenderTo(`
|
|
381
430
|
class A:
|
|
382
431
|
foo: str
|
|
383
432
|
|
|
@@ -386,85 +435,91 @@ describe("Python Class", () => {
|
|
|
386
435
|
|
|
387
436
|
A.foo
|
|
388
437
|
B.foo
|
|
389
|
-
|
|
390
|
-
expect(result).toRenderTo(expected);
|
|
438
|
+
`);
|
|
391
439
|
});
|
|
392
440
|
});
|
|
393
441
|
describe("Python Class - VariableDeclaration", () => {
|
|
394
442
|
it("renders a class with class fields", () => {
|
|
395
|
-
|
|
443
|
+
expect(_$createComponent(TestOutput, {
|
|
396
444
|
get children() {
|
|
397
|
-
return
|
|
398
|
-
get refkey() {
|
|
399
|
-
return refkey("Base");
|
|
400
|
-
},
|
|
401
|
-
name: "Base"
|
|
402
|
-
}, {
|
|
403
|
-
fileName: import.meta.url,
|
|
404
|
-
lineNumber: 231,
|
|
405
|
-
columnNumber: 9
|
|
406
|
-
}), _$createComponent(py.ClassDeclaration, {
|
|
407
|
-
get refkey() {
|
|
408
|
-
return refkey("A");
|
|
409
|
-
},
|
|
410
|
-
name: "A",
|
|
445
|
+
return _$createComponent(py.StatementList, {
|
|
411
446
|
get children() {
|
|
412
|
-
return _$createComponent(py.
|
|
447
|
+
return [_$createComponent(py.ClassDeclaration, {
|
|
448
|
+
get refkey() {
|
|
449
|
+
return refkey("Base");
|
|
450
|
+
},
|
|
451
|
+
name: "Base"
|
|
452
|
+
}, {
|
|
453
|
+
fileName: import.meta.url,
|
|
454
|
+
lineNumber: 244,
|
|
455
|
+
columnNumber: 11
|
|
456
|
+
}), _$createComponent(py.ClassDeclaration, {
|
|
457
|
+
get refkey() {
|
|
458
|
+
return refkey("A");
|
|
459
|
+
},
|
|
460
|
+
name: "A",
|
|
413
461
|
get children() {
|
|
414
|
-
return
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
462
|
+
return _$createComponent(py.StatementList, {
|
|
463
|
+
get children() {
|
|
464
|
+
return [_$createComponent(py.VariableDeclaration, {
|
|
465
|
+
instanceVariable: true,
|
|
466
|
+
name: "just_name"
|
|
467
|
+
}, {
|
|
468
|
+
fileName: import.meta.url,
|
|
469
|
+
lineNumber: 250,
|
|
470
|
+
columnNumber: 15
|
|
471
|
+
}), _$createComponent(py.VariableDeclaration, {
|
|
472
|
+
name: "name_and_type",
|
|
473
|
+
type: "number",
|
|
474
|
+
instanceVariable: true
|
|
475
|
+
}, {
|
|
476
|
+
fileName: import.meta.url,
|
|
477
|
+
lineNumber: 251,
|
|
478
|
+
columnNumber: 15
|
|
479
|
+
}), _$createComponent(py.VariableDeclaration, {
|
|
480
|
+
instanceVariable: true,
|
|
481
|
+
name: "name_type_and_value",
|
|
482
|
+
type: "number",
|
|
483
|
+
initializer: 12
|
|
484
|
+
}, {
|
|
485
|
+
fileName: import.meta.url,
|
|
486
|
+
lineNumber: 256,
|
|
487
|
+
columnNumber: 15
|
|
488
|
+
}), _$createComponent(py.VariableDeclaration, {
|
|
489
|
+
instanceVariable: true,
|
|
490
|
+
name: "class_based",
|
|
491
|
+
get type() {
|
|
492
|
+
return refkey("Base");
|
|
493
|
+
}
|
|
494
|
+
}, {
|
|
495
|
+
fileName: import.meta.url,
|
|
496
|
+
lineNumber: 262,
|
|
497
|
+
columnNumber: 15
|
|
498
|
+
})];
|
|
443
499
|
}
|
|
444
500
|
}, {
|
|
445
501
|
fileName: import.meta.url,
|
|
446
502
|
lineNumber: 249,
|
|
447
503
|
columnNumber: 13
|
|
448
|
-
})
|
|
504
|
+
});
|
|
449
505
|
}
|
|
450
506
|
}, {
|
|
451
507
|
fileName: import.meta.url,
|
|
452
|
-
lineNumber:
|
|
508
|
+
lineNumber: 248,
|
|
453
509
|
columnNumber: 11
|
|
454
|
-
});
|
|
510
|
+
})];
|
|
455
511
|
}
|
|
456
512
|
}, {
|
|
457
513
|
fileName: import.meta.url,
|
|
458
|
-
lineNumber:
|
|
514
|
+
lineNumber: 243,
|
|
459
515
|
columnNumber: 9
|
|
460
|
-
})
|
|
516
|
+
});
|
|
461
517
|
}
|
|
462
518
|
}, {
|
|
463
519
|
fileName: import.meta.url,
|
|
464
|
-
lineNumber:
|
|
520
|
+
lineNumber: 242,
|
|
465
521
|
columnNumber: 7
|
|
466
|
-
})
|
|
467
|
-
const expected = d`
|
|
522
|
+
})).toRenderTo(`
|
|
468
523
|
class Base:
|
|
469
524
|
pass
|
|
470
525
|
|
|
@@ -474,110 +529,115 @@ describe("Python Class - VariableDeclaration", () => {
|
|
|
474
529
|
name_type_and_value: number = 12
|
|
475
530
|
class_based: Base = None
|
|
476
531
|
|
|
477
|
-
|
|
478
|
-
`;
|
|
479
|
-
expect(result).toRenderTo(expected);
|
|
532
|
+
`);
|
|
480
533
|
});
|
|
481
534
|
it("correctly access members of its type", () => {
|
|
482
535
|
const classRk = refkey();
|
|
483
536
|
const classMemberRk = refkey();
|
|
484
537
|
const classMethodRk = refkey();
|
|
485
538
|
const v1Rk = refkey();
|
|
486
|
-
|
|
487
|
-
path: "inst.py",
|
|
539
|
+
expect(_$createComponent(TestOutputDirectory, {
|
|
488
540
|
get children() {
|
|
489
|
-
return _$createComponent(py.
|
|
541
|
+
return [_$createComponent(py.SourceFile, {
|
|
542
|
+
path: "inst.py",
|
|
490
543
|
get children() {
|
|
491
|
-
return
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
544
|
+
return _$createComponent(py.StatementList, {
|
|
545
|
+
get children() {
|
|
546
|
+
return [_$createComponent(py.VariableDeclaration, {
|
|
547
|
+
name: "one",
|
|
548
|
+
refkey: v1Rk,
|
|
549
|
+
type: classRk,
|
|
550
|
+
get initializer() {
|
|
551
|
+
return _$createComponent(py.ClassInstantiation, {
|
|
552
|
+
target: classRk
|
|
553
|
+
}, {
|
|
554
|
+
fileName: import.meta.url,
|
|
555
|
+
lineNumber: 300,
|
|
556
|
+
columnNumber: 28
|
|
557
|
+
});
|
|
558
|
+
}
|
|
498
559
|
}, {
|
|
499
560
|
fileName: import.meta.url,
|
|
500
|
-
lineNumber:
|
|
501
|
-
columnNumber:
|
|
502
|
-
});
|
|
561
|
+
lineNumber: 296,
|
|
562
|
+
columnNumber: 13
|
|
563
|
+
}), [_$memo(() => memberRefkey(v1Rk, classMemberRk), false, "memberRefkey(\u2026)")], [_$memo(() => memberRefkey(v1Rk, classMethodRk), false, "memberRefkey(\u2026)"), "()"]];
|
|
503
564
|
}
|
|
504
565
|
}, {
|
|
505
566
|
fileName: import.meta.url,
|
|
506
|
-
lineNumber:
|
|
567
|
+
lineNumber: 295,
|
|
507
568
|
columnNumber: 11
|
|
508
|
-
})
|
|
569
|
+
});
|
|
509
570
|
}
|
|
510
571
|
}, {
|
|
511
572
|
fileName: import.meta.url,
|
|
512
|
-
lineNumber:
|
|
573
|
+
lineNumber: 294,
|
|
513
574
|
columnNumber: 9
|
|
514
|
-
})
|
|
515
|
-
|
|
516
|
-
}, {
|
|
517
|
-
fileName: import.meta.url,
|
|
518
|
-
lineNumber: 280,
|
|
519
|
-
columnNumber: 7
|
|
520
|
-
}), _$createComponent(py.SourceFile, {
|
|
521
|
-
path: "decl.py",
|
|
522
|
-
get children() {
|
|
523
|
-
return _$createComponent(py.ClassDeclaration, {
|
|
524
|
-
name: "Bar",
|
|
525
|
-
refkey: classRk,
|
|
575
|
+
}), _$createComponent(py.SourceFile, {
|
|
576
|
+
path: "decl.py",
|
|
526
577
|
get children() {
|
|
527
|
-
return _$createComponent(py.
|
|
578
|
+
return _$createComponent(py.ClassDeclaration, {
|
|
579
|
+
name: "Bar",
|
|
580
|
+
refkey: classRk,
|
|
528
581
|
get children() {
|
|
529
|
-
return
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
582
|
+
return _$createComponent(py.StatementList, {
|
|
583
|
+
get children() {
|
|
584
|
+
return [_$createComponent(py.VariableDeclaration, {
|
|
585
|
+
name: "instanceProp",
|
|
586
|
+
refkey: classMemberRk,
|
|
587
|
+
initializer: 42,
|
|
588
|
+
instanceVariable: true
|
|
589
|
+
}, {
|
|
590
|
+
fileName: import.meta.url,
|
|
591
|
+
lineNumber: 309,
|
|
592
|
+
columnNumber: 15
|
|
593
|
+
}), _$createComponent(py.MethodDeclaration, {
|
|
594
|
+
name: "instanceMethod",
|
|
595
|
+
refkey: classMethodRk,
|
|
596
|
+
returnType: "int"
|
|
597
|
+
}, {
|
|
598
|
+
fileName: import.meta.url,
|
|
599
|
+
lineNumber: 315,
|
|
600
|
+
columnNumber: 15
|
|
601
|
+
})];
|
|
602
|
+
}
|
|
542
603
|
}, {
|
|
543
604
|
fileName: import.meta.url,
|
|
544
|
-
lineNumber:
|
|
605
|
+
lineNumber: 308,
|
|
545
606
|
columnNumber: 13
|
|
546
|
-
})
|
|
607
|
+
});
|
|
547
608
|
}
|
|
548
609
|
}, {
|
|
549
610
|
fileName: import.meta.url,
|
|
550
|
-
lineNumber:
|
|
611
|
+
lineNumber: 307,
|
|
551
612
|
columnNumber: 11
|
|
552
613
|
});
|
|
553
614
|
}
|
|
554
615
|
}, {
|
|
555
616
|
fileName: import.meta.url,
|
|
556
|
-
lineNumber:
|
|
617
|
+
lineNumber: 306,
|
|
557
618
|
columnNumber: 9
|
|
558
|
-
});
|
|
619
|
+
})];
|
|
559
620
|
}
|
|
560
621
|
}, {
|
|
561
622
|
fileName: import.meta.url,
|
|
562
|
-
lineNumber:
|
|
623
|
+
lineNumber: 293,
|
|
563
624
|
columnNumber: 7
|
|
564
|
-
})
|
|
565
|
-
assertFileContents(res, {
|
|
625
|
+
})).toRenderTo({
|
|
566
626
|
"inst.py": `
|
|
567
|
-
|
|
627
|
+
from decl import Bar
|
|
568
628
|
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
629
|
+
one: Bar = Bar()
|
|
630
|
+
one.instance_prop
|
|
631
|
+
one.instance_method()
|
|
632
|
+
`,
|
|
573
633
|
"decl.py": `
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
634
|
+
class Bar:
|
|
635
|
+
instance_prop = 42
|
|
636
|
+
def instance_method(self) -> int:
|
|
637
|
+
pass
|
|
578
638
|
|
|
579
639
|
|
|
580
|
-
|
|
640
|
+
`
|
|
581
641
|
});
|
|
582
642
|
});
|
|
583
643
|
});
|
|
@@ -586,84 +646,91 @@ describe("Python Class - FunctionDeclaration", () => {
|
|
|
586
646
|
const methodRefkey = refkey();
|
|
587
647
|
const classMethodRefkey = refkey();
|
|
588
648
|
const staticMethodRefkey = refkey();
|
|
589
|
-
|
|
649
|
+
expect(_$createComponent(TestOutput, {
|
|
590
650
|
get children() {
|
|
591
|
-
return
|
|
592
|
-
name: "MyClass",
|
|
593
|
-
bases: ["BaseClass"],
|
|
651
|
+
return _$createComponent(py.StatementList, {
|
|
594
652
|
get children() {
|
|
595
|
-
return _$createComponent(py.
|
|
653
|
+
return [_$createComponent(py.ClassDeclaration, {
|
|
654
|
+
name: "MyClass",
|
|
655
|
+
bases: ["BaseClass"],
|
|
596
656
|
get children() {
|
|
597
|
-
return
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
657
|
+
return _$createComponent(py.StatementList, {
|
|
658
|
+
get children() {
|
|
659
|
+
return [_$createComponent(py.VariableDeclaration, {
|
|
660
|
+
name: "a",
|
|
661
|
+
type: "int",
|
|
662
|
+
instanceVariable: true
|
|
663
|
+
}, {
|
|
664
|
+
fileName: import.meta.url,
|
|
665
|
+
lineNumber: 355,
|
|
666
|
+
columnNumber: 15
|
|
667
|
+
}), _$createComponent(py.VariableDeclaration, {
|
|
668
|
+
name: "b",
|
|
669
|
+
type: "int",
|
|
670
|
+
instanceVariable: true
|
|
671
|
+
}, {
|
|
672
|
+
fileName: import.meta.url,
|
|
673
|
+
lineNumber: 356,
|
|
674
|
+
columnNumber: 15
|
|
675
|
+
}), _$createComponent(py.MethodDeclaration, {
|
|
676
|
+
name: "my_method",
|
|
677
|
+
parameters: [{
|
|
678
|
+
name: "a",
|
|
679
|
+
type: "int"
|
|
680
|
+
}, {
|
|
681
|
+
name: "b",
|
|
682
|
+
type: "int"
|
|
683
|
+
}],
|
|
684
|
+
returnType: "int",
|
|
685
|
+
refkey: methodRefkey,
|
|
686
|
+
children: "return a + b"
|
|
687
|
+
}, {
|
|
688
|
+
fileName: import.meta.url,
|
|
689
|
+
lineNumber: 357,
|
|
690
|
+
columnNumber: 15
|
|
691
|
+
}), _$createComponent(py.ClassMethodDeclaration, {
|
|
692
|
+
name: "my_class_method",
|
|
693
|
+
returnType: "int",
|
|
694
|
+
refkey: classMethodRefkey,
|
|
695
|
+
children: "pass"
|
|
696
|
+
}, {
|
|
697
|
+
fileName: import.meta.url,
|
|
698
|
+
lineNumber: 368,
|
|
699
|
+
columnNumber: 15
|
|
700
|
+
}), _$createComponent(py.FunctionDeclaration, {
|
|
701
|
+
name: "my_standalone_function",
|
|
702
|
+
returnType: "int",
|
|
703
|
+
refkey: staticMethodRefkey,
|
|
704
|
+
children: "pass"
|
|
705
|
+
}, {
|
|
706
|
+
fileName: import.meta.url,
|
|
707
|
+
lineNumber: 375,
|
|
708
|
+
columnNumber: 15
|
|
709
|
+
})];
|
|
710
|
+
}
|
|
634
711
|
}, {
|
|
635
712
|
fileName: import.meta.url,
|
|
636
713
|
lineNumber: 354,
|
|
637
714
|
columnNumber: 13
|
|
638
|
-
})
|
|
639
|
-
name: "my_standalone_function",
|
|
640
|
-
returnType: "int",
|
|
641
|
-
refkey: staticMethodRefkey,
|
|
642
|
-
children: "pass"
|
|
643
|
-
}, {
|
|
644
|
-
fileName: import.meta.url,
|
|
645
|
-
lineNumber: 361,
|
|
646
|
-
columnNumber: 13
|
|
647
|
-
})];
|
|
715
|
+
});
|
|
648
716
|
}
|
|
649
717
|
}, {
|
|
650
718
|
fileName: import.meta.url,
|
|
651
|
-
lineNumber:
|
|
719
|
+
lineNumber: 353,
|
|
652
720
|
columnNumber: 11
|
|
653
|
-
});
|
|
721
|
+
}), classMethodRefkey, staticMethodRefkey];
|
|
654
722
|
}
|
|
655
723
|
}, {
|
|
656
724
|
fileName: import.meta.url,
|
|
657
|
-
lineNumber:
|
|
725
|
+
lineNumber: 352,
|
|
658
726
|
columnNumber: 9
|
|
659
|
-
})
|
|
727
|
+
});
|
|
660
728
|
}
|
|
661
729
|
}, {
|
|
662
730
|
fileName: import.meta.url,
|
|
663
|
-
lineNumber:
|
|
731
|
+
lineNumber: 351,
|
|
664
732
|
columnNumber: 7
|
|
665
|
-
})
|
|
666
|
-
const expected = d`
|
|
733
|
+
})).toRenderTo(`
|
|
667
734
|
class MyClass(BaseClass):
|
|
668
735
|
a: int = None
|
|
669
736
|
b: int = None
|
|
@@ -680,8 +747,7 @@ describe("Python Class - FunctionDeclaration", () => {
|
|
|
680
747
|
|
|
681
748
|
MyClass.my_class_method
|
|
682
749
|
MyClass.my_standalone_function
|
|
683
|
-
|
|
684
|
-
expect(result).toRenderTo(expected);
|
|
750
|
+
`);
|
|
685
751
|
});
|
|
686
752
|
});
|
|
687
753
|
//# sourceMappingURL=classdeclarations.test.js.map
|