@alloy-js/python 0.4.0-dev.3 → 0.4.0-dev.6

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 (355) 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/name-conflict-resolver.d.ts +2 -2
  197. package/dist/src/name-conflict-resolver.d.ts.map +1 -1
  198. package/dist/src/name-conflict-resolver.js +2 -2
  199. package/dist/src/name-conflict-resolver.js.map +1 -1
  200. package/dist/src/symbols/python-module-scope.d.ts +13 -1
  201. package/dist/src/symbols/python-module-scope.d.ts.map +1 -1
  202. package/dist/src/symbols/python-module-scope.js +36 -2
  203. package/dist/src/symbols/python-module-scope.js.map +1 -1
  204. package/dist/src/symbols/python-output-symbol.d.ts +11 -0
  205. package/dist/src/symbols/python-output-symbol.d.ts.map +1 -1
  206. package/dist/src/symbols/python-output-symbol.js +26 -2
  207. package/dist/src/symbols/python-output-symbol.js.map +1 -1
  208. package/dist/src/symbols/reference.d.ts +8 -1
  209. package/dist/src/symbols/reference.d.ts.map +1 -1
  210. package/dist/src/symbols/reference.js +4 -2
  211. package/dist/src/symbols/reference.js.map +1 -1
  212. package/dist/test/dataclassdeclarations.test.js +5 -2
  213. package/dist/test/dataclassdeclarations.test.js.map +1 -1
  214. package/dist/test/externals.test.js +8 -2
  215. package/dist/test/externals.test.js.map +1 -1
  216. package/dist/test/functiondeclaration.test.js +6 -3
  217. package/dist/test/functiondeclaration.test.js.map +1 -1
  218. package/dist/test/imports.test.js +3 -3
  219. package/dist/test/imports.test.js.map +1 -1
  220. package/dist/test/references.test.js +1 -1
  221. package/dist/test/references.test.js.map +1 -1
  222. package/dist/test/sourcefiles.test.js +26 -26
  223. package/dist/test/sourcefiles.test.js.map +1 -1
  224. package/dist/test/type-checking-imports.test.d.ts +2 -0
  225. package/dist/test/type-checking-imports.test.d.ts.map +1 -0
  226. package/dist/test/type-checking-imports.test.js +437 -0
  227. package/dist/test/type-checking-imports.test.js.map +1 -0
  228. package/dist/test/uniontypeexpression.test.js +4 -1
  229. package/dist/test/uniontypeexpression.test.js.map +1 -1
  230. package/dist/test/variables.test.js +4 -1
  231. package/dist/test/variables.test.js.map +1 -1
  232. package/dist/tsconfig.tsbuildinfo +1 -1
  233. package/docs/api/components/AttributeDoc.md +36 -0
  234. package/docs/api/components/CallSignature.md +62 -0
  235. package/docs/api/components/CallSignatureParameters.md +49 -0
  236. package/docs/api/components/ClassDeclaration.md +67 -0
  237. package/docs/api/components/ClassDoc.md +55 -0
  238. package/docs/api/components/ClassEnumDeclaration.md +111 -0
  239. package/docs/api/components/ClassInstantiation.md +44 -0
  240. package/docs/api/components/ClassMethodDeclaration.md +31 -0
  241. package/docs/api/components/ConstructorDeclaration.md +27 -0
  242. package/docs/api/components/DataclassDeclaration.md +55 -0
  243. package/docs/api/components/Declaration.md +41 -0
  244. package/docs/api/components/DunderMethodDeclaration.md +31 -0
  245. package/docs/api/components/EnumMember.md +61 -0
  246. package/docs/api/components/ExceptionDoc.md +55 -0
  247. package/docs/api/components/FunctionCallExpression.md +43 -0
  248. package/docs/api/components/FunctionDeclaration.md +50 -0
  249. package/docs/api/components/FunctionDoc.md +61 -0
  250. package/docs/api/components/FunctionalEnumDeclaration.md +79 -0
  251. package/docs/api/components/FutureStatement.md +51 -0
  252. package/docs/api/components/GeneratorDoc.md +58 -0
  253. package/docs/api/components/InlineDoc.md +29 -0
  254. package/docs/api/components/LexicalScope.md +65 -0
  255. package/docs/api/components/MemberExpression.md +53 -0
  256. package/docs/api/components/MemberScope.md +28 -0
  257. package/docs/api/components/MethodDeclaration.md +49 -0
  258. package/docs/api/components/MethodDoc.md +61 -0
  259. package/docs/api/components/ModuleDoc.md +52 -0
  260. package/docs/api/components/PropertyDeclaration.md +46 -0
  261. package/docs/api/components/PropertyDoc.md +52 -0
  262. package/docs/api/components/PyDoc.md +29 -0
  263. package/docs/api/components/PyDocExample.md +29 -0
  264. package/docs/api/components/PythonBlock.md +47 -0
  265. package/docs/api/components/Reference.md +31 -0
  266. package/docs/api/components/SimpleCommentBlock.md +27 -0
  267. package/docs/api/components/SimpleInlineComment.md +27 -0
  268. package/docs/api/components/SourceFile.md +83 -0
  269. package/docs/api/components/StatementList.md +47 -0
  270. package/docs/api/components/StaticMethodDeclaration.md +31 -0
  271. package/docs/api/components/TypeArguments.md +27 -0
  272. package/docs/api/components/TypeRefContext.md +41 -0
  273. package/docs/api/components/TypeReference.md +37 -0
  274. package/docs/api/components/UnionTypeExpression.md +27 -0
  275. package/docs/api/components/VariableDeclaration.md +87 -0
  276. package/docs/api/components/index.md +46 -0
  277. package/docs/api/components/useSourceFile.md +19 -0
  278. package/docs/api/contexts/PythonSourceFile-context.md +18 -0
  279. package/docs/api/contexts/index.md +3 -0
  280. package/docs/api/functions/createFunctionSymbol.md +23 -0
  281. package/docs/api/functions/createMethodSymbol.md +23 -0
  282. package/docs/api/functions/createModule.md +18 -0
  283. package/docs/api/functions/createPythonNamePolicy.md +17 -0
  284. package/docs/api/functions/getCallSignatureProps.md +21 -0
  285. package/docs/api/functions/index.md +13 -0
  286. package/docs/api/functions/isParameterDescriptor.md +18 -0
  287. package/docs/api/functions/isTypeRefContext.md +17 -0
  288. package/docs/api/functions/ref.md +25 -0
  289. package/docs/api/functions/usePythonLexicalScope.md +17 -0
  290. package/docs/api/functions/usePythonNamePolicy.md +17 -0
  291. package/docs/api/functions/usePythonScope.md +17 -0
  292. package/docs/api/index.md +7 -0
  293. package/docs/api/types/AddImportOptions.md +7 -0
  294. package/docs/api/types/BaseDeclarationProps.md +10 -0
  295. package/docs/api/types/CommonFunctionProps.md +15 -0
  296. package/docs/api/types/CreateModuleProps.md +8 -0
  297. package/docs/api/types/CreatePythonSymbolFunctionOptions.md +9 -0
  298. package/docs/api/types/DataclassDecoratorKey.md +5 -0
  299. package/docs/api/types/DataclassDecoratorKwargs.md +5 -0
  300. package/docs/api/types/EnumPropsBase.md +11 -0
  301. package/docs/api/types/GoogleStyleDocAttributeProps.md +9 -0
  302. package/docs/api/types/ImportRecordProps.md +7 -0
  303. package/docs/api/types/ImportRecords.md +8 -0
  304. package/docs/api/types/ImportedSymbol.md +10 -0
  305. package/docs/api/types/LexicalScopeProps.md +5 -0
  306. package/docs/api/types/MemberExpressionPartProps.md +13 -0
  307. package/docs/api/types/ModuleDescriptor.md +7 -0
  308. package/docs/api/types/ModuleRefkeys.md +7 -0
  309. package/docs/api/types/NamedMap.md +7 -0
  310. package/docs/api/types/ParameterDescriptor.md +13 -0
  311. package/docs/api/types/ParameterMarker.md +5 -0
  312. package/docs/api/types/PropertyMethodDeclarationProps.md +9 -0
  313. package/docs/api/types/PythonElements.md +5 -0
  314. package/docs/api/types/PythonLexicalScope.md +11 -0
  315. package/docs/api/types/PythonMemberScope.md +9 -0
  316. package/docs/api/types/PythonModuleScope.md +13 -0
  317. package/docs/api/types/PythonOutputScope.md +5 -0
  318. package/docs/api/types/PythonOutputSymbol.md +21 -0
  319. package/docs/api/types/PythonOutputSymbolOptions.md +10 -0
  320. package/docs/api/types/RefOptions.md +7 -0
  321. package/docs/api/types/SubscriptionProps.md +9 -0
  322. package/docs/api/types/index.md +31 -0
  323. package/docs/api/variables/abcModule.md +7 -0
  324. package/docs/api/variables/dataclassDecoratorKeySet.md +5 -0
  325. package/docs/api/variables/dataclassDecoratorKeys.md +7 -0
  326. package/docs/api/variables/dataclassesModule.md +7 -0
  327. package/docs/api/variables/enumModule.md +7 -0
  328. package/docs/api/variables/index.md +8 -0
  329. package/docs/api/variables/requestsModule.md +8 -0
  330. package/package.json +7 -5
  331. package/src/components/CallSignature.tsx +6 -2
  332. package/src/components/ImportStatement.tsx +51 -4
  333. package/src/components/Reference.tsx +3 -1
  334. package/src/components/SourceFile.tsx +44 -8
  335. package/src/components/TypeRefContext.tsx +36 -0
  336. package/src/components/TypeReference.tsx +15 -7
  337. package/src/components/VariableDeclaration.tsx +5 -1
  338. package/src/components/index.ts +1 -1
  339. package/src/context/index.ts +1 -0
  340. package/src/context/type-ref-context.tsx +16 -0
  341. package/src/name-conflict-resolver.ts +4 -10
  342. package/src/symbols/python-module-scope.ts +55 -2
  343. package/src/symbols/python-output-symbol.ts +32 -1
  344. package/src/symbols/reference.tsx +10 -0
  345. package/temp/api.json +441 -336
  346. package/test/dataclassdeclarations.test.tsx +8 -2
  347. package/test/externals.test.tsx +8 -2
  348. package/test/functiondeclaration.test.tsx +6 -3
  349. package/test/imports.test.tsx +6 -6
  350. package/test/references.test.tsx +1 -1
  351. package/test/sourcefiles.test.tsx +13 -13
  352. package/test/type-checking-imports.test.tsx +363 -0
  353. package/test/uniontypeexpression.test.tsx +4 -1
  354. package/test/variables.test.tsx +4 -1
  355. package/vitest.config.ts +8 -0
