@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
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { memo as _$memo, createIntrinsic as _$createIntrinsic, createComponent as _$createComponent } from "@alloy-js/core/jsx-runtime";
|
|
2
|
-
import { childrenArray, SourceFile as CoreSourceFile, createNamedContext, createScope, isComponentCreator, List, Scope, Show, SourceDirectoryContext, useContext } from "@alloy-js/core";
|
|
2
|
+
import { childrenArray, computed, SourceFile as CoreSourceFile, createNamedContext, createScope, isComponentCreator, List, Scope, Show, SourceDirectoryContext, useContext } from "@alloy-js/core";
|
|
3
3
|
import { join } from "pathe";
|
|
4
4
|
import { PythonModuleScope } from "../symbols/index.js";
|
|
5
|
-
import { ImportStatements } from "./ImportStatement.js";
|
|
5
|
+
import { categorizeImportRecords, ImportStatements } from "./ImportStatement.js";
|
|
6
6
|
import { SimpleCommentBlock } from "./PyDoc.js";
|
|
7
|
+
import { PythonBlock } from "./PythonBlock.js";
|
|
7
8
|
import { Reference } from "./Reference.js";
|
|
8
9
|
|
|
9
10
|
// Non top-level definitions
|
|
@@ -100,6 +101,24 @@ export function SourceFile(props) {
|
|
|
100
101
|
|
|
101
102
|
// Check if there's any preamble content (header, doc, imports, etc.)
|
|
102
103
|
const hasPreamble = props.header !== undefined || props.headerComment !== undefined || props.doc !== undefined || props.futureImports !== undefined;
|
|
104
|
+
const imports = computed(() => {
|
|
105
|
+
// Quick scan for any type-only imports
|
|
106
|
+
const hasTypeImports = [...scope.importedModules.values()].some(props => props.symbols && [...props.symbols].some(s => s.local.isTypeOnly));
|
|
107
|
+
|
|
108
|
+
// Add TYPE_CHECKING before categorizing so it's naturally included
|
|
109
|
+
const typeImportSymbol = hasTypeImports ? scope.addTypeImport() : undefined;
|
|
110
|
+
|
|
111
|
+
// Single categorize - TYPE_CHECKING is already in scope.importedModules
|
|
112
|
+
const {
|
|
113
|
+
valueImports,
|
|
114
|
+
typeImports
|
|
115
|
+
} = categorizeImportRecords(scope.importedModules);
|
|
116
|
+
return {
|
|
117
|
+
valueImports,
|
|
118
|
+
typeImports,
|
|
119
|
+
typeImportSymbol
|
|
120
|
+
};
|
|
121
|
+
});
|
|
103
122
|
return _$createComponent(CoreSourceFile, {
|
|
104
123
|
get path() {
|
|
105
124
|
return props.path;
|
|
@@ -170,20 +189,40 @@ export function SourceFile(props) {
|
|
|
170
189
|
}
|
|
171
190
|
}), _$createComponent(Show, {
|
|
172
191
|
get when() {
|
|
173
|
-
return
|
|
192
|
+
return imports.value.valueImports.size > 0;
|
|
174
193
|
},
|
|
175
194
|
get children() {
|
|
176
195
|
return [_$createComponent(ImportStatements, {
|
|
177
196
|
get records() {
|
|
178
|
-
return
|
|
197
|
+
return imports.value.valueImports;
|
|
179
198
|
}
|
|
180
|
-
}), _$
|
|
181
|
-
|
|
199
|
+
}), _$createIntrinsic("hbr", {})];
|
|
200
|
+
}
|
|
201
|
+
}), _$createComponent(Show, {
|
|
202
|
+
get when() {
|
|
203
|
+
return imports.value.typeImports.size > 0;
|
|
204
|
+
},
|
|
205
|
+
get children() {
|
|
206
|
+
return [_$createIntrinsic("hbr", {}), _$createComponent(PythonBlock, {
|
|
207
|
+
get opener() {
|
|
208
|
+
return `if ${imports.value.typeImportSymbol.name}:`;
|
|
209
|
+
},
|
|
182
210
|
get children() {
|
|
183
|
-
return
|
|
211
|
+
return _$createComponent(ImportStatements, {
|
|
212
|
+
get records() {
|
|
213
|
+
return imports.value.typeImports;
|
|
214
|
+
}
|
|
215
|
+
});
|
|
184
216
|
}
|
|
185
217
|
})];
|
|
186
218
|
}
|
|
219
|
+
}), _$createComponent(Show, {
|
|
220
|
+
get when() {
|
|
221
|
+
return hasChildren && scope.importedModules.size > 0;
|
|
222
|
+
},
|
|
223
|
+
get children() {
|
|
224
|
+
return _$createIntrinsic("hbr", {});
|
|
225
|
+
}
|
|
187
226
|
}), _$createComponent(Show, {
|
|
188
227
|
get when() {
|
|
189
228
|
return needsExtraSpacing && (hasPreamble || scope.importedModules.size > 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["childrenArray","SourceFile","CoreSourceFile","createNamedContext","createScope","isComponentCreator","List","Scope","Show","SourceDirectoryContext","useContext","join","PythonModuleScope","ImportStatements","SimpleCommentBlock","Reference","NON_DEFINITION_NAMES","Set","WRAPPER_COMPONENT_NAMES","firstChildIsDefinition","children","arr","length","first","name","component","has","props","PythonSourceFileContext","useSourceFile","directoryContext","currentDir","path","replace","scope","undefined","sfContext","module","hasChildren","needsExtraSpacing","hasPreamble","header","headerComment","doc","futureImports","_$createComponent","filetype","reference","when","_$createIntrinsic","_$memo","
|
|
1
|
+
{"version":3,"names":["childrenArray","computed","SourceFile","CoreSourceFile","createNamedContext","createScope","isComponentCreator","List","Scope","Show","SourceDirectoryContext","useContext","join","PythonModuleScope","categorizeImportRecords","ImportStatements","SimpleCommentBlock","PythonBlock","Reference","NON_DEFINITION_NAMES","Set","WRAPPER_COMPONENT_NAMES","firstChildIsDefinition","children","arr","length","first","name","component","has","props","PythonSourceFileContext","useSourceFile","directoryContext","currentDir","path","replace","scope","undefined","sfContext","module","hasChildren","needsExtraSpacing","hasPreamble","header","headerComment","doc","futureImports","imports","hasTypeImports","importedModules","values","some","symbols","s","local","isTypeOnly","typeImportSymbol","addTypeImport","valueImports","typeImports","_$createComponent","filetype","reference","when","_$createIntrinsic","_$memo","value","size","records","opener","Provider","doubleHardline"],"sources":["../../../src/components/SourceFile.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { Children } from "@alloy-js/core";
|
|
2
|
+
import { isTypeRefContext } from "../context/type-ref-context.js";
|
|
3
|
+
export { isTypeRefContext };
|
|
4
|
+
export interface TypeRefContextProps {
|
|
5
|
+
/**
|
|
6
|
+
* Children
|
|
7
|
+
*/
|
|
8
|
+
children: Children;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Set the current context of reference to be type reference.
|
|
12
|
+
*
|
|
13
|
+
* @remarks
|
|
14
|
+
* References used inside the children of this component will be treated as
|
|
15
|
+
* type-only references. When a symbol is only referenced in type contexts,
|
|
16
|
+
* it will be imported inside a `if TYPE_CHECKING:` block.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```tsx
|
|
20
|
+
* <TypeRefContext>
|
|
21
|
+
* {someTypeRefkey}
|
|
22
|
+
* </TypeRefContext>
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
export declare const TypeRefContext: ({ children }: TypeRefContextProps) => Children;
|
|
26
|
+
//# sourceMappingURL=TypeRefContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TypeRefContext.d.ts","sourceRoot":"","sources":["../../../src/components/TypeRefContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EACL,gBAAgB,EAEjB,MAAM,gCAAgC,CAAC;AAGxC,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAE5B,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,cAAc,GAAI,cAAc,mBAAmB,aAI/D,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
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
|
+
};
|
|
29
|
+
//# sourceMappingURL=TypeRefContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["isTypeRefContext","TypeRefContextDef","TypeRefContext","children","_$createComponent","Provider","value"],"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;AAE/C,CAAC","ignoreList":[]}
|
|
@@ -9,6 +9,11 @@ export interface TypeReferenceProps {
|
|
|
9
9
|
}
|
|
10
10
|
/**
|
|
11
11
|
* A type reference like Foo[T, P] or int.
|
|
12
|
+
*
|
|
13
|
+
* @remarks
|
|
14
|
+
* This component automatically wraps its content in a type reference context,
|
|
15
|
+
* so any symbols referenced via refkey will be imported as type-only
|
|
16
|
+
* (inside a `if TYPE_CHECKING:` block) unless also used as values elsewhere.
|
|
12
17
|
*/
|
|
13
18
|
export declare function TypeReference(props: TypeReferenceProps): Children;
|
|
14
19
|
//# sourceMappingURL=TypeReference.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TypeReference.d.ts","sourceRoot":"","sources":["../../../src/components/TypeReference.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAQ,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"TypeReference.d.ts","sourceRoot":"","sources":["../../../src/components/TypeReference.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAQ,MAAM,gBAAgB,CAAC;AAIxD,MAAM,WAAW,kBAAkB;IACjC,qCAAqC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0DAA0D;IAC1D,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,gDAAgD;IAChD,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC;CACvB;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,YAmBtD"}
|
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
import { createComponent as _$createComponent, createIntrinsic as _$createIntrinsic } from "@alloy-js/core/jsx-runtime";
|
|
2
2
|
import { Show } from "@alloy-js/core";
|
|
3
3
|
import { TypeArguments } from "./TypeArguments.js";
|
|
4
|
+
import { TypeRefContext } from "./TypeRefContext.js";
|
|
4
5
|
/**
|
|
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.
|
|
6
12
|
*/
|
|
7
13
|
export function TypeReference(props) {
|
|
8
14
|
const type = props.refkey ? props.refkey : props.name;
|
|
@@ -11,18 +17,22 @@ export function TypeReference(props) {
|
|
|
11
17
|
return props.typeArgs;
|
|
12
18
|
}
|
|
13
19
|
}) : undefined;
|
|
14
|
-
return _$
|
|
20
|
+
return _$createComponent(TypeRefContext, {
|
|
15
21
|
get children() {
|
|
16
|
-
return
|
|
22
|
+
return _$createIntrinsic("group", {
|
|
17
23
|
get children() {
|
|
18
|
-
return [_$createIntrinsic("
|
|
19
|
-
get
|
|
20
|
-
return
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
+
return [_$createIntrinsic("indent", {
|
|
25
|
+
get children() {
|
|
26
|
+
return [_$createIntrinsic("sbr", {}), type, _$createComponent(Show, {
|
|
27
|
+
get when() {
|
|
28
|
+
return Boolean(typeArgs);
|
|
29
|
+
},
|
|
30
|
+
children: typeArgs
|
|
31
|
+
})];
|
|
32
|
+
}
|
|
33
|
+
}), _$createIntrinsic("sbr", {})];
|
|
24
34
|
}
|
|
25
|
-
})
|
|
35
|
+
});
|
|
26
36
|
}
|
|
27
37
|
});
|
|
28
38
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Show","TypeArguments","TypeReference","props","type","refkey","name","typeArgs","length","_$createComponent","args","undefined","_$createIntrinsic","
|
|
1
|
+
{"version":3,"names":["Show","TypeArguments","TypeRefContext","TypeReference","props","type","refkey","name","typeArgs","length","_$createComponent","args","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,KACnCI,SAAS;EAEb,OAAAF,iBAAA,CACGR,cAAc;IAAA,IAAAW,SAAA;MAAA,OAAAC,iBAAA;QAAA,IAAAD,SAAA;UAAA,QAAAC,iBAAA;YAAA,IAAAD,SAAA;cAAA,QAAAC,iBAAA,aAIRT,IAAI,EAAAK,iBAAA,CACJV,IAAI;gBAAA,IAACe,IAAIA,CAAA;kBAAA,OAAEC,OAAO,CAACR,QAAQ,CAAC;gBAAA;gBAAAK,QAAA,EAAGL;cAAQ;YAAA;UAAA,IAAAM,iBAAA;QAAA;MAAA;IAAA;EAAA;AAMlD","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VariableDeclaration.d.ts","sourceRoot":"","sources":["../../../src/components/VariableDeclaration.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAMT,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"VariableDeclaration.d.ts","sourceRoot":"","sources":["../../../src/components/VariableDeclaration.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAMT,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAIzD,MAAM,WAAW,wBAAyB,SAAQ,oBAAoB;IACpE;;OAEG;IACH,WAAW,CAAC,EAAE,QAAQ,CAAC;IACvB;;OAEG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,wBAAwB,YAgFlE"}
|
|
@@ -3,6 +3,7 @@ import { Declaration as CoreDeclaration, Name, Show, createSymbolSlot, memo } fr
|
|
|
3
3
|
import { createPythonSymbol } from "../symbol-creation.js";
|
|
4
4
|
import { Atom } from "./Atom.js";
|
|
5
5
|
import { SimpleCommentBlock } from "./PyDoc.js";
|
|
6
|
+
import { TypeRefContext } from "./TypeRefContext.js";
|
|
6
7
|
/**
|
|
7
8
|
* A variable declaration component for Python.
|
|
8
9
|
*
|
|
@@ -52,9 +53,13 @@ export function VariableDeclaration(props) {
|
|
|
52
53
|
// Handle optional type annotation
|
|
53
54
|
const type = memo(() => {
|
|
54
55
|
if (!props.type || props.callStatementVar) return undefined;
|
|
55
|
-
return [": ", _$createComponent(
|
|
56
|
+
return [":", " ", _$createComponent(TypeRefContext, {
|
|
56
57
|
get children() {
|
|
57
|
-
return
|
|
58
|
+
return _$createComponent(TypeSymbolSlot, {
|
|
59
|
+
get children() {
|
|
60
|
+
return props.type;
|
|
61
|
+
}
|
|
62
|
+
});
|
|
58
63
|
}
|
|
59
64
|
})];
|
|
60
65
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Declaration","CoreDeclaration","Name","Show","createSymbolSlot","memo","createPythonSymbol","Atom","SimpleCommentBlock","VariableDeclaration","props","TypeSymbolSlot","ValueTypeSymbolSlot","sym","name","instance","instanceVariable","refkeys","refkey","type","firstSymbol","undefined","moveMembersTo","callStatementVar","_$createComponent","children","value","initializer","assignmentOperator","getRightSide","omitNone","renderRightSideOperator","jsValue","rightSide","when","Boolean","doc","_$createIntrinsic","symbol","_$memo"],"sources":["../../../src/components/VariableDeclaration.tsx"],"sourcesContent":[null],"mappings":";AAAA,SAEEA,WAAW,IAAIC,eAAe,EAC9BC,IAAI,EACJC,IAAI,EACJC,gBAAgB,EAChBC,IAAI,QACC,gBAAgB;AACvB,SAASC,kBAAkB,QAAQ,uBAAuB;AAC1D,SAASC,IAAI;AAEb,SAASC,kBAAkB;
|
|
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","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":[]}
|
|
@@ -13,7 +13,6 @@ export type { CommonFunctionProps } from "./FunctionBase.js";
|
|
|
13
13
|
export * from "./FunctionCallExpression.js";
|
|
14
14
|
export * from "./FunctionDeclaration.js";
|
|
15
15
|
export * from "./FutureStatement.js";
|
|
16
|
-
export * from "./ImportStatement.js";
|
|
17
16
|
export * from "./LexicalScope.js";
|
|
18
17
|
export * from "./MemberExpression.js";
|
|
19
18
|
export * from "./MemberScope.jsx";
|
|
@@ -27,6 +26,7 @@ export * from "./SourceFile.js";
|
|
|
27
26
|
export * from "./StatementList.js";
|
|
28
27
|
export * from "./StaticMethodDeclaration.js";
|
|
29
28
|
export * from "./TypeArguments.js";
|
|
29
|
+
export * from "./TypeRefContext.js";
|
|
30
30
|
export * from "./TypeReference.js";
|
|
31
31
|
export * from "./UnionTypeExpression.js";
|
|
32
32
|
export * from "./VariableDeclaration.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,YAAY,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,YAAY,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,YAAY,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAClE,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC"}
|
|
@@ -12,7 +12,6 @@ export * from "./EnumMember.js";
|
|
|
12
12
|
export * from "./FunctionCallExpression.js";
|
|
13
13
|
export * from "./FunctionDeclaration.js";
|
|
14
14
|
export * from "./FutureStatement.js";
|
|
15
|
-
export * from "./ImportStatement.js";
|
|
16
15
|
export * from "./LexicalScope.js";
|
|
17
16
|
export * from "./MemberExpression.js";
|
|
18
17
|
export * from "./MemberScope.js";
|
|
@@ -25,6 +24,7 @@ export * from "./SourceFile.js";
|
|
|
25
24
|
export * from "./StatementList.js";
|
|
26
25
|
export * from "./StaticMethodDeclaration.js";
|
|
27
26
|
export * from "./TypeArguments.js";
|
|
27
|
+
export * from "./TypeRefContext.js";
|
|
28
28
|
export * from "./TypeReference.js";
|
|
29
29
|
export * from "./UnionTypeExpression.js";
|
|
30
30
|
export * from "./VariableDeclaration.js";
|
|
@@ -1 +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,
|
|
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,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/context/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":["../../../src/context/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc,uBAAuB","ignoreList":[]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ComponentContext } from "@alloy-js/core";
|
|
2
|
+
/**
|
|
3
|
+
* Context for tracking whether we are in a type annotation position.
|
|
4
|
+
* Used to determine if imports should be guarded with TYPE_CHECKING.
|
|
5
|
+
*
|
|
6
|
+
* @internal Use the TypeRefContext component instead.
|
|
7
|
+
*/
|
|
8
|
+
export declare const TypeRefContextDef: ComponentContext<true>;
|
|
9
|
+
/**
|
|
10
|
+
* @returns 'true' if in a type context, 'false' if in a value context.
|
|
11
|
+
*/
|
|
12
|
+
export declare function isTypeRefContext(): boolean;
|
|
13
|
+
//# sourceMappingURL=type-ref-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type-ref-context.d.ts","sourceRoot":"","sources":["../../../src/context/type-ref-context.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAA6B,MAAM,gBAAgB,CAAC;AAE7E;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,EAAE,gBAAgB,CAAC,IAAI,CAAyB,CAAC;AAE/E;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,CAE1C"}
|
|
@@ -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":[]}
|
|
@@ -11,11 +11,23 @@ export interface ImportRecordProps {
|
|
|
11
11
|
}
|
|
12
12
|
export declare class ImportRecords extends Map<PythonModuleScope, ImportRecordProps> {
|
|
13
13
|
}
|
|
14
|
+
export interface AddImportOptions {
|
|
15
|
+
/**
|
|
16
|
+
* If true, this import is only used in type annotation contexts.
|
|
17
|
+
* Such imports will be guarded with `if TYPE_CHECKING:`.
|
|
18
|
+
*/
|
|
19
|
+
type?: boolean;
|
|
20
|
+
}
|
|
14
21
|
export declare class PythonModuleScope extends PythonLexicalScope {
|
|
15
22
|
#private;
|
|
16
23
|
get importedSymbols(): Map<PythonOutputSymbol, PythonOutputSymbol>;
|
|
17
24
|
get importedModules(): ImportRecords;
|
|
18
|
-
addImport(targetSymbol: PythonOutputSymbol, targetModule: PythonModuleScope): PythonOutputSymbol;
|
|
25
|
+
addImport(targetSymbol: PythonOutputSymbol, targetModule: PythonModuleScope, options?: AddImportOptions): PythonOutputSymbol;
|
|
26
|
+
/**
|
|
27
|
+
* Add TYPE_CHECKING import from the typing module.
|
|
28
|
+
* Returns the local symbol for use in the if block opener.
|
|
29
|
+
*/
|
|
30
|
+
addTypeImport(): PythonOutputSymbol;
|
|
19
31
|
get debugInfo(): Record<string, unknown>;
|
|
20
32
|
}
|
|
21
33
|
//# sourceMappingURL=python-module-scope.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"python-module-scope.d.ts","sourceRoot":"","sources":["../../../src/symbols/python-module-scope.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"python-module-scope.d.ts","sourceRoot":"","sources":["../../../src/symbols/python-module-scope.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AA0B/D,qBAAa,cAAc;IACzB,KAAK,EAAE,kBAAkB,CAAC;IAC1B,MAAM,EAAE,kBAAkB,CAAC;gBAEf,MAAM,EAAE,kBAAkB,EAAE,KAAK,EAAE,kBAAkB;IAKjE,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,kBAAkB,EAAE,KAAK,EAAE,kBAAkB;CAGlE;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;CAC9B;AAED,qBAAa,aAAc,SAAQ,GAAG,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;CAAG;AAE/E,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,qBAAa,iBAAkB,SAAQ,kBAAkB;;IAGvD,IAAI,eAAe,gDAElB;IAGD,IAAI,eAAe,kBAElB;IAED,SAAS,CACP,YAAY,EAAE,kBAAkB,EAChC,YAAY,EAAE,iBAAiB,EAC/B,OAAO,CAAC,EAAE,gBAAgB;IAqC5B;;;OAGG;IACH,aAAa,IAAI,kBAAkB;IAKnC,IAAa,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMhD;CACF"}
|
|
@@ -1,6 +1,26 @@
|
|
|
1
1
|
import { createSymbol, reactive, shallowReactive } from "@alloy-js/core";
|
|
2
2
|
import { PythonLexicalScope } from "./python-lexical-scope.js";
|
|
3
3
|
import { PythonOutputSymbol } from "./python-output-symbol.js";
|
|
4
|
+
|
|
5
|
+
// Internal typing module for TYPE_CHECKING imports
|
|
6
|
+
let _typingModuleScope;
|
|
7
|
+
let _typeCheckingSymbol;
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Get the internal typing module scope and TYPE_CHECKING symbol.
|
|
11
|
+
* Used by addTypeImport() to add TYPE_CHECKING imports without
|
|
12
|
+
* going through the binder's refkey resolution.
|
|
13
|
+
*/
|
|
14
|
+
function getTypingModuleInternal() {
|
|
15
|
+
if (!_typingModuleScope) {
|
|
16
|
+
_typingModuleScope = new PythonModuleScope("typing", undefined);
|
|
17
|
+
_typeCheckingSymbol = new PythonOutputSymbol("TYPE_CHECKING", _typingModuleScope.symbols, {});
|
|
18
|
+
}
|
|
19
|
+
return {
|
|
20
|
+
scope: _typingModuleScope,
|
|
21
|
+
TYPE_CHECKING: _typeCheckingSymbol
|
|
22
|
+
};
|
|
23
|
+
}
|
|
4
24
|
export class ImportedSymbol {
|
|
5
25
|
constructor(target, local) {
|
|
6
26
|
this.target = target;
|
|
@@ -20,9 +40,13 @@ export class PythonModuleScope extends PythonLexicalScope {
|
|
|
20
40
|
get importedModules() {
|
|
21
41
|
return this.#importedModules;
|
|
22
42
|
}
|
|
23
|
-
addImport(targetSymbol, targetModule) {
|
|
43
|
+
addImport(targetSymbol, targetModule, options) {
|
|
24
44
|
const existing = this.importedSymbols.get(targetSymbol);
|
|
25
45
|
if (existing) {
|
|
46
|
+
// If existing is type-only but now used as value, upgrade it
|
|
47
|
+
if (!options?.type && existing.isTypeOnly) {
|
|
48
|
+
existing.markAsValue();
|
|
49
|
+
}
|
|
26
50
|
return existing;
|
|
27
51
|
}
|
|
28
52
|
if (!this.importedModules.has(targetModule)) {
|
|
@@ -32,7 +56,8 @@ export class PythonModuleScope extends PythonLexicalScope {
|
|
|
32
56
|
}
|
|
33
57
|
const localSymbol = createSymbol(PythonOutputSymbol, targetSymbol.name, this.symbols, {
|
|
34
58
|
binder: this.binder,
|
|
35
|
-
aliasTarget: targetSymbol
|
|
59
|
+
aliasTarget: targetSymbol,
|
|
60
|
+
typeOnly: options?.type
|
|
36
61
|
});
|
|
37
62
|
this.importedSymbols.set(targetSymbol, localSymbol);
|
|
38
63
|
this.importedModules.get(targetModule).symbols?.add({
|
|
@@ -41,6 +66,15 @@ export class PythonModuleScope extends PythonLexicalScope {
|
|
|
41
66
|
});
|
|
42
67
|
return localSymbol;
|
|
43
68
|
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Add TYPE_CHECKING import from the typing module.
|
|
72
|
+
* Returns the local symbol for use in the if block opener.
|
|
73
|
+
*/
|
|
74
|
+
addTypeImport() {
|
|
75
|
+
const typing = getTypingModuleInternal();
|
|
76
|
+
return this.addImport(typing.TYPE_CHECKING, typing.scope);
|
|
77
|
+
}
|
|
44
78
|
get debugInfo() {
|
|
45
79
|
return {
|
|
46
80
|
...super.debugInfo,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createSymbol","reactive","shallowReactive","PythonLexicalScope","PythonOutputSymbol","ImportedSymbol","constructor","target","local","from","ImportRecords","Map","
|
|
1
|
+
{"version":3,"names":["createSymbol","reactive","shallowReactive","PythonLexicalScope","PythonOutputSymbol","_typingModuleScope","_typeCheckingSymbol","getTypingModuleInternal","PythonModuleScope","undefined","symbols","scope","TYPE_CHECKING","ImportedSymbol","constructor","target","local","from","ImportRecords","Map","importedSymbols","importedModules","addImport","targetSymbol","targetModule","options","existing","get","type","isTypeOnly","markAsValue","has","set","Set","localSymbol","name","binder","aliasTarget","typeOnly","add","addTypeImport","typing","debugInfo","importedSymbolCount","size","importedModuleCount"],"sources":["../../../src/symbols/python-module-scope.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,YAAY,EAAEC,QAAQ,EAAEC,eAAe,QAAQ,gBAAgB;AACxE,SAASC,kBAAkB,QAAQ,2BAA2B;AAC9D,SAASC,kBAAkB,QAAQ,2BAA2B;;AAE9D;AACA,IAAIC,kBAAiD;AACrD,IAAIC,mBAAmD;;AAEvD;AACA;AACA;AACA;AACA;AACA,SAASC,uBAAuBA,CAAA,EAG9B;EACA,IAAI,CAACF,kBAAkB,EAAE;IACvBA,kBAAkB,GAAG,IAAIG,iBAAiB,CAAC,QAAQ,EAAEC,SAAS,CAAC;IAC/DH,mBAAmB,GAAG,IAAIF,kBAAkB,CAC1C,eAAe,EACfC,kBAAkB,CAACK,OAAO,EAC1B,CAAC,CACH,CAAC;EACH;EACA,OAAO;IAAEC,KAAK,EAAEN,kBAAkB;IAAEO,aAAa,EAAEN;EAAqB,CAAC;AAC3E;AAEA,OAAO,MAAMO,cAAc,CAAC;EAI1BC,WAAWA,CAACC,MAA0B,EAAEC,KAAyB,EAAE;IACjE,IAAI,CAACD,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACC,KAAK,GAAGA,KAAK;EACpB;EAEA,OAAOC,IAAIA,CAACF,MAA0B,EAAEC,KAAyB,EAAE;IACjE,OAAO,IAAIH,cAAc,CAACE,MAAM,EAAEC,KAAK,CAAC;EAC1C;AACF;AAMA,OAAO,MAAME,aAAa,SAASC,GAAG,CAAuC;AAU7E,OAAO,MAAMX,iBAAiB,SAASL,kBAAkB,CAAC;EACxD,CAACiB,eAAe,GACdlB,eAAe,CAAC,IAAIiB,GAAG,CAAC,CAAC,CAAC;EAC5B,IAAIC,eAAeA,CAAA,EAAG;IACpB,OAAO,IAAI,CAAC,CAACA,eAAe;EAC9B;EAEA,CAACC,eAAe,GAAkBpB,QAAQ,CAAC,IAAIkB,GAAG,CAAC,CAAC,CAAC;EACrD,IAAIE,eAAeA,CAAA,EAAG;IACpB,OAAO,IAAI,CAAC,CAACA,eAAe;EAC9B;EAEAC,SAASA,CACPC,YAAgC,EAChCC,YAA+B,EAC/BC,OAA0B,EAC1B;IACA,MAAMC,QAAQ,GAAG,IAAI,CAACN,eAAe,CAACO,GAAG,CAACJ,YAAY,CAAC;IACvD,IAAIG,QAAQ,EAAE;MACZ;MACA,IAAI,CAACD,OAAO,EAAEG,IAAI,IAAIF,QAAQ,CAACG,UAAU,EAAE;QACzCH,QAAQ,CAACI,WAAW,CAAC,CAAC;MACxB;MACA,OAAOJ,QAAQ;IACjB;IAEA,IAAI,CAAC,IAAI,CAACL,eAAe,CAACU,GAAG,CAACP,YAAY,CAAC,EAAE;MAC3C,IAAI,CAACH,eAAe,CAACW,GAAG,CAACR,YAAY,EAAE;QACrCd,OAAO,EAAE,IAAIuB,GAAG,CAAiB;MACnC,CAAC,CAAC;IACJ;IAEA,MAAMC,WAAW,GAAGlC,YAAY,CAC9BI,kBAAkB,EAClBmB,YAAY,CAACY,IAAI,EACjB,IAAI,CAACzB,OAAO,EACZ;MACE0B,MAAM,EAAE,IAAI,CAACA,MAAM;MACnBC,WAAW,EAAEd,YAAY;MACzBe,QAAQ,EAAEb,OAAO,EAAEG;IACrB,CACF,CAAC;IAED,IAAI,CAACR,eAAe,CAACY,GAAG,CAACT,YAAY,EAAEW,WAAW,CAAC;IACnD,IAAI,CAACb,eAAe,CAACM,GAAG,CAACH,YAAY,CAAC,CAAEd,OAAO,EAAE6B,GAAG,CAAC;MACnDvB,KAAK,EAAEkB,WAAW;MAClBnB,MAAM,EAAEQ;IACV,CAAC,CAAC;IAEF,OAAOW,WAAW;EACpB;;EAEA;AACF;AACA;AACA;EACEM,aAAaA,CAAA,EAAuB;IAClC,MAAMC,MAAM,GAAGlC,uBAAuB,CAAC,CAAC;IACxC,OAAO,IAAI,CAACe,SAAS,CAACmB,MAAM,CAAC7B,aAAa,EAAE6B,MAAM,CAAC9B,KAAK,CAAC;EAC3D;EAEA,IAAa+B,SAASA,CAAA,EAA4B;IAChD,OAAO;MACL,GAAG,KAAK,CAACA,SAAS;MAClBC,mBAAmB,EAAE,IAAI,CAAC,CAACvB,eAAe,CAACwB,IAAI;MAC/CC,mBAAmB,EAAE,IAAI,CAAC,CAACxB,eAAe,CAACuB;IAC7C,CAAC;EACH;AACF","ignoreList":[]}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { Namekey, OutputSpace, OutputSymbol, OutputSymbolOptions } from "@alloy-js/core";
|
|
2
2
|
export interface PythonOutputSymbolOptions extends OutputSymbolOptions {
|
|
3
3
|
module?: string;
|
|
4
|
+
/** Whether this symbol is only used in type annotation contexts */
|
|
5
|
+
typeOnly?: boolean;
|
|
4
6
|
}
|
|
5
7
|
export interface CreatePythonSymbolFunctionOptions extends PythonOutputSymbolOptions {
|
|
6
8
|
name: string;
|
|
@@ -13,6 +15,15 @@ export declare class PythonOutputSymbol extends OutputSymbol {
|
|
|
13
15
|
static readonly memberSpaces: readonly ["static", "instance"];
|
|
14
16
|
constructor(name: string | Namekey, spaces: OutputSpace[] | OutputSpace | undefined, options: PythonOutputSymbolOptions);
|
|
15
17
|
get module(): string | undefined;
|
|
18
|
+
/**
|
|
19
|
+
* Returns true if this symbol is only used in type annotation contexts.
|
|
20
|
+
* Such symbols can be imported inside a TYPE_CHECKING block.
|
|
21
|
+
*/
|
|
22
|
+
get isTypeOnly(): boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Mark this symbol as also being used as a value (not just a type).
|
|
25
|
+
*/
|
|
26
|
+
markAsValue(): void;
|
|
16
27
|
get staticMembers(): import("@alloy-js/core").OutputMemberSpace;
|
|
17
28
|
get instanceMembers(): import("@alloy-js/core").OutputMemberSpace;
|
|
18
29
|
get isStaticMemberSymbol(): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"python-output-symbol.d.ts","sourceRoot":"","sources":["../../../src/symbols/python-output-symbol.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"python-output-symbol.d.ts","sourceRoot":"","sources":["../../../src/symbols/python-output-symbol.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,OAAO,EACP,WAAW,EACX,YAAY,EACZ,mBAAmB,EAKpB,MAAM,gBAAgB,CAAC;AAExB,MAAM,WAAW,yBAA0B,SAAQ,mBAAmB;IACpE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mEAAmE;IACnE,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,iCACf,SAAQ,yBAAyB;IACjC,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,YAAY;;IAClD,MAAM,CAAC,QAAQ,CAAC,YAAY,kCAAmC;gBAG7D,IAAI,EAAE,MAAM,GAAG,OAAO,EACtB,MAAM,EAAE,WAAW,EAAE,GAAG,WAAW,GAAG,SAAS,EAC/C,OAAO,EAAE,yBAAyB;IAUpC,IAAI,MAAM,uBAET;IAID;;;OAGG;IACH,IAAI,UAAU,YAGb;IAED;;OAEG;IACH,WAAW;IASX,IAAI,aAAa,+CAEhB;IAED,IAAI,eAAe,+CAElB;IAED,IAAI,oBAAoB,YAEvB;IAED,IAAI,sBAAsB,YAEzB;IAED,IAAa,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAOhD;IAED,IAAI;CAcL"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { OutputSymbol,
|
|
1
|
+
import { createSymbol, OutputSymbol, track, TrackOpTypes, trigger, TriggerOpTypes } from "@alloy-js/core";
|
|
2
2
|
/**
|
|
3
3
|
* Represents an 'exported' symbol from a .py file. Class, enum, interface etc.
|
|
4
4
|
*/
|
|
@@ -7,6 +7,7 @@ export class PythonOutputSymbol extends OutputSymbol {
|
|
|
7
7
|
constructor(name, spaces, options) {
|
|
8
8
|
super(name, spaces, options);
|
|
9
9
|
this.#module = options.module ?? undefined;
|
|
10
|
+
this.#typeOnly = options.typeOnly ?? false;
|
|
10
11
|
}
|
|
11
12
|
|
|
12
13
|
// The module in which the symbol is defined
|
|
@@ -14,6 +15,28 @@ export class PythonOutputSymbol extends OutputSymbol {
|
|
|
14
15
|
get module() {
|
|
15
16
|
return this.#module;
|
|
16
17
|
}
|
|
18
|
+
#typeOnly;
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Returns true if this symbol is only used in type annotation contexts.
|
|
22
|
+
* Such symbols can be imported inside a TYPE_CHECKING block.
|
|
23
|
+
*/
|
|
24
|
+
get isTypeOnly() {
|
|
25
|
+
track(this, TrackOpTypes.GET, "typeOnly");
|
|
26
|
+
return this.#typeOnly;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Mark this symbol as also being used as a value (not just a type).
|
|
31
|
+
*/
|
|
32
|
+
markAsValue() {
|
|
33
|
+
if (!this.#typeOnly) {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
const oldValue = this.#typeOnly;
|
|
37
|
+
this.#typeOnly = false;
|
|
38
|
+
trigger(this, TriggerOpTypes.SET, "typeOnly", false, oldValue);
|
|
39
|
+
}
|
|
17
40
|
get staticMembers() {
|
|
18
41
|
return this.memberSpaceFor("static");
|
|
19
42
|
}
|
|
@@ -40,7 +63,8 @@ export class PythonOutputSymbol extends OutputSymbol {
|
|
|
40
63
|
binder,
|
|
41
64
|
aliasTarget: this.aliasTarget,
|
|
42
65
|
module: this.module,
|
|
43
|
-
metadata: this.metadata
|
|
66
|
+
metadata: this.metadata,
|
|
67
|
+
typeOnly: this.isTypeOnly
|
|
44
68
|
});
|
|
45
69
|
this.initializeCopy(copy);
|
|
46
70
|
return copy;
|