@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,7 +1,6 @@
|
|
|
1
|
-
import { d } from "@alloy-js/core/testing";
|
|
2
1
|
import { describe, expect, it } from "vitest";
|
|
3
2
|
import { DecoratorList } from "../src/components/DecoratorList.jsx";
|
|
4
|
-
import {
|
|
3
|
+
import { TestOutput } from "./utils.js";
|
|
5
4
|
|
|
6
5
|
/**
|
|
7
6
|
* Direct contract tests for `DecoratorList`. The component is exercised
|
|
@@ -12,84 +11,104 @@ import { toSourceText } from "./utils.js";
|
|
|
12
11
|
describe("DecoratorList", () => {
|
|
13
12
|
it("renders nothing when decorators is undefined", () => {
|
|
14
13
|
expect(
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
14
|
+
<TestOutput>
|
|
15
|
+
{[
|
|
16
|
+
<>
|
|
17
|
+
<DecoratorList />
|
|
18
|
+
pass
|
|
19
|
+
</>,
|
|
20
|
+
]}
|
|
21
|
+
</TestOutput>,
|
|
21
22
|
).toRenderTo("pass");
|
|
22
23
|
});
|
|
23
24
|
|
|
24
25
|
it("renders nothing when decorators is an empty array", () => {
|
|
25
26
|
expect(
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
27
|
+
<TestOutput>
|
|
28
|
+
{[
|
|
29
|
+
<>
|
|
30
|
+
<DecoratorList decorators={[]} />
|
|
31
|
+
pass
|
|
32
|
+
</>,
|
|
33
|
+
]}
|
|
34
|
+
</TestOutput>,
|
|
32
35
|
).toRenderTo("pass");
|
|
33
36
|
});
|
|
34
37
|
|
|
35
38
|
it("renders a single decorator followed by exactly one hardline", () => {
|
|
36
39
|
expect(
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
40
|
+
<TestOutput>
|
|
41
|
+
{[
|
|
42
|
+
<>
|
|
43
|
+
<DecoratorList decorators={["@one"]} />
|
|
44
|
+
pass
|
|
45
|
+
</>,
|
|
46
|
+
]}
|
|
47
|
+
</TestOutput>,
|
|
48
|
+
).toRenderTo(
|
|
49
|
+
`
|
|
50
|
+
@one
|
|
51
|
+
pass
|
|
52
|
+
`,
|
|
53
|
+
);
|
|
47
54
|
});
|
|
48
55
|
|
|
49
56
|
it("renders multiple decorators with no blank lines between adjacent entries", () => {
|
|
50
57
|
expect(
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
58
|
+
<TestOutput>
|
|
59
|
+
{[
|
|
60
|
+
<>
|
|
61
|
+
<DecoratorList decorators={["@one", "@two", "@three"]} />
|
|
62
|
+
pass
|
|
63
|
+
</>,
|
|
64
|
+
]}
|
|
65
|
+
</TestOutput>,
|
|
66
|
+
).toRenderTo(
|
|
67
|
+
`
|
|
68
|
+
@one
|
|
69
|
+
@two
|
|
70
|
+
@three
|
|
71
|
+
pass
|
|
72
|
+
`,
|
|
73
|
+
);
|
|
63
74
|
});
|
|
64
75
|
|
|
65
76
|
it("preserves source order: first entry is topmost (= applied last)", () => {
|
|
66
77
|
expect(
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
78
|
+
<TestOutput>
|
|
79
|
+
{[
|
|
80
|
+
<>
|
|
81
|
+
<DecoratorList decorators={["@outer", "@middle", "@inner"]} />
|
|
82
|
+
pass
|
|
83
|
+
</>,
|
|
84
|
+
]}
|
|
85
|
+
</TestOutput>,
|
|
86
|
+
).toRenderTo(
|
|
87
|
+
`
|
|
88
|
+
@outer
|
|
89
|
+
@middle
|
|
90
|
+
@inner
|
|
91
|
+
pass
|
|
92
|
+
`,
|
|
93
|
+
);
|
|
79
94
|
});
|
|
80
95
|
|
|
81
96
|
it("skips falsy entries without emitting blank lines", () => {
|
|
82
97
|
expect(
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
98
|
+
<TestOutput>
|
|
99
|
+
{[
|
|
100
|
+
<>
|
|
101
|
+
<DecoratorList decorators={["@one", false, undefined, "@two"]} />
|
|
102
|
+
pass
|
|
103
|
+
</>,
|
|
104
|
+
]}
|
|
105
|
+
</TestOutput>,
|
|
106
|
+
).toRenderTo(
|
|
107
|
+
`
|
|
108
|
+
@one
|
|
109
|
+
@two
|
|
110
|
+
pass
|
|
111
|
+
`,
|
|
112
|
+
);
|
|
94
113
|
});
|
|
95
114
|
});
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { d } from "@alloy-js/core/testing";
|
|
2
1
|
import { describe, expect, it } from "vitest";
|
|
3
2
|
import * as py from "../src/index.js";
|
|
4
|
-
import {
|
|
3
|
+
import { TestOutput } from "./utils.js";
|
|
5
4
|
|
|
6
5
|
describe("Dunder/Constructor Declarations", () => {
|
|
7
6
|
it("renders dunder methods with parameters", () => {
|
|
@@ -19,7 +18,7 @@ describe("Dunder/Constructor Declarations", () => {
|
|
|
19
18
|
</py.ClassDeclaration>
|
|
20
19
|
);
|
|
21
20
|
|
|
22
|
-
expect(
|
|
21
|
+
expect(<TestOutput>{decl}</TestOutput>).toRenderTo(`
|
|
23
22
|
class MyClass:
|
|
24
23
|
def __init__(self, x: int):
|
|
25
24
|
self.attribute = "value"
|
|
@@ -42,7 +41,7 @@ describe("Dunder/Constructor Declarations", () => {
|
|
|
42
41
|
</py.ClassDeclaration>
|
|
43
42
|
);
|
|
44
43
|
|
|
45
|
-
expect(
|
|
44
|
+
expect(<TestOutput>{decl}</TestOutput>).toRenderTo(`
|
|
46
45
|
class MyClass:
|
|
47
46
|
def __new__(cls, *args, **kwargs):
|
|
48
47
|
pass
|
package/test/enums.test.tsx
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
import { refkey } from "@alloy-js/core";
|
|
2
|
-
import { d } from "@alloy-js/core/testing";
|
|
3
2
|
import { describe, expect, it } from "vitest";
|
|
4
3
|
import { enumModule } from "../src/builtins/python.js";
|
|
5
4
|
import * as py from "../src/index.js";
|
|
6
|
-
import {
|
|
5
|
+
import { TestOutput } from "./utils.js";
|
|
7
6
|
|
|
8
7
|
describe("Python Enum", () => {
|
|
9
8
|
it("renders class-level decorators above ClassEnumDeclaration", () => {
|
|
10
|
-
|
|
11
|
-
[
|
|
9
|
+
expect(
|
|
10
|
+
<TestOutput externals={[enumModule]}>
|
|
12
11
|
<py.ClassEnumDeclaration
|
|
13
12
|
name="Color"
|
|
14
13
|
baseType="IntEnum"
|
|
@@ -17,12 +16,10 @@ describe("Python Enum", () => {
|
|
|
17
16
|
{ name: "RED", value: 1 },
|
|
18
17
|
{ name: "GREEN", value: 2 },
|
|
19
18
|
]}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
expect(result).toRenderTo(d`
|
|
19
|
+
/>
|
|
20
|
+
</TestOutput>,
|
|
21
|
+
).toRenderTo(
|
|
22
|
+
`
|
|
26
23
|
from enum import IntEnum
|
|
27
24
|
|
|
28
25
|
|
|
@@ -31,13 +28,13 @@ describe("Python Enum", () => {
|
|
|
31
28
|
RED = 1
|
|
32
29
|
GREEN = 2
|
|
33
30
|
|
|
34
|
-
|
|
35
|
-
|
|
31
|
+
`,
|
|
32
|
+
);
|
|
36
33
|
});
|
|
37
34
|
|
|
38
35
|
it("class enum with explicit values", () => {
|
|
39
|
-
|
|
40
|
-
[
|
|
36
|
+
expect(
|
|
37
|
+
<TestOutput externals={[enumModule]}>
|
|
41
38
|
<py.ClassEnumDeclaration
|
|
42
39
|
name="Color"
|
|
43
40
|
baseType="IntEnum"
|
|
@@ -46,11 +43,10 @@ describe("Python Enum", () => {
|
|
|
46
43
|
{ name: "GREEN", value: "2" },
|
|
47
44
|
{ name: "BLUE", value: "3" },
|
|
48
45
|
]}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
const expected = d`
|
|
46
|
+
/>
|
|
47
|
+
</TestOutput>,
|
|
48
|
+
).toRenderTo(
|
|
49
|
+
`
|
|
54
50
|
from enum import IntEnum
|
|
55
51
|
|
|
56
52
|
|
|
@@ -59,14 +55,13 @@ describe("Python Enum", () => {
|
|
|
59
55
|
GREEN = 2
|
|
60
56
|
BLUE = 3
|
|
61
57
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
expect(result).toRenderTo(expected);
|
|
58
|
+
`,
|
|
59
|
+
);
|
|
65
60
|
});
|
|
66
61
|
|
|
67
62
|
it("class enum with jsValues", () => {
|
|
68
|
-
|
|
69
|
-
[
|
|
63
|
+
expect(
|
|
64
|
+
<TestOutput externals={[enumModule]}>
|
|
70
65
|
<py.ClassEnumDeclaration
|
|
71
66
|
name="Color"
|
|
72
67
|
baseType="IntEnum"
|
|
@@ -75,11 +70,10 @@ describe("Python Enum", () => {
|
|
|
75
70
|
{ name: "GREEN", jsValue: 2 },
|
|
76
71
|
{ name: "BLUE", jsValue: "3" },
|
|
77
72
|
]}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
const expected = d`
|
|
73
|
+
/>
|
|
74
|
+
</TestOutput>,
|
|
75
|
+
).toRenderTo(
|
|
76
|
+
`
|
|
83
77
|
from enum import IntEnum
|
|
84
78
|
|
|
85
79
|
|
|
@@ -88,14 +82,13 @@ describe("Python Enum", () => {
|
|
|
88
82
|
GREEN = 2
|
|
89
83
|
BLUE = "3"
|
|
90
84
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
expect(result).toRenderTo(expected);
|
|
85
|
+
`,
|
|
86
|
+
);
|
|
94
87
|
});
|
|
95
88
|
|
|
96
89
|
it("class enum with a refkey as jsValue", () => {
|
|
97
|
-
|
|
98
|
-
[
|
|
90
|
+
expect(
|
|
91
|
+
<TestOutput externals={[enumModule]}>
|
|
99
92
|
<py.StatementList>
|
|
100
93
|
<py.ClassDeclaration name="Dog" refkey={refkey("Dog")} />
|
|
101
94
|
<py.ClassDeclaration name="Cat" refkey={refkey("Cat")} />
|
|
@@ -107,11 +100,10 @@ describe("Python Enum", () => {
|
|
|
107
100
|
{ name: "CAT", value: refkey("Cat") },
|
|
108
101
|
]}
|
|
109
102
|
/>
|
|
110
|
-
</py.StatementList
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
const expected = d`
|
|
103
|
+
</py.StatementList>
|
|
104
|
+
</TestOutput>,
|
|
105
|
+
).toRenderTo(
|
|
106
|
+
`
|
|
115
107
|
from enum import Enum
|
|
116
108
|
|
|
117
109
|
|
|
@@ -125,23 +117,21 @@ describe("Python Enum", () => {
|
|
|
125
117
|
DOG = Dog
|
|
126
118
|
CAT = Cat
|
|
127
119
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
expect(result).toRenderTo(expected);
|
|
120
|
+
`,
|
|
121
|
+
);
|
|
131
122
|
});
|
|
132
123
|
|
|
133
124
|
it("class enum with auto() values", () => {
|
|
134
|
-
|
|
135
|
-
[
|
|
125
|
+
expect(
|
|
126
|
+
<TestOutput externals={[enumModule]}>
|
|
136
127
|
<py.ClassEnumDeclaration
|
|
137
128
|
name="Animal"
|
|
138
129
|
auto
|
|
139
130
|
members={[{ name: "DOG" }, { name: "CAT" }, { name: "RABBIT" }]}
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
const expected = d`
|
|
131
|
+
/>
|
|
132
|
+
</TestOutput>,
|
|
133
|
+
).toRenderTo(
|
|
134
|
+
`
|
|
145
135
|
from enum import auto
|
|
146
136
|
from enum import Enum
|
|
147
137
|
|
|
@@ -151,14 +141,13 @@ describe("Python Enum", () => {
|
|
|
151
141
|
CAT = auto()
|
|
152
142
|
RABBIT = auto()
|
|
153
143
|
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
expect(result).toRenderTo(expected);
|
|
144
|
+
`,
|
|
145
|
+
);
|
|
157
146
|
});
|
|
158
147
|
|
|
159
148
|
it("class enum with mixed manual and auto() values", () => {
|
|
160
|
-
|
|
161
|
-
[
|
|
149
|
+
expect(
|
|
150
|
+
<TestOutput externals={[enumModule]}>
|
|
162
151
|
<py.ClassEnumDeclaration
|
|
163
152
|
name="Permission"
|
|
164
153
|
baseType="Flag"
|
|
@@ -168,12 +157,10 @@ describe("Python Enum", () => {
|
|
|
168
157
|
{ name: "WRITE" },
|
|
169
158
|
{ name: "EXECUTE" },
|
|
170
159
|
]}
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
const expected = d`
|
|
160
|
+
/>
|
|
161
|
+
</TestOutput>,
|
|
162
|
+
).toRenderTo(
|
|
163
|
+
`
|
|
177
164
|
from enum import auto
|
|
178
165
|
from enum import Flag
|
|
179
166
|
|
|
@@ -183,14 +170,13 @@ describe("Python Enum", () => {
|
|
|
183
170
|
WRITE = auto()
|
|
184
171
|
EXECUTE = auto()
|
|
185
172
|
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
expect(result).toRenderTo(expected);
|
|
173
|
+
`,
|
|
174
|
+
);
|
|
189
175
|
});
|
|
190
176
|
|
|
191
177
|
it("functional enum with list", () => {
|
|
192
|
-
|
|
193
|
-
[
|
|
178
|
+
expect(
|
|
179
|
+
<TestOutput externals={[enumModule]}>
|
|
194
180
|
<py.FunctionalEnumDeclaration
|
|
195
181
|
name="Direction"
|
|
196
182
|
members={[
|
|
@@ -199,22 +185,21 @@ describe("Python Enum", () => {
|
|
|
199
185
|
{ name: "EAST" },
|
|
200
186
|
{ name: "WEST" },
|
|
201
187
|
]}
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
const expected = d`
|
|
188
|
+
/>
|
|
189
|
+
</TestOutput>,
|
|
190
|
+
).toRenderTo(
|
|
191
|
+
`
|
|
207
192
|
from enum import Enum
|
|
208
193
|
|
|
209
194
|
|
|
210
195
|
Direction = Enum('Direction', ['NORTH', 'SOUTH', 'EAST', 'WEST'])
|
|
211
|
-
|
|
212
|
-
|
|
196
|
+
`,
|
|
197
|
+
);
|
|
213
198
|
});
|
|
214
199
|
|
|
215
200
|
it("functional enum with mapping", () => {
|
|
216
|
-
|
|
217
|
-
[
|
|
201
|
+
expect(
|
|
202
|
+
<TestOutput externals={[enumModule]}>
|
|
218
203
|
<py.FunctionalEnumDeclaration
|
|
219
204
|
name="Priority"
|
|
220
205
|
members={[
|
|
@@ -222,16 +207,15 @@ describe("Python Enum", () => {
|
|
|
222
207
|
{ name: "MEDIUM", value: 2 },
|
|
223
208
|
{ name: "LOW", value: 3 },
|
|
224
209
|
]}
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
const expected = d`
|
|
210
|
+
/>
|
|
211
|
+
</TestOutput>,
|
|
212
|
+
).toRenderTo(
|
|
213
|
+
`
|
|
230
214
|
from enum import Enum
|
|
231
215
|
|
|
232
216
|
|
|
233
217
|
Priority = Enum('Priority', {'HIGH' : 1, 'MEDIUM' : 2, 'LOW' : 3})
|
|
234
|
-
|
|
235
|
-
|
|
218
|
+
`,
|
|
219
|
+
);
|
|
236
220
|
});
|
|
237
221
|
});
|
package/test/externals.test.tsx
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { code, refkey } from "@alloy-js/core";
|
|
2
|
-
import { d } from "@alloy-js/core/testing";
|
|
3
2
|
import { expect, it } from "vitest";
|
|
4
3
|
import * as py from "../src/index.js";
|
|
5
4
|
import { createModule } from "../src/index.js";
|
|
6
|
-
import {
|
|
5
|
+
import { TestOutput } from "./utils.js";
|
|
7
6
|
|
|
8
7
|
it("uses import from external library", () => {
|
|
9
8
|
const requestsLib = createModule({
|
|
@@ -14,19 +13,18 @@ it("uses import from external library", () => {
|
|
|
14
13
|
"models.anothermodule": ["something"],
|
|
15
14
|
},
|
|
16
15
|
});
|
|
17
|
-
|
|
18
|
-
[
|
|
16
|
+
expect(
|
|
17
|
+
<TestOutput externals={[requestsLib]}>
|
|
19
18
|
<py.StatementList>
|
|
20
19
|
{requestsLib["."].get}
|
|
21
20
|
{requestsLib["."].post}
|
|
22
21
|
{requestsLib["models"].Request}
|
|
23
22
|
{requestsLib["models"].Response}
|
|
24
23
|
{requestsLib["models.anothermodule"].something}
|
|
25
|
-
</py.StatementList
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
const expected = d`
|
|
24
|
+
</py.StatementList>
|
|
25
|
+
</TestOutput>,
|
|
26
|
+
).toRenderTo(
|
|
27
|
+
`
|
|
30
28
|
from requests import get
|
|
31
29
|
from requests import post
|
|
32
30
|
from requests.models import Request
|
|
@@ -38,8 +36,8 @@ it("uses import from external library", () => {
|
|
|
38
36
|
Request
|
|
39
37
|
Response
|
|
40
38
|
something
|
|
41
|
-
|
|
42
|
-
|
|
39
|
+
`,
|
|
40
|
+
);
|
|
43
41
|
});
|
|
44
42
|
|
|
45
43
|
it("uses import from external library in multiple functions", () => {
|
|
@@ -86,10 +84,12 @@ it("uses import from external library in multiple functions", () => {
|
|
|
86
84
|
</py.FunctionDeclaration>,
|
|
87
85
|
];
|
|
88
86
|
|
|
89
|
-
|
|
90
|
-
externals
|
|
91
|
-
|
|
92
|
-
|
|
87
|
+
expect(
|
|
88
|
+
<TestOutput externals={[py.requestsModule]}>
|
|
89
|
+
{functionDeclarations}
|
|
90
|
+
</TestOutput>,
|
|
91
|
+
).toRenderTo(
|
|
92
|
+
`
|
|
93
93
|
from requests import get
|
|
94
94
|
from requests import post
|
|
95
95
|
from typing import TYPE_CHECKING
|
|
@@ -107,9 +107,8 @@ it("uses import from external library in multiple functions", () => {
|
|
|
107
107
|
response = post(1)
|
|
108
108
|
return response.json()
|
|
109
109
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
expect(result).toRenderTo(expected);
|
|
110
|
+
`,
|
|
111
|
+
);
|
|
113
112
|
});
|
|
114
113
|
|
|
115
114
|
it("uses import from external library in multiple class methods", () => {
|
|
@@ -166,10 +165,12 @@ it("uses import from external library in multiple class methods", () => {
|
|
|
166
165
|
</py.ClassDeclaration>,
|
|
167
166
|
];
|
|
168
167
|
|
|
169
|
-
|
|
170
|
-
externals
|
|
171
|
-
|
|
172
|
-
|
|
168
|
+
expect(
|
|
169
|
+
<TestOutput externals={[py.requestsModule]}>
|
|
170
|
+
{functionDeclarations}
|
|
171
|
+
</TestOutput>,
|
|
172
|
+
).toRenderTo(
|
|
173
|
+
`
|
|
173
174
|
from requests import get
|
|
174
175
|
from requests import post
|
|
175
176
|
from typing import TYPE_CHECKING
|
|
@@ -189,7 +190,6 @@ it("uses import from external library in multiple class methods", () => {
|
|
|
189
190
|
return response.json()
|
|
190
191
|
|
|
191
192
|
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
expect(result).toRenderTo(expected);
|
|
193
|
+
`,
|
|
194
|
+
);
|
|
195
195
|
});
|