@@ -0,0 +1,654 @@
1
+ import { createComponent as _$createComponent, memo as _$memo } from "@alloy-js/core/jsx-runtime";
2
+ import { memberRefkey, namekey, refkey } from "@alloy-js/core";
3
+ import { d } from "@alloy-js/core/testing";
4
+ import { describe, expect, it } from "vitest";
5
+ import * as py from "../src/index.js";
6
+ import { assertFileContents, toSourceText, toSourceTextMultiple } from "./utils.js";
7
+ describe("Python Class", () => {
8
+ it("renders a class with no body as 'pass'", () => {
9
+ const result = toSourceText([_$createComponent(py.ClassDeclaration, {
10
+ name: "Foo"
11
+ }, {
12
+ fileName: import.meta.url,
13
+ lineNumber: 13,
14
+ columnNumber: 34
15
+ })]);
16
+ expect(result).toRenderTo(d`
17
+ class Foo:
18
+ pass
19
+
20
+
21
+ `);
22
+ });
23
+ it("takes a namekey", () => {
24
+ const result = toSourceText([_$createComponent(py.ClassDeclaration, {
25
+ get name() {
26
+ return namekey("Foo");
27
+ }
28
+ }, {
29
+ fileName: import.meta.url,
30
+ lineNumber: 24,
31
+ columnNumber: 7
32
+ })]);
33
+ expect(result).toRenderTo(d`
34
+ class Foo:
35
+ pass
36
+
37
+
38
+ `);
39
+ });
40
+ it("renders a class with a body", () => {
41
+ const result = toSourceText([_$createComponent(py.ClassDeclaration, {
42
+ name: "Bar",
43
+ children: "print('hi')"
44
+ }, {
45
+ fileName: import.meta.url,
46
+ lineNumber: 36,
47
+ columnNumber: 7
48
+ })]);
49
+ expect(result).toRenderTo(d`
50
+ class Bar:
51
+ print('hi')
52
+
53
+
54
+ `);
55
+ });
56
+ it("renders a class with base classes", () => {
57
+ const result = toSourceText([_$createComponent(py.StatementList, {
58
+ get children() {
59
+ return [_$createComponent(py.ClassDeclaration, {
60
+ name: "Base1",
61
+ get refkey() {
62
+ return refkey("Base1");
63
+ }
64
+ }, {
65
+ fileName: import.meta.url,
66
+ lineNumber: 49,
67
+ columnNumber: 9
68
+ }), _$createComponent(py.ClassDeclaration, {
69
+ name: "Base2",
70
+ get refkey() {
71
+ return refkey("Base2");
72
+ }
73
+ }, {
74
+ fileName: import.meta.url,
75
+ lineNumber: 50,
76
+ columnNumber: 9
77
+ }), _$createComponent(py.ClassDeclaration, {
78
+ name: "Baz",
79
+ get bases() {
80
+ return [refkey("Base1"), refkey("Base2")];
81
+ }
82
+ }, {
83
+ fileName: import.meta.url,
84
+ lineNumber: 51,
85
+ columnNumber: 9
86
+ })];
87
+ }
88
+ }, {
89
+ fileName: import.meta.url,
90
+ lineNumber: 48,
91
+ columnNumber: 7
92
+ })]);
93
+ const expected = d`
94
+ class Base1:
95
+ pass
96
+
97
+ class Base2:
98
+ pass
99
+
100
+ class Baz(Base1, Base2):
101
+ pass
102
+
103
+
104
+ `;
105
+ expect(result).toRenderTo(expected);
106
+ });
107
+ it("renders a class with base classes and body", () => {
108
+ const result = toSourceText([_$createComponent(py.ClassDeclaration, {
109
+ name: "Qux",
110
+ bases: ["Base"],
111
+ children: "print('hello')"
112
+ }, {
113
+ fileName: import.meta.url,
114
+ lineNumber: 74,
115
+ columnNumber: 7
116
+ })]);
117
+ expect(result).toRenderTo(d`
118
+ class Qux(Base):
119
+ print('hello')
120
+
121
+
122
+ `);
123
+ });
124
+ it("renders classes across modules with inheritance", () => {
125
+ const result = toSourceTextMultiple([_$createComponent(py.SourceFile, {
126
+ path: "mod1.py",
127
+ get children() {
128
+ return _$createComponent(py.ClassDeclaration, {
129
+ name: "A",
130
+ get refkey() {
131
+ return refkey("A");
132
+ }
133
+ }, {
134
+ fileName: import.meta.url,
135
+ lineNumber: 89,
136
+ columnNumber: 9
137
+ });
138
+ }
139
+ }, {
140
+ fileName: import.meta.url,
141
+ lineNumber: 88,
142
+ columnNumber: 7
143
+ }), _$createComponent(py.SourceFile, {
144
+ path: "folder/mod2.py",
145
+ get children() {
146
+ return _$createComponent(py.ClassDeclaration, {
147
+ name: "B",
148
+ get refkey() {
149
+ return refkey("B");
150
+ },
151
+ get bases() {
152
+ return [refkey("A")];
153
+ }
154
+ }, {
155
+ fileName: import.meta.url,
156
+ lineNumber: 92,
157
+ columnNumber: 9
158
+ });
159
+ }
160
+ }, {
161
+ fileName: import.meta.url,
162
+ lineNumber: 91,
163
+ columnNumber: 7
164
+ }), _$createComponent(py.SourceFile, {
165
+ path: "mod3.py",
166
+ get children() {
167
+ return _$createComponent(py.ClassDeclaration, {
168
+ name: "C",
169
+ get bases() {
170
+ return [refkey("B")];
171
+ }
172
+ }, {
173
+ fileName: import.meta.url,
174
+ lineNumber: 99,
175
+ columnNumber: 9
176
+ });
177
+ }
178
+ }, {
179
+ fileName: import.meta.url,
180
+ lineNumber: 98,
181
+ columnNumber: 7
182
+ })]);
183
+ const mod1Expected = d`
184
+ class A:
185
+ pass
186
+
187
+
188
+ `;
189
+ const mod2Expected = d`
190
+ from mod1 import A
191
+
192
+
193
+ class B(A):
194
+ pass
195
+
196
+
197
+ `;
198
+ const mod3Expected = d`
199
+ from folder.mod2 import B
200
+
201
+
202
+ class C(B):
203
+ pass
204
+
205
+
206
+ `;
207
+ assertFileContents(result, {
208
+ "mod1.py": mod1Expected
209
+ });
210
+ assertFileContents(result, {
211
+ "folder/mod2.py": mod2Expected
212
+ });
213
+ assertFileContents(result, {
214
+ "mod3.py": mod3Expected
215
+ });
216
+ });
217
+ it("renders a class with class variables like foo: str, and also bar: A where A is another class", () => {
218
+ const result = toSourceText([_$createComponent(py.StatementList, {
219
+ get children() {
220
+ return [_$createComponent(py.ClassDeclaration, {
221
+ name: "A",
222
+ get refkey() {
223
+ return refkey("A");
224
+ }
225
+ }, {
226
+ fileName: import.meta.url,
227
+ lineNumber: 134,
228
+ columnNumber: 9
229
+ }), _$createComponent(py.ClassDeclaration, {
230
+ name: "B",
231
+ get children() {
232
+ return _$createComponent(py.StatementList, {
233
+ get children() {
234
+ return [_$createComponent(py.VariableDeclaration, {
235
+ name: "bar",
236
+ get type() {
237
+ return refkey("A");
238
+ },
239
+ omitNone: true
240
+ }, {
241
+ fileName: import.meta.url,
242
+ lineNumber: 137,
243
+ columnNumber: 13
244
+ }), _$createComponent(py.VariableDeclaration, {
245
+ name: "foo",
246
+ type: "str",
247
+ omitNone: true
248
+ }, {
249
+ fileName: import.meta.url,
250
+ lineNumber: 138,
251
+ columnNumber: 13
252
+ })];
253
+ }
254
+ }, {
255
+ fileName: import.meta.url,
256
+ lineNumber: 136,
257
+ columnNumber: 11
258
+ });
259
+ }
260
+ }, {
261
+ fileName: import.meta.url,
262
+ lineNumber: 135,
263
+ columnNumber: 9
264
+ })];
265
+ }
266
+ }, {
267
+ fileName: import.meta.url,
268
+ lineNumber: 133,
269
+ columnNumber: 7
270
+ })]);
271
+ const expected = d`
272
+ class A:
273
+ pass
274
+
275
+ class B:
276
+ bar: A
277
+ foo: str
278
+
279
+
280
+ `;
281
+ expect(result).toRenderTo(expected);
282
+ });
283
+ it("renders a class with class variables like foo: str, and another identical class", () => {
284
+ const fooKey = refkey();
285
+ const barKey = refkey();
286
+ const result = toSourceText([_$createComponent(py.StatementList, {
287
+ get children() {
288
+ return [_$createComponent(py.ClassDeclaration, {
289
+ name: "A",
290
+ get children() {
291
+ return _$createComponent(py.StatementList, {
292
+ get children() {
293
+ return _$createComponent(py.VariableDeclaration, {
294
+ name: "foo",
295
+ type: "str",
296
+ refkey: fooKey,
297
+ omitNone: true
298
+ }, {
299
+ fileName: import.meta.url,
300
+ lineNumber: 164,
301
+ columnNumber: 13
302
+ });
303
+ }
304
+ }, {
305
+ fileName: import.meta.url,
306
+ lineNumber: 163,
307
+ columnNumber: 11
308
+ });
309
+ }
310
+ }, {
311
+ fileName: import.meta.url,
312
+ lineNumber: 162,
313
+ columnNumber: 9
314
+ }), _$createComponent(py.ClassDeclaration, {
315
+ name: "B",
316
+ get children() {
317
+ return _$createComponent(py.StatementList, {
318
+ get children() {
319
+ return _$createComponent(py.VariableDeclaration, {
320
+ name: "foo",
321
+ type: "str",
322
+ refkey: barKey,
323
+ omitNone: true
324
+ }, {
325
+ fileName: import.meta.url,
326
+ lineNumber: 174,
327
+ columnNumber: 13
328
+ });
329
+ }
330
+ }, {
331
+ fileName: import.meta.url,
332
+ lineNumber: 173,
333
+ columnNumber: 11
334
+ });
335
+ }
336
+ }, {
337
+ fileName: import.meta.url,
338
+ lineNumber: 172,
339
+ columnNumber: 9
340
+ }), fooKey, barKey];
341
+ }
342
+ }, {
343
+ fileName: import.meta.url,
344
+ lineNumber: 161,
345
+ columnNumber: 7
346
+ })]);
347
+ const expected = d`
348
+ class A:
349
+ foo: str
350
+
351
+ class B:
352
+ foo: str
353
+
354
+ A.foo
355
+ B.foo
356
+ `;
357
+ expect(result).toRenderTo(expected);
358
+ });
359
+ });
360
+ describe("Python Class - VariableDeclaration", () => {
361
+ it("renders a class with class fields", () => {
362
+ const result = toSourceText([_$createComponent(py.StatementList, {
363
+ get children() {
364
+ return [_$createComponent(py.ClassDeclaration, {
365
+ get refkey() {
366
+ return refkey("Base");
367
+ },
368
+ name: "Base"
369
+ }, {
370
+ fileName: import.meta.url,
371
+ lineNumber: 204,
372
+ columnNumber: 9
373
+ }), _$createComponent(py.ClassDeclaration, {
374
+ get refkey() {
375
+ return refkey("A");
376
+ },
377
+ name: "A",
378
+ get children() {
379
+ return _$createComponent(py.StatementList, {
380
+ get children() {
381
+ return [_$createComponent(py.VariableDeclaration, {
382
+ instanceVariable: true,
383
+ name: "just_name"
384
+ }, {
385
+ fileName: import.meta.url,
386
+ lineNumber: 210,
387
+ columnNumber: 13
388
+ }), _$createComponent(py.VariableDeclaration, {
389
+ name: "name_and_type",
390
+ type: "number",
391
+ instanceVariable: true
392
+ }, {
393
+ fileName: import.meta.url,
394
+ lineNumber: 211,
395
+ columnNumber: 13
396
+ }), _$createComponent(py.VariableDeclaration, {
397
+ instanceVariable: true,
398
+ name: "name_type_and_value",
399
+ type: "number",
400
+ initializer: 12
401
+ }, {
402
+ fileName: import.meta.url,
403
+ lineNumber: 216,
404
+ columnNumber: 13
405
+ }), _$createComponent(py.VariableDeclaration, {
406
+ instanceVariable: true,
407
+ name: "class_based",
408
+ get type() {
409
+ return refkey("Base");
410
+ }
411
+ }, {
412
+ fileName: import.meta.url,
413
+ lineNumber: 222,
414
+ columnNumber: 13
415
+ })];
416
+ }
417
+ }, {
418
+ fileName: import.meta.url,
419
+ lineNumber: 209,
420
+ columnNumber: 11
421
+ });
422
+ }
423
+ }, {
424
+ fileName: import.meta.url,
425
+ lineNumber: 208,
426
+ columnNumber: 9
427
+ })];
428
+ }
429
+ }, {
430
+ fileName: import.meta.url,
431
+ lineNumber: 203,
432
+ columnNumber: 7
433
+ })]);
434
+ const expected = d`
435
+ class Base:
436
+ pass
437
+
438
+ class A:
439
+ just_name = None
440
+ name_and_type: number = None
441
+ name_type_and_value: number = 12
442
+ class_based: Base = None
443
+
444
+
445
+ `;
446
+ expect(result).toRenderTo(expected);
447
+ });
448
+ it("correctly access members of its type", () => {
449
+ const classRk = refkey();
450
+ const classMemberRk = refkey();
451
+ const classMethodRk = refkey();
452
+ const v1Rk = refkey();
453
+ const res = toSourceTextMultiple([_$createComponent(py.SourceFile, {
454
+ path: "inst.py",
455
+ get children() {
456
+ return _$createComponent(py.StatementList, {
457
+ get children() {
458
+ return [_$createComponent(py.VariableDeclaration, {
459
+ name: "one",
460
+ refkey: v1Rk,
461
+ type: classRk,
462
+ get initializer() {
463
+ return _$createComponent(py.ClassInstantiation, {
464
+ target: classRk
465
+ }, {
466
+ fileName: import.meta.url,
467
+ lineNumber: 259,
468
+ columnNumber: 26
469
+ });
470
+ }
471
+ }, {
472
+ fileName: import.meta.url,
473
+ lineNumber: 255,
474
+ columnNumber: 11
475
+ }), [_$memo(() => memberRefkey(v1Rk, classMemberRk), false, "memberRefkey(\u2026)")], [_$memo(() => memberRefkey(v1Rk, classMethodRk), false, "memberRefkey(\u2026)"), "()"]];
476
+ }
477
+ }, {
478
+ fileName: import.meta.url,
479
+ lineNumber: 254,
480
+ columnNumber: 9
481
+ });
482
+ }
483
+ }, {
484
+ fileName: import.meta.url,
485
+ lineNumber: 253,
486
+ columnNumber: 7
487
+ }), _$createComponent(py.SourceFile, {
488
+ path: "decl.py",
489
+ get children() {
490
+ return _$createComponent(py.ClassDeclaration, {
491
+ name: "Bar",
492
+ refkey: classRk,
493
+ get children() {
494
+ return _$createComponent(py.StatementList, {
495
+ get children() {
496
+ return [_$createComponent(py.VariableDeclaration, {
497
+ name: "instanceProp",
498
+ refkey: classMemberRk,
499
+ initializer: 42,
500
+ instanceVariable: true
501
+ }, {
502
+ fileName: import.meta.url,
503
+ lineNumber: 268,
504
+ columnNumber: 13
505
+ }), _$createComponent(py.MethodDeclaration, {
506
+ name: "instanceMethod",
507
+ refkey: classMethodRk,
508
+ returnType: "int"
509
+ }, {
510
+ fileName: import.meta.url,
511
+ lineNumber: 274,
512
+ columnNumber: 13
513
+ })];
514
+ }
515
+ }, {
516
+ fileName: import.meta.url,
517
+ lineNumber: 267,
518
+ columnNumber: 11
519
+ });
520
+ }
521
+ }, {
522
+ fileName: import.meta.url,
523
+ lineNumber: 266,
524
+ columnNumber: 9
525
+ });
526
+ }
527
+ }, {
528
+ fileName: import.meta.url,
529
+ lineNumber: 265,
530
+ columnNumber: 7
531
+ })]);
532
+ assertFileContents(res, {
533
+ "inst.py": `
534
+ from decl import Bar
535
+
536
+ one: Bar = Bar()
537
+ one.instance_prop
538
+ one.instance_method()
539
+ `,
540
+ "decl.py": `
541
+ class Bar:
542
+ instance_prop = 42
543
+ def instance_method(self) -> int:
544
+ pass
545
+
546
+
547
+ `
548
+ });
549
+ });
550
+ });
551
+ describe("Python Class - FunctionDeclaration", () => {
552
+ it("renders a class with class fields and method", () => {
553
+ const methodRefkey = refkey();
554
+ const classMethodRefkey = refkey();
555
+ const staticMethodRefkey = refkey();
556
+ const result = toSourceText([_$createComponent(py.StatementList, {
557
+ get children() {
558
+ return [_$createComponent(py.ClassDeclaration, {
559
+ name: "MyClass",
560
+ bases: ["BaseClass"],
561
+ get children() {
562
+ return _$createComponent(py.StatementList, {
563
+ get children() {
564
+ return [_$createComponent(py.VariableDeclaration, {
565
+ name: "a",
566
+ type: "int",
567
+ instanceVariable: true
568
+ }, {
569
+ fileName: import.meta.url,
570
+ lineNumber: 314,
571
+ columnNumber: 13
572
+ }), _$createComponent(py.VariableDeclaration, {
573
+ name: "b",
574
+ type: "int",
575
+ instanceVariable: true
576
+ }, {
577
+ fileName: import.meta.url,
578
+ lineNumber: 315,
579
+ columnNumber: 13
580
+ }), _$createComponent(py.MethodDeclaration, {
581
+ name: "my_method",
582
+ parameters: [{
583
+ name: "a",
584
+ type: "int"
585
+ }, {
586
+ name: "b",
587
+ type: "int"
588
+ }],
589
+ returnType: "int",
590
+ refkey: methodRefkey,
591
+ children: "return a + b"
592
+ }, {
593
+ fileName: import.meta.url,
594
+ lineNumber: 316,
595
+ columnNumber: 13
596
+ }), _$createComponent(py.ClassMethodDeclaration, {
597
+ name: "my_class_method",
598
+ returnType: "int",
599
+ refkey: classMethodRefkey,
600
+ children: "pass"
601
+ }, {
602
+ fileName: import.meta.url,
603
+ lineNumber: 327,
604
+ columnNumber: 13
605
+ }), _$createComponent(py.FunctionDeclaration, {
606
+ name: "my_standalone_function",
607
+ returnType: "int",
608
+ refkey: staticMethodRefkey,
609
+ children: "pass"
610
+ }, {
611
+ fileName: import.meta.url,
612
+ lineNumber: 334,
613
+ columnNumber: 13
614
+ })];
615
+ }
616
+ }, {
617
+ fileName: import.meta.url,
618
+ lineNumber: 313,
619
+ columnNumber: 11
620
+ });
621
+ }
622
+ }, {
623
+ fileName: import.meta.url,
624
+ lineNumber: 312,
625
+ columnNumber: 9
626
+ }), classMethodRefkey, staticMethodRefkey];
627
+ }
628
+ }, {
629
+ fileName: import.meta.url,
630
+ lineNumber: 311,
631
+ columnNumber: 7
632
+ })]);
633
+ const expected = d`
634
+ class MyClass(BaseClass):
635
+ a: int = None
636
+ b: int = None
637
+ def my_method(self, a: int, b: int) -> int:
638
+ return a + b
639
+
640
+ @classmethod
641
+ def my_class_method(cls) -> int:
642
+ pass
643
+
644
+ def my_standalone_function() -> int:
645
+ pass
646
+
647
+
648
+ MyClass.my_class_method
649
+ MyClass.my_standalone_function
650
+ `;
651
+ expect(result).toRenderTo(expected);
652
+ });
653
+ });
654
+ //# sourceMappingURL=classdeclarations.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["memberRefkey","namekey","refkey","d","describe","expect","it","py","assertFileContents","toSourceText","toSourceTextMultiple","result","_$createComponent","ClassDeclaration","name","fileName","import","meta","url","lineNumber","columnNumber","toRenderTo","children","StatementList","bases","expected","SourceFile","path","mod1Expected","mod2Expected","mod3Expected","VariableDeclaration","type","omitNone","fooKey","barKey","instanceVariable","initializer","classRk","classMemberRk","classMethodRk","v1Rk","res","ClassInstantiation","target","_$memo","MethodDeclaration","returnType","methodRefkey","classMethodRefkey","staticMethodRefkey","parameters","ClassMethodDeclaration","FunctionDeclaration"],"sources":["../../../test/classdeclarations.test.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}