@alloy-js/python 0.4.0-dev.2 → 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 +47 -5
- package/dist/src/components/ImportStatement.js.map +1 -1
- package/dist/src/components/MemberExpression.d.ts +1 -1
- package/dist/src/components/MemberExpression.d.ts.map +1 -1
- package/dist/src/components/MemberExpression.js +98 -180
- package/dist/src/components/MemberExpression.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 +52 -5
- package/src/components/MemberExpression.tsx +174 -298
- 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 +443 -338
- 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,33 @@
|
|
|
1
|
+
import { createComponent as _$createComponent } from "@alloy-js/core/jsx-runtime";
|
|
2
|
+
import { isTypeRefContext, TypeRefContextDef } from "../context/type-ref-context.js";
|
|
3
|
+
|
|
4
|
+
// Re-export for external use
|
|
5
|
+
export { isTypeRefContext };
|
|
6
|
+
/**
|
|
7
|
+
* Set the current context of reference to be type reference.
|
|
8
|
+
*
|
|
9
|
+
* @remarks
|
|
10
|
+
* References used inside the children of this component will be treated as
|
|
11
|
+
* type-only references. When a symbol is only referenced in type contexts,
|
|
12
|
+
* it will be imported inside a `if TYPE_CHECKING:` block.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```tsx
|
|
16
|
+
* <TypeRefContext>
|
|
17
|
+
* {someTypeRefkey}
|
|
18
|
+
* </TypeRefContext>
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export const TypeRefContext = ({
|
|
22
|
+
children
|
|
23
|
+
}) => {
|
|
24
|
+
return _$createComponent(TypeRefContextDef.Provider, {
|
|
25
|
+
value: true,
|
|
26
|
+
children: children
|
|
27
|
+
}, {
|
|
28
|
+
fileName: import.meta.url,
|
|
29
|
+
lineNumber: 34,
|
|
30
|
+
columnNumber: 5
|
|
31
|
+
});
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=TypeRefContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["isTypeRefContext","TypeRefContextDef","TypeRefContext","children","_$createComponent","Provider","value","fileName","import","meta","url","lineNumber","columnNumber"],"sources":["../../../../src/components/TypeRefContext.tsx"],"sourcesContent":[null],"mappings":";AACA,SACEA,gBAAgB,EAChBC,iBAAiB,QACZ,gCAAgC;;AAEvC;AACA,SAASD,gBAAgB;AASzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAME,cAAc,GAAGA,CAAC;EAAEC;AAA8B,CAAC,KAAK;EACnE,OAAAC,iBAAA,CACGH,iBAAiB,CAACI,QAAQ;IAACC,KAAK;IAAAH,QAAA,EAAEA;EAAQ;IAAAI,QAAA,EAAAC,MAAA,CAAAC,IAAA,CAAAC,GAAA;IAAAC,UAAA;IAAAC,YAAA;EAAA;AAE/C,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { createComponent as _$createComponent, createIntrinsic as _$createIntrinsic } from "@alloy-js/core/jsx-runtime";
|
|
2
|
+
import { Show } from "@alloy-js/core";
|
|
3
|
+
import { TypeArguments } from "./TypeArguments.js";
|
|
4
|
+
import { TypeRefContext } from "./TypeRefContext.js";
|
|
5
|
+
/**
|
|
6
|
+
* A type reference like Foo[T, P] or int.
|
|
7
|
+
*
|
|
8
|
+
* @remarks
|
|
9
|
+
* This component automatically wraps its content in a type reference context,
|
|
10
|
+
* so any symbols referenced via refkey will be imported as type-only
|
|
11
|
+
* (inside a `if TYPE_CHECKING:` block) unless also used as values elsewhere.
|
|
12
|
+
*/
|
|
13
|
+
export function TypeReference(props) {
|
|
14
|
+
const type = props.refkey ? props.refkey : props.name;
|
|
15
|
+
const typeArgs = props.typeArgs && props.typeArgs.length ? _$createComponent(TypeArguments, {
|
|
16
|
+
get args() {
|
|
17
|
+
return props.typeArgs;
|
|
18
|
+
}
|
|
19
|
+
}, {
|
|
20
|
+
fileName: import.meta.url,
|
|
21
|
+
lineNumber: 26,
|
|
22
|
+
columnNumber: 7
|
|
23
|
+
}) : undefined;
|
|
24
|
+
return _$createComponent(TypeRefContext, {
|
|
25
|
+
get children() {
|
|
26
|
+
return _$createIntrinsic("group", {
|
|
27
|
+
get children() {
|
|
28
|
+
return [_$createIntrinsic("indent", {
|
|
29
|
+
get children() {
|
|
30
|
+
return [_$createIntrinsic("sbr", {}, {
|
|
31
|
+
fileName: import.meta.url,
|
|
32
|
+
lineNumber: 33,
|
|
33
|
+
columnNumber: 11
|
|
34
|
+
}), type, _$createComponent(Show, {
|
|
35
|
+
get when() {
|
|
36
|
+
return Boolean(typeArgs);
|
|
37
|
+
},
|
|
38
|
+
children: typeArgs
|
|
39
|
+
}, {
|
|
40
|
+
fileName: import.meta.url,
|
|
41
|
+
lineNumber: 35,
|
|
42
|
+
columnNumber: 11
|
|
43
|
+
})];
|
|
44
|
+
}
|
|
45
|
+
}, {
|
|
46
|
+
fileName: import.meta.url,
|
|
47
|
+
lineNumber: 32,
|
|
48
|
+
columnNumber: 9
|
|
49
|
+
}), _$createIntrinsic("sbr", {}, {
|
|
50
|
+
fileName: import.meta.url,
|
|
51
|
+
lineNumber: 37,
|
|
52
|
+
columnNumber: 9
|
|
53
|
+
})];
|
|
54
|
+
}
|
|
55
|
+
}, {
|
|
56
|
+
fileName: import.meta.url,
|
|
57
|
+
lineNumber: 31,
|
|
58
|
+
columnNumber: 7
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
}, {
|
|
62
|
+
fileName: import.meta.url,
|
|
63
|
+
lineNumber: 30,
|
|
64
|
+
columnNumber: 5
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=TypeReference.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Show","TypeArguments","TypeRefContext","TypeReference","props","type","refkey","name","typeArgs","length","_$createComponent","args","fileName","import","meta","url","lineNumber","columnNumber","undefined","children","_$createIntrinsic","when","Boolean"],"sources":["../../../../src/components/TypeReference.tsx"],"sourcesContent":[null],"mappings":";AAAA,SAA2BA,IAAI,QAAQ,gBAAgB;AACvD,SAASC,aAAa,QAAQ,oBAAoB;AAClD,SAASC,cAAc,QAAQ,qBAAqB;AAWpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,aAAaA,CAACC,KAAyB,EAAE;EACvD,MAAMC,IAAI,GAAGD,KAAK,CAACE,MAAM,GAAGF,KAAK,CAACE,MAAM,GAAGF,KAAK,CAACG,IAAI;EACrD,MAAMC,QAAQ,GACZJ,KAAK,CAACI,QAAQ,IAAIJ,KAAK,CAACI,QAAQ,CAACC,MAAM,GAAAC,iBAAA,CACpCT,aAAa;IAAA,IAACU,IAAIA,CAAA;MAAA,OAAEP,KAAK,CAACI,QAAQ;IAAA;EAAA;IAAAI,QAAA,EAAAC,MAAA,CAAAC,IAAA,CAAAC,GAAA;IAAAC,UAAA;IAAAC,YAAA;EAAA,KACnCC,SAAS;EAEb,OAAAR,iBAAA,CACGR,cAAc;IAAA,IAAAiB,SAAA;MAAA,OAAAC,iBAAA;QAAA,IAAAD,SAAA;UAAA,QAAAC,iBAAA;YAAA,IAAAD,SAAA;cAAA,QAAAC,iBAAA;gBAAAR,QAAA,EAAAC,MAAA,CAAAC,IAAA,CAAAC,GAAA;gBAAAC,UAAA;gBAAAC,YAAA;cAAA,IAIRZ,IAAI,EAAAK,iBAAA,CACJV,IAAI;gBAAA,IAACqB,IAAIA,CAAA;kBAAA,OAAEC,OAAO,CAACd,QAAQ,CAAC;gBAAA;gBAAAW,QAAA,EAAGX;cAAQ;gBAAAI,QAAA,EAAAC,MAAA,CAAAC,IAAA,CAAAC,GAAA;gBAAAC,UAAA;gBAAAC,YAAA;cAAA;YAAA;UAAA;YAAAL,QAAA,EAAAC,MAAA,CAAAC,IAAA,CAAAC,GAAA;YAAAC,UAAA;YAAAC,YAAA;UAAA,IAAAG,iBAAA;YAAAR,QAAA,EAAAC,MAAA,CAAAC,IAAA,CAAAC,GAAA;YAAAC,UAAA;YAAAC,YAAA;UAAA;QAAA;MAAA;QAAAL,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;AAMlD","ignoreList":[]}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { createIntrinsic as _$createIntrinsic, createComponent as _$createComponent } from "@alloy-js/core/jsx-runtime";
|
|
2
|
+
import { List } from "@alloy-js/core";
|
|
3
|
+
export function UnionTypeExpression(props) {
|
|
4
|
+
return _$createIntrinsic("group", {
|
|
5
|
+
get children() {
|
|
6
|
+
return [_$createIntrinsic("ifBreak", {
|
|
7
|
+
children: "("
|
|
8
|
+
}, {
|
|
9
|
+
fileName: import.meta.url,
|
|
10
|
+
lineNumber: 10,
|
|
11
|
+
columnNumber: 7
|
|
12
|
+
}), _$createIntrinsic("indent", {
|
|
13
|
+
get children() {
|
|
14
|
+
return [_$createIntrinsic("sbr", {}, {
|
|
15
|
+
fileName: import.meta.url,
|
|
16
|
+
lineNumber: 12,
|
|
17
|
+
columnNumber: 9
|
|
18
|
+
}), _$createComponent(List, {
|
|
19
|
+
get children() {
|
|
20
|
+
return props.children;
|
|
21
|
+
},
|
|
22
|
+
get joiner() {
|
|
23
|
+
return [_$createIntrinsic("br", {}, {
|
|
24
|
+
fileName: import.meta.url,
|
|
25
|
+
lineNumber: 17,
|
|
26
|
+
columnNumber: 15
|
|
27
|
+
}), "|", " "];
|
|
28
|
+
}
|
|
29
|
+
}, {
|
|
30
|
+
fileName: import.meta.url,
|
|
31
|
+
lineNumber: 13,
|
|
32
|
+
columnNumber: 9
|
|
33
|
+
})];
|
|
34
|
+
}
|
|
35
|
+
}, {
|
|
36
|
+
fileName: import.meta.url,
|
|
37
|
+
lineNumber: 11,
|
|
38
|
+
columnNumber: 7
|
|
39
|
+
}), _$createIntrinsic("sbr", {}, {
|
|
40
|
+
fileName: import.meta.url,
|
|
41
|
+
lineNumber: 22,
|
|
42
|
+
columnNumber: 7
|
|
43
|
+
}), _$createIntrinsic("ifBreak", {
|
|
44
|
+
children: ")"
|
|
45
|
+
}, {
|
|
46
|
+
fileName: import.meta.url,
|
|
47
|
+
lineNumber: 23,
|
|
48
|
+
columnNumber: 7
|
|
49
|
+
})];
|
|
50
|
+
}
|
|
51
|
+
}, {
|
|
52
|
+
fileName: import.meta.url,
|
|
53
|
+
lineNumber: 9,
|
|
54
|
+
columnNumber: 5
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=UnionTypeExpression.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["List","UnionTypeExpression","props","_$createIntrinsic","children","fileName","import","meta","url","lineNumber","columnNumber","_$createComponent","joiner"],"sources":["../../../../src/components/UnionTypeExpression.tsx"],"sourcesContent":[null],"mappings":";AAAA,SAAmBA,IAAI,QAAQ,gBAAgB;AAM/C,OAAO,SAASC,mBAAmBA,CAACC,KAA+B,EAAE;EACnE,OAAAC,iBAAA;IAAA,IAAAC,SAAA;MAAA,QAAAD,iBAAA;QAAAC,QAAA;MAAA;QAAAC,QAAA,EAAAC,MAAA,CAAAC,IAAA,CAAAC,GAAA;QAAAC,UAAA;QAAAC,YAAA;MAAA,IAAAP,iBAAA;QAAA,IAAAC,SAAA;UAAA,QAAAD,iBAAA;YAAAE,QAAA,EAAAC,MAAA,CAAAC,IAAA,CAAAC,GAAA;YAAAC,UAAA;YAAAC,YAAA;UAAA,IAAAC,iBAAA,CAKOX,IAAI;YAAA,IACHI,QAAQA,CAAA;cAAA,OAAEF,KAAK,CAACE,QAAQ;YAAA;YAAA,IACxBQ,MAAMA,CAAA;cAAA,QAAAT,iBAAA;gBAAAE,QAAA,EAAAC,MAAA,CAAAC,IAAA,CAAAC,GAAA;gBAAAC,UAAA;gBAAAC,YAAA;cAAA,SAEM,GAAG;YAAA;UAAA;YAAAL,QAAA,EAAAC,MAAA,CAAAC,IAAA,CAAAC,GAAA;YAAAC,UAAA;YAAAC,YAAA;UAAA;QAAA;MAAA;QAAAL,QAAA,EAAAC,MAAA,CAAAC,IAAA,CAAAC,GAAA;QAAAC,UAAA;QAAAC,YAAA;MAAA,IAAAP,iBAAA;QAAAE,QAAA,EAAAC,MAAA,CAAAC,IAAA,CAAAC,GAAA;QAAAC,UAAA;QAAAC,YAAA;MAAA,IAAAP,iBAAA;QAAAC,QAAA;MAAA;QAAAC,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;AASzB","ignoreList":[]}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import { createComponent as _$createComponent, createIntrinsic as _$createIntrinsic, memo as _$memo } from "@alloy-js/core/jsx-runtime";
|
|
2
|
+
import { Declaration as CoreDeclaration, Name, Show, createSymbolSlot, memo } from "@alloy-js/core";
|
|
3
|
+
import { createPythonSymbol } from "../symbol-creation.js";
|
|
4
|
+
import { Atom } from "./Atom.js";
|
|
5
|
+
import { SimpleCommentBlock } from "./PyDoc.js";
|
|
6
|
+
import { TypeRefContext } from "./TypeRefContext.js";
|
|
7
|
+
/**
|
|
8
|
+
* A variable declaration component for Python.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```tsx
|
|
12
|
+
* <VariableDeclaration
|
|
13
|
+
* name="myVar"
|
|
14
|
+
* type="int"
|
|
15
|
+
* initializer={42} // Initial value
|
|
16
|
+
* />
|
|
17
|
+
* <VariableDeclaration
|
|
18
|
+
* name="myOtherVar"
|
|
19
|
+
* type="str"
|
|
20
|
+
* omitNone={true}
|
|
21
|
+
* />
|
|
22
|
+
* <VariableDeclaration
|
|
23
|
+
* name="myCallStmtVar"
|
|
24
|
+
* callStatementVar={true}
|
|
25
|
+
* initializer={12}
|
|
26
|
+
* />
|
|
27
|
+
* VariableDeclaration
|
|
28
|
+
* name=""
|
|
29
|
+
* callStatementVar={true}
|
|
30
|
+
* initializer={12}
|
|
31
|
+
* />
|
|
32
|
+
* ```
|
|
33
|
+
* renders to
|
|
34
|
+
* ```py
|
|
35
|
+
* myVar: int = 42
|
|
36
|
+
* myOtherVar: str
|
|
37
|
+
* myCallStmtVar=12
|
|
38
|
+
* 12
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
export function VariableDeclaration(props) {
|
|
42
|
+
const TypeSymbolSlot = createSymbolSlot();
|
|
43
|
+
const ValueTypeSymbolSlot = createSymbolSlot();
|
|
44
|
+
const sym = createPythonSymbol(props.name, {
|
|
45
|
+
instance: props.instanceVariable,
|
|
46
|
+
refkeys: props.refkey,
|
|
47
|
+
type: props.type ? TypeSymbolSlot.firstSymbol : undefined
|
|
48
|
+
}, "variable");
|
|
49
|
+
if (!props.type) {
|
|
50
|
+
ValueTypeSymbolSlot.moveMembersTo(sym);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// Handle optional type annotation
|
|
54
|
+
const type = memo(() => {
|
|
55
|
+
if (!props.type || props.callStatementVar) return undefined;
|
|
56
|
+
return [":", " ", _$createComponent(TypeRefContext, {
|
|
57
|
+
get children() {
|
|
58
|
+
return _$createComponent(TypeSymbolSlot, {
|
|
59
|
+
get children() {
|
|
60
|
+
return props.type;
|
|
61
|
+
}
|
|
62
|
+
}, {
|
|
63
|
+
fileName: import.meta.url,
|
|
64
|
+
lineNumber: 99,
|
|
65
|
+
columnNumber: 11
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
}, {
|
|
69
|
+
fileName: import.meta.url,
|
|
70
|
+
lineNumber: 98,
|
|
71
|
+
columnNumber: 9
|
|
72
|
+
})];
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
// If we receive a symbol, resolve it to a name
|
|
76
|
+
const value = typeof props.initializer === "object" ? memo(() => props.initializer) : props.initializer;
|
|
77
|
+
const assignmentOperator = props.callStatementVar ? "=" : " = ";
|
|
78
|
+
const getRightSide = () => {
|
|
79
|
+
// Early return for omitNone case
|
|
80
|
+
if (props.omitNone && props.initializer === undefined) {
|
|
81
|
+
return [false, ""];
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
// Handle null/undefined values
|
|
85
|
+
if (value === null || value === undefined) {
|
|
86
|
+
return [true, ["None"]];
|
|
87
|
+
}
|
|
88
|
+
let renderRightSideOperator = true;
|
|
89
|
+
// Call statement with no name
|
|
90
|
+
if (props.callStatementVar && (props.name === undefined || props.name === "")) {
|
|
91
|
+
renderRightSideOperator = false;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
// Standard assignment
|
|
95
|
+
return [renderRightSideOperator, _$createComponent(ValueTypeSymbolSlot, {
|
|
96
|
+
get children() {
|
|
97
|
+
return _$createComponent(Atom, {
|
|
98
|
+
jsValue: value
|
|
99
|
+
}, {
|
|
100
|
+
fileName: import.meta.url,
|
|
101
|
+
lineNumber: 135,
|
|
102
|
+
columnNumber: 9
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
}, {
|
|
106
|
+
fileName: import.meta.url,
|
|
107
|
+
lineNumber: 134,
|
|
108
|
+
columnNumber: 7
|
|
109
|
+
})];
|
|
110
|
+
};
|
|
111
|
+
const [renderRightSideOperator, rightSide] = getRightSide();
|
|
112
|
+
return [_$createComponent(Show, {
|
|
113
|
+
get when() {
|
|
114
|
+
return Boolean(props.doc);
|
|
115
|
+
},
|
|
116
|
+
get children() {
|
|
117
|
+
return [_$createComponent(SimpleCommentBlock, {
|
|
118
|
+
get children() {
|
|
119
|
+
return props.doc;
|
|
120
|
+
}
|
|
121
|
+
}, {
|
|
122
|
+
fileName: import.meta.url,
|
|
123
|
+
lineNumber: 143,
|
|
124
|
+
columnNumber: 9
|
|
125
|
+
}), _$createIntrinsic("hbr", {}, {
|
|
126
|
+
fileName: import.meta.url,
|
|
127
|
+
lineNumber: 144,
|
|
128
|
+
columnNumber: 9
|
|
129
|
+
})];
|
|
130
|
+
}
|
|
131
|
+
}, {
|
|
132
|
+
fileName: import.meta.url,
|
|
133
|
+
lineNumber: 142,
|
|
134
|
+
columnNumber: 7
|
|
135
|
+
}), _$createComponent(CoreDeclaration, {
|
|
136
|
+
symbol: sym,
|
|
137
|
+
get children() {
|
|
138
|
+
return [_$memo(() => _$createComponent(Name, {}, {
|
|
139
|
+
fileName: import.meta.url,
|
|
140
|
+
lineNumber: 147,
|
|
141
|
+
columnNumber: 10
|
|
142
|
+
})), type, renderRightSideOperator && assignmentOperator, rightSide];
|
|
143
|
+
}
|
|
144
|
+
}, {
|
|
145
|
+
fileName: import.meta.url,
|
|
146
|
+
lineNumber: 146,
|
|
147
|
+
columnNumber: 7
|
|
148
|
+
})];
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=VariableDeclaration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Declaration","CoreDeclaration","Name","Show","createSymbolSlot","memo","createPythonSymbol","Atom","SimpleCommentBlock","TypeRefContext","VariableDeclaration","props","TypeSymbolSlot","ValueTypeSymbolSlot","sym","name","instance","instanceVariable","refkeys","refkey","type","firstSymbol","undefined","moveMembersTo","callStatementVar","_$createComponent","children","fileName","import","meta","url","lineNumber","columnNumber","value","initializer","assignmentOperator","getRightSide","omitNone","renderRightSideOperator","jsValue","rightSide","when","Boolean","doc","_$createIntrinsic","symbol","_$memo"],"sources":["../../../../src/components/VariableDeclaration.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export * from "./Atom.js";
|
|
2
|
+
export * from "./CallSignature.js";
|
|
3
|
+
export * from "./ClassDeclaration.js";
|
|
4
|
+
export * from "./ClassInstantiation.js";
|
|
5
|
+
export * from "./ClassMethodDeclaration.js";
|
|
6
|
+
export * from "./ConstructorDeclaration.js";
|
|
7
|
+
export * from "./DataclassDeclaration.js";
|
|
8
|
+
export * from "./Declaration.js";
|
|
9
|
+
export * from "./DunderMethodDeclaration.js";
|
|
10
|
+
export * from "./EnumDeclaration.js";
|
|
11
|
+
export * from "./EnumMember.js";
|
|
12
|
+
export * from "./FunctionCallExpression.js";
|
|
13
|
+
export * from "./FunctionDeclaration.js";
|
|
14
|
+
export * from "./FutureStatement.js";
|
|
15
|
+
export * from "./LexicalScope.js";
|
|
16
|
+
export * from "./MemberExpression.js";
|
|
17
|
+
export * from "./MemberScope.js";
|
|
18
|
+
export * from "./MethodDeclaration.js";
|
|
19
|
+
export * from "./PropertyDeclaration.js";
|
|
20
|
+
export * from "./PyDoc.js";
|
|
21
|
+
export * from "./PythonBlock.js";
|
|
22
|
+
export * from "./Reference.js";
|
|
23
|
+
export * from "./SourceFile.js";
|
|
24
|
+
export * from "./StatementList.js";
|
|
25
|
+
export * from "./StaticMethodDeclaration.js";
|
|
26
|
+
export * from "./TypeArguments.js";
|
|
27
|
+
export * from "./TypeRefContext.js";
|
|
28
|
+
export * from "./TypeReference.js";
|
|
29
|
+
export * from "./UnionTypeExpression.js";
|
|
30
|
+
export * from "./VariableDeclaration.js";
|
|
31
|
+
export {};
|
|
32
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":["../../../../src/components/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc,WAAW;AACzB,cAAc,oBAAoB;AAClC,cAAc,uBAAuB;AACrC,cAAc,yBAAyB;AACvC,cAAc,6BAA6B;AAC3C,cAAc,6BAA6B;AAC3C,cAAc,2BAA2B;AACzC,cAAc,kBAAkB;AAChC,cAAc,8BAA8B;AAC5C,cAAc,sBAAsB;AACpC,cAAc,iBAAiB;AAE/B,cAAc,6BAA6B;AAC3C,cAAc,0BAA0B;AACxC,cAAc,sBAAsB;AACpC,cAAc,mBAAmB;AACjC,cAAc,uBAAuB;AACrC;AAEA,cAAc,wBAAwB;AACtC,cAAc,0BAA0B;AACxC,cAAc,YAAY;AAC1B,cAAc,kBAAkB;AAChC,cAAc,gBAAgB;AAC9B,cAAc,iBAAiB;AAC/B,cAAc,oBAAoB;AAClC,cAAc,8BAA8B;AAC5C,cAAc,oBAAoB;AAClC,cAAc,qBAAqB;AACnC,cAAc,oBAAoB;AAClC,cAAc,0BAA0B;AACxC,cAAc,0BAA0B;AAAC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":["../../../../src/context/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc,uBAAuB","ignoreList":[]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { createContext, useContext } from "@alloy-js/core";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Context for tracking whether we are in a type annotation position.
|
|
5
|
+
* Used to determine if imports should be guarded with TYPE_CHECKING.
|
|
6
|
+
*
|
|
7
|
+
* @internal Use the TypeRefContext component instead.
|
|
8
|
+
*/
|
|
9
|
+
export const TypeRefContextDef = createContext();
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* @returns 'true' if in a type context, 'false' if in a value context.
|
|
13
|
+
*/
|
|
14
|
+
export function isTypeRefContext() {
|
|
15
|
+
return useContext(TypeRefContextDef) === true;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=type-ref-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createContext","useContext","TypeRefContextDef","isTypeRefContext"],"sources":["../../../../src/context/type-ref-context.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAA2BA,aAAa,EAAEC,UAAU,QAAQ,gBAAgB;;AAE5E;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,iBAAyC,GAAGF,aAAa,CAAO,CAAC;;AAE9E;AACA;AACA;AACA,OAAO,SAASG,gBAAgBA,CAAA,EAAY;EAC1C,OAAOF,UAAU,CAACC,iBAAiB,CAAC,KAAK,IAAI;AAC/C","ignoreList":[]}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { createScope, getSymbolCreatorSymbol, refkey } from "@alloy-js/core";
|
|
2
|
+
import { createPythonSymbol } from "./symbol-creation.js";
|
|
3
|
+
import { PythonModuleScope } from "./symbols/index.js";
|
|
4
|
+
function createSymbols(binder, props, refkeys) {
|
|
5
|
+
// Create a module scope for each path in the descriptor
|
|
6
|
+
for (const [path, symbols] of Object.entries(props.descriptor)) {
|
|
7
|
+
// If the path is ".", we use the module name directly
|
|
8
|
+
// Otherwise, we append the path to the module name
|
|
9
|
+
const fullModuleScopeName = props.name + (path === "." ? "" : `.${path}`);
|
|
10
|
+
const keys = refkeys[path];
|
|
11
|
+
const moduleScope = createScope(PythonModuleScope, fullModuleScopeName, undefined, {
|
|
12
|
+
binder
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
// Create a symbol for each exported name
|
|
16
|
+
for (const exportedName of symbols ?? []) {
|
|
17
|
+
const key = keys[exportedName];
|
|
18
|
+
const _ = createPythonSymbol(exportedName, {
|
|
19
|
+
space: moduleScope.symbols,
|
|
20
|
+
binder: binder,
|
|
21
|
+
refkeys: key,
|
|
22
|
+
module: moduleScope.name
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// A module is a map of refkeys for each path in the descriptor.
|
|
29
|
+
// Each path maps to a set of named refkeys for the exported symbols.
|
|
30
|
+
// When one of the symbols is used, the relevant import will be added
|
|
31
|
+
// to the source file, and the symbol will be available in the output.
|
|
32
|
+
//
|
|
33
|
+
// Most of the use cases will be for templates and not for use in JSX,
|
|
34
|
+
// so the symbols will not be normally used directly in the code, but
|
|
35
|
+
// there may be cases where you want to use them directly.
|
|
36
|
+
//
|
|
37
|
+
// Example:
|
|
38
|
+
// ```ts
|
|
39
|
+
// const requestsLib = createModule({
|
|
40
|
+
// name: "requests",
|
|
41
|
+
// descriptor: {
|
|
42
|
+
// ".": ["get", "post"],
|
|
43
|
+
// },
|
|
44
|
+
// });
|
|
45
|
+
// ```
|
|
46
|
+
//
|
|
47
|
+
// For this scenario, if requestsLib["."].get is used, it will add
|
|
48
|
+
// the import `from requests import get` and would render the symbol
|
|
49
|
+
// as `get` in the output.
|
|
50
|
+
export function createModule(props) {
|
|
51
|
+
const refkeys = {
|
|
52
|
+
[getSymbolCreatorSymbol()](binder) {
|
|
53
|
+
createSymbols(binder, props, refkeys);
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
for (const [path, symbols] of Object.entries(props.descriptor)) {
|
|
57
|
+
const keys = refkeys[path] = {};
|
|
58
|
+
for (const named of symbols ?? []) {
|
|
59
|
+
keys[named] = refkey(props.descriptor, path, named);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return refkeys;
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=create-module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createScope","getSymbolCreatorSymbol","refkey","createPythonSymbol","PythonModuleScope","createSymbols","binder","props","refkeys","path","symbols","Object","entries","descriptor","fullModuleScopeName","name","keys","moduleScope","undefined","exportedName","key","_","space","module","createModule","named"],"sources":["../../../src/create-module.ts"],"sourcesContent":[null],"mappings":"AAAA,SAEEA,WAAW,EACXC,sBAAsB,EAEtBC,MAAM,QAED,gBAAgB;AACvB,SAASC,kBAAkB,QAAQ,sBAAsB;AACzD,SAASC,iBAAiB,QAAQ,oBAAoB;AAmBtD,SAASC,aAAaA,CACpBC,MAAc,EACdC,KAA0C,EAC1CC,OAA4B,EAC5B;EACA;EACA,KAAK,MAAM,CAACC,IAAI,EAAEC,OAAO,CAAC,IAAIC,MAAM,CAACC,OAAO,CAACL,KAAK,CAACM,UAAU,CAAC,EAAE;IAC9D;IACA;IACA,MAAMC,mBAAmB,GAAGP,KAAK,CAACQ,IAAI,IAAIN,IAAI,KAAK,GAAG,GAAG,EAAE,GAAG,IAAIA,IAAI,EAAE,CAAC;IACzE,MAAMO,IAAI,GAAGR,OAAO,CAACC,IAAI,CAAC;IAC1B,MAAMQ,WAAW,GAAGjB,WAAW,CAC7BI,iBAAiB,EACjBU,mBAAmB,EACnBI,SAAS,EACT;MAAEZ;IAAO,CACX,CAAC;;IAED;IACA,KAAK,MAAMa,YAAY,IAAIT,OAAO,IAAI,EAAE,EAAE;MACxC,MAAMU,GAAG,GAAGJ,IAAI,CAACG,YAAY,CAAC;MAE9B,MAAME,CAAC,GAAGlB,kBAAkB,CAACgB,YAAY,EAAE;QACzCG,KAAK,EAAEL,WAAW,CAACP,OAAO;QAC1BJ,MAAM,EAAEA,MAAM;QACdE,OAAO,EAAEY,GAAG;QACZG,MAAM,EAAEN,WAAW,CAACF;MACtB,CAAC,CAAC;IACJ;EACF;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASS,YAAYA,CAC1BjB,KAA2B,EACO;EAClC,MAAMC,OAAY,GAAG;IACnB,CAACP,sBAAsB,CAAC,CAAC,EAAEK,MAAc,EAAE;MACzCD,aAAa,CAACC,MAAM,EAAEC,KAAK,EAAEC,OAAO,CAAC;IACvC;EACF,CAAC;EAED,KAAK,MAAM,CAACC,IAAI,EAAEC,OAAO,CAAC,IAAIC,MAAM,CAACC,OAAO,CAACL,KAAK,CAACM,UAAU,CAAC,EAAE;IAC9D,MAAMG,IAA4B,GAAIR,OAAO,CAACC,IAAI,CAAC,GAAG,CAAC,CAAE;IACzD,KAAK,MAAMgB,KAAK,IAAIf,OAAO,IAAI,EAAE,EAAE;MACjCM,IAAI,CAACS,KAAK,CAAC,GAAGvB,MAAM,CAACK,KAAK,CAACM,UAAU,EAAEJ,IAAI,EAAEgB,KAAK,CAAC;IACrD;EACF;EAEA,OAAOjB,OAAO;AAChB","ignoreList":[]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export * from "./builtins/python.js";
|
|
2
|
+
export * from "./components/index.js";
|
|
3
|
+
export * from "./create-module.js";
|
|
4
|
+
export * from "./name-policy.js";
|
|
5
|
+
export * from "./parameter-descriptor.js";
|
|
6
|
+
export * from "./symbols/index.js";
|
|
7
|
+
export * from "./utils.js";
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":["../../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc,sBAAsB;AACpC,cAAc,uBAAuB;AACrC,cAAc,oBAAoB;AAClC,cAAc,kBAAkB;AAChC,cAAc,2BAA2B;AACzC,cAAc,oBAAoB;AAClC,cAAc,YAAY","ignoreList":[]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export function pythonNameConflictResolver(_, symbols) {
|
|
2
|
+
for (let i = 1; i < symbols.length; i++) {
|
|
3
|
+
// Rename all but the first symbol to have a suffix of _2, _3, plus the scope name if available.
|
|
4
|
+
const symbol = symbols[i];
|
|
5
|
+
symbol.name = symbol.originalName + "_" + (i + 1) + "_" + (symbols[i].aliasTarget?.scope?.name ?? symbol.module ?? "");
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=name-conflict-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["pythonNameConflictResolver","_","symbols","i","length","symbol","name","originalName","aliasTarget","scope","module"],"sources":["../../../src/name-conflict-resolver.ts"],"sourcesContent":[null],"mappings":"AAEA,OAAO,SAASA,0BAA0BA,CACxCC,CAAS,EACTC,OAA6B,EAC7B;EACA,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGD,OAAO,CAACE,MAAM,EAAED,CAAC,EAAE,EAAE;IACvC;IACA,MAAME,MAAM,GAAGH,OAAO,CAACC,CAAC,CAIvB;IACDE,MAAM,CAACC,IAAI,GACTD,MAAM,CAACE,YAAY,GACnB,GAAG,IACFJ,CAAC,GAAG,CAAC,CAAC,GACP,GAAG,IACFD,OAAO,CAACC,CAAC,CAAC,CAACK,WAAW,EAAEC,KAAK,EAAEH,IAAI,IAAID,MAAM,CAACK,MAAM,IAAI,EAAE,CAAC;EAChE;AACF","ignoreList":[]}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { createNamePolicy, useNamePolicy } from "@alloy-js/core";
|
|
2
|
+
import { constantCase, pascalCase, snakeCase } from "change-case";
|
|
3
|
+
// Enum members
|
|
4
|
+
|
|
5
|
+
// Reserved words
|
|
6
|
+
const GLOBAL_RESERVED_WORDS = new Set(["False", "None", "True", "and", "as", "assert", "async", "await", "break", "class", "continue", "def", "del", "elif", "else", "except", "finally", "for", "from", "global", "if", "import", "in", "is", "lambda", "nonlocal", "not", "or", "pass", "raise", "return", "try", "while", "with", "and", "yield"]);
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Ensures a valid Python identifier for the given element kind.
|
|
10
|
+
* @param name - The name to validate.
|
|
11
|
+
* @param element - The Python element kind.
|
|
12
|
+
* @returns A Python-safe name.
|
|
13
|
+
*/
|
|
14
|
+
function ensureNonReservedName(name) {
|
|
15
|
+
const suffix = "_";
|
|
16
|
+
|
|
17
|
+
// Global reserved words always need handling
|
|
18
|
+
if (GLOBAL_RESERVED_WORDS.has(name)) {
|
|
19
|
+
return `${name}${suffix}`;
|
|
20
|
+
}
|
|
21
|
+
return name;
|
|
22
|
+
}
|
|
23
|
+
export function createPythonNamePolicy() {
|
|
24
|
+
return createNamePolicy((name, element) => {
|
|
25
|
+
let transformedName;
|
|
26
|
+
switch (element) {
|
|
27
|
+
case "class":
|
|
28
|
+
case "enum":
|
|
29
|
+
transformedName = pascalCase(name);
|
|
30
|
+
break;
|
|
31
|
+
case "constant":
|
|
32
|
+
case "enum-member":
|
|
33
|
+
transformedName = constantCase(name);
|
|
34
|
+
break;
|
|
35
|
+
case "module":
|
|
36
|
+
transformedName = snakeCase(name).toLowerCase();
|
|
37
|
+
break;
|
|
38
|
+
default:
|
|
39
|
+
transformedName = snakeCase(name);
|
|
40
|
+
break;
|
|
41
|
+
}
|
|
42
|
+
return ensureNonReservedName(transformedName);
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
export function usePythonNamePolicy() {
|
|
46
|
+
return useNamePolicy();
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=name-policy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createNamePolicy","useNamePolicy","constantCase","pascalCase","snakeCase","GLOBAL_RESERVED_WORDS","Set","ensureNonReservedName","name","suffix","has","createPythonNamePolicy","element","transformedName","toLowerCase","usePythonNamePolicy"],"sources":["../../../src/name-policy.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,gBAAgB,EAAcC,aAAa,QAAQ,gBAAgB;AAC5E,SAASC,YAAY,EAAEC,UAAU,EAAEC,SAAS,QAAQ,aAAa;AAa9C;;AAEnB;AACA,MAAMC,qBAAqB,GAAG,IAAIC,GAAG,CAAC,CACpC,OAAO,EACP,MAAM,EACN,MAAM,EACN,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,UAAU,EACV,KAAK,EACL,KAAK,EACL,MAAM,EACN,MAAM,EACN,QAAQ,EACR,SAAS,EACT,KAAK,EACL,MAAM,EACN,QAAQ,EACR,IAAI,EACJ,QAAQ,EACR,IAAI,EACJ,IAAI,EACJ,QAAQ,EACR,UAAU,EACV,KAAK,EACL,IAAI,EACJ,MAAM,EACN,OAAO,EACP,QAAQ,EACR,KAAK,EACL,OAAO,EACP,MAAM,EACN,KAAK,EACL,OAAO,CACR,CAAC;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,qBAAqBA,CAACC,IAAY,EAAU;EACnD,MAAMC,MAAM,GAAG,GAAG;;EAElB;EACA,IAAIJ,qBAAqB,CAACK,GAAG,CAACF,IAAI,CAAC,EAAE;IACnC,OAAO,GAAGA,IAAI,GAAGC,MAAM,EAAE;EAC3B;EAEA,OAAOD,IAAI;AACb;AAEA,OAAO,SAASG,sBAAsBA,CAAA,EAA+B;EACnE,OAAOX,gBAAgB,CAAC,CAACQ,IAAI,EAAEI,OAAO,KAAK;IACzC,IAAIC,eAAuB;IAE3B,QAAQD,OAAO;MACb,KAAK,OAAO;MACZ,KAAK,MAAM;QACTC,eAAe,GAAGV,UAAU,CAACK,IAAI,CAAC;QAClC;MACF,KAAK,UAAU;MACf,KAAK,aAAa;QAChBK,eAAe,GAAGX,YAAY,CAACM,IAAI,CAAC;QACpC;MACF,KAAK,QAAQ;QACXK,eAAe,GAAGT,SAAS,CAACI,IAAI,CAAC,CAACM,WAAW,CAAC,CAAC;QAC/C;MACF;QACED,eAAe,GAAGT,SAAS,CAACI,IAAI,CAAC;QACjC;IACJ;IAEA,OAAOD,qBAAqB,CAACM,eAAe,CAAC;EAC/C,CAAC,CAAC;AACJ;AAEA,OAAO,SAASE,mBAAmBA,CAAA,EAA+B;EAChE,OAAOd,aAAa,CAAC,CAAC;AACxB","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["isParameterDescriptor","param"],"sources":["../../../src/parameter-descriptor.ts"],"sourcesContent":[null],"mappings":"AAEA;AACA;AACA;;AA4BA,OAAO,SAASA,qBAAqBA,CACnCC,KAAc,EACgB;EAC9B,OAAO,OAAOA,KAAK,KAAK,QAAQ,IAAIA,KAAK,KAAK,IAAI,IAAI,MAAM,IAAIA,KAAK;AACvE","ignoreList":[]}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { createScope, createSymbol, useContext } from "@alloy-js/core";
|
|
2
|
+
import { PythonSourceFileContext } from "./components/SourceFile.js";
|
|
3
|
+
import { usePythonNamePolicy } from "./name-policy.js";
|
|
4
|
+
import { PythonOutputSymbol, usePythonScope } from "./symbols/index.js";
|
|
5
|
+
import { PythonLexicalScope } from "./symbols/python-lexical-scope.js";
|
|
6
|
+
/**
|
|
7
|
+
* Attempts to find an existing symbol by name in the target space.
|
|
8
|
+
*/
|
|
9
|
+
export function findExistingSymbol(name, targetSpace) {
|
|
10
|
+
if (!targetSpace) {
|
|
11
|
+
return undefined;
|
|
12
|
+
}
|
|
13
|
+
const existingSymbol = targetSpace.symbolNames.get(name);
|
|
14
|
+
return existingSymbol;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Creates a symbol for a python declaration in the current scope.
|
|
19
|
+
*/
|
|
20
|
+
export function createPythonSymbol(name, options = {}, kind) {
|
|
21
|
+
const sfContext = useContext(PythonSourceFileContext);
|
|
22
|
+
const currentScope = usePythonScope();
|
|
23
|
+
let targetSpace = options.space ?? undefined;
|
|
24
|
+
if (!options.space && currentScope) {
|
|
25
|
+
if (currentScope.isMemberScope) {
|
|
26
|
+
if (options.instance) {
|
|
27
|
+
targetSpace = currentScope.ownerSymbol.instanceMembers;
|
|
28
|
+
} else {
|
|
29
|
+
targetSpace = currentScope.ownerSymbol.staticMembers;
|
|
30
|
+
}
|
|
31
|
+
} else {
|
|
32
|
+
if (options.instance) {
|
|
33
|
+
throw new Error(`Cannot declare instance variable ${name} outside of a member scope`);
|
|
34
|
+
}
|
|
35
|
+
targetSpace = currentScope.symbols;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
const binder = options.binder ?? currentScope?.binder;
|
|
39
|
+
return createSymbol(PythonOutputSymbol, name, targetSpace, {
|
|
40
|
+
binder,
|
|
41
|
+
aliasTarget: options.aliasTarget,
|
|
42
|
+
refkeys: options.refkeys,
|
|
43
|
+
metadata: options.metadata,
|
|
44
|
+
module: sfContext?.module,
|
|
45
|
+
type: options.type,
|
|
46
|
+
ignoreNameConflict: options.ignoreNameConflict,
|
|
47
|
+
namePolicy: usePythonNamePolicy().for(kind)
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
export function createLexicalScope(name, options = {}) {
|
|
51
|
+
const parent = usePythonScope();
|
|
52
|
+
const binder = options.binder ?? parent?.binder;
|
|
53
|
+
return createScope(PythonLexicalScope, name, parent, {
|
|
54
|
+
...options,
|
|
55
|
+
binder
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=symbol-creation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createScope","createSymbol","useContext","PythonSourceFileContext","usePythonNamePolicy","PythonOutputSymbol","usePythonScope","PythonLexicalScope","findExistingSymbol","name","targetSpace","undefined","existingSymbol","symbolNames","get","createPythonSymbol","options","kind","sfContext","currentScope","space","isMemberScope","instance","ownerSymbol","instanceMembers","staticMembers","Error","symbols","binder","aliasTarget","refkeys","metadata","module","type","ignoreNameConflict","namePolicy","for","createLexicalScope","parent"],"sources":["../../../src/symbol-creation.ts"],"sourcesContent":[null],"mappings":"AAAA,SAIEA,WAAW,EACXC,YAAY,EACZC,UAAU,QACL,gBAAgB;AACvB,SAASC,uBAAuB,QAAQ,4BAA4B;AACpE,SAAyBC,mBAAmB,QAAQ,kBAAkB;AACtE,SACEC,kBAAkB,EAElBC,cAAc,QACT,oBAAoB;AAC3B,SAASC,kBAAkB,QAAQ,mCAAmC;AAOtE;AACA;AACA;AACA,OAAO,SAASC,kBAAkBA,CAChCC,IAAY,EACZC,WAAyB,EACO;EAChC,IAAI,CAACA,WAAW,EAAE;IAChB,OAAOC,SAAS;EAClB;EAEA,MAAMC,cAAc,GAAGF,WAAW,CAACG,WAAW,CAACC,GAAG,CAACL,IAAI,CAAC;EACxD,OAAOG,cAAc;AACvB;;AAEA;AACA;AACA;AACA,OAAO,SAASG,kBAAkBA,CAChCN,IAAsB,EACtBO,OAAkC,GAAG,CAAC,CAAC,EACvCC,IAAqB,EACD;EACpB,MAAMC,SAAS,GAAGhB,UAAU,CAACC,uBAAuB,CAAC;EACrD,MAAMgB,YAAY,GAAGb,cAAc,CAAC,CAAC;EACrC,IAAII,WAAW,GAAGM,OAAO,CAACI,KAAK,IAAIT,SAAS;EAC5C,IAAI,CAACK,OAAO,CAACI,KAAK,IAAID,YAAY,EAAE;IAClC,IAAIA,YAAY,CAACE,aAAa,EAAE;MAC9B,IAAIL,OAAO,CAACM,QAAQ,EAAE;QACpBZ,WAAW,GAAGS,YAAY,CAACI,WAAW,CAAEC,eAAe;MACzD,CAAC,MAAM;QACLd,WAAW,GAAGS,YAAY,CAACI,WAAW,CAAEE,aAAa;MACvD;IACF,CAAC,MAAM;MACL,IAAIT,OAAO,CAACM,QAAQ,EAAE;QACpB,MAAM,IAAII,KAAK,CACb,oCAAoCjB,IAAI,4BAC1C,CAAC;MACH;MACAC,WAAW,GAAIS,YAAY,CAAwBQ,OAAO;IAC5D;EACF;EAEA,MAAMC,MAAM,GAAGZ,OAAO,CAACY,MAAM,IAAIT,YAAY,EAAES,MAAM;EAErD,OAAO3B,YAAY,CAACI,kBAAkB,EAAEI,IAAI,EAAEC,WAAW,EAAE;IACzDkB,MAAM;IACNC,WAAW,EAAEb,OAAO,CAACa,WAAW;IAChCC,OAAO,EAAEd,OAAO,CAACc,OAAO;IACxBC,QAAQ,EAAEf,OAAO,CAACe,QAAQ;IAC1BC,MAAM,EAAEd,SAAS,EAAEc,MAAM;IACzBC,IAAI,EAAEjB,OAAO,CAACiB,IAAI;IAClBC,kBAAkB,EAAElB,OAAO,CAACkB,kBAAkB;IAC9CC,UAAU,EAAE/B,mBAAmB,CAAC,CAAC,CAACgC,GAAG,CAACnB,IAAI;EAC5C,CAAC,CAAC;AACJ;AAEA,OAAO,SAASoB,kBAAkBA,CAChC5B,IAAY,EACZO,OAA2B,GAAG,CAAC,CAAC,EAChC;EACA,MAAMsB,MAAM,GAAGhC,cAAc,CAAC,CAAC;EAC/B,MAAMsB,MAAM,GAAGZ,OAAO,CAACY,MAAM,IAAIU,MAAM,EAAEV,MAAM;EAE/C,OAAO5B,WAAW,CAACO,kBAAkB,EAAEE,IAAI,EAAE6B,MAAM,EAAE;IACnD,GAAGtB,OAAO;IACVY;EACF,CAAC,CAAC;AACJ","ignoreList":[]}
|