@alloy-js/python 0.5.0-dev.0 → 0.5.0-dev.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dev/src/builtins/python.js +46 -0
- package/dist/dev/src/builtins/python.js.map +1 -1
- package/dist/dev/src/components/ClassDeclaration.js +19 -10
- package/dist/dev/src/components/ClassDeclaration.js.map +1 -1
- package/dist/dev/src/components/ClassMethodDeclaration.js +20 -5
- package/dist/dev/src/components/ClassMethodDeclaration.js.map +1 -1
- package/dist/dev/src/components/DataclassDeclaration.js +14 -12
- package/dist/dev/src/components/DataclassDeclaration.js.map +1 -1
- package/dist/dev/src/components/DecoratorList.js +55 -0
- package/dist/dev/src/components/DecoratorList.js.map +1 -0
- package/dist/dev/src/components/EnumDeclaration.js +21 -12
- package/dist/dev/src/components/EnumDeclaration.js.map +1 -1
- package/dist/dev/src/components/FunctionBase.js +21 -10
- package/dist/dev/src/components/FunctionBase.js.map +1 -1
- package/dist/dev/src/components/FutureStatement.js +1 -1
- package/dist/dev/src/components/MethodBase.js +16 -4
- package/dist/dev/src/components/MethodBase.js.map +1 -1
- package/dist/dev/src/components/PropertyDeclaration.js +68 -17
- package/dist/dev/src/components/PropertyDeclaration.js.map +1 -1
- package/dist/dev/src/components/PydanticClassDeclaration.js +136 -0
- package/dist/dev/src/components/PydanticClassDeclaration.js.map +1 -0
- package/dist/dev/src/components/SourceFile.js +44 -32
- package/dist/dev/src/components/SourceFile.js.map +1 -1
- package/dist/dev/src/components/StaticMethodDeclaration.js +19 -5
- package/dist/dev/src/components/StaticMethodDeclaration.js.map +1 -1
- package/dist/dev/src/components/index.js +1 -0
- package/dist/dev/src/components/index.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 +480 -381
- 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 +345 -358
- package/dist/dev/test/dataclassdeclarations.test.js.map +1 -1
- package/dist/dev/test/decoratorlist.test.js +131 -0
- package/dist/dev/test/decoratorlist.test.js.map +1 -0
- 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 +231 -166
- 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 +452 -265
- 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 +200 -45
- 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 +177 -46
- package/dist/dev/test/propertydeclaration.test.js.map +1 -1
- package/dist/dev/test/pydanticclassdeclarations.test.js +1089 -0
- package/dist/dev/test/pydanticclassdeclarations.test.js.map +1 -0
- 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/builtins/python.d.ts +30 -0
- package/dist/src/builtins/python.d.ts.map +1 -1
- package/dist/src/builtins/python.js +46 -0
- package/dist/src/builtins/python.js.map +1 -1
- package/dist/src/components/ClassDeclaration.d.ts +21 -0
- package/dist/src/components/ClassDeclaration.d.ts.map +1 -1
- package/dist/src/components/ClassDeclaration.js +6 -1
- package/dist/src/components/ClassDeclaration.js.map +1 -1
- package/dist/src/components/ClassMethodDeclaration.d.ts +5 -1
- package/dist/src/components/ClassMethodDeclaration.d.ts.map +1 -1
- package/dist/src/components/ClassMethodDeclaration.js +14 -3
- package/dist/src/components/ClassMethodDeclaration.js.map +1 -1
- package/dist/src/components/DataclassDeclaration.d.ts.map +1 -1
- package/dist/src/components/DataclassDeclaration.js +10 -4
- package/dist/src/components/DataclassDeclaration.js.map +1 -1
- package/dist/src/components/DecoratorList.d.ts +43 -0
- package/dist/src/components/DecoratorList.d.ts.map +1 -0
- package/dist/src/components/DecoratorList.js +47 -0
- package/dist/src/components/DecoratorList.js.map +1 -0
- package/dist/src/components/EnumDeclaration.d.ts +9 -0
- package/dist/src/components/EnumDeclaration.d.ts.map +1 -1
- package/dist/src/components/EnumDeclaration.js +6 -1
- package/dist/src/components/EnumDeclaration.js.map +1 -1
- package/dist/src/components/FunctionBase.d.ts +31 -1
- package/dist/src/components/FunctionBase.d.ts.map +1 -1
- package/dist/src/components/FunctionBase.js +9 -2
- package/dist/src/components/FunctionBase.js.map +1 -1
- package/dist/src/components/FutureStatement.d.ts +1 -1
- package/dist/src/components/FutureStatement.js +1 -1
- package/dist/src/components/MethodBase.d.ts.map +1 -1
- package/dist/src/components/MethodBase.js +10 -2
- package/dist/src/components/MethodBase.js.map +1 -1
- package/dist/src/components/PropertyDeclaration.d.ts +29 -0
- package/dist/src/components/PropertyDeclaration.d.ts.map +1 -1
- package/dist/src/components/PropertyDeclaration.js +48 -1
- package/dist/src/components/PropertyDeclaration.js.map +1 -1
- package/dist/src/components/PydanticClassDeclaration.d.ts +120 -0
- package/dist/src/components/PydanticClassDeclaration.d.ts.map +1 -0
- package/dist/src/components/PydanticClassDeclaration.js +116 -0
- package/dist/src/components/PydanticClassDeclaration.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/src/components/StaticMethodDeclaration.d.ts +3 -0
- package/dist/src/components/StaticMethodDeclaration.d.ts.map +1 -1
- package/dist/src/components/StaticMethodDeclaration.js +13 -3
- package/dist/src/components/StaticMethodDeclaration.js.map +1 -1
- package/dist/src/components/index.d.ts +1 -0
- package/dist/src/components/index.d.ts.map +1 -1
- package/dist/src/components/index.js +1 -0
- package/dist/src/components/index.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 +316 -277
- 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 +153 -178
- package/dist/test/dataclassdeclarations.test.js.map +1 -1
- package/dist/test/decoratorlist.test.d.ts +2 -0
- package/dist/test/decoratorlist.test.d.ts.map +1 -0
- package/dist/test/decoratorlist.test.js +83 -0
- package/dist/test/decoratorlist.test.js.map +1 -0
- package/dist/test/dundermethoddeclaration.test.js +7 -4
- package/dist/test/dundermethoddeclaration.test.js.map +1 -1
- package/dist/test/enums.test.js +172 -143
- 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 +256 -173
- 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 +106 -19
- 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 +90 -15
- package/dist/test/propertydeclaration.test.js.map +1 -1
- package/dist/test/pydanticclassdeclarations.test.d.ts +2 -0
- package/dist/test/pydanticclassdeclarations.test.d.ts.map +1 -0
- package/dist/test/pydanticclassdeclarations.test.js +773 -0
- package/dist/test/pydanticclassdeclarations.test.js.map +1 -0
- 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/ClassDeclaration.md +10 -7
- package/docs/api/components/ClassEnumDeclaration.md +9 -6
- package/docs/api/components/ClassMethodDeclaration.md +7 -5
- package/docs/api/components/DataclassDeclaration.md +9 -5
- package/docs/api/components/DunderMethodDeclaration.md +7 -5
- package/docs/api/components/FunctionDeclaration.md +9 -5
- package/docs/api/components/FutureStatement.md +1 -1
- package/docs/api/components/MethodDeclaration.md +11 -6
- package/docs/api/components/PropertyDeclaration.md +11 -8
- package/docs/api/components/PydanticClassDeclaration.md +146 -0
- package/docs/api/components/SourceFile.md +20 -8
- package/docs/api/components/StaticMethodDeclaration.md +7 -5
- package/docs/api/components/index.md +1 -0
- package/docs/api/index.md +3 -3
- package/docs/api/types/CommonFunctionProps.md +4 -3
- package/docs/api/types/PydanticModelConfigDictProps.md +32 -0
- package/docs/api/types/index.md +1 -0
- package/docs/api/variables/index.md +3 -0
- package/docs/api/variables/pydanticModule.md +27 -0
- package/docs/api/variables/pydanticSettingsModule.md +7 -0
- package/docs/api/variables/typingModule.md +9 -0
- package/package.json +4 -4
- package/src/builtins/python.ts +539 -1
- package/src/components/ClassDeclaration.tsx +23 -0
- package/src/components/ClassMethodDeclaration.tsx +9 -1
- package/src/components/DataclassDeclaration.tsx +18 -11
- package/src/components/DecoratorList.tsx +50 -0
- package/src/components/EnumDeclaration.tsx +11 -0
- package/src/components/FunctionBase.tsx +34 -3
- package/src/components/FutureStatement.tsx +1 -1
- package/src/components/MethodBase.tsx +6 -2
- package/src/components/PropertyDeclaration.tsx +48 -1
- package/src/components/PydanticClassDeclaration.tsx +222 -0
- package/src/components/SourceFile.tsx +6 -1
- package/src/components/StaticMethodDeclaration.tsx +7 -1
- package/src/components/index.ts +1 -0
- package/temp/api.json +1158 -86
- package/test/callsignatures.test.tsx +309 -283
- package/test/class-method-declaration.test.tsx +3 -4
- package/test/classdeclarations.test.tsx +277 -235
- package/test/classinstantiations.test.tsx +115 -109
- package/test/constructordeclaration.test.tsx +9 -6
- package/test/dataclassdeclarations.test.tsx +256 -349
- package/test/decoratorlist.test.tsx +114 -0
- package/test/dundermethoddeclaration.test.tsx +3 -4
- package/test/enums.test.tsx +84 -71
- 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 +218 -140
- package/test/imports.test.tsx +119 -91
- package/test/memberexpressions.test.tsx +265 -207
- package/test/methoddeclaration.test.tsx +115 -24
- package/test/namepolicies.test.tsx +69 -69
- package/test/propertydeclaration.test.tsx +71 -7
- package/test/pydanticclassdeclarations.test.tsx +704 -0
- 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,231 +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", () => {
|
|
8
|
+
it("renders multiple decorators above def without blank lines", () => {
|
|
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
|
+
}
|
|
21
|
+
}, {
|
|
22
|
+
fileName: import.meta.url,
|
|
23
|
+
lineNumber: 10,
|
|
24
|
+
columnNumber: 7
|
|
25
|
+
})).toRenderTo(`
|
|
26
|
+
@a
|
|
27
|
+
@b
|
|
28
|
+
@c
|
|
29
|
+
def f():
|
|
30
|
+
pass
|
|
31
|
+
|
|
32
|
+
`);
|
|
33
|
+
});
|
|
9
34
|
it("renders a function with no body as 'pass'", () => {
|
|
10
|
-
|
|
11
|
-
|
|
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
|
+
}
|
|
12
45
|
}, {
|
|
13
46
|
fileName: import.meta.url,
|
|
14
|
-
lineNumber:
|
|
15
|
-
columnNumber:
|
|
16
|
-
})
|
|
17
|
-
expect(result).toRenderTo(d`
|
|
47
|
+
lineNumber: 29,
|
|
48
|
+
columnNumber: 7
|
|
49
|
+
})).toRenderTo(`
|
|
18
50
|
def foo():
|
|
19
51
|
pass
|
|
20
52
|
|
|
21
|
-
|
|
22
53
|
`);
|
|
23
54
|
});
|
|
24
55
|
it("takes a namekey", () => {
|
|
25
|
-
|
|
26
|
-
get
|
|
27
|
-
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
|
+
});
|
|
28
67
|
}
|
|
29
68
|
}, {
|
|
30
69
|
fileName: import.meta.url,
|
|
31
|
-
lineNumber:
|
|
70
|
+
lineNumber: 43,
|
|
32
71
|
columnNumber: 7
|
|
33
|
-
})
|
|
34
|
-
expect(result).toRenderTo(d`
|
|
72
|
+
})).toRenderTo(`
|
|
35
73
|
def foo_bar():
|
|
36
74
|
pass
|
|
37
75
|
|
|
38
|
-
|
|
39
76
|
`);
|
|
40
77
|
});
|
|
41
78
|
it("renders a function with no body as 'pass' with return type", () => {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
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
|
+
}
|
|
45
90
|
}, {
|
|
46
91
|
fileName: import.meta.url,
|
|
47
|
-
lineNumber:
|
|
92
|
+
lineNumber: 57,
|
|
48
93
|
columnNumber: 7
|
|
49
|
-
})
|
|
50
|
-
expect(result).toRenderTo(d`
|
|
94
|
+
})).toRenderTo(`
|
|
51
95
|
def foo() -> int:
|
|
52
96
|
pass
|
|
53
97
|
|
|
54
|
-
|
|
55
98
|
`);
|
|
56
99
|
});
|
|
57
100
|
it("renders a function that calls another function", () => {
|
|
58
101
|
const refkeyFoo = refkey();
|
|
59
|
-
|
|
102
|
+
expect(_$createComponent(TestOutput, {
|
|
60
103
|
get children() {
|
|
61
|
-
return
|
|
62
|
-
name: "foo",
|
|
63
|
-
returnType: "int",
|
|
64
|
-
refkey: refkeyFoo
|
|
65
|
-
}, {
|
|
66
|
-
fileName: import.meta.url,
|
|
67
|
-
lineNumber: 51,
|
|
68
|
-
columnNumber: 9
|
|
69
|
-
}), _$createComponent(py.FunctionDeclaration, {
|
|
70
|
-
name: "bar",
|
|
71
|
-
returnType: "int",
|
|
104
|
+
return _$createComponent(py.StatementList, {
|
|
72
105
|
get children() {
|
|
73
|
-
return _$createComponent(py.
|
|
74
|
-
name: "
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
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
|
+
}
|
|
80
131
|
}, {
|
|
81
132
|
fileName: import.meta.url,
|
|
82
|
-
lineNumber:
|
|
83
|
-
columnNumber:
|
|
133
|
+
lineNumber: 80,
|
|
134
|
+
columnNumber: 13
|
|
84
135
|
});
|
|
85
136
|
}
|
|
86
137
|
}, {
|
|
87
138
|
fileName: import.meta.url,
|
|
88
|
-
lineNumber:
|
|
139
|
+
lineNumber: 79,
|
|
89
140
|
columnNumber: 11
|
|
90
|
-
});
|
|
141
|
+
})];
|
|
91
142
|
}
|
|
92
143
|
}, {
|
|
93
144
|
fileName: import.meta.url,
|
|
94
|
-
lineNumber:
|
|
145
|
+
lineNumber: 73,
|
|
95
146
|
columnNumber: 9
|
|
96
|
-
})
|
|
147
|
+
});
|
|
97
148
|
}
|
|
98
149
|
}, {
|
|
99
150
|
fileName: import.meta.url,
|
|
100
|
-
lineNumber:
|
|
151
|
+
lineNumber: 72,
|
|
101
152
|
columnNumber: 7
|
|
102
|
-
})
|
|
103
|
-
expect(result).toRenderTo(d`
|
|
153
|
+
})).toRenderTo(`
|
|
104
154
|
def foo() -> int:
|
|
105
155
|
pass
|
|
106
156
|
|
|
107
157
|
def bar() -> int:
|
|
108
158
|
result: int = foo()
|
|
109
159
|
|
|
110
|
-
|
|
111
160
|
`);
|
|
112
161
|
});
|
|
113
162
|
it("renders a function with parameters", () => {
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
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
|
+
}
|
|
130
187
|
}, {
|
|
131
188
|
fileName: import.meta.url,
|
|
132
|
-
lineNumber:
|
|
189
|
+
lineNumber: 104,
|
|
133
190
|
columnNumber: 7
|
|
134
|
-
})
|
|
135
|
-
expect(result).toRenderTo(d`
|
|
191
|
+
})).toRenderTo(`
|
|
136
192
|
def baz(x: int, y=0, z: int = 42, *args, **kwargs):
|
|
137
193
|
print(x, y)
|
|
138
194
|
|
|
139
|
-
|
|
140
195
|
`);
|
|
141
196
|
});
|
|
142
197
|
it("renders an __init__ function with no body as 'pass'", () => {
|
|
143
|
-
|
|
144
|
-
name: "MyClass",
|
|
198
|
+
expect(_$createComponent(TestOutput, {
|
|
145
199
|
get children() {
|
|
146
|
-
return _$createComponent(py.
|
|
147
|
-
name: "
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
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
|
+
}
|
|
151
214
|
}, {
|
|
152
215
|
fileName: import.meta.url,
|
|
153
|
-
lineNumber:
|
|
216
|
+
lineNumber: 130,
|
|
154
217
|
columnNumber: 9
|
|
155
218
|
});
|
|
156
219
|
}
|
|
157
220
|
}, {
|
|
158
221
|
fileName: import.meta.url,
|
|
159
|
-
lineNumber:
|
|
222
|
+
lineNumber: 129,
|
|
160
223
|
columnNumber: 7
|
|
161
|
-
})
|
|
162
|
-
expect(result).toRenderTo(d`
|
|
224
|
+
})).toRenderTo(`
|
|
163
225
|
class MyClass:
|
|
164
226
|
def __init__(self, x):
|
|
165
227
|
pass
|
|
166
228
|
|
|
167
|
-
|
|
168
|
-
|
|
229
|
+
|
|
169
230
|
`);
|
|
170
231
|
});
|
|
171
232
|
it("can be an async function", () => {
|
|
172
|
-
expect(
|
|
173
|
-
|
|
174
|
-
|
|
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
|
+
}
|
|
175
244
|
}, {
|
|
176
245
|
fileName: import.meta.url,
|
|
177
|
-
lineNumber:
|
|
178
|
-
columnNumber:
|
|
179
|
-
})
|
|
246
|
+
lineNumber: 150,
|
|
247
|
+
columnNumber: 7
|
|
248
|
+
})).toRenderTo(`
|
|
180
249
|
async def foo():
|
|
181
250
|
pass
|
|
182
251
|
|
|
183
252
|
`);
|
|
184
253
|
});
|
|
185
254
|
it("can be an async function with returnType", () => {
|
|
186
|
-
expect(
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
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
|
+
}
|
|
190
267
|
}, {
|
|
191
268
|
fileName: import.meta.url,
|
|
192
|
-
lineNumber:
|
|
193
|
-
columnNumber:
|
|
194
|
-
})
|
|
269
|
+
lineNumber: 164,
|
|
270
|
+
columnNumber: 7
|
|
271
|
+
})).toRenderTo(`
|
|
195
272
|
async def foo() -> Foo:
|
|
196
273
|
pass
|
|
197
274
|
|
|
198
275
|
`);
|
|
199
276
|
});
|
|
200
277
|
it("can be an async function with returnType element with Reference", () => {
|
|
201
|
-
expect(
|
|
278
|
+
expect(_$createComponent(TestOutput, {
|
|
202
279
|
get children() {
|
|
203
|
-
return
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
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
|
+
})];
|
|
217
302
|
}
|
|
218
303
|
}, {
|
|
219
304
|
fileName: import.meta.url,
|
|
220
|
-
lineNumber:
|
|
221
|
-
columnNumber:
|
|
222
|
-
})
|
|
305
|
+
lineNumber: 179,
|
|
306
|
+
columnNumber: 9
|
|
307
|
+
});
|
|
223
308
|
}
|
|
224
309
|
}, {
|
|
225
310
|
fileName: import.meta.url,
|
|
226
|
-
lineNumber:
|
|
227
|
-
columnNumber:
|
|
228
|
-
})
|
|
311
|
+
lineNumber: 178,
|
|
312
|
+
columnNumber: 7
|
|
313
|
+
})).toRenderTo(`
|
|
229
314
|
class Foo:
|
|
230
315
|
pass
|
|
231
316
|
|
|
@@ -235,34 +320,42 @@ describe("Function Declaration", () => {
|
|
|
235
320
|
`);
|
|
236
321
|
});
|
|
237
322
|
it("can be an async function with returnType element with list of References", () => {
|
|
238
|
-
expect(
|
|
323
|
+
expect(_$createComponent(TestOutput, {
|
|
239
324
|
get children() {
|
|
240
|
-
return
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
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
|
+
})];
|
|
254
347
|
}
|
|
255
348
|
}, {
|
|
256
349
|
fileName: import.meta.url,
|
|
257
|
-
lineNumber:
|
|
258
|
-
columnNumber:
|
|
259
|
-
})
|
|
350
|
+
lineNumber: 199,
|
|
351
|
+
columnNumber: 9
|
|
352
|
+
});
|
|
260
353
|
}
|
|
261
354
|
}, {
|
|
262
355
|
fileName: import.meta.url,
|
|
263
|
-
lineNumber:
|
|
264
|
-
columnNumber:
|
|
265
|
-
})
|
|
356
|
+
lineNumber: 198,
|
|
357
|
+
columnNumber: 7
|
|
358
|
+
})).toRenderTo(`
|
|
266
359
|
class Foo:
|
|
267
360
|
pass
|
|
268
361
|
|
|
@@ -286,28 +379,34 @@ describe("Function Declaration", () => {
|
|
|
286
379
|
children: "return self"
|
|
287
380
|
}, {
|
|
288
381
|
fileName: import.meta.url,
|
|
289
|
-
lineNumber:
|
|
382
|
+
lineNumber: 225,
|
|
290
383
|
columnNumber: 13
|
|
291
384
|
});
|
|
292
385
|
}
|
|
293
386
|
}, {
|
|
294
387
|
fileName: import.meta.url,
|
|
295
|
-
lineNumber:
|
|
388
|
+
lineNumber: 224,
|
|
296
389
|
columnNumber: 11
|
|
297
390
|
});
|
|
298
391
|
}
|
|
299
392
|
}, {
|
|
300
393
|
fileName: import.meta.url,
|
|
301
|
-
lineNumber:
|
|
394
|
+
lineNumber: 223,
|
|
302
395
|
columnNumber: 9
|
|
303
396
|
});
|
|
304
397
|
}
|
|
305
398
|
}, {
|
|
306
399
|
fileName: import.meta.url,
|
|
307
|
-
lineNumber:
|
|
400
|
+
lineNumber: 222,
|
|
308
401
|
columnNumber: 7
|
|
309
402
|
});
|
|
310
|
-
expect(
|
|
403
|
+
expect(_$createComponent(TestOutput, {
|
|
404
|
+
children: decl
|
|
405
|
+
}, {
|
|
406
|
+
fileName: import.meta.url,
|
|
407
|
+
lineNumber: 237,
|
|
408
|
+
columnNumber: 12
|
|
409
|
+
})).toRenderTo(`
|
|
311
410
|
class MyClass:
|
|
312
411
|
async def __aenter__(self) -> MyClass:
|
|
313
412
|
return self
|
|
@@ -329,28 +428,34 @@ describe("Function Declaration", () => {
|
|
|
329
428
|
children: "return super().__new__(cls)"
|
|
330
429
|
}, {
|
|
331
430
|
fileName: import.meta.url,
|
|
332
|
-
lineNumber:
|
|
431
|
+
lineNumber: 253,
|
|
333
432
|
columnNumber: 13
|
|
334
433
|
});
|
|
335
434
|
}
|
|
336
435
|
}, {
|
|
337
436
|
fileName: import.meta.url,
|
|
338
|
-
lineNumber:
|
|
437
|
+
lineNumber: 252,
|
|
339
438
|
columnNumber: 11
|
|
340
439
|
});
|
|
341
440
|
}
|
|
342
441
|
}, {
|
|
343
442
|
fileName: import.meta.url,
|
|
344
|
-
lineNumber:
|
|
443
|
+
lineNumber: 251,
|
|
345
444
|
columnNumber: 9
|
|
346
445
|
});
|
|
347
446
|
}
|
|
348
447
|
}, {
|
|
349
448
|
fileName: import.meta.url,
|
|
350
|
-
lineNumber:
|
|
449
|
+
lineNumber: 250,
|
|
351
450
|
columnNumber: 7
|
|
352
451
|
});
|
|
353
|
-
expect(
|
|
452
|
+
expect(_$createComponent(TestOutput, {
|
|
453
|
+
children: decl
|
|
454
|
+
}, {
|
|
455
|
+
fileName: import.meta.url,
|
|
456
|
+
lineNumber: 261,
|
|
457
|
+
columnNumber: 12
|
|
458
|
+
})).toRenderTo(`
|
|
354
459
|
class MyClass:
|
|
355
460
|
async def __new__(cls) -> MyClass:
|
|
356
461
|
return super().__new__(cls)
|
|
@@ -369,10 +474,16 @@ describe("Function Declaration", () => {
|
|
|
369
474
|
children: "return a + b"
|
|
370
475
|
}, {
|
|
371
476
|
fileName: import.meta.url,
|
|
372
|
-
lineNumber:
|
|
477
|
+
lineNumber: 274,
|
|
373
478
|
columnNumber: 7
|
|
374
479
|
});
|
|
375
|
-
expect(
|
|
480
|
+
expect(_$createComponent(TestOutput, {
|
|
481
|
+
children: decl
|
|
482
|
+
}, {
|
|
483
|
+
fileName: import.meta.url,
|
|
484
|
+
lineNumber: 282,
|
|
485
|
+
columnNumber: 12
|
|
486
|
+
})).toRenderTo(`
|
|
376
487
|
def foo(a, b):
|
|
377
488
|
return a + b
|
|
378
489
|
|
|
@@ -390,10 +501,16 @@ describe("Function Declaration", () => {
|
|
|
390
501
|
children: "return a + b"
|
|
391
502
|
}, {
|
|
392
503
|
fileName: import.meta.url,
|
|
393
|
-
lineNumber:
|
|
504
|
+
lineNumber: 293,
|
|
394
505
|
columnNumber: 7
|
|
395
506
|
});
|
|
396
|
-
expect(
|
|
507
|
+
expect(_$createComponent(TestOutput, {
|
|
508
|
+
children: decl
|
|
509
|
+
}, {
|
|
510
|
+
fileName: import.meta.url,
|
|
511
|
+
lineNumber: 302,
|
|
512
|
+
columnNumber: 12
|
|
513
|
+
})).toRenderTo(`
|
|
397
514
|
def foo[T, U](a, b):
|
|
398
515
|
return a + b
|
|
399
516
|
|
|
@@ -417,7 +534,7 @@ describe("Function Declaration", () => {
|
|
|
417
534
|
abstract: true
|
|
418
535
|
}, {
|
|
419
536
|
fileName: import.meta.url,
|
|
420
|
-
lineNumber:
|
|
537
|
+
lineNumber: 317,
|
|
421
538
|
columnNumber: 13
|
|
422
539
|
}), _$createComponent(py.ClassMethodDeclaration, {
|
|
423
540
|
name: "classdef",
|
|
@@ -425,7 +542,7 @@ describe("Function Declaration", () => {
|
|
|
425
542
|
abstract: true
|
|
426
543
|
}, {
|
|
427
544
|
fileName: import.meta.url,
|
|
428
|
-
lineNumber:
|
|
545
|
+
lineNumber: 322,
|
|
429
546
|
columnNumber: 13
|
|
430
547
|
}), _$createComponent(py.StaticMethodDeclaration, {
|
|
431
548
|
name: "staticdef",
|
|
@@ -433,30 +550,35 @@ describe("Function Declaration", () => {
|
|
|
433
550
|
abstract: true
|
|
434
551
|
}, {
|
|
435
552
|
fileName: import.meta.url,
|
|
436
|
-
lineNumber:
|
|
553
|
+
lineNumber: 327,
|
|
437
554
|
columnNumber: 13
|
|
438
555
|
})];
|
|
439
556
|
}
|
|
440
557
|
}, {
|
|
441
558
|
fileName: import.meta.url,
|
|
442
|
-
lineNumber:
|
|
559
|
+
lineNumber: 316,
|
|
443
560
|
columnNumber: 11
|
|
444
561
|
});
|
|
445
562
|
}
|
|
446
563
|
}, {
|
|
447
564
|
fileName: import.meta.url,
|
|
448
|
-
lineNumber:
|
|
565
|
+
lineNumber: 315,
|
|
449
566
|
columnNumber: 9
|
|
450
567
|
});
|
|
451
568
|
}
|
|
452
569
|
}, {
|
|
453
570
|
fileName: import.meta.url,
|
|
454
|
-
lineNumber:
|
|
571
|
+
lineNumber: 314,
|
|
455
572
|
columnNumber: 7
|
|
456
573
|
});
|
|
457
|
-
expect(
|
|
458
|
-
externals: [abcModule]
|
|
459
|
-
|
|
574
|
+
expect(_$createComponent(TestOutput, {
|
|
575
|
+
externals: [abcModule],
|
|
576
|
+
children: decl
|
|
577
|
+
}, {
|
|
578
|
+
fileName: import.meta.url,
|
|
579
|
+
lineNumber: 337,
|
|
580
|
+
columnNumber: 12
|
|
581
|
+
})).toRenderTo(`
|
|
460
582
|
from abc import abstractmethod
|
|
461
583
|
|
|
462
584
|
|
|
@@ -494,7 +616,7 @@ describe("Function Declaration", () => {
|
|
|
494
616
|
children: "self.attribute = \"value\""
|
|
495
617
|
}, {
|
|
496
618
|
fileName: import.meta.url,
|
|
497
|
-
lineNumber:
|
|
619
|
+
lineNumber: 367,
|
|
498
620
|
columnNumber: 11
|
|
499
621
|
}), _$createComponent(py.DunderMethodDeclaration, {
|
|
500
622
|
name: "__repr__",
|
|
@@ -502,22 +624,28 @@ describe("Function Declaration", () => {
|
|
|
502
624
|
children: "return \"MyClass\""
|
|
503
625
|
}, {
|
|
504
626
|
fileName: import.meta.url,
|
|
505
|
-
lineNumber:
|
|
627
|
+
lineNumber: 370,
|
|
506
628
|
columnNumber: 11
|
|
507
629
|
})];
|
|
508
630
|
}
|
|
509
631
|
}, {
|
|
510
632
|
fileName: import.meta.url,
|
|
511
|
-
lineNumber:
|
|
633
|
+
lineNumber: 366,
|
|
512
634
|
columnNumber: 9
|
|
513
635
|
});
|
|
514
636
|
}
|
|
515
637
|
}, {
|
|
516
638
|
fileName: import.meta.url,
|
|
517
|
-
lineNumber:
|
|
639
|
+
lineNumber: 365,
|
|
518
640
|
columnNumber: 7
|
|
519
641
|
});
|
|
520
|
-
expect(
|
|
642
|
+
expect(_$createComponent(TestOutput, {
|
|
643
|
+
children: decl
|
|
644
|
+
}, {
|
|
645
|
+
fileName: import.meta.url,
|
|
646
|
+
lineNumber: 377,
|
|
647
|
+
columnNumber: 12
|
|
648
|
+
})).toRenderTo(`
|
|
521
649
|
class MyClass:
|
|
522
650
|
def __init__(self, x: int):
|
|
523
651
|
self.attribute = "value"
|
|
@@ -540,22 +668,28 @@ describe("Function Declaration", () => {
|
|
|
540
668
|
children: "pass"
|
|
541
669
|
}, {
|
|
542
670
|
fileName: import.meta.url,
|
|
543
|
-
lineNumber:
|
|
671
|
+
lineNumber: 395,
|
|
544
672
|
columnNumber: 11
|
|
545
673
|
});
|
|
546
674
|
}
|
|
547
675
|
}, {
|
|
548
676
|
fileName: import.meta.url,
|
|
549
|
-
lineNumber:
|
|
677
|
+
lineNumber: 394,
|
|
550
678
|
columnNumber: 9
|
|
551
679
|
});
|
|
552
680
|
}
|
|
553
681
|
}, {
|
|
554
682
|
fileName: import.meta.url,
|
|
555
|
-
lineNumber:
|
|
683
|
+
lineNumber: 393,
|
|
556
684
|
columnNumber: 7
|
|
557
685
|
});
|
|
558
|
-
expect(
|
|
686
|
+
expect(_$createComponent(TestOutput, {
|
|
687
|
+
children: decl
|
|
688
|
+
}, {
|
|
689
|
+
fileName: import.meta.url,
|
|
690
|
+
lineNumber: 402,
|
|
691
|
+
columnNumber: 12
|
|
692
|
+
})).toRenderTo(`
|
|
559
693
|
class MyClass:
|
|
560
694
|
def __new__(cls, *args, **kwargs):
|
|
561
695
|
pass
|
|
@@ -596,7 +730,7 @@ describe("Function Declaration", () => {
|
|
|
596
730
|
children: "return z * 2"
|
|
597
731
|
}, {
|
|
598
732
|
fileName: import.meta.url,
|
|
599
|
-
lineNumber:
|
|
733
|
+
lineNumber: 431,
|
|
600
734
|
columnNumber: 11
|
|
601
735
|
}), "return", " ", _$createComponent(py.FunctionCallExpression, {
|
|
602
736
|
target: foobarRef,
|
|
@@ -605,19 +739,19 @@ describe("Function Declaration", () => {
|
|
|
605
739
|
jsValue: 2
|
|
606
740
|
}, {
|
|
607
741
|
fileName: import.meta.url,
|
|
608
|
-
lineNumber:
|
|
742
|
+
lineNumber: 441,
|
|
609
743
|
columnNumber: 20
|
|
610
744
|
})];
|
|
611
745
|
}
|
|
612
746
|
}, {
|
|
613
747
|
fileName: import.meta.url,
|
|
614
|
-
lineNumber:
|
|
748
|
+
lineNumber: 439,
|
|
615
749
|
columnNumber: 11
|
|
616
750
|
})];
|
|
617
751
|
}
|
|
618
752
|
}, {
|
|
619
753
|
fileName: import.meta.url,
|
|
620
|
-
lineNumber:
|
|
754
|
+
lineNumber: 426,
|
|
621
755
|
columnNumber: 9
|
|
622
756
|
}), "return", " ", _$createComponent(py.FunctionCallExpression, {
|
|
623
757
|
target: barRef,
|
|
@@ -626,22 +760,28 @@ describe("Function Declaration", () => {
|
|
|
626
760
|
jsValue: 3
|
|
627
761
|
}, {
|
|
628
762
|
fileName: import.meta.url,
|
|
629
|
-
lineNumber:
|
|
763
|
+
lineNumber: 447,
|
|
630
764
|
columnNumber: 18
|
|
631
765
|
})];
|
|
632
766
|
}
|
|
633
767
|
}, {
|
|
634
768
|
fileName: import.meta.url,
|
|
635
|
-
lineNumber:
|
|
769
|
+
lineNumber: 445,
|
|
636
770
|
columnNumber: 9
|
|
637
771
|
})];
|
|
638
772
|
}
|
|
639
773
|
}, {
|
|
640
774
|
fileName: import.meta.url,
|
|
641
|
-
lineNumber:
|
|
775
|
+
lineNumber: 421,
|
|
642
776
|
columnNumber: 7
|
|
643
777
|
});
|
|
644
|
-
expect(
|
|
778
|
+
expect(_$createComponent(TestOutput, {
|
|
779
|
+
children: decl
|
|
780
|
+
}, {
|
|
781
|
+
fileName: import.meta.url,
|
|
782
|
+
lineNumber: 452,
|
|
783
|
+
columnNumber: 12
|
|
784
|
+
})).toRenderTo(`
|
|
645
785
|
def foo(x: int):
|
|
646
786
|
def bar(y: int):
|
|
647
787
|
def foobar(z: int):
|
|
@@ -652,83 +792,90 @@ describe("Function Declaration", () => {
|
|
|
652
792
|
`);
|
|
653
793
|
});
|
|
654
794
|
it("renders complex typing structure", () => {
|
|
655
|
-
|
|
656
|
-
path: "mod1.py",
|
|
795
|
+
expect(_$createComponent(TestOutputDirectory, {
|
|
657
796
|
get children() {
|
|
658
|
-
return _$createComponent(py.
|
|
659
|
-
|
|
660
|
-
get
|
|
661
|
-
return
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
lineNumber: 409,
|
|
672
|
-
columnNumber: 7
|
|
673
|
-
}), _$createComponent(py.SourceFile, {
|
|
674
|
-
path: "mod2.py",
|
|
675
|
-
get children() {
|
|
676
|
-
return [_$createComponent(py.ClassDeclaration, {
|
|
677
|
-
name: "A",
|
|
678
|
-
get refkey() {
|
|
679
|
-
return refkey("A");
|
|
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
|
+
});
|
|
680
810
|
}
|
|
681
811
|
}, {
|
|
682
812
|
fileName: import.meta.url,
|
|
683
|
-
lineNumber:
|
|
813
|
+
lineNumber: 468,
|
|
684
814
|
columnNumber: 9
|
|
685
|
-
}), _$createComponent(py.
|
|
686
|
-
|
|
687
|
-
get
|
|
688
|
-
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
|
+
})];
|
|
689
837
|
}
|
|
690
838
|
}, {
|
|
691
839
|
fileName: import.meta.url,
|
|
692
|
-
lineNumber:
|
|
840
|
+
lineNumber: 471,
|
|
693
841
|
columnNumber: 9
|
|
694
|
-
})
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
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
|
+
}
|
|
710
862
|
}, {
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
args: true,
|
|
716
|
-
kwargs: true,
|
|
717
|
-
get returnType() {
|
|
718
|
-
return refkey("Foo");
|
|
863
|
+
fileName: import.meta.url,
|
|
864
|
+
lineNumber: 476,
|
|
865
|
+
columnNumber: 11
|
|
866
|
+
});
|
|
719
867
|
}
|
|
720
868
|
}, {
|
|
721
869
|
fileName: import.meta.url,
|
|
722
|
-
lineNumber:
|
|
870
|
+
lineNumber: 475,
|
|
723
871
|
columnNumber: 9
|
|
724
|
-
});
|
|
872
|
+
})];
|
|
725
873
|
}
|
|
726
874
|
}, {
|
|
727
875
|
fileName: import.meta.url,
|
|
728
|
-
lineNumber:
|
|
876
|
+
lineNumber: 467,
|
|
729
877
|
columnNumber: 7
|
|
730
|
-
})
|
|
731
|
-
assertFileContents(res, {
|
|
878
|
+
})).toRenderTo({
|
|
732
879
|
"mod1.py": `
|
|
733
880
|
class Foo:
|
|
734
881
|
pass
|
|
@@ -760,57 +907,97 @@ describe("Function Declaration", () => {
|
|
|
760
907
|
});
|
|
761
908
|
it("throws error when PropertyDeclaration is used outside of a class", () => {
|
|
762
909
|
expect(() => {
|
|
763
|
-
|
|
764
|
-
|
|
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
|
+
}
|
|
765
920
|
}, {
|
|
766
921
|
fileName: import.meta.url,
|
|
767
|
-
lineNumber:
|
|
768
|
-
columnNumber:
|
|
769
|
-
})
|
|
922
|
+
lineNumber: 529,
|
|
923
|
+
columnNumber: 9
|
|
924
|
+
}));
|
|
770
925
|
}).toThrow('Method "x" must be declared inside a class (member scope)');
|
|
771
926
|
});
|
|
772
927
|
it("throws error when MethodDeclaration is used outside of a class", () => {
|
|
773
928
|
expect(() => {
|
|
774
|
-
|
|
775
|
-
|
|
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
|
+
}
|
|
776
939
|
}, {
|
|
777
940
|
fileName: import.meta.url,
|
|
778
|
-
lineNumber:
|
|
779
|
-
columnNumber:
|
|
780
|
-
})
|
|
941
|
+
lineNumber: 539,
|
|
942
|
+
columnNumber: 9
|
|
943
|
+
}));
|
|
781
944
|
}).toThrow('Method "my_method" must be declared inside a class (member scope)');
|
|
782
945
|
});
|
|
783
946
|
it("throws error when ClassMethodDeclaration is used outside of a class", () => {
|
|
784
947
|
expect(() => {
|
|
785
|
-
|
|
786
|
-
|
|
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
|
+
}
|
|
787
958
|
}, {
|
|
788
959
|
fileName: import.meta.url,
|
|
789
|
-
lineNumber:
|
|
790
|
-
columnNumber:
|
|
791
|
-
})
|
|
960
|
+
lineNumber: 551,
|
|
961
|
+
columnNumber: 9
|
|
962
|
+
}));
|
|
792
963
|
}).toThrow('Method "my_class_method" must be declared inside a class (member scope)');
|
|
793
964
|
});
|
|
794
965
|
it("throws error when StaticMethodDeclaration is used outside of a class", () => {
|
|
795
966
|
expect(() => {
|
|
796
|
-
|
|
797
|
-
|
|
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
|
+
}
|
|
798
977
|
}, {
|
|
799
978
|
fileName: import.meta.url,
|
|
800
|
-
lineNumber:
|
|
801
|
-
columnNumber:
|
|
802
|
-
})
|
|
979
|
+
lineNumber: 563,
|
|
980
|
+
columnNumber: 9
|
|
981
|
+
}));
|
|
803
982
|
}).toThrow('Method "my_static_method" must be declared inside a class (member scope)');
|
|
804
983
|
});
|
|
805
984
|
it("throws error when DunderMethodDeclaration is used outside of a class", () => {
|
|
806
985
|
expect(() => {
|
|
807
|
-
|
|
808
|
-
|
|
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
|
+
}
|
|
809
996
|
}, {
|
|
810
997
|
fileName: import.meta.url,
|
|
811
|
-
lineNumber:
|
|
812
|
-
columnNumber:
|
|
813
|
-
})
|
|
998
|
+
lineNumber: 575,
|
|
999
|
+
columnNumber: 9
|
|
1000
|
+
}));
|
|
814
1001
|
}).toThrow('Method "__init__" must be declared inside a class (member scope)');
|
|
815
1002
|
});
|
|
816
1003
|
});
|