@alloy-js/python 0.4.0-dev.3 → 0.4.0-dev.5
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 +30 -0
- package/dist/dev/src/builtins/python.js.map +1 -0
- package/dist/dev/src/components/Atom.js +122 -0
- package/dist/dev/src/components/Atom.js.map +1 -0
- package/dist/dev/src/components/CallSignature.js +195 -0
- package/dist/dev/src/components/CallSignature.js.map +1 -0
- package/dist/dev/src/components/ClassDeclaration.js +112 -0
- package/dist/dev/src/components/ClassDeclaration.js.map +1 -0
- package/dist/dev/src/components/ClassInstantiation.js +40 -0
- package/dist/dev/src/components/ClassInstantiation.js.map +1 -0
- package/dist/dev/src/components/ClassMethodDeclaration.js +40 -0
- package/dist/dev/src/components/ClassMethodDeclaration.js.map +1 -0
- package/dist/dev/src/components/ConstructorDeclaration.js +39 -0
- package/dist/dev/src/components/ConstructorDeclaration.js.map +1 -0
- package/dist/dev/src/components/DataclassDeclaration.js +177 -0
- package/dist/dev/src/components/DataclassDeclaration.js.map +1 -0
- package/dist/dev/src/components/Declaration.js +31 -0
- package/dist/dev/src/components/Declaration.js.map +1 -0
- package/dist/dev/src/components/DunderMethodDeclaration.js +33 -0
- package/dist/dev/src/components/DunderMethodDeclaration.js.map +1 -0
- package/dist/dev/src/components/EnumDeclaration.js +259 -0
- package/dist/dev/src/components/EnumDeclaration.js.map +1 -0
- package/dist/dev/src/components/EnumMember.js +95 -0
- package/dist/dev/src/components/EnumMember.js.map +1 -0
- package/dist/dev/src/components/FunctionBase.js +130 -0
- package/dist/dev/src/components/FunctionBase.js.map +1 -0
- package/dist/dev/src/components/FunctionCallExpression.js +53 -0
- package/dist/dev/src/components/FunctionCallExpression.js.map +1 -0
- package/dist/dev/src/components/FunctionDeclaration.js +45 -0
- package/dist/dev/src/components/FunctionDeclaration.js.map +1 -0
- package/dist/dev/src/components/FutureStatement.js +31 -0
- package/dist/dev/src/components/FutureStatement.js.map +1 -0
- package/dist/dev/src/components/ImportStatement.js +167 -0
- package/dist/dev/src/components/ImportStatement.js.map +1 -0
- package/dist/dev/src/components/LexicalScope.js +26 -0
- package/dist/dev/src/components/LexicalScope.js.map +1 -0
- package/dist/dev/src/components/MemberExpression.js +290 -0
- package/dist/dev/src/components/MemberExpression.js.map +1 -0
- package/dist/dev/src/components/MemberScope.js +23 -0
- package/dist/dev/src/components/MemberScope.js.map +1 -0
- package/dist/dev/src/components/MethodBase.js +40 -0
- package/dist/dev/src/components/MethodBase.js.map +1 -0
- package/dist/dev/src/components/MethodDeclaration.js +38 -0
- package/dist/dev/src/components/MethodDeclaration.js.map +1 -0
- package/dist/dev/src/components/PropertyDeclaration.js +287 -0
- package/dist/dev/src/components/PropertyDeclaration.js.map +1 -0
- package/dist/dev/src/components/PyDoc.js +1478 -0
- package/dist/dev/src/components/PyDoc.js.map +1 -0
- package/dist/dev/src/components/PythonBlock.js +35 -0
- package/dist/dev/src/components/PythonBlock.js.map +1 -0
- package/dist/dev/src/components/Reference.js +23 -0
- package/dist/dev/src/components/Reference.js.map +1 -0
- package/dist/dev/src/components/SourceFile.js +385 -0
- package/dist/dev/src/components/SourceFile.js.map +1 -0
- package/dist/dev/src/components/StatementList.js +34 -0
- package/dist/dev/src/components/StatementList.js.map +1 -0
- package/dist/dev/src/components/StaticMethodDeclaration.js +40 -0
- package/dist/dev/src/components/StaticMethodDeclaration.js.map +1 -0
- package/dist/dev/src/components/TypeArguments.js +22 -0
- package/dist/dev/src/components/TypeArguments.js.map +1 -0
- package/dist/dev/src/components/TypeRefContext.js +33 -0
- package/dist/dev/src/components/TypeRefContext.js.map +1 -0
- package/dist/dev/src/components/TypeReference.js +67 -0
- package/dist/dev/src/components/TypeReference.js.map +1 -0
- package/dist/dev/src/components/UnionTypeExpression.js +57 -0
- package/dist/dev/src/components/UnionTypeExpression.js.map +1 -0
- package/dist/dev/src/components/VariableDeclaration.js +150 -0
- package/dist/dev/src/components/VariableDeclaration.js.map +1 -0
- package/dist/dev/src/components/index.js +32 -0
- package/dist/dev/src/components/index.js.map +1 -0
- package/dist/dev/src/context/index.js +2 -0
- package/dist/dev/src/context/index.js.map +1 -0
- package/dist/dev/src/context/type-ref-context.js +17 -0
- package/dist/dev/src/context/type-ref-context.js.map +1 -0
- package/dist/dev/src/create-module.js +64 -0
- package/dist/dev/src/create-module.js.map +1 -0
- package/dist/dev/src/index.js +8 -0
- package/dist/dev/src/index.js.map +1 -0
- package/dist/dev/src/name-conflict-resolver.js +8 -0
- package/dist/dev/src/name-conflict-resolver.js.map +1 -0
- package/dist/dev/src/name-policy.js +48 -0
- package/dist/dev/src/name-policy.js.map +1 -0
- package/dist/dev/src/parameter-descriptor.js +8 -0
- package/dist/dev/src/parameter-descriptor.js.map +1 -0
- package/dist/dev/src/symbol-creation.js +58 -0
- package/dist/dev/src/symbol-creation.js.map +1 -0
- package/dist/dev/src/symbols/factories.js +28 -0
- package/dist/dev/src/symbols/factories.js.map +1 -0
- package/dist/dev/src/symbols/index.js +8 -0
- package/dist/dev/src/symbols/index.js.map +1 -0
- package/dist/dev/src/symbols/python-lexical-scope.js +15 -0
- package/dist/dev/src/symbols/python-lexical-scope.js.map +1 -0
- package/dist/dev/src/symbols/python-member-scope.js +7 -0
- package/dist/dev/src/symbols/python-member-scope.js.map +1 -0
- package/dist/dev/src/symbols/python-module-scope.js +86 -0
- package/dist/dev/src/symbols/python-module-scope.js.map +1 -0
- package/dist/dev/src/symbols/python-output-symbol.js +73 -0
- package/dist/dev/src/symbols/python-output-symbol.js.map +1 -0
- package/dist/dev/src/symbols/reference.js +87 -0
- package/dist/dev/src/symbols/reference.js.map +1 -0
- package/dist/dev/src/symbols/scopes.js +13 -0
- package/dist/dev/src/symbols/scopes.js.map +1 -0
- package/dist/dev/src/utils.js +13 -0
- package/dist/dev/src/utils.js.map +1 -0
- package/dist/dev/test/callsignatures.test.js +482 -0
- package/dist/dev/test/callsignatures.test.js.map +1 -0
- package/dist/dev/test/class-method-declaration.test.js +85 -0
- package/dist/dev/test/class-method-declaration.test.js.map +1 -0
- package/dist/dev/test/classdeclarations.test.js +654 -0
- package/dist/dev/test/classdeclarations.test.js.map +1 -0
- package/dist/dev/test/classinstantiations.test.js +281 -0
- package/dist/dev/test/classinstantiations.test.js.map +1 -0
- package/dist/dev/test/constructordeclaration.test.js +86 -0
- package/dist/dev/test/constructordeclaration.test.js.map +1 -0
- package/dist/dev/test/dataclassdeclarations.test.js +1068 -0
- package/dist/dev/test/dataclassdeclarations.test.js.map +1 -0
- package/dist/dev/test/dundermethoddeclaration.test.js +93 -0
- package/dist/dev/test/dundermethoddeclaration.test.js.map +1 -0
- package/dist/dev/test/enums.test.js +263 -0
- package/dist/dev/test/enums.test.js.map +1 -0
- package/dist/dev/test/externals.test.js +307 -0
- package/dist/dev/test/externals.test.js.map +1 -0
- package/dist/dev/test/factories.test.js +122 -0
- package/dist/dev/test/factories.test.js.map +1 -0
- package/dist/dev/test/functioncallexpressions.test.js +257 -0
- package/dist/dev/test/functioncallexpressions.test.js.map +1 -0
- package/dist/dev/test/functiondeclaration.test.js +817 -0
- package/dist/dev/test/functiondeclaration.test.js.map +1 -0
- package/dist/dev/test/imports.test.js +372 -0
- package/dist/dev/test/imports.test.js.map +1 -0
- package/dist/dev/test/memberexpressions.test.js +1668 -0
- package/dist/dev/test/memberexpressions.test.js.map +1 -0
- package/dist/dev/test/methoddeclaration.test.js +344 -0
- package/dist/dev/test/methoddeclaration.test.js.map +1 -0
- package/dist/dev/test/namepolicies.test.js +154 -0
- package/dist/dev/test/namepolicies.test.js.map +1 -0
- package/dist/dev/test/propertydeclaration.test.js +354 -0
- package/dist/dev/test/propertydeclaration.test.js.map +1 -0
- package/dist/dev/test/pydocs.test.js +1675 -0
- package/dist/dev/test/pydocs.test.js.map +1 -0
- package/dist/dev/test/references.test.js +66 -0
- package/dist/dev/test/references.test.js.map +1 -0
- package/dist/dev/test/sourcefiles.test.js +1802 -0
- package/dist/dev/test/sourcefiles.test.js.map +1 -0
- package/dist/dev/test/staticmethoddeclaration.test.js +85 -0
- package/dist/dev/test/staticmethoddeclaration.test.js.map +1 -0
- package/dist/dev/test/type-checking-imports.test.js +617 -0
- package/dist/dev/test/type-checking-imports.test.js.map +1 -0
- package/dist/dev/test/typereference.test.js +79 -0
- package/dist/dev/test/typereference.test.js.map +1 -0
- package/dist/dev/test/uniontypeexpression.test.js +307 -0
- package/dist/dev/test/uniontypeexpression.test.js.map +1 -0
- package/dist/dev/test/utils.js +100 -0
- package/dist/dev/test/utils.js.map +1 -0
- package/dist/dev/test/values.test.js +182 -0
- package/dist/dev/test/values.test.js.map +1 -0
- package/dist/dev/test/variables.test.js +363 -0
- package/dist/dev/test/variables.test.js.map +1 -0
- package/dist/src/components/CallSignature.d.ts.map +1 -1
- package/dist/src/components/CallSignature.js +12 -3
- package/dist/src/components/CallSignature.js.map +1 -1
- package/dist/src/components/ImportStatement.d.ts +12 -0
- package/dist/src/components/ImportStatement.d.ts.map +1 -1
- package/dist/src/components/ImportStatement.js +45 -3
- package/dist/src/components/ImportStatement.js.map +1 -1
- package/dist/src/components/Reference.d.ts.map +1 -1
- package/dist/src/components/Reference.js +5 -1
- package/dist/src/components/Reference.js.map +1 -1
- package/dist/src/components/SourceFile.d.ts +1 -1
- package/dist/src/components/SourceFile.d.ts.map +1 -1
- package/dist/src/components/SourceFile.js +46 -7
- package/dist/src/components/SourceFile.js.map +1 -1
- package/dist/src/components/TypeRefContext.d.ts +26 -0
- package/dist/src/components/TypeRefContext.d.ts.map +1 -0
- package/dist/src/components/TypeRefContext.js +29 -0
- package/dist/src/components/TypeRefContext.js.map +1 -0
- package/dist/src/components/TypeReference.d.ts +5 -0
- package/dist/src/components/TypeReference.d.ts.map +1 -1
- package/dist/src/components/TypeReference.js +19 -9
- package/dist/src/components/TypeReference.js.map +1 -1
- package/dist/src/components/VariableDeclaration.d.ts.map +1 -1
- package/dist/src/components/VariableDeclaration.js +7 -2
- package/dist/src/components/VariableDeclaration.js.map +1 -1
- package/dist/src/components/index.d.ts +1 -1
- package/dist/src/components/index.d.ts.map +1 -1
- package/dist/src/components/index.js +1 -1
- package/dist/src/components/index.js.map +1 -1
- package/dist/src/context/index.d.ts +2 -0
- package/dist/src/context/index.d.ts.map +1 -0
- package/dist/src/context/index.js +2 -0
- package/dist/src/context/index.js.map +1 -0
- package/dist/src/context/type-ref-context.d.ts +13 -0
- package/dist/src/context/type-ref-context.d.ts.map +1 -0
- package/dist/src/context/type-ref-context.js +17 -0
- package/dist/src/context/type-ref-context.js.map +1 -0
- package/dist/src/symbols/python-module-scope.d.ts +13 -1
- package/dist/src/symbols/python-module-scope.d.ts.map +1 -1
- package/dist/src/symbols/python-module-scope.js +36 -2
- package/dist/src/symbols/python-module-scope.js.map +1 -1
- package/dist/src/symbols/python-output-symbol.d.ts +11 -0
- package/dist/src/symbols/python-output-symbol.d.ts.map +1 -1
- package/dist/src/symbols/python-output-symbol.js +26 -2
- package/dist/src/symbols/python-output-symbol.js.map +1 -1
- package/dist/src/symbols/reference.d.ts +8 -1
- package/dist/src/symbols/reference.d.ts.map +1 -1
- package/dist/src/symbols/reference.js +4 -2
- package/dist/src/symbols/reference.js.map +1 -1
- package/dist/test/dataclassdeclarations.test.js +5 -2
- package/dist/test/dataclassdeclarations.test.js.map +1 -1
- package/dist/test/externals.test.js +8 -2
- package/dist/test/externals.test.js.map +1 -1
- package/dist/test/functiondeclaration.test.js +6 -3
- package/dist/test/functiondeclaration.test.js.map +1 -1
- package/dist/test/imports.test.js +3 -3
- package/dist/test/imports.test.js.map +1 -1
- package/dist/test/references.test.js +1 -1
- package/dist/test/references.test.js.map +1 -1
- package/dist/test/sourcefiles.test.js +26 -26
- package/dist/test/sourcefiles.test.js.map +1 -1
- package/dist/test/type-checking-imports.test.d.ts +2 -0
- package/dist/test/type-checking-imports.test.d.ts.map +1 -0
- package/dist/test/type-checking-imports.test.js +437 -0
- package/dist/test/type-checking-imports.test.js.map +1 -0
- package/dist/test/uniontypeexpression.test.js +4 -1
- package/dist/test/uniontypeexpression.test.js.map +1 -1
- package/dist/test/variables.test.js +4 -1
- package/dist/test/variables.test.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +6 -4
- package/src/components/CallSignature.tsx +6 -2
- package/src/components/ImportStatement.tsx +51 -4
- package/src/components/Reference.tsx +3 -1
- package/src/components/SourceFile.tsx +44 -8
- package/src/components/TypeRefContext.tsx +36 -0
- package/src/components/TypeReference.tsx +15 -7
- package/src/components/VariableDeclaration.tsx +5 -1
- package/src/components/index.ts +1 -1
- package/src/context/index.ts +1 -0
- package/src/context/type-ref-context.tsx +16 -0
- package/src/symbols/python-module-scope.ts +55 -2
- package/src/symbols/python-output-symbol.ts +32 -1
- package/src/symbols/reference.tsx +10 -0
- package/temp/api.json +441 -336
- package/test/dataclassdeclarations.test.tsx +8 -2
- package/test/externals.test.tsx +8 -2
- package/test/functiondeclaration.test.tsx +6 -3
- package/test/imports.test.tsx +6 -6
- package/test/references.test.tsx +1 -1
- package/test/sourcefiles.test.tsx +13 -13
- package/test/type-checking-imports.test.tsx +363 -0
- package/test/uniontypeexpression.test.tsx +4 -1
- package/test/variables.test.tsx +4 -1
- package/vitest.config.ts +8 -0
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import { memo as _$memo, createComponent as _$createComponent, createIntrinsic as _$createIntrinsic } from "@alloy-js/core/jsx-runtime";
|
|
2
|
+
import { For, Show } from "@alloy-js/core";
|
|
3
|
+
import { snakeCase } from "change-case";
|
|
4
|
+
import { dataclassesModule } from "../builtins/python.js";
|
|
5
|
+
import { usePythonScope } from "../symbols/scopes.js";
|
|
6
|
+
import { Atom } from "./Atom.js";
|
|
7
|
+
import { ClassDeclaration } from "./ClassDeclaration.js";
|
|
8
|
+
import { StatementList } from "./StatementList.js";
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Validate decorator-only rules that do not depend on class members.
|
|
12
|
+
*/
|
|
13
|
+
function validateDataclassDecoratorArgs(kwargs) {
|
|
14
|
+
if (kwargs.weakrefSlot === true && kwargs.slots !== true) {
|
|
15
|
+
throw new Error("weakref_slot=True requires slots=True in @dataclass decorator");
|
|
16
|
+
}
|
|
17
|
+
if (kwargs.order === true && kwargs.eq === false) {
|
|
18
|
+
throw new Error("order=True requires eq=True in @dataclass decorator");
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Validate symbol-level conflicts. Must be called from within a member scope
|
|
24
|
+
* (inside the class body) so member symbols are available.
|
|
25
|
+
*/
|
|
26
|
+
function validateDataclassMemberConflicts(kwargs) {
|
|
27
|
+
const scope = usePythonScope();
|
|
28
|
+
const owner = scope.ownerSymbol;
|
|
29
|
+
if (!owner) return;
|
|
30
|
+
const hasMemberNamed = name => {
|
|
31
|
+
const instanceNames = owner.instanceMembers?.symbolNames;
|
|
32
|
+
const staticNames = owner.staticMembers?.symbolNames;
|
|
33
|
+
return Boolean(instanceNames?.has(name) || staticNames?.has(name));
|
|
34
|
+
};
|
|
35
|
+
if (kwargs.order === true) {
|
|
36
|
+
for (const m of ["__lt__", "__le__", "__gt__", "__ge__"]) {
|
|
37
|
+
if (hasMemberNamed(m)) {
|
|
38
|
+
throw new TypeError(`Cannot specify order=True when the class already defines ${m}()`);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
if (kwargs.unsafeHash === true && hasMemberNamed("__hash__")) {
|
|
43
|
+
throw new TypeError("Cannot specify unsafe_hash=True when the class already defines __hash__()");
|
|
44
|
+
}
|
|
45
|
+
if (kwargs.frozen === true) {
|
|
46
|
+
if (hasMemberNamed("__setattr__")) {
|
|
47
|
+
throw new TypeError("Cannot specify frozen=True when the class already defines __setattr__()");
|
|
48
|
+
}
|
|
49
|
+
if (hasMemberNamed("__delattr__")) {
|
|
50
|
+
throw new TypeError("Cannot specify frozen=True when the class already defines __delattr__()");
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
if (kwargs.slots === true && hasMemberNamed("__slots__")) {
|
|
54
|
+
throw new TypeError("Cannot specify slots=True when the class already defines __slots__()");
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// Enforce at most one KW_ONLY sentinel as a symbol
|
|
58
|
+
let kwOnlyCount = 0;
|
|
59
|
+
for (const sym of owner.instanceMembers) {
|
|
60
|
+
if (sym.originalName === "_") kwOnlyCount++;
|
|
61
|
+
}
|
|
62
|
+
if (kwOnlyCount > 1) {
|
|
63
|
+
throw new Error("Only one KW_ONLY sentinel is allowed per dataclass body");
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Allowed keyword arguments for the Python `@dataclass(...)` decorator.
|
|
69
|
+
* Single source of truth: runtime keys and compile-time type are derived here.
|
|
70
|
+
*/
|
|
71
|
+
export const dataclassDecoratorKeys = ["init", "repr", "eq", "order", "unsafeHash", "frozen", "matchArgs", "kwOnly", "slots", "weakrefSlot"];
|
|
72
|
+
export const dataclassDecoratorKeySet = new Set(dataclassDecoratorKeys);
|
|
73
|
+
/**
|
|
74
|
+
* Renders a Python dataclass.
|
|
75
|
+
*
|
|
76
|
+
* Example:
|
|
77
|
+
* ```tsx
|
|
78
|
+
* <py.DataclassDeclaration name="User" kwOnly>
|
|
79
|
+
* <py.VariableDeclaration instanceVariable omitNone name="id" type="int" />
|
|
80
|
+
* <py.VariableDeclaration instanceVariable name={namekey("_", { ignoreNamePolicy: true })} type={dataclassesModule["."].KW_ONLY} omitNone />
|
|
81
|
+
* <py.VariableDeclaration
|
|
82
|
+
* instanceVariable
|
|
83
|
+
* name="name"
|
|
84
|
+
* type="str"
|
|
85
|
+
* initializer={"Anonymous"}
|
|
86
|
+
* />
|
|
87
|
+
* </py.DataclassDeclaration>
|
|
88
|
+
* ```
|
|
89
|
+
* Will render as:
|
|
90
|
+
* ```py
|
|
91
|
+
* from dataclasses import dataclass
|
|
92
|
+
* from dataclasses import KW_ONLY
|
|
93
|
+
*
|
|
94
|
+
* @dataclass(kw_only=True)
|
|
95
|
+
* class User:
|
|
96
|
+
* id: int
|
|
97
|
+
* _: KW_ONLY
|
|
98
|
+
* name: str = "Anonymous"
|
|
99
|
+
* ```
|
|
100
|
+
*/
|
|
101
|
+
export function DataclassDeclaration(props) {
|
|
102
|
+
// Collect flags from props in the order they appear (preserves emission order)
|
|
103
|
+
const decoratorEntries = [];
|
|
104
|
+
const kwargs = {};
|
|
105
|
+
for (const key of Object.keys(props)) {
|
|
106
|
+
// Only include known flags; skip undefined values
|
|
107
|
+
if (dataclassDecoratorKeySet.has(key)) {
|
|
108
|
+
const value = props[key];
|
|
109
|
+
if (value !== undefined) {
|
|
110
|
+
kwargs[key] = value;
|
|
111
|
+
decoratorEntries.push([snakeCase(key), value]);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
const hasDecoratorArgs = decoratorEntries.length > 0;
|
|
116
|
+
if (hasDecoratorArgs) {
|
|
117
|
+
validateDataclassDecoratorArgs(kwargs);
|
|
118
|
+
}
|
|
119
|
+
return ["@", _$memo(() => dataclassesModule["."].dataclass, false, "dataclassesModule[.].dataclass"), _$createComponent(Show, {
|
|
120
|
+
when: hasDecoratorArgs,
|
|
121
|
+
get children() {
|
|
122
|
+
return ["(", _$createComponent(For, {
|
|
123
|
+
each: decoratorEntries,
|
|
124
|
+
comma: true,
|
|
125
|
+
space: true,
|
|
126
|
+
children: ([k, v]) => [k, "=", _$createComponent(Atom, {
|
|
127
|
+
jsValue: v
|
|
128
|
+
}, {
|
|
129
|
+
fileName: import.meta.url,
|
|
130
|
+
lineNumber: 172,
|
|
131
|
+
columnNumber: 19
|
|
132
|
+
})]
|
|
133
|
+
}, {
|
|
134
|
+
fileName: import.meta.url,
|
|
135
|
+
lineNumber: 169,
|
|
136
|
+
columnNumber: 9
|
|
137
|
+
}), ")"];
|
|
138
|
+
}
|
|
139
|
+
}, {
|
|
140
|
+
fileName: import.meta.url,
|
|
141
|
+
lineNumber: 167,
|
|
142
|
+
columnNumber: 7
|
|
143
|
+
}), _$createIntrinsic("hbr", {}, {
|
|
144
|
+
fileName: import.meta.url,
|
|
145
|
+
lineNumber: 178,
|
|
146
|
+
columnNumber: 7
|
|
147
|
+
}), _$createComponent(ClassDeclaration, {
|
|
148
|
+
get name() {
|
|
149
|
+
return props.name;
|
|
150
|
+
},
|
|
151
|
+
get bases() {
|
|
152
|
+
return props.bases;
|
|
153
|
+
},
|
|
154
|
+
get doc() {
|
|
155
|
+
return props.doc;
|
|
156
|
+
},
|
|
157
|
+
get refkey() {
|
|
158
|
+
return props.refkey;
|
|
159
|
+
},
|
|
160
|
+
get children() {
|
|
161
|
+
return [_$createComponent(StatementList, {
|
|
162
|
+
get children() {
|
|
163
|
+
return props.children;
|
|
164
|
+
}
|
|
165
|
+
}, {
|
|
166
|
+
fileName: import.meta.url,
|
|
167
|
+
lineNumber: 185,
|
|
168
|
+
columnNumber: 9
|
|
169
|
+
}), _$memo(() => validateDataclassMemberConflicts(kwargs), false, "validateDataclassMemberConflicts(\u2026)")];
|
|
170
|
+
}
|
|
171
|
+
}, {
|
|
172
|
+
fileName: import.meta.url,
|
|
173
|
+
lineNumber: 179,
|
|
174
|
+
columnNumber: 7
|
|
175
|
+
})];
|
|
176
|
+
}
|
|
177
|
+
//# sourceMappingURL=DataclassDeclaration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["For","Show","snakeCase","dataclassesModule","usePythonScope","Atom","ClassDeclaration","StatementList","validateDataclassDecoratorArgs","kwargs","weakrefSlot","slots","Error","order","eq","validateDataclassMemberConflicts","scope","owner","ownerSymbol","hasMemberNamed","name","instanceNames","instanceMembers","symbolNames","staticNames","staticMembers","Boolean","has","m","TypeError","unsafeHash","frozen","kwOnlyCount","sym","originalName","dataclassDecoratorKeys","dataclassDecoratorKeySet","Set","DataclassDeclaration","props","decoratorEntries","key","Object","keys","value","undefined","push","hasDecoratorArgs","length","_$memo","dataclass","_$createComponent","when","children","each","comma","space","k","v","jsValue","fileName","import","meta","url","lineNumber","columnNumber","_$createIntrinsic","bases","doc","refkey"],"sources":["../../../../src/components/DataclassDeclaration.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { createComponent as _$createComponent } from "@alloy-js/core/jsx-runtime";
|
|
2
|
+
import { Declaration as CoreDeclaration } from "@alloy-js/core";
|
|
3
|
+
import { createPythonSymbol } from "../symbol-creation.js";
|
|
4
|
+
/**
|
|
5
|
+
* A Python declaration, which can be a class, function, variable, etc.
|
|
6
|
+
*
|
|
7
|
+
* @remarks
|
|
8
|
+
* This component is used to create a declaration with a symbol that can be
|
|
9
|
+
* referenced in the code.
|
|
10
|
+
*/
|
|
11
|
+
export function Declaration(props) {
|
|
12
|
+
let sym;
|
|
13
|
+
if (props.symbol) {
|
|
14
|
+
sym = props.symbol;
|
|
15
|
+
} else {
|
|
16
|
+
sym = createPythonSymbol(props.name, {
|
|
17
|
+
refkeys: props.refkey
|
|
18
|
+
}, props.nameKind);
|
|
19
|
+
}
|
|
20
|
+
return _$createComponent(CoreDeclaration, {
|
|
21
|
+
symbol: sym,
|
|
22
|
+
get children() {
|
|
23
|
+
return props.children;
|
|
24
|
+
}
|
|
25
|
+
}, {
|
|
26
|
+
fileName: import.meta.url,
|
|
27
|
+
lineNumber: 70,
|
|
28
|
+
columnNumber: 10
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=Declaration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Declaration","CoreDeclaration","createPythonSymbol","props","sym","symbol","name","refkeys","refkey","nameKind","_$createComponent","children","fileName","import","meta","url","lineNumber","columnNumber"],"sources":["../../../../src/components/Declaration.tsx"],"sourcesContent":[null],"mappings":";AAAA,SAEEA,WAAW,IAAIC,eAAe,QAGzB,gBAAgB;AAEvB,SAASC,kBAAkB,QAAQ,uBAAuB;AAwC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASF,WAAWA,CAACG,KAAuB,EAAE;EACnD,IAAIC,GAAuB;EAE3B,IAAID,KAAK,CAACE,MAAM,EAAE;IAChBD,GAAG,GAAGD,KAAK,CAACE,MAAM;EACpB,CAAC,MAAM;IACLD,GAAG,GAAGF,kBAAkB,CACtBC,KAAK,CAACG,IAAI,EACV;MACEC,OAAO,EAAEJ,KAAK,CAACK;IACjB,CAAC,EACDL,KAAK,CAACM,QACR,CAAC;EACH;EAEA,OAAAC,iBAAA,CAAQT,eAAe;IAACI,MAAM,EAAED,GAAG;IAAA,IAAAO,SAAA;MAAA,OAAGR,KAAK,CAACQ,QAAQ;IAAA;EAAA;IAAAC,QAAA,EAAAC,MAAA,CAAAC,IAAA,CAAAC,GAAA;IAAAC,UAAA;IAAAC,YAAA;EAAA;AACtD","ignoreList":[]}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { mergeProps as _$mergeProps, createComponent as _$createComponent } from "@alloy-js/core/jsx-runtime";
|
|
2
|
+
import { isNamekey, namekey } from "@alloy-js/core";
|
|
3
|
+
import { MethodDeclaration } from "./MethodDeclaration.js";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* A Python dunder method declaration.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```tsx
|
|
10
|
+
* <py.DunderMethodDeclaration name="__repr__" returnType="str">
|
|
11
|
+
* return f"<MyType>"
|
|
12
|
+
* </py.DunderMethodDeclaration>
|
|
13
|
+
* ```
|
|
14
|
+
* Generates:
|
|
15
|
+
* ```python
|
|
16
|
+
* def __repr__(self) -> str:
|
|
17
|
+
* return f"<MyType>"
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
export function DunderMethodDeclaration(props) {
|
|
22
|
+
const finalName = isNamekey(props.name) ? props.name : namekey(props.name, {
|
|
23
|
+
ignoreNamePolicy: true
|
|
24
|
+
});
|
|
25
|
+
return _$createComponent(MethodDeclaration, _$mergeProps(props, {
|
|
26
|
+
name: finalName
|
|
27
|
+
}), {
|
|
28
|
+
fileName: import.meta.url,
|
|
29
|
+
lineNumber: 29,
|
|
30
|
+
columnNumber: 10
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=DunderMethodDeclaration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["isNamekey","namekey","MethodDeclaration","DunderMethodDeclaration","props","finalName","name","ignoreNamePolicy","_$createComponent","_$mergeProps","fileName","import","meta","url","lineNumber","columnNumber"],"sources":["../../../../src/components/DunderMethodDeclaration.tsx"],"sourcesContent":[null],"mappings":";AAAA,SAASA,SAAS,EAAEC,OAAO,QAAQ,gBAAgB;AAEnD,SAASC,iBAAiB,QAAQ,wBAAwB;;AAE1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAKA,OAAO,SAASC,uBAAuBA,CAACC,KAAmC,EAAE;EAC3E,MAAMC,SAAS,GACbL,SAAS,CAACI,KAAK,CAACE,IAAI,CAAC,GACnBF,KAAK,CAACE,IAAI,GACVL,OAAO,CAACG,KAAK,CAACE,IAAI,EAAY;IAAEC,gBAAgB,EAAE;EAAK,CAAC,CAAC;EAC7D,OAAAC,iBAAA,CAAQN,iBAAiB,EAAAO,YAAA,CAAKL,KAAK;IAAEE,IAAI,EAAED;EAAS;IAAAK,QAAA,EAAAC,MAAA,CAAAC,IAAA,CAAAC,GAAA;IAAAC,UAAA;IAAAC,YAAA;EAAA;AACtD","ignoreList":[]}
|
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
import { createComponent as _$createComponent, memo as _$memo, createIntrinsic as _$createIntrinsic } from "@alloy-js/core/jsx-runtime";
|
|
2
|
+
import { Declaration as CoreDeclaration, For, Show } from "@alloy-js/core";
|
|
3
|
+
import { enumModule } from "../builtins/python.js";
|
|
4
|
+
import { createPythonSymbol } from "../symbol-creation.js";
|
|
5
|
+
import { EnumMember } from "./EnumMember.js";
|
|
6
|
+
import { MemberScope } from "./MemberScope.js";
|
|
7
|
+
import { PythonBlock } from "./PythonBlock.js";
|
|
8
|
+
/**
|
|
9
|
+
* Create a Python enum using the functional syntax.
|
|
10
|
+
*
|
|
11
|
+
* This generates enums using the `Enum('Name', [...])` or `Enum('Name', {...})` syntax.
|
|
12
|
+
* The format depends on whether enum members have explicit values:
|
|
13
|
+
* - Members without values: `Enum('Direction', ['NORTH', 'SOUTH', 'EAST', 'WEST'])`
|
|
14
|
+
* - Members with values: `Enum('Direction', {'NORTH': 1, 'SOUTH': 2, 'EAST': 3, 'WEST': 4})`
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```tsx
|
|
18
|
+
* <FunctionalEnumDeclaration
|
|
19
|
+
* name="Direction"
|
|
20
|
+
* members={[
|
|
21
|
+
* { name: "NORTH" },
|
|
22
|
+
* { name: "SOUTH" },
|
|
23
|
+
* { name: "EAST" },
|
|
24
|
+
* { name: "WEST" }
|
|
25
|
+
* ]}
|
|
26
|
+
* />
|
|
27
|
+
* ```
|
|
28
|
+
* renders to:
|
|
29
|
+
* ```python
|
|
30
|
+
* Direction = Enum('Direction', ['NORTH', 'SOUTH', 'EAST', 'WEST'])
|
|
31
|
+
* ```
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```tsx
|
|
35
|
+
* <FunctionalEnumDeclaration
|
|
36
|
+
* name="Status"
|
|
37
|
+
* members={[
|
|
38
|
+
* { name: "PENDING", value: 1 },
|
|
39
|
+
* { name: "ACTIVE", value: 2 },
|
|
40
|
+
* { name: "INACTIVE", value: 3 }
|
|
41
|
+
* ]}
|
|
42
|
+
* />
|
|
43
|
+
* ```
|
|
44
|
+
* renders to:
|
|
45
|
+
* ```python
|
|
46
|
+
* Status = Enum('Status', {'PENDING': 1, 'ACTIVE': 2, 'INACTIVE': 3})
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
49
|
+
export function FunctionalEnumDeclaration(props) {
|
|
50
|
+
const sym = createPythonSymbol(props.name, {
|
|
51
|
+
refkeys: props.refkey
|
|
52
|
+
}, "enum");
|
|
53
|
+
const members = props.members ?? [];
|
|
54
|
+
let opener, ender;
|
|
55
|
+
if (members.length && members.every(m => m.value === undefined)) {
|
|
56
|
+
// List of names: Enum('Direction', ['NORTH', ...])
|
|
57
|
+
opener = "[";
|
|
58
|
+
ender = "]";
|
|
59
|
+
} else {
|
|
60
|
+
// List of name-value pairs: Enum('Direction', {'NORTH': 1, ...})
|
|
61
|
+
opener = "{";
|
|
62
|
+
ender = "}";
|
|
63
|
+
}
|
|
64
|
+
const memberExpr = [opener, _$createComponent(For, {
|
|
65
|
+
each: members,
|
|
66
|
+
joiner: ", ",
|
|
67
|
+
children: m => _$createComponent(EnumMember, {
|
|
68
|
+
get name() {
|
|
69
|
+
return m.name;
|
|
70
|
+
},
|
|
71
|
+
get value() {
|
|
72
|
+
return m.value;
|
|
73
|
+
},
|
|
74
|
+
functional: true
|
|
75
|
+
}, {
|
|
76
|
+
fileName: import.meta.url,
|
|
77
|
+
lineNumber: 96,
|
|
78
|
+
columnNumber: 17
|
|
79
|
+
})
|
|
80
|
+
}, {
|
|
81
|
+
fileName: import.meta.url,
|
|
82
|
+
lineNumber: 95,
|
|
83
|
+
columnNumber: 7
|
|
84
|
+
}), ender];
|
|
85
|
+
return [_$createComponent(CoreDeclaration, {
|
|
86
|
+
symbol: sym,
|
|
87
|
+
get children() {
|
|
88
|
+
return [_$memo(() => sym.name, false, "sym.name"), " = ", _$memo(() => enumModule["."].Enum, false, "enumModule[.].Enum"), "('", _$memo(() => sym.name, false, "sym.name"), "',", " ", _$createComponent(MemberScope, {
|
|
89
|
+
ownerSymbol: sym,
|
|
90
|
+
children: memberExpr
|
|
91
|
+
}, {
|
|
92
|
+
fileName: import.meta.url,
|
|
93
|
+
lineNumber: 105,
|
|
94
|
+
columnNumber: 9
|
|
95
|
+
}), ")"];
|
|
96
|
+
}
|
|
97
|
+
}, {
|
|
98
|
+
fileName: import.meta.url,
|
|
99
|
+
lineNumber: 103,
|
|
100
|
+
columnNumber: 7
|
|
101
|
+
})];
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Create a Python enum using the class-based syntax.
|
|
105
|
+
*
|
|
106
|
+
* This generates enums using the `class Name(Enum):` syntax with member definitions
|
|
107
|
+
* inside the class body. Supports various member value styles including auto-generated
|
|
108
|
+
* values, explicit values, and custom base types.
|
|
109
|
+
*
|
|
110
|
+
* @example
|
|
111
|
+
* ```tsx
|
|
112
|
+
* <ClassEnumDeclaration
|
|
113
|
+
* name="Direction"
|
|
114
|
+
* members={[
|
|
115
|
+
* { name: "NORTH" },
|
|
116
|
+
* { name: "SOUTH" },
|
|
117
|
+
* { name: "EAST" },
|
|
118
|
+
* { name: "WEST" }
|
|
119
|
+
* ]}
|
|
120
|
+
* />
|
|
121
|
+
* ```
|
|
122
|
+
* renders to:
|
|
123
|
+
* ```python
|
|
124
|
+
* class Direction(Enum):
|
|
125
|
+
* NORTH = "NORTH"
|
|
126
|
+
* SOUTH = "SOUTH"
|
|
127
|
+
* EAST = "EAST"
|
|
128
|
+
* WEST = "WEST"
|
|
129
|
+
* ```
|
|
130
|
+
*
|
|
131
|
+
* @example
|
|
132
|
+
* With explicit values:
|
|
133
|
+
* ```tsx
|
|
134
|
+
* <ClassEnumDeclaration
|
|
135
|
+
* name="Status"
|
|
136
|
+
* members={[
|
|
137
|
+
* { name: "PENDING", value: 1 },
|
|
138
|
+
* { name: "ACTIVE", value: 2 },
|
|
139
|
+
* { name: "INACTIVE", value: 3 }
|
|
140
|
+
* ]}
|
|
141
|
+
* />
|
|
142
|
+
* ```
|
|
143
|
+
* renders to:
|
|
144
|
+
* ```python
|
|
145
|
+
* class Status(Enum):
|
|
146
|
+
* PENDING = 1
|
|
147
|
+
* ACTIVE = 2
|
|
148
|
+
* INACTIVE = 3
|
|
149
|
+
* ```
|
|
150
|
+
*
|
|
151
|
+
* @example
|
|
152
|
+
* With auto() values:
|
|
153
|
+
* ```tsx
|
|
154
|
+
* <ClassEnumDeclaration
|
|
155
|
+
* name="Color"
|
|
156
|
+
* style="auto"
|
|
157
|
+
* members={[
|
|
158
|
+
* { name: "RED" },
|
|
159
|
+
* { name: "GREEN" },
|
|
160
|
+
* { name: "BLUE" }
|
|
161
|
+
* ]}
|
|
162
|
+
* />
|
|
163
|
+
* ```
|
|
164
|
+
* renders to:
|
|
165
|
+
* ```python
|
|
166
|
+
* class Color(Enum):
|
|
167
|
+
* RED = auto()
|
|
168
|
+
* GREEN = auto()
|
|
169
|
+
* BLUE = auto()
|
|
170
|
+
* ```
|
|
171
|
+
*/
|
|
172
|
+
export function ClassEnumDeclaration(props) {
|
|
173
|
+
const baseType = props.baseType || "Enum";
|
|
174
|
+
const sym = createPythonSymbol(props.name, {
|
|
175
|
+
refkeys: props.refkey
|
|
176
|
+
}, "enum");
|
|
177
|
+
let memberList = (props.members ?? []).map(m => m.value === undefined ? {
|
|
178
|
+
...m,
|
|
179
|
+
auto: false
|
|
180
|
+
} : m);
|
|
181
|
+
if (props.auto) {
|
|
182
|
+
memberList = memberList.map(m => m.value === undefined ? {
|
|
183
|
+
name: m.name,
|
|
184
|
+
auto: true
|
|
185
|
+
} : m);
|
|
186
|
+
}
|
|
187
|
+
return _$createComponent(CoreDeclaration, {
|
|
188
|
+
symbol: sym,
|
|
189
|
+
get children() {
|
|
190
|
+
return ["class ", _$memo(() => sym.name, false, "sym.name"), "(", _$memo(() => enumModule["."][baseType], false, "enumModule[.][baseType]"), ")", _$createComponent(MemberScope, {
|
|
191
|
+
ownerSymbol: sym,
|
|
192
|
+
get children() {
|
|
193
|
+
return _$createComponent(PythonBlock, {
|
|
194
|
+
opener: ":",
|
|
195
|
+
get children() {
|
|
196
|
+
return [_$createComponent(Show, {
|
|
197
|
+
get when() {
|
|
198
|
+
return Boolean(props.doc);
|
|
199
|
+
},
|
|
200
|
+
get children() {
|
|
201
|
+
return [_$memo(() => props.doc, false, "props.doc"), _$createIntrinsic("hbr", {}, {
|
|
202
|
+
fileName: import.meta.url,
|
|
203
|
+
lineNumber: 211,
|
|
204
|
+
columnNumber: 13
|
|
205
|
+
})];
|
|
206
|
+
}
|
|
207
|
+
}, {
|
|
208
|
+
fileName: import.meta.url,
|
|
209
|
+
lineNumber: 209,
|
|
210
|
+
columnNumber: 11
|
|
211
|
+
}), _$createComponent(For, {
|
|
212
|
+
each: memberList,
|
|
213
|
+
hardline: true,
|
|
214
|
+
children: member => _$createComponent(EnumMember, {
|
|
215
|
+
get name() {
|
|
216
|
+
return member.name;
|
|
217
|
+
},
|
|
218
|
+
get value() {
|
|
219
|
+
return member.value;
|
|
220
|
+
},
|
|
221
|
+
get jsValue() {
|
|
222
|
+
return member.jsValue;
|
|
223
|
+
},
|
|
224
|
+
get auto() {
|
|
225
|
+
return member.auto;
|
|
226
|
+
},
|
|
227
|
+
get doc() {
|
|
228
|
+
return member.doc;
|
|
229
|
+
}
|
|
230
|
+
}, {
|
|
231
|
+
fileName: import.meta.url,
|
|
232
|
+
lineNumber: 215,
|
|
233
|
+
columnNumber: 15
|
|
234
|
+
})
|
|
235
|
+
}, {
|
|
236
|
+
fileName: import.meta.url,
|
|
237
|
+
lineNumber: 213,
|
|
238
|
+
columnNumber: 11
|
|
239
|
+
}), _$memo(() => props.children, false, "props.children")];
|
|
240
|
+
}
|
|
241
|
+
}, {
|
|
242
|
+
fileName: import.meta.url,
|
|
243
|
+
lineNumber: 208,
|
|
244
|
+
columnNumber: 9
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
}, {
|
|
248
|
+
fileName: import.meta.url,
|
|
249
|
+
lineNumber: 207,
|
|
250
|
+
columnNumber: 7
|
|
251
|
+
})];
|
|
252
|
+
}
|
|
253
|
+
}, {
|
|
254
|
+
fileName: import.meta.url,
|
|
255
|
+
lineNumber: 205,
|
|
256
|
+
columnNumber: 5
|
|
257
|
+
});
|
|
258
|
+
}
|
|
259
|
+
//# sourceMappingURL=EnumDeclaration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Declaration","CoreDeclaration","For","Show","enumModule","createPythonSymbol","EnumMember","MemberScope","PythonBlock","FunctionalEnumDeclaration","props","sym","name","refkeys","refkey","members","opener","ender","length","every","m","value","undefined","memberExpr","_$createComponent","each","joiner","children","functional","fileName","import","meta","url","lineNumber","columnNumber","symbol","_$memo","Enum","ownerSymbol","ClassEnumDeclaration","baseType","memberList","map","auto","when","Boolean","doc","_$createIntrinsic","hardline","member","jsValue"],"sources":["../../../../src/components/EnumDeclaration.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { createComponent as _$createComponent, memo as _$memo } from "@alloy-js/core/jsx-runtime";
|
|
2
|
+
import { Show } from "@alloy-js/core";
|
|
3
|
+
import { enumModule } from "../builtins/python.js";
|
|
4
|
+
import { createPythonSymbol } from "../symbol-creation.js";
|
|
5
|
+
import { Atom } from "./Atom.js";
|
|
6
|
+
import { InlineDoc } from "./PyDoc.js";
|
|
7
|
+
/**
|
|
8
|
+
* A Python enum member.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```tsx
|
|
12
|
+
* <EnumMember name="NORTH" />
|
|
13
|
+
* ```
|
|
14
|
+
* This will generate:
|
|
15
|
+
* ```python
|
|
16
|
+
* NORTH
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
export function EnumMember(props) {
|
|
20
|
+
const autoReference = props.auto === true ? enumModule["."].auto : undefined;
|
|
21
|
+
const value = props.auto === true ? [autoReference, "()"] : props.value;
|
|
22
|
+
const sym = createPythonSymbol(props.name, {
|
|
23
|
+
refkeys: props.refkey
|
|
24
|
+
}, "enum-member");
|
|
25
|
+
const valueCode = props.jsValue !== undefined ? _$createComponent(Atom, {
|
|
26
|
+
get jsValue() {
|
|
27
|
+
return props.jsValue;
|
|
28
|
+
}
|
|
29
|
+
}, {
|
|
30
|
+
fileName: import.meta.url,
|
|
31
|
+
lineNumber: 69,
|
|
32
|
+
columnNumber: 35
|
|
33
|
+
}) : value;
|
|
34
|
+
if (props.functional) {
|
|
35
|
+
return ["'", _$memo(() => sym.name, false, "sym.name"), "'", _$createComponent(Show, {
|
|
36
|
+
when: valueCode !== undefined,
|
|
37
|
+
get children() {
|
|
38
|
+
return [" : ", valueCode];
|
|
39
|
+
}
|
|
40
|
+
}, {
|
|
41
|
+
fileName: import.meta.url,
|
|
42
|
+
lineNumber: 74,
|
|
43
|
+
columnNumber: 21
|
|
44
|
+
}), _$createComponent(Show, {
|
|
45
|
+
get when() {
|
|
46
|
+
return props.doc !== undefined;
|
|
47
|
+
},
|
|
48
|
+
get children() {
|
|
49
|
+
return _$createComponent(InlineDoc, {
|
|
50
|
+
get children() {
|
|
51
|
+
return props.doc;
|
|
52
|
+
}
|
|
53
|
+
}, {
|
|
54
|
+
fileName: import.meta.url,
|
|
55
|
+
lineNumber: 76,
|
|
56
|
+
columnNumber: 11
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
}, {
|
|
60
|
+
fileName: import.meta.url,
|
|
61
|
+
lineNumber: 75,
|
|
62
|
+
columnNumber: 9
|
|
63
|
+
})];
|
|
64
|
+
}
|
|
65
|
+
return [_$memo(() => sym.name, false, "sym.name"), _$createComponent(Show, {
|
|
66
|
+
when: valueCode !== undefined,
|
|
67
|
+
get children() {
|
|
68
|
+
return [" = ", valueCode];
|
|
69
|
+
}
|
|
70
|
+
}, {
|
|
71
|
+
fileName: import.meta.url,
|
|
72
|
+
lineNumber: 84,
|
|
73
|
+
columnNumber: 7
|
|
74
|
+
}), _$createComponent(Show, {
|
|
75
|
+
get when() {
|
|
76
|
+
return props.doc !== undefined;
|
|
77
|
+
},
|
|
78
|
+
get children() {
|
|
79
|
+
return _$createComponent(InlineDoc, {
|
|
80
|
+
get children() {
|
|
81
|
+
return props.doc;
|
|
82
|
+
}
|
|
83
|
+
}, {
|
|
84
|
+
fileName: import.meta.url,
|
|
85
|
+
lineNumber: 86,
|
|
86
|
+
columnNumber: 9
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
}, {
|
|
90
|
+
fileName: import.meta.url,
|
|
91
|
+
lineNumber: 85,
|
|
92
|
+
columnNumber: 7
|
|
93
|
+
})];
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=EnumMember.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Show","enumModule","createPythonSymbol","Atom","InlineDoc","EnumMember","props","autoReference","auto","undefined","value","sym","name","refkeys","refkey","valueCode","jsValue","_$createComponent","fileName","import","meta","url","lineNumber","columnNumber","functional","_$memo","when","children","doc"],"sources":["../../../../src/components/EnumMember.tsx"],"sourcesContent":[null],"mappings":";AAAA,SAAoCA,IAAI,QAAQ,gBAAgB;AAChE,SAASC,UAAU,QAAQ,uBAAuB;AAClD,SAASC,kBAAkB,QAAQ,uBAAuB;AAE1D,SAASC,IAAI;AACb,SAASC,SAAS;AAwClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,UAAUA,CAACC,KAAsB,EAAE;EACjD,MAAMC,aAAa,GAAGD,KAAK,CAACE,IAAI,KAAK,IAAI,GAAGP,UAAU,CAAC,GAAG,CAAC,CAACO,IAAI,GAAGC,SAAS;EAC5E,MAAMC,KAAK,GAAGJ,KAAK,CAACE,IAAI,KAAK,IAAI,IAAMD,aAAa,UAASD,KAAK,CAACI,KAAK;EACxE,MAAMC,GAAuB,GAAGT,kBAAkB,CAChDI,KAAK,CAACM,IAAI,EACV;IACEC,OAAO,EAAEP,KAAK,CAACQ;EACjB,CAAC,EACD,aACF,CAAC;EACD,MAAMC,SAAS,GACbT,KAAK,CAACU,OAAO,KAAKP,SAAS,GAAAQ,iBAAA,CAAId,IAAI;IAAA,IAACa,OAAOA,CAAA;MAAA,OAAEV,KAAK,CAACU,OAAO;IAAA;EAAA;IAAAE,QAAA,EAAAC,MAAA,CAAAC,IAAA,CAAAC,GAAA;IAAAC,UAAA;IAAAC,YAAA;EAAA,KAAOb,KAAK;EAExE,IAAIJ,KAAK,CAACkB,UAAU,EAAE;IACpB,aAAAC,MAAA,OAEMd,GAAG,CAACC,IAAI,2BAAAK,iBAAA,CAAGjB,IAAI;MAAC0B,IAAI,EAAEX,SAAS,KAAKN,SAAS;MAAA,IAAAkB,SAAA;QAAA,eAAMZ,SAAS;MAAA;IAAA;MAAAG,QAAA,EAAAC,MAAA,CAAAC,IAAA,CAAAC,GAAA;MAAAC,UAAA;MAAAC,YAAA;IAAA,IAAAN,iBAAA,CAC7DjB,IAAI;MAAA,IAAC0B,IAAIA,CAAA;QAAA,OAAEpB,KAAK,CAACsB,GAAG,KAAKnB,SAAS;MAAA;MAAA,IAAAkB,SAAA;QAAA,OAAAV,iBAAA,CAChCb,SAAS;UAAA,IAAAuB,SAAA;YAAA,OAAErB,KAAK,CAACsB,GAAG;UAAA;QAAA;UAAAV,QAAA,EAAAC,MAAA,CAAAC,IAAA,CAAAC,GAAA;UAAAC,UAAA;UAAAC,YAAA;QAAA;MAAA;IAAA;MAAAL,QAAA,EAAAC,MAAA,CAAAC,IAAA,CAAAC,GAAA;MAAAC,UAAA;MAAAC,YAAA;IAAA;EAI7B;EACA,QAAAE,MAAA,OAEKd,GAAG,CAACC,IAAI,sBAAAK,iBAAA,CACRjB,IAAI;IAAC0B,IAAI,EAAEX,SAAS,KAAKN,SAAS;IAAA,IAAAkB,SAAA;MAAA,eAAMZ,SAAS;IAAA;EAAA;IAAAG,QAAA,EAAAC,MAAA,CAAAC,IAAA,CAAAC,GAAA;IAAAC,UAAA;IAAAC,YAAA;EAAA,IAAAN,iBAAA,CACjDjB,IAAI;IAAA,IAAC0B,IAAIA,CAAA;MAAA,OAAEpB,KAAK,CAACsB,GAAG,KAAKnB,SAAS;IAAA;IAAA,IAAAkB,SAAA;MAAA,OAAAV,iBAAA,CAChCb,SAAS;QAAA,IAAAuB,SAAA;UAAA,OAAErB,KAAK,CAACsB,GAAG;QAAA;MAAA;QAAAV,QAAA,EAAAC,MAAA,CAAAC,IAAA,CAAAC,GAAA;QAAAC,UAAA;QAAAC,YAAA;MAAA;IAAA;EAAA;IAAAL,QAAA,EAAAC,MAAA,CAAAC,IAAA,CAAAC,GAAA;IAAAC,UAAA;IAAAC,YAAA;EAAA;AAI7B","ignoreList":[]}
|