@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.
Files changed (253) hide show
  1. package/dist/dev/src/builtins/python.js +30 -0
  2. package/dist/dev/src/builtins/python.js.map +1 -0
  3. package/dist/dev/src/components/Atom.js +122 -0
  4. package/dist/dev/src/components/Atom.js.map +1 -0
  5. package/dist/dev/src/components/CallSignature.js +195 -0
  6. package/dist/dev/src/components/CallSignature.js.map +1 -0
  7. package/dist/dev/src/components/ClassDeclaration.js +112 -0
  8. package/dist/dev/src/components/ClassDeclaration.js.map +1 -0
  9. package/dist/dev/src/components/ClassInstantiation.js +40 -0
  10. package/dist/dev/src/components/ClassInstantiation.js.map +1 -0
  11. package/dist/dev/src/components/ClassMethodDeclaration.js +40 -0
  12. package/dist/dev/src/components/ClassMethodDeclaration.js.map +1 -0
  13. package/dist/dev/src/components/ConstructorDeclaration.js +39 -0
  14. package/dist/dev/src/components/ConstructorDeclaration.js.map +1 -0
  15. package/dist/dev/src/components/DataclassDeclaration.js +177 -0
  16. package/dist/dev/src/components/DataclassDeclaration.js.map +1 -0
  17. package/dist/dev/src/components/Declaration.js +31 -0
  18. package/dist/dev/src/components/Declaration.js.map +1 -0
  19. package/dist/dev/src/components/DunderMethodDeclaration.js +33 -0
  20. package/dist/dev/src/components/DunderMethodDeclaration.js.map +1 -0
  21. package/dist/dev/src/components/EnumDeclaration.js +259 -0
  22. package/dist/dev/src/components/EnumDeclaration.js.map +1 -0
  23. package/dist/dev/src/components/EnumMember.js +95 -0
  24. package/dist/dev/src/components/EnumMember.js.map +1 -0
  25. package/dist/dev/src/components/FunctionBase.js +130 -0
  26. package/dist/dev/src/components/FunctionBase.js.map +1 -0
  27. package/dist/dev/src/components/FunctionCallExpression.js +53 -0
  28. package/dist/dev/src/components/FunctionCallExpression.js.map +1 -0
  29. package/dist/dev/src/components/FunctionDeclaration.js +45 -0
  30. package/dist/dev/src/components/FunctionDeclaration.js.map +1 -0
  31. package/dist/dev/src/components/FutureStatement.js +31 -0
  32. package/dist/dev/src/components/FutureStatement.js.map +1 -0
  33. package/dist/dev/src/components/ImportStatement.js +167 -0
  34. package/dist/dev/src/components/ImportStatement.js.map +1 -0
  35. package/dist/dev/src/components/LexicalScope.js +26 -0
  36. package/dist/dev/src/components/LexicalScope.js.map +1 -0
  37. package/dist/dev/src/components/MemberExpression.js +290 -0
  38. package/dist/dev/src/components/MemberExpression.js.map +1 -0
  39. package/dist/dev/src/components/MemberScope.js +23 -0
  40. package/dist/dev/src/components/MemberScope.js.map +1 -0
  41. package/dist/dev/src/components/MethodBase.js +40 -0
  42. package/dist/dev/src/components/MethodBase.js.map +1 -0
  43. package/dist/dev/src/components/MethodDeclaration.js +38 -0
  44. package/dist/dev/src/components/MethodDeclaration.js.map +1 -0
  45. package/dist/dev/src/components/PropertyDeclaration.js +287 -0
  46. package/dist/dev/src/components/PropertyDeclaration.js.map +1 -0
  47. package/dist/dev/src/components/PyDoc.js +1478 -0
  48. package/dist/dev/src/components/PyDoc.js.map +1 -0
  49. package/dist/dev/src/components/PythonBlock.js +35 -0
  50. package/dist/dev/src/components/PythonBlock.js.map +1 -0
  51. package/dist/dev/src/components/Reference.js +23 -0
  52. package/dist/dev/src/components/Reference.js.map +1 -0
  53. package/dist/dev/src/components/SourceFile.js +385 -0
  54. package/dist/dev/src/components/SourceFile.js.map +1 -0
  55. package/dist/dev/src/components/StatementList.js +34 -0
  56. package/dist/dev/src/components/StatementList.js.map +1 -0
  57. package/dist/dev/src/components/StaticMethodDeclaration.js +40 -0
  58. package/dist/dev/src/components/StaticMethodDeclaration.js.map +1 -0
  59. package/dist/dev/src/components/TypeArguments.js +22 -0
  60. package/dist/dev/src/components/TypeArguments.js.map +1 -0
  61. package/dist/dev/src/components/TypeRefContext.js +33 -0
  62. package/dist/dev/src/components/TypeRefContext.js.map +1 -0
  63. package/dist/dev/src/components/TypeReference.js +67 -0
  64. package/dist/dev/src/components/TypeReference.js.map +1 -0
  65. package/dist/dev/src/components/UnionTypeExpression.js +57 -0
  66. package/dist/dev/src/components/UnionTypeExpression.js.map +1 -0
  67. package/dist/dev/src/components/VariableDeclaration.js +150 -0
  68. package/dist/dev/src/components/VariableDeclaration.js.map +1 -0
  69. package/dist/dev/src/components/index.js +32 -0
  70. package/dist/dev/src/components/index.js.map +1 -0
  71. package/dist/dev/src/context/index.js +2 -0
  72. package/dist/dev/src/context/index.js.map +1 -0
  73. package/dist/dev/src/context/type-ref-context.js +17 -0
  74. package/dist/dev/src/context/type-ref-context.js.map +1 -0
  75. package/dist/dev/src/create-module.js +64 -0
  76. package/dist/dev/src/create-module.js.map +1 -0
  77. package/dist/dev/src/index.js +8 -0
  78. package/dist/dev/src/index.js.map +1 -0
  79. package/dist/dev/src/name-conflict-resolver.js +8 -0
  80. package/dist/dev/src/name-conflict-resolver.js.map +1 -0
  81. package/dist/dev/src/name-policy.js +48 -0
  82. package/dist/dev/src/name-policy.js.map +1 -0
  83. package/dist/dev/src/parameter-descriptor.js +8 -0
  84. package/dist/dev/src/parameter-descriptor.js.map +1 -0
  85. package/dist/dev/src/symbol-creation.js +58 -0
  86. package/dist/dev/src/symbol-creation.js.map +1 -0
  87. package/dist/dev/src/symbols/factories.js +28 -0
  88. package/dist/dev/src/symbols/factories.js.map +1 -0
  89. package/dist/dev/src/symbols/index.js +8 -0
  90. package/dist/dev/src/symbols/index.js.map +1 -0
  91. package/dist/dev/src/symbols/python-lexical-scope.js +15 -0
  92. package/dist/dev/src/symbols/python-lexical-scope.js.map +1 -0
  93. package/dist/dev/src/symbols/python-member-scope.js +7 -0
  94. package/dist/dev/src/symbols/python-member-scope.js.map +1 -0
  95. package/dist/dev/src/symbols/python-module-scope.js +86 -0
  96. package/dist/dev/src/symbols/python-module-scope.js.map +1 -0
  97. package/dist/dev/src/symbols/python-output-symbol.js +73 -0
  98. package/dist/dev/src/symbols/python-output-symbol.js.map +1 -0
  99. package/dist/dev/src/symbols/reference.js +87 -0
  100. package/dist/dev/src/symbols/reference.js.map +1 -0
  101. package/dist/dev/src/symbols/scopes.js +13 -0
  102. package/dist/dev/src/symbols/scopes.js.map +1 -0
  103. package/dist/dev/src/utils.js +13 -0
  104. package/dist/dev/src/utils.js.map +1 -0
  105. package/dist/dev/test/callsignatures.test.js +482 -0
  106. package/dist/dev/test/callsignatures.test.js.map +1 -0
  107. package/dist/dev/test/class-method-declaration.test.js +85 -0
  108. package/dist/dev/test/class-method-declaration.test.js.map +1 -0
  109. package/dist/dev/test/classdeclarations.test.js +654 -0
  110. package/dist/dev/test/classdeclarations.test.js.map +1 -0
  111. package/dist/dev/test/classinstantiations.test.js +281 -0
  112. package/dist/dev/test/classinstantiations.test.js.map +1 -0
  113. package/dist/dev/test/constructordeclaration.test.js +86 -0
  114. package/dist/dev/test/constructordeclaration.test.js.map +1 -0
  115. package/dist/dev/test/dataclassdeclarations.test.js +1068 -0
  116. package/dist/dev/test/dataclassdeclarations.test.js.map +1 -0
  117. package/dist/dev/test/dundermethoddeclaration.test.js +93 -0
  118. package/dist/dev/test/dundermethoddeclaration.test.js.map +1 -0
  119. package/dist/dev/test/enums.test.js +263 -0
  120. package/dist/dev/test/enums.test.js.map +1 -0
  121. package/dist/dev/test/externals.test.js +307 -0
  122. package/dist/dev/test/externals.test.js.map +1 -0
  123. package/dist/dev/test/factories.test.js +122 -0
  124. package/dist/dev/test/factories.test.js.map +1 -0
  125. package/dist/dev/test/functioncallexpressions.test.js +257 -0
  126. package/dist/dev/test/functioncallexpressions.test.js.map +1 -0
  127. package/dist/dev/test/functiondeclaration.test.js +817 -0
  128. package/dist/dev/test/functiondeclaration.test.js.map +1 -0
  129. package/dist/dev/test/imports.test.js +372 -0
  130. package/dist/dev/test/imports.test.js.map +1 -0
  131. package/dist/dev/test/memberexpressions.test.js +1668 -0
  132. package/dist/dev/test/memberexpressions.test.js.map +1 -0
  133. package/dist/dev/test/methoddeclaration.test.js +344 -0
  134. package/dist/dev/test/methoddeclaration.test.js.map +1 -0
  135. package/dist/dev/test/namepolicies.test.js +154 -0
  136. package/dist/dev/test/namepolicies.test.js.map +1 -0
  137. package/dist/dev/test/propertydeclaration.test.js +354 -0
  138. package/dist/dev/test/propertydeclaration.test.js.map +1 -0
  139. package/dist/dev/test/pydocs.test.js +1675 -0
  140. package/dist/dev/test/pydocs.test.js.map +1 -0
  141. package/dist/dev/test/references.test.js +66 -0
  142. package/dist/dev/test/references.test.js.map +1 -0
  143. package/dist/dev/test/sourcefiles.test.js +1802 -0
  144. package/dist/dev/test/sourcefiles.test.js.map +1 -0
  145. package/dist/dev/test/staticmethoddeclaration.test.js +85 -0
  146. package/dist/dev/test/staticmethoddeclaration.test.js.map +1 -0
  147. package/dist/dev/test/type-checking-imports.test.js +617 -0
  148. package/dist/dev/test/type-checking-imports.test.js.map +1 -0
  149. package/dist/dev/test/typereference.test.js +79 -0
  150. package/dist/dev/test/typereference.test.js.map +1 -0
  151. package/dist/dev/test/uniontypeexpression.test.js +307 -0
  152. package/dist/dev/test/uniontypeexpression.test.js.map +1 -0
  153. package/dist/dev/test/utils.js +100 -0
  154. package/dist/dev/test/utils.js.map +1 -0
  155. package/dist/dev/test/values.test.js +182 -0
  156. package/dist/dev/test/values.test.js.map +1 -0
  157. package/dist/dev/test/variables.test.js +363 -0
  158. package/dist/dev/test/variables.test.js.map +1 -0
  159. package/dist/src/components/CallSignature.d.ts.map +1 -1
  160. package/dist/src/components/CallSignature.js +12 -3
  161. package/dist/src/components/CallSignature.js.map +1 -1
  162. package/dist/src/components/ImportStatement.d.ts +12 -0
  163. package/dist/src/components/ImportStatement.d.ts.map +1 -1
  164. package/dist/src/components/ImportStatement.js +45 -3
  165. package/dist/src/components/ImportStatement.js.map +1 -1
  166. package/dist/src/components/Reference.d.ts.map +1 -1
  167. package/dist/src/components/Reference.js +5 -1
  168. package/dist/src/components/Reference.js.map +1 -1
  169. package/dist/src/components/SourceFile.d.ts +1 -1
  170. package/dist/src/components/SourceFile.d.ts.map +1 -1
  171. package/dist/src/components/SourceFile.js +46 -7
  172. package/dist/src/components/SourceFile.js.map +1 -1
  173. package/dist/src/components/TypeRefContext.d.ts +26 -0
  174. package/dist/src/components/TypeRefContext.d.ts.map +1 -0
  175. package/dist/src/components/TypeRefContext.js +29 -0
  176. package/dist/src/components/TypeRefContext.js.map +1 -0
  177. package/dist/src/components/TypeReference.d.ts +5 -0
  178. package/dist/src/components/TypeReference.d.ts.map +1 -1
  179. package/dist/src/components/TypeReference.js +19 -9
  180. package/dist/src/components/TypeReference.js.map +1 -1
  181. package/dist/src/components/VariableDeclaration.d.ts.map +1 -1
  182. package/dist/src/components/VariableDeclaration.js +7 -2
  183. package/dist/src/components/VariableDeclaration.js.map +1 -1
  184. package/dist/src/components/index.d.ts +1 -1
  185. package/dist/src/components/index.d.ts.map +1 -1
  186. package/dist/src/components/index.js +1 -1
  187. package/dist/src/components/index.js.map +1 -1
  188. package/dist/src/context/index.d.ts +2 -0
  189. package/dist/src/context/index.d.ts.map +1 -0
  190. package/dist/src/context/index.js +2 -0
  191. package/dist/src/context/index.js.map +1 -0
  192. package/dist/src/context/type-ref-context.d.ts +13 -0
  193. package/dist/src/context/type-ref-context.d.ts.map +1 -0
  194. package/dist/src/context/type-ref-context.js +17 -0
  195. package/dist/src/context/type-ref-context.js.map +1 -0
  196. package/dist/src/symbols/python-module-scope.d.ts +13 -1
  197. package/dist/src/symbols/python-module-scope.d.ts.map +1 -1
  198. package/dist/src/symbols/python-module-scope.js +36 -2
  199. package/dist/src/symbols/python-module-scope.js.map +1 -1
  200. package/dist/src/symbols/python-output-symbol.d.ts +11 -0
  201. package/dist/src/symbols/python-output-symbol.d.ts.map +1 -1
  202. package/dist/src/symbols/python-output-symbol.js +26 -2
  203. package/dist/src/symbols/python-output-symbol.js.map +1 -1
  204. package/dist/src/symbols/reference.d.ts +8 -1
  205. package/dist/src/symbols/reference.d.ts.map +1 -1
  206. package/dist/src/symbols/reference.js +4 -2
  207. package/dist/src/symbols/reference.js.map +1 -1
  208. package/dist/test/dataclassdeclarations.test.js +5 -2
  209. package/dist/test/dataclassdeclarations.test.js.map +1 -1
  210. package/dist/test/externals.test.js +8 -2
  211. package/dist/test/externals.test.js.map +1 -1
  212. package/dist/test/functiondeclaration.test.js +6 -3
  213. package/dist/test/functiondeclaration.test.js.map +1 -1
  214. package/dist/test/imports.test.js +3 -3
  215. package/dist/test/imports.test.js.map +1 -1
  216. package/dist/test/references.test.js +1 -1
  217. package/dist/test/references.test.js.map +1 -1
  218. package/dist/test/sourcefiles.test.js +26 -26
  219. package/dist/test/sourcefiles.test.js.map +1 -1
  220. package/dist/test/type-checking-imports.test.d.ts +2 -0
  221. package/dist/test/type-checking-imports.test.d.ts.map +1 -0
  222. package/dist/test/type-checking-imports.test.js +437 -0
  223. package/dist/test/type-checking-imports.test.js.map +1 -0
  224. package/dist/test/uniontypeexpression.test.js +4 -1
  225. package/dist/test/uniontypeexpression.test.js.map +1 -1
  226. package/dist/test/variables.test.js +4 -1
  227. package/dist/test/variables.test.js.map +1 -1
  228. package/dist/tsconfig.tsbuildinfo +1 -1
  229. package/package.json +6 -4
  230. package/src/components/CallSignature.tsx +6 -2
  231. package/src/components/ImportStatement.tsx +51 -4
  232. package/src/components/Reference.tsx +3 -1
  233. package/src/components/SourceFile.tsx +44 -8
  234. package/src/components/TypeRefContext.tsx +36 -0
  235. package/src/components/TypeReference.tsx +15 -7
  236. package/src/components/VariableDeclaration.tsx +5 -1
  237. package/src/components/index.ts +1 -1
  238. package/src/context/index.ts +1 -0
  239. package/src/context/type-ref-context.tsx +16 -0
  240. package/src/symbols/python-module-scope.ts +55 -2
  241. package/src/symbols/python-output-symbol.ts +32 -1
  242. package/src/symbols/reference.tsx +10 -0
  243. package/temp/api.json +441 -336
  244. package/test/dataclassdeclarations.test.tsx +8 -2
  245. package/test/externals.test.tsx +8 -2
  246. package/test/functiondeclaration.test.tsx +6 -3
  247. package/test/imports.test.tsx +6 -6
  248. package/test/references.test.tsx +1 -1
  249. package/test/sourcefiles.test.tsx +13 -13
  250. package/test/type-checking-imports.test.tsx +363 -0
  251. package/test/uniontypeexpression.test.tsx +4 -1
  252. package/test/variables.test.tsx +4 -1
  253. 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,2 @@
1
+ export * from "./type-ref-context.js";
2
+ //# sourceMappingURL=index.js.map
@@ -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,8 @@
1
+ /**
2
+ * Information for a Python function parameter.
3
+ */
4
+
5
+ export function isParameterDescriptor(param) {
6
+ return typeof param === "object" && param !== null && "name" in param;
7
+ }
8
+ //# sourceMappingURL=parameter-descriptor.js.map
@@ -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":[]}