@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.
- package/CHANGELOG.md +7 -0
- package/dist/dev/src/components/CallSignature.js +2 -2
- package/dist/dev/src/components/CallSignature.js.map +1 -1
- package/dist/dev/src/components/ConstructorDeclaration.js +1 -1
- package/dist/dev/src/components/ConstructorDeclaration.js.map +1 -1
- package/dist/dev/src/components/DataclassDeclaration.js +5 -5
- package/dist/dev/src/components/DataclassDeclaration.js.map +1 -1
- package/dist/dev/src/components/FunctionBase.js +9 -9
- package/dist/dev/src/components/FunctionBase.js.map +1 -1
- package/dist/dev/src/components/PropertyDeclaration.js +8 -8
- package/dist/dev/src/components/PropertyDeclaration.js.map +1 -1
- package/dist/dev/src/components/PyDoc.js +64 -64
- package/dist/dev/src/components/PyDoc.js.map +1 -1
- package/dist/dev/src/components/PydanticClassDeclaration.js +5 -5
- package/dist/dev/src/components/PydanticClassDeclaration.js.map +1 -1
- package/dist/dev/src/components/SourceFile.js +44 -32
- package/dist/dev/src/components/SourceFile.js.map +1 -1
- package/dist/dev/src/symbols/python-output-symbol.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/CallSignature.d.ts.map +1 -1
- package/dist/src/components/CallSignature.js.map +1 -1
- package/dist/src/components/ConstructorDeclaration.d.ts.map +1 -1
- package/dist/src/components/ConstructorDeclaration.js.map +1 -1
- package/dist/src/components/DataclassDeclaration.d.ts.map +1 -1
- package/dist/src/components/DataclassDeclaration.js.map +1 -1
- package/dist/src/components/FunctionBase.d.ts.map +1 -1
- package/dist/src/components/FunctionBase.js.map +1 -1
- package/dist/src/components/PropertyDeclaration.d.ts.map +1 -1
- package/dist/src/components/PropertyDeclaration.js.map +1 -1
- package/dist/src/components/PyDoc.d.ts.map +1 -1
- package/dist/src/components/PyDoc.js.map +1 -1
- package/dist/src/components/PydanticClassDeclaration.d.ts.map +1 -1
- package/dist/src/components/PydanticClassDeclaration.js.map +1 -1
- 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/src/symbols/python-output-symbol.d.ts.map +1 -1
- package/dist/src/symbols/python-output-symbol.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/FunctionalEnumDeclaration.md +3 -6
- package/docs/api/components/MemberExpression.md +1 -5
- package/docs/api/components/SourceFile.md +20 -8
- package/docs/api/components/index.md +0 -2
- package/docs/api/functions/isTypeRefContext.md +1 -1
- package/docs/api/index.md +2 -2
- package/docs/api/types/ReferenceProps.md +7 -0
- package/docs/api/types/TypeRefContextProps.md +7 -0
- package/docs/api/types/index.md +2 -0
- package/package.json +11 -10
- package/src/components/CallSignature.tsx +4 -2
- package/src/components/ConstructorDeclaration.tsx +4 -2
- package/src/components/DataclassDeclaration.tsx +1 -2
- package/src/components/FunctionBase.tsx +1 -2
- package/src/components/PropertyDeclaration.tsx +8 -4
- package/src/components/PyDoc.tsx +12 -6
- package/src/components/PydanticClassDeclaration.tsx +1 -2
- package/src/components/SourceFile.tsx +6 -1
- package/src/symbols/python-output-symbol.ts +1 -2
- package/temp/api.json +107 -61
- 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/tsdoc-metadata.json +1 -1
- package/vitest.config.ts +4 -0
- package/docs/api/components/Reference.md +0 -31
- package/docs/api/components/TypeRefContext.md +0 -41
|
@@ -1,251 +1,316 @@
|
|
|
1
1
|
import { createComponent as _$createComponent } from "@alloy-js/core/jsx-runtime";
|
|
2
|
-
import { code, namekey, refkey } from "@alloy-js/core";
|
|
3
|
-
import { d } from "@alloy-js/core/testing";
|
|
2
|
+
import { code, namekey, refkey, render } from "@alloy-js/core";
|
|
4
3
|
import { describe, expect, it } from "vitest";
|
|
5
4
|
import * as py from "../src/index.js";
|
|
6
5
|
import { abcModule } from "../src/index.js";
|
|
7
|
-
import {
|
|
6
|
+
import { TestOutput, TestOutputDirectory } from "./utils.js";
|
|
8
7
|
describe("Function Declaration", () => {
|
|
9
8
|
it("renders multiple decorators above def without blank lines", () => {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
9
|
+
expect(_$createComponent(TestOutput, {
|
|
10
|
+
get children() {
|
|
11
|
+
return _$createComponent(py.FunctionDeclaration, {
|
|
12
|
+
name: "f",
|
|
13
|
+
decorators: ["@a", "@b", "@c"],
|
|
14
|
+
children: "pass"
|
|
15
|
+
}, {
|
|
16
|
+
fileName: import.meta.url,
|
|
17
|
+
lineNumber: 11,
|
|
18
|
+
columnNumber: 9
|
|
19
|
+
});
|
|
20
|
+
}
|
|
14
21
|
}, {
|
|
15
22
|
fileName: import.meta.url,
|
|
16
|
-
lineNumber:
|
|
23
|
+
lineNumber: 10,
|
|
17
24
|
columnNumber: 7
|
|
18
|
-
})
|
|
19
|
-
expect(result).toRenderTo(d`
|
|
25
|
+
})).toRenderTo(`
|
|
20
26
|
@a
|
|
21
27
|
@b
|
|
22
28
|
@c
|
|
23
29
|
def f():
|
|
24
30
|
pass
|
|
25
31
|
|
|
26
|
-
|
|
27
32
|
`);
|
|
28
33
|
});
|
|
29
34
|
it("renders a function with no body as 'pass'", () => {
|
|
30
|
-
|
|
31
|
-
|
|
35
|
+
expect(_$createComponent(TestOutput, {
|
|
36
|
+
get children() {
|
|
37
|
+
return _$createComponent(py.FunctionDeclaration, {
|
|
38
|
+
name: "foo"
|
|
39
|
+
}, {
|
|
40
|
+
fileName: import.meta.url,
|
|
41
|
+
lineNumber: 30,
|
|
42
|
+
columnNumber: 9
|
|
43
|
+
});
|
|
44
|
+
}
|
|
32
45
|
}, {
|
|
33
46
|
fileName: import.meta.url,
|
|
34
|
-
lineNumber:
|
|
35
|
-
columnNumber:
|
|
36
|
-
})
|
|
37
|
-
expect(result).toRenderTo(d`
|
|
47
|
+
lineNumber: 29,
|
|
48
|
+
columnNumber: 7
|
|
49
|
+
})).toRenderTo(`
|
|
38
50
|
def foo():
|
|
39
51
|
pass
|
|
40
52
|
|
|
41
|
-
|
|
42
53
|
`);
|
|
43
54
|
});
|
|
44
55
|
it("takes a namekey", () => {
|
|
45
|
-
|
|
46
|
-
get
|
|
47
|
-
return
|
|
56
|
+
expect(_$createComponent(TestOutput, {
|
|
57
|
+
get children() {
|
|
58
|
+
return _$createComponent(py.FunctionDeclaration, {
|
|
59
|
+
get name() {
|
|
60
|
+
return namekey("foo-bar");
|
|
61
|
+
}
|
|
62
|
+
}, {
|
|
63
|
+
fileName: import.meta.url,
|
|
64
|
+
lineNumber: 44,
|
|
65
|
+
columnNumber: 9
|
|
66
|
+
});
|
|
48
67
|
}
|
|
49
68
|
}, {
|
|
50
69
|
fileName: import.meta.url,
|
|
51
|
-
lineNumber:
|
|
70
|
+
lineNumber: 43,
|
|
52
71
|
columnNumber: 7
|
|
53
|
-
})
|
|
54
|
-
expect(result).toRenderTo(d`
|
|
72
|
+
})).toRenderTo(`
|
|
55
73
|
def foo_bar():
|
|
56
74
|
pass
|
|
57
75
|
|
|
58
|
-
|
|
59
76
|
`);
|
|
60
77
|
});
|
|
61
78
|
it("renders a function with no body as 'pass' with return type", () => {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
79
|
+
expect(_$createComponent(TestOutput, {
|
|
80
|
+
get children() {
|
|
81
|
+
return _$createComponent(py.FunctionDeclaration, {
|
|
82
|
+
name: "foo",
|
|
83
|
+
returnType: "int"
|
|
84
|
+
}, {
|
|
85
|
+
fileName: import.meta.url,
|
|
86
|
+
lineNumber: 58,
|
|
87
|
+
columnNumber: 9
|
|
88
|
+
});
|
|
89
|
+
}
|
|
65
90
|
}, {
|
|
66
91
|
fileName: import.meta.url,
|
|
67
|
-
lineNumber:
|
|
92
|
+
lineNumber: 57,
|
|
68
93
|
columnNumber: 7
|
|
69
|
-
})
|
|
70
|
-
expect(result).toRenderTo(d`
|
|
94
|
+
})).toRenderTo(`
|
|
71
95
|
def foo() -> int:
|
|
72
96
|
pass
|
|
73
97
|
|
|
74
|
-
|
|
75
98
|
`);
|
|
76
99
|
});
|
|
77
100
|
it("renders a function that calls another function", () => {
|
|
78
101
|
const refkeyFoo = refkey();
|
|
79
|
-
|
|
102
|
+
expect(_$createComponent(TestOutput, {
|
|
80
103
|
get children() {
|
|
81
|
-
return
|
|
82
|
-
name: "foo",
|
|
83
|
-
returnType: "int",
|
|
84
|
-
refkey: refkeyFoo
|
|
85
|
-
}, {
|
|
86
|
-
fileName: import.meta.url,
|
|
87
|
-
lineNumber: 68,
|
|
88
|
-
columnNumber: 9
|
|
89
|
-
}), _$createComponent(py.FunctionDeclaration, {
|
|
90
|
-
name: "bar",
|
|
91
|
-
returnType: "int",
|
|
104
|
+
return _$createComponent(py.StatementList, {
|
|
92
105
|
get children() {
|
|
93
|
-
return _$createComponent(py.
|
|
94
|
-
name: "
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
106
|
+
return [_$createComponent(py.FunctionDeclaration, {
|
|
107
|
+
name: "foo",
|
|
108
|
+
returnType: "int",
|
|
109
|
+
refkey: refkeyFoo
|
|
110
|
+
}, {
|
|
111
|
+
fileName: import.meta.url,
|
|
112
|
+
lineNumber: 74,
|
|
113
|
+
columnNumber: 11
|
|
114
|
+
}), _$createComponent(py.FunctionDeclaration, {
|
|
115
|
+
name: "bar",
|
|
116
|
+
returnType: "int",
|
|
117
|
+
get children() {
|
|
118
|
+
return _$createComponent(py.VariableDeclaration, {
|
|
119
|
+
name: "result",
|
|
120
|
+
type: "int",
|
|
121
|
+
get initializer() {
|
|
122
|
+
return _$createComponent(py.FunctionCallExpression, {
|
|
123
|
+
target: refkeyFoo,
|
|
124
|
+
args: []
|
|
125
|
+
}, {
|
|
126
|
+
fileName: import.meta.url,
|
|
127
|
+
lineNumber: 84,
|
|
128
|
+
columnNumber: 17
|
|
129
|
+
});
|
|
130
|
+
}
|
|
100
131
|
}, {
|
|
101
132
|
fileName: import.meta.url,
|
|
102
|
-
lineNumber:
|
|
103
|
-
columnNumber:
|
|
133
|
+
lineNumber: 80,
|
|
134
|
+
columnNumber: 13
|
|
104
135
|
});
|
|
105
136
|
}
|
|
106
137
|
}, {
|
|
107
138
|
fileName: import.meta.url,
|
|
108
|
-
lineNumber:
|
|
139
|
+
lineNumber: 79,
|
|
109
140
|
columnNumber: 11
|
|
110
|
-
});
|
|
141
|
+
})];
|
|
111
142
|
}
|
|
112
143
|
}, {
|
|
113
144
|
fileName: import.meta.url,
|
|
114
145
|
lineNumber: 73,
|
|
115
146
|
columnNumber: 9
|
|
116
|
-
})
|
|
147
|
+
});
|
|
117
148
|
}
|
|
118
149
|
}, {
|
|
119
150
|
fileName: import.meta.url,
|
|
120
|
-
lineNumber:
|
|
151
|
+
lineNumber: 72,
|
|
121
152
|
columnNumber: 7
|
|
122
|
-
})
|
|
123
|
-
expect(result).toRenderTo(d`
|
|
153
|
+
})).toRenderTo(`
|
|
124
154
|
def foo() -> int:
|
|
125
155
|
pass
|
|
126
156
|
|
|
127
157
|
def bar() -> int:
|
|
128
158
|
result: int = foo()
|
|
129
159
|
|
|
130
|
-
|
|
131
160
|
`);
|
|
132
161
|
});
|
|
133
162
|
it("renders a function with parameters", () => {
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
163
|
+
expect(_$createComponent(TestOutput, {
|
|
164
|
+
get children() {
|
|
165
|
+
return _$createComponent(py.FunctionDeclaration, {
|
|
166
|
+
name: "baz",
|
|
167
|
+
parameters: [{
|
|
168
|
+
name: "x",
|
|
169
|
+
type: "int"
|
|
170
|
+
}, {
|
|
171
|
+
name: "y",
|
|
172
|
+
default: 0
|
|
173
|
+
}, {
|
|
174
|
+
name: "z",
|
|
175
|
+
type: "int",
|
|
176
|
+
default: 42
|
|
177
|
+
}],
|
|
178
|
+
args: true,
|
|
179
|
+
kwargs: true,
|
|
180
|
+
children: "print(x, y)"
|
|
181
|
+
}, {
|
|
182
|
+
fileName: import.meta.url,
|
|
183
|
+
lineNumber: 105,
|
|
184
|
+
columnNumber: 9
|
|
185
|
+
});
|
|
186
|
+
}
|
|
150
187
|
}, {
|
|
151
188
|
fileName: import.meta.url,
|
|
152
|
-
lineNumber:
|
|
189
|
+
lineNumber: 104,
|
|
153
190
|
columnNumber: 7
|
|
154
|
-
})
|
|
155
|
-
expect(result).toRenderTo(d`
|
|
191
|
+
})).toRenderTo(`
|
|
156
192
|
def baz(x: int, y=0, z: int = 42, *args, **kwargs):
|
|
157
193
|
print(x, y)
|
|
158
194
|
|
|
159
|
-
|
|
160
195
|
`);
|
|
161
196
|
});
|
|
162
197
|
it("renders an __init__ function with no body as 'pass'", () => {
|
|
163
|
-
|
|
164
|
-
name: "MyClass",
|
|
198
|
+
expect(_$createComponent(TestOutput, {
|
|
165
199
|
get children() {
|
|
166
|
-
return _$createComponent(py.
|
|
167
|
-
name: "
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
200
|
+
return _$createComponent(py.ClassDeclaration, {
|
|
201
|
+
name: "MyClass",
|
|
202
|
+
get children() {
|
|
203
|
+
return _$createComponent(py.DunderMethodDeclaration, {
|
|
204
|
+
name: "__init__",
|
|
205
|
+
parameters: [{
|
|
206
|
+
name: "x"
|
|
207
|
+
}]
|
|
208
|
+
}, {
|
|
209
|
+
fileName: import.meta.url,
|
|
210
|
+
lineNumber: 131,
|
|
211
|
+
columnNumber: 11
|
|
212
|
+
});
|
|
213
|
+
}
|
|
171
214
|
}, {
|
|
172
215
|
fileName: import.meta.url,
|
|
173
|
-
lineNumber:
|
|
216
|
+
lineNumber: 130,
|
|
174
217
|
columnNumber: 9
|
|
175
218
|
});
|
|
176
219
|
}
|
|
177
220
|
}, {
|
|
178
221
|
fileName: import.meta.url,
|
|
179
|
-
lineNumber:
|
|
222
|
+
lineNumber: 129,
|
|
180
223
|
columnNumber: 7
|
|
181
|
-
})
|
|
182
|
-
expect(result).toRenderTo(d`
|
|
224
|
+
})).toRenderTo(`
|
|
183
225
|
class MyClass:
|
|
184
226
|
def __init__(self, x):
|
|
185
227
|
pass
|
|
186
228
|
|
|
187
|
-
|
|
188
|
-
|
|
229
|
+
|
|
189
230
|
`);
|
|
190
231
|
});
|
|
191
232
|
it("can be an async function", () => {
|
|
192
|
-
expect(
|
|
193
|
-
|
|
194
|
-
|
|
233
|
+
expect(_$createComponent(TestOutput, {
|
|
234
|
+
get children() {
|
|
235
|
+
return _$createComponent(py.FunctionDeclaration, {
|
|
236
|
+
async: true,
|
|
237
|
+
name: "foo"
|
|
238
|
+
}, {
|
|
239
|
+
fileName: import.meta.url,
|
|
240
|
+
lineNumber: 151,
|
|
241
|
+
columnNumber: 9
|
|
242
|
+
});
|
|
243
|
+
}
|
|
195
244
|
}, {
|
|
196
245
|
fileName: import.meta.url,
|
|
197
|
-
lineNumber:
|
|
198
|
-
columnNumber:
|
|
199
|
-
})
|
|
246
|
+
lineNumber: 150,
|
|
247
|
+
columnNumber: 7
|
|
248
|
+
})).toRenderTo(`
|
|
200
249
|
async def foo():
|
|
201
250
|
pass
|
|
202
251
|
|
|
203
252
|
`);
|
|
204
253
|
});
|
|
205
254
|
it("can be an async function with returnType", () => {
|
|
206
|
-
expect(
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
255
|
+
expect(_$createComponent(TestOutput, {
|
|
256
|
+
get children() {
|
|
257
|
+
return _$createComponent(py.FunctionDeclaration, {
|
|
258
|
+
async: true,
|
|
259
|
+
name: "foo",
|
|
260
|
+
returnType: "Foo"
|
|
261
|
+
}, {
|
|
262
|
+
fileName: import.meta.url,
|
|
263
|
+
lineNumber: 165,
|
|
264
|
+
columnNumber: 9
|
|
265
|
+
});
|
|
266
|
+
}
|
|
210
267
|
}, {
|
|
211
268
|
fileName: import.meta.url,
|
|
212
|
-
lineNumber:
|
|
213
|
-
columnNumber:
|
|
214
|
-
})
|
|
269
|
+
lineNumber: 164,
|
|
270
|
+
columnNumber: 7
|
|
271
|
+
})).toRenderTo(`
|
|
215
272
|
async def foo() -> Foo:
|
|
216
273
|
pass
|
|
217
274
|
|
|
218
275
|
`);
|
|
219
276
|
});
|
|
220
277
|
it("can be an async function with returnType element with Reference", () => {
|
|
221
|
-
expect(
|
|
278
|
+
expect(_$createComponent(TestOutput, {
|
|
222
279
|
get children() {
|
|
223
|
-
return
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
280
|
+
return _$createComponent(py.StatementList, {
|
|
281
|
+
get children() {
|
|
282
|
+
return [_$createComponent(py.ClassDeclaration, {
|
|
283
|
+
name: "Foo",
|
|
284
|
+
get refkey() {
|
|
285
|
+
return refkey("Foo");
|
|
286
|
+
}
|
|
287
|
+
}, {
|
|
288
|
+
fileName: import.meta.url,
|
|
289
|
+
lineNumber: 180,
|
|
290
|
+
columnNumber: 11
|
|
291
|
+
}), _$createComponent(py.FunctionDeclaration, {
|
|
292
|
+
async: true,
|
|
293
|
+
name: "foo",
|
|
294
|
+
get returnType() {
|
|
295
|
+
return refkey("Foo");
|
|
296
|
+
}
|
|
297
|
+
}, {
|
|
298
|
+
fileName: import.meta.url,
|
|
299
|
+
lineNumber: 181,
|
|
300
|
+
columnNumber: 11
|
|
301
|
+
})];
|
|
237
302
|
}
|
|
238
303
|
}, {
|
|
239
304
|
fileName: import.meta.url,
|
|
240
|
-
lineNumber:
|
|
241
|
-
columnNumber:
|
|
242
|
-
})
|
|
305
|
+
lineNumber: 179,
|
|
306
|
+
columnNumber: 9
|
|
307
|
+
});
|
|
243
308
|
}
|
|
244
309
|
}, {
|
|
245
310
|
fileName: import.meta.url,
|
|
246
|
-
lineNumber:
|
|
247
|
-
columnNumber:
|
|
248
|
-
})
|
|
311
|
+
lineNumber: 178,
|
|
312
|
+
columnNumber: 7
|
|
313
|
+
})).toRenderTo(`
|
|
249
314
|
class Foo:
|
|
250
315
|
pass
|
|
251
316
|
|
|
@@ -255,34 +320,42 @@ describe("Function Declaration", () => {
|
|
|
255
320
|
`);
|
|
256
321
|
});
|
|
257
322
|
it("can be an async function with returnType element with list of References", () => {
|
|
258
|
-
expect(
|
|
323
|
+
expect(_$createComponent(TestOutput, {
|
|
259
324
|
get children() {
|
|
260
|
-
return
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
325
|
+
return _$createComponent(py.StatementList, {
|
|
326
|
+
get children() {
|
|
327
|
+
return [_$createComponent(py.ClassDeclaration, {
|
|
328
|
+
name: "Foo",
|
|
329
|
+
get refkey() {
|
|
330
|
+
return refkey("Foo");
|
|
331
|
+
}
|
|
332
|
+
}, {
|
|
333
|
+
fileName: import.meta.url,
|
|
334
|
+
lineNumber: 200,
|
|
335
|
+
columnNumber: 11
|
|
336
|
+
}), _$createComponent(py.FunctionDeclaration, {
|
|
337
|
+
async: true,
|
|
338
|
+
name: "foo",
|
|
339
|
+
get returnType() {
|
|
340
|
+
return code`list[${refkey("Foo")}]`;
|
|
341
|
+
}
|
|
342
|
+
}, {
|
|
343
|
+
fileName: import.meta.url,
|
|
344
|
+
lineNumber: 201,
|
|
345
|
+
columnNumber: 11
|
|
346
|
+
})];
|
|
274
347
|
}
|
|
275
348
|
}, {
|
|
276
349
|
fileName: import.meta.url,
|
|
277
|
-
lineNumber:
|
|
278
|
-
columnNumber:
|
|
279
|
-
})
|
|
350
|
+
lineNumber: 199,
|
|
351
|
+
columnNumber: 9
|
|
352
|
+
});
|
|
280
353
|
}
|
|
281
354
|
}, {
|
|
282
355
|
fileName: import.meta.url,
|
|
283
|
-
lineNumber:
|
|
284
|
-
columnNumber:
|
|
285
|
-
})
|
|
356
|
+
lineNumber: 198,
|
|
357
|
+
columnNumber: 7
|
|
358
|
+
})).toRenderTo(`
|
|
286
359
|
class Foo:
|
|
287
360
|
pass
|
|
288
361
|
|
|
@@ -306,28 +379,34 @@ describe("Function Declaration", () => {
|
|
|
306
379
|
children: "return self"
|
|
307
380
|
}, {
|
|
308
381
|
fileName: import.meta.url,
|
|
309
|
-
lineNumber:
|
|
382
|
+
lineNumber: 225,
|
|
310
383
|
columnNumber: 13
|
|
311
384
|
});
|
|
312
385
|
}
|
|
313
386
|
}, {
|
|
314
387
|
fileName: import.meta.url,
|
|
315
|
-
lineNumber:
|
|
388
|
+
lineNumber: 224,
|
|
316
389
|
columnNumber: 11
|
|
317
390
|
});
|
|
318
391
|
}
|
|
319
392
|
}, {
|
|
320
393
|
fileName: import.meta.url,
|
|
321
|
-
lineNumber:
|
|
394
|
+
lineNumber: 223,
|
|
322
395
|
columnNumber: 9
|
|
323
396
|
});
|
|
324
397
|
}
|
|
325
398
|
}, {
|
|
326
399
|
fileName: import.meta.url,
|
|
327
|
-
lineNumber:
|
|
400
|
+
lineNumber: 222,
|
|
328
401
|
columnNumber: 7
|
|
329
402
|
});
|
|
330
|
-
expect(
|
|
403
|
+
expect(_$createComponent(TestOutput, {
|
|
404
|
+
children: decl
|
|
405
|
+
}, {
|
|
406
|
+
fileName: import.meta.url,
|
|
407
|
+
lineNumber: 237,
|
|
408
|
+
columnNumber: 12
|
|
409
|
+
})).toRenderTo(`
|
|
331
410
|
class MyClass:
|
|
332
411
|
async def __aenter__(self) -> MyClass:
|
|
333
412
|
return self
|
|
@@ -349,28 +428,34 @@ describe("Function Declaration", () => {
|
|
|
349
428
|
children: "return super().__new__(cls)"
|
|
350
429
|
}, {
|
|
351
430
|
fileName: import.meta.url,
|
|
352
|
-
lineNumber:
|
|
431
|
+
lineNumber: 253,
|
|
353
432
|
columnNumber: 13
|
|
354
433
|
});
|
|
355
434
|
}
|
|
356
435
|
}, {
|
|
357
436
|
fileName: import.meta.url,
|
|
358
|
-
lineNumber:
|
|
437
|
+
lineNumber: 252,
|
|
359
438
|
columnNumber: 11
|
|
360
439
|
});
|
|
361
440
|
}
|
|
362
441
|
}, {
|
|
363
442
|
fileName: import.meta.url,
|
|
364
|
-
lineNumber:
|
|
443
|
+
lineNumber: 251,
|
|
365
444
|
columnNumber: 9
|
|
366
445
|
});
|
|
367
446
|
}
|
|
368
447
|
}, {
|
|
369
448
|
fileName: import.meta.url,
|
|
370
|
-
lineNumber:
|
|
449
|
+
lineNumber: 250,
|
|
371
450
|
columnNumber: 7
|
|
372
451
|
});
|
|
373
|
-
expect(
|
|
452
|
+
expect(_$createComponent(TestOutput, {
|
|
453
|
+
children: decl
|
|
454
|
+
}, {
|
|
455
|
+
fileName: import.meta.url,
|
|
456
|
+
lineNumber: 261,
|
|
457
|
+
columnNumber: 12
|
|
458
|
+
})).toRenderTo(`
|
|
374
459
|
class MyClass:
|
|
375
460
|
async def __new__(cls) -> MyClass:
|
|
376
461
|
return super().__new__(cls)
|
|
@@ -389,10 +474,16 @@ describe("Function Declaration", () => {
|
|
|
389
474
|
children: "return a + b"
|
|
390
475
|
}, {
|
|
391
476
|
fileName: import.meta.url,
|
|
392
|
-
lineNumber:
|
|
477
|
+
lineNumber: 274,
|
|
393
478
|
columnNumber: 7
|
|
394
479
|
});
|
|
395
|
-
expect(
|
|
480
|
+
expect(_$createComponent(TestOutput, {
|
|
481
|
+
children: decl
|
|
482
|
+
}, {
|
|
483
|
+
fileName: import.meta.url,
|
|
484
|
+
lineNumber: 282,
|
|
485
|
+
columnNumber: 12
|
|
486
|
+
})).toRenderTo(`
|
|
396
487
|
def foo(a, b):
|
|
397
488
|
return a + b
|
|
398
489
|
|
|
@@ -410,10 +501,16 @@ describe("Function Declaration", () => {
|
|
|
410
501
|
children: "return a + b"
|
|
411
502
|
}, {
|
|
412
503
|
fileName: import.meta.url,
|
|
413
|
-
lineNumber:
|
|
504
|
+
lineNumber: 293,
|
|
414
505
|
columnNumber: 7
|
|
415
506
|
});
|
|
416
|
-
expect(
|
|
507
|
+
expect(_$createComponent(TestOutput, {
|
|
508
|
+
children: decl
|
|
509
|
+
}, {
|
|
510
|
+
fileName: import.meta.url,
|
|
511
|
+
lineNumber: 302,
|
|
512
|
+
columnNumber: 12
|
|
513
|
+
})).toRenderTo(`
|
|
417
514
|
def foo[T, U](a, b):
|
|
418
515
|
return a + b
|
|
419
516
|
|
|
@@ -437,7 +534,7 @@ describe("Function Declaration", () => {
|
|
|
437
534
|
abstract: true
|
|
438
535
|
}, {
|
|
439
536
|
fileName: import.meta.url,
|
|
440
|
-
lineNumber:
|
|
537
|
+
lineNumber: 317,
|
|
441
538
|
columnNumber: 13
|
|
442
539
|
}), _$createComponent(py.ClassMethodDeclaration, {
|
|
443
540
|
name: "classdef",
|
|
@@ -445,7 +542,7 @@ describe("Function Declaration", () => {
|
|
|
445
542
|
abstract: true
|
|
446
543
|
}, {
|
|
447
544
|
fileName: import.meta.url,
|
|
448
|
-
lineNumber:
|
|
545
|
+
lineNumber: 322,
|
|
449
546
|
columnNumber: 13
|
|
450
547
|
}), _$createComponent(py.StaticMethodDeclaration, {
|
|
451
548
|
name: "staticdef",
|
|
@@ -453,30 +550,35 @@ describe("Function Declaration", () => {
|
|
|
453
550
|
abstract: true
|
|
454
551
|
}, {
|
|
455
552
|
fileName: import.meta.url,
|
|
456
|
-
lineNumber:
|
|
553
|
+
lineNumber: 327,
|
|
457
554
|
columnNumber: 13
|
|
458
555
|
})];
|
|
459
556
|
}
|
|
460
557
|
}, {
|
|
461
558
|
fileName: import.meta.url,
|
|
462
|
-
lineNumber:
|
|
559
|
+
lineNumber: 316,
|
|
463
560
|
columnNumber: 11
|
|
464
561
|
});
|
|
465
562
|
}
|
|
466
563
|
}, {
|
|
467
564
|
fileName: import.meta.url,
|
|
468
|
-
lineNumber:
|
|
565
|
+
lineNumber: 315,
|
|
469
566
|
columnNumber: 9
|
|
470
567
|
});
|
|
471
568
|
}
|
|
472
569
|
}, {
|
|
473
570
|
fileName: import.meta.url,
|
|
474
|
-
lineNumber:
|
|
571
|
+
lineNumber: 314,
|
|
475
572
|
columnNumber: 7
|
|
476
573
|
});
|
|
477
|
-
expect(
|
|
478
|
-
externals: [abcModule]
|
|
479
|
-
|
|
574
|
+
expect(_$createComponent(TestOutput, {
|
|
575
|
+
externals: [abcModule],
|
|
576
|
+
children: decl
|
|
577
|
+
}, {
|
|
578
|
+
fileName: import.meta.url,
|
|
579
|
+
lineNumber: 337,
|
|
580
|
+
columnNumber: 12
|
|
581
|
+
})).toRenderTo(`
|
|
480
582
|
from abc import abstractmethod
|
|
481
583
|
|
|
482
584
|
|
|
@@ -514,7 +616,7 @@ describe("Function Declaration", () => {
|
|
|
514
616
|
children: "self.attribute = \"value\""
|
|
515
617
|
}, {
|
|
516
618
|
fileName: import.meta.url,
|
|
517
|
-
lineNumber:
|
|
619
|
+
lineNumber: 367,
|
|
518
620
|
columnNumber: 11
|
|
519
621
|
}), _$createComponent(py.DunderMethodDeclaration, {
|
|
520
622
|
name: "__repr__",
|
|
@@ -522,22 +624,28 @@ describe("Function Declaration", () => {
|
|
|
522
624
|
children: "return \"MyClass\""
|
|
523
625
|
}, {
|
|
524
626
|
fileName: import.meta.url,
|
|
525
|
-
lineNumber:
|
|
627
|
+
lineNumber: 370,
|
|
526
628
|
columnNumber: 11
|
|
527
629
|
})];
|
|
528
630
|
}
|
|
529
631
|
}, {
|
|
530
632
|
fileName: import.meta.url,
|
|
531
|
-
lineNumber:
|
|
633
|
+
lineNumber: 366,
|
|
532
634
|
columnNumber: 9
|
|
533
635
|
});
|
|
534
636
|
}
|
|
535
637
|
}, {
|
|
536
638
|
fileName: import.meta.url,
|
|
537
|
-
lineNumber:
|
|
639
|
+
lineNumber: 365,
|
|
538
640
|
columnNumber: 7
|
|
539
641
|
});
|
|
540
|
-
expect(
|
|
642
|
+
expect(_$createComponent(TestOutput, {
|
|
643
|
+
children: decl
|
|
644
|
+
}, {
|
|
645
|
+
fileName: import.meta.url,
|
|
646
|
+
lineNumber: 377,
|
|
647
|
+
columnNumber: 12
|
|
648
|
+
})).toRenderTo(`
|
|
541
649
|
class MyClass:
|
|
542
650
|
def __init__(self, x: int):
|
|
543
651
|
self.attribute = "value"
|
|
@@ -560,22 +668,28 @@ describe("Function Declaration", () => {
|
|
|
560
668
|
children: "pass"
|
|
561
669
|
}, {
|
|
562
670
|
fileName: import.meta.url,
|
|
563
|
-
lineNumber:
|
|
671
|
+
lineNumber: 395,
|
|
564
672
|
columnNumber: 11
|
|
565
673
|
});
|
|
566
674
|
}
|
|
567
675
|
}, {
|
|
568
676
|
fileName: import.meta.url,
|
|
569
|
-
lineNumber:
|
|
677
|
+
lineNumber: 394,
|
|
570
678
|
columnNumber: 9
|
|
571
679
|
});
|
|
572
680
|
}
|
|
573
681
|
}, {
|
|
574
682
|
fileName: import.meta.url,
|
|
575
|
-
lineNumber:
|
|
683
|
+
lineNumber: 393,
|
|
576
684
|
columnNumber: 7
|
|
577
685
|
});
|
|
578
|
-
expect(
|
|
686
|
+
expect(_$createComponent(TestOutput, {
|
|
687
|
+
children: decl
|
|
688
|
+
}, {
|
|
689
|
+
fileName: import.meta.url,
|
|
690
|
+
lineNumber: 402,
|
|
691
|
+
columnNumber: 12
|
|
692
|
+
})).toRenderTo(`
|
|
579
693
|
class MyClass:
|
|
580
694
|
def __new__(cls, *args, **kwargs):
|
|
581
695
|
pass
|
|
@@ -616,7 +730,7 @@ describe("Function Declaration", () => {
|
|
|
616
730
|
children: "return z * 2"
|
|
617
731
|
}, {
|
|
618
732
|
fileName: import.meta.url,
|
|
619
|
-
lineNumber:
|
|
733
|
+
lineNumber: 431,
|
|
620
734
|
columnNumber: 11
|
|
621
735
|
}), "return", " ", _$createComponent(py.FunctionCallExpression, {
|
|
622
736
|
target: foobarRef,
|
|
@@ -625,19 +739,19 @@ describe("Function Declaration", () => {
|
|
|
625
739
|
jsValue: 2
|
|
626
740
|
}, {
|
|
627
741
|
fileName: import.meta.url,
|
|
628
|
-
lineNumber:
|
|
742
|
+
lineNumber: 441,
|
|
629
743
|
columnNumber: 20
|
|
630
744
|
})];
|
|
631
745
|
}
|
|
632
746
|
}, {
|
|
633
747
|
fileName: import.meta.url,
|
|
634
|
-
lineNumber:
|
|
748
|
+
lineNumber: 439,
|
|
635
749
|
columnNumber: 11
|
|
636
750
|
})];
|
|
637
751
|
}
|
|
638
752
|
}, {
|
|
639
753
|
fileName: import.meta.url,
|
|
640
|
-
lineNumber:
|
|
754
|
+
lineNumber: 426,
|
|
641
755
|
columnNumber: 9
|
|
642
756
|
}), "return", " ", _$createComponent(py.FunctionCallExpression, {
|
|
643
757
|
target: barRef,
|
|
@@ -646,22 +760,28 @@ describe("Function Declaration", () => {
|
|
|
646
760
|
jsValue: 3
|
|
647
761
|
}, {
|
|
648
762
|
fileName: import.meta.url,
|
|
649
|
-
lineNumber:
|
|
763
|
+
lineNumber: 447,
|
|
650
764
|
columnNumber: 18
|
|
651
765
|
})];
|
|
652
766
|
}
|
|
653
767
|
}, {
|
|
654
768
|
fileName: import.meta.url,
|
|
655
|
-
lineNumber:
|
|
769
|
+
lineNumber: 445,
|
|
656
770
|
columnNumber: 9
|
|
657
771
|
})];
|
|
658
772
|
}
|
|
659
773
|
}, {
|
|
660
774
|
fileName: import.meta.url,
|
|
661
|
-
lineNumber:
|
|
775
|
+
lineNumber: 421,
|
|
662
776
|
columnNumber: 7
|
|
663
777
|
});
|
|
664
|
-
expect(
|
|
778
|
+
expect(_$createComponent(TestOutput, {
|
|
779
|
+
children: decl
|
|
780
|
+
}, {
|
|
781
|
+
fileName: import.meta.url,
|
|
782
|
+
lineNumber: 452,
|
|
783
|
+
columnNumber: 12
|
|
784
|
+
})).toRenderTo(`
|
|
665
785
|
def foo(x: int):
|
|
666
786
|
def bar(y: int):
|
|
667
787
|
def foobar(z: int):
|
|
@@ -672,83 +792,90 @@ describe("Function Declaration", () => {
|
|
|
672
792
|
`);
|
|
673
793
|
});
|
|
674
794
|
it("renders complex typing structure", () => {
|
|
675
|
-
|
|
676
|
-
path: "mod1.py",
|
|
677
|
-
get children() {
|
|
678
|
-
return _$createComponent(py.ClassDeclaration, {
|
|
679
|
-
name: "Foo",
|
|
680
|
-
get refkey() {
|
|
681
|
-
return refkey("Foo");
|
|
682
|
-
}
|
|
683
|
-
}, {
|
|
684
|
-
fileName: import.meta.url,
|
|
685
|
-
lineNumber: 427,
|
|
686
|
-
columnNumber: 9
|
|
687
|
-
});
|
|
688
|
-
}
|
|
689
|
-
}, {
|
|
690
|
-
fileName: import.meta.url,
|
|
691
|
-
lineNumber: 426,
|
|
692
|
-
columnNumber: 7
|
|
693
|
-
}), _$createComponent(py.SourceFile, {
|
|
694
|
-
path: "mod2.py",
|
|
795
|
+
expect(_$createComponent(TestOutputDirectory, {
|
|
695
796
|
get children() {
|
|
696
|
-
return [_$createComponent(py.
|
|
697
|
-
|
|
698
|
-
get
|
|
699
|
-
return
|
|
797
|
+
return [_$createComponent(py.SourceFile, {
|
|
798
|
+
path: "mod1.py",
|
|
799
|
+
get children() {
|
|
800
|
+
return _$createComponent(py.ClassDeclaration, {
|
|
801
|
+
name: "Foo",
|
|
802
|
+
get refkey() {
|
|
803
|
+
return refkey("Foo");
|
|
804
|
+
}
|
|
805
|
+
}, {
|
|
806
|
+
fileName: import.meta.url,
|
|
807
|
+
lineNumber: 469,
|
|
808
|
+
columnNumber: 11
|
|
809
|
+
});
|
|
700
810
|
}
|
|
701
811
|
}, {
|
|
702
812
|
fileName: import.meta.url,
|
|
703
|
-
lineNumber:
|
|
813
|
+
lineNumber: 468,
|
|
704
814
|
columnNumber: 9
|
|
705
|
-
}), _$createComponent(py.
|
|
706
|
-
|
|
707
|
-
get
|
|
708
|
-
return
|
|
815
|
+
}), _$createComponent(py.SourceFile, {
|
|
816
|
+
path: "mod2.py",
|
|
817
|
+
get children() {
|
|
818
|
+
return [_$createComponent(py.ClassDeclaration, {
|
|
819
|
+
name: "A",
|
|
820
|
+
get refkey() {
|
|
821
|
+
return refkey("A");
|
|
822
|
+
}
|
|
823
|
+
}, {
|
|
824
|
+
fileName: import.meta.url,
|
|
825
|
+
lineNumber: 472,
|
|
826
|
+
columnNumber: 11
|
|
827
|
+
}), _$createComponent(py.ClassDeclaration, {
|
|
828
|
+
name: "B",
|
|
829
|
+
get refkey() {
|
|
830
|
+
return refkey("B");
|
|
831
|
+
}
|
|
832
|
+
}, {
|
|
833
|
+
fileName: import.meta.url,
|
|
834
|
+
lineNumber: 473,
|
|
835
|
+
columnNumber: 11
|
|
836
|
+
})];
|
|
709
837
|
}
|
|
710
838
|
}, {
|
|
711
839
|
fileName: import.meta.url,
|
|
712
|
-
lineNumber:
|
|
840
|
+
lineNumber: 471,
|
|
713
841
|
columnNumber: 9
|
|
714
|
-
})
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
842
|
+
}), _$createComponent(py.SourceFile, {
|
|
843
|
+
path: "usage.py",
|
|
844
|
+
get children() {
|
|
845
|
+
return _$createComponent(py.FunctionDeclaration, {
|
|
846
|
+
async: true,
|
|
847
|
+
name: "foo",
|
|
848
|
+
get parameters() {
|
|
849
|
+
return [{
|
|
850
|
+
name: "x",
|
|
851
|
+
type: refkey("A")
|
|
852
|
+
}, {
|
|
853
|
+
name: "y",
|
|
854
|
+
type: refkey("B")
|
|
855
|
+
}];
|
|
856
|
+
},
|
|
857
|
+
args: true,
|
|
858
|
+
kwargs: true,
|
|
859
|
+
get returnType() {
|
|
860
|
+
return refkey("Foo");
|
|
861
|
+
}
|
|
730
862
|
}, {
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
args: true,
|
|
736
|
-
kwargs: true,
|
|
737
|
-
get returnType() {
|
|
738
|
-
return refkey("Foo");
|
|
863
|
+
fileName: import.meta.url,
|
|
864
|
+
lineNumber: 476,
|
|
865
|
+
columnNumber: 11
|
|
866
|
+
});
|
|
739
867
|
}
|
|
740
868
|
}, {
|
|
741
869
|
fileName: import.meta.url,
|
|
742
|
-
lineNumber:
|
|
870
|
+
lineNumber: 475,
|
|
743
871
|
columnNumber: 9
|
|
744
|
-
});
|
|
872
|
+
})];
|
|
745
873
|
}
|
|
746
874
|
}, {
|
|
747
875
|
fileName: import.meta.url,
|
|
748
|
-
lineNumber:
|
|
876
|
+
lineNumber: 467,
|
|
749
877
|
columnNumber: 7
|
|
750
|
-
})
|
|
751
|
-
assertFileContents(res, {
|
|
878
|
+
})).toRenderTo({
|
|
752
879
|
"mod1.py": `
|
|
753
880
|
class Foo:
|
|
754
881
|
pass
|
|
@@ -780,57 +907,97 @@ describe("Function Declaration", () => {
|
|
|
780
907
|
});
|
|
781
908
|
it("throws error when PropertyDeclaration is used outside of a class", () => {
|
|
782
909
|
expect(() => {
|
|
783
|
-
|
|
784
|
-
|
|
910
|
+
render(_$createComponent(TestOutput, {
|
|
911
|
+
get children() {
|
|
912
|
+
return _$createComponent(py.PropertyDeclaration, {
|
|
913
|
+
name: "x"
|
|
914
|
+
}, {
|
|
915
|
+
fileName: import.meta.url,
|
|
916
|
+
lineNumber: 530,
|
|
917
|
+
columnNumber: 11
|
|
918
|
+
});
|
|
919
|
+
}
|
|
785
920
|
}, {
|
|
786
921
|
fileName: import.meta.url,
|
|
787
|
-
lineNumber:
|
|
788
|
-
columnNumber:
|
|
789
|
-
})
|
|
922
|
+
lineNumber: 529,
|
|
923
|
+
columnNumber: 9
|
|
924
|
+
}));
|
|
790
925
|
}).toThrow('Method "x" must be declared inside a class (member scope)');
|
|
791
926
|
});
|
|
792
927
|
it("throws error when MethodDeclaration is used outside of a class", () => {
|
|
793
928
|
expect(() => {
|
|
794
|
-
|
|
795
|
-
|
|
929
|
+
render(_$createComponent(TestOutput, {
|
|
930
|
+
get children() {
|
|
931
|
+
return _$createComponent(py.MethodDeclaration, {
|
|
932
|
+
name: "my_method"
|
|
933
|
+
}, {
|
|
934
|
+
fileName: import.meta.url,
|
|
935
|
+
lineNumber: 540,
|
|
936
|
+
columnNumber: 11
|
|
937
|
+
});
|
|
938
|
+
}
|
|
796
939
|
}, {
|
|
797
940
|
fileName: import.meta.url,
|
|
798
|
-
lineNumber:
|
|
799
|
-
columnNumber:
|
|
800
|
-
})
|
|
941
|
+
lineNumber: 539,
|
|
942
|
+
columnNumber: 9
|
|
943
|
+
}));
|
|
801
944
|
}).toThrow('Method "my_method" must be declared inside a class (member scope)');
|
|
802
945
|
});
|
|
803
946
|
it("throws error when ClassMethodDeclaration is used outside of a class", () => {
|
|
804
947
|
expect(() => {
|
|
805
|
-
|
|
806
|
-
|
|
948
|
+
render(_$createComponent(TestOutput, {
|
|
949
|
+
get children() {
|
|
950
|
+
return _$createComponent(py.ClassMethodDeclaration, {
|
|
951
|
+
name: "my_class_method"
|
|
952
|
+
}, {
|
|
953
|
+
fileName: import.meta.url,
|
|
954
|
+
lineNumber: 552,
|
|
955
|
+
columnNumber: 11
|
|
956
|
+
});
|
|
957
|
+
}
|
|
807
958
|
}, {
|
|
808
959
|
fileName: import.meta.url,
|
|
809
|
-
lineNumber:
|
|
810
|
-
columnNumber:
|
|
811
|
-
})
|
|
960
|
+
lineNumber: 551,
|
|
961
|
+
columnNumber: 9
|
|
962
|
+
}));
|
|
812
963
|
}).toThrow('Method "my_class_method" must be declared inside a class (member scope)');
|
|
813
964
|
});
|
|
814
965
|
it("throws error when StaticMethodDeclaration is used outside of a class", () => {
|
|
815
966
|
expect(() => {
|
|
816
|
-
|
|
817
|
-
|
|
967
|
+
render(_$createComponent(TestOutput, {
|
|
968
|
+
get children() {
|
|
969
|
+
return _$createComponent(py.StaticMethodDeclaration, {
|
|
970
|
+
name: "my_static_method"
|
|
971
|
+
}, {
|
|
972
|
+
fileName: import.meta.url,
|
|
973
|
+
lineNumber: 564,
|
|
974
|
+
columnNumber: 11
|
|
975
|
+
});
|
|
976
|
+
}
|
|
818
977
|
}, {
|
|
819
978
|
fileName: import.meta.url,
|
|
820
|
-
lineNumber:
|
|
821
|
-
columnNumber:
|
|
822
|
-
})
|
|
979
|
+
lineNumber: 563,
|
|
980
|
+
columnNumber: 9
|
|
981
|
+
}));
|
|
823
982
|
}).toThrow('Method "my_static_method" must be declared inside a class (member scope)');
|
|
824
983
|
});
|
|
825
984
|
it("throws error when DunderMethodDeclaration is used outside of a class", () => {
|
|
826
985
|
expect(() => {
|
|
827
|
-
|
|
828
|
-
|
|
986
|
+
render(_$createComponent(TestOutput, {
|
|
987
|
+
get children() {
|
|
988
|
+
return _$createComponent(py.DunderMethodDeclaration, {
|
|
989
|
+
name: "__init__"
|
|
990
|
+
}, {
|
|
991
|
+
fileName: import.meta.url,
|
|
992
|
+
lineNumber: 576,
|
|
993
|
+
columnNumber: 11
|
|
994
|
+
});
|
|
995
|
+
}
|
|
829
996
|
}, {
|
|
830
997
|
fileName: import.meta.url,
|
|
831
|
-
lineNumber:
|
|
832
|
-
columnNumber:
|
|
833
|
-
})
|
|
998
|
+
lineNumber: 575,
|
|
999
|
+
columnNumber: 9
|
|
1000
|
+
}));
|
|
834
1001
|
}).toThrow('Method "__init__" must be declared inside a class (member scope)');
|
|
835
1002
|
});
|
|
836
1003
|
});
|