@marimo-team/islands 0.24.3-dev9 → 0.25.1-dev1

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 (440) hide show
  1. package/dist/{ConnectedDataExplorerComponent-C9OF_75w.js → ConnectedDataExplorerComponent-KVhjDMSe.js} +1066 -1066
  2. package/dist/ErrorBoundary-pXXIvlr3.js +200 -0
  3. package/dist/{ImageComparisonComponent-2a9TMMm2.js → ImageComparisonComponent-Dlm5aWnH.js} +4 -4
  4. package/dist/{Plot-C-9MQeGP.js → Plot-CTyjbQDT.js} +21032 -20666
  5. package/dist/_baseMerge-BiGRwuqv.js +165 -0
  6. package/dist/{abnfDiagram-N423BO3Z-CQKwzX8t.js → abnfDiagram-VCTEODGH-CpN0FRda.js} +17 -18
  7. package/dist/{any-language-editor-DmQ7dyCx.js → any-language-editor-CycIVIeP.js} +17 -17
  8. package/dist/arc-7ra3iNdN.js +81 -0
  9. package/dist/architecture-7GRP2DOG-BWLylgiA.js +3 -0
  10. package/dist/{architectureDiagram-T3A2C74G-CncrDpfa.js → architectureDiagram-5GKGNRK7-DDyj5SRB.js} +25 -25
  11. package/dist/assets/__vite-browser-external-C9iR87Zl.js +1 -0
  12. package/dist/assets/worker-D7hWi02M.js +109 -0
  13. package/dist/blockDiagram-I7D4REHJ-BbXEXJRu.js +1922 -0
  14. package/dist/{button-CKBkqR9J.js → button-DdXAm8iz.js} +5 -5
  15. package/dist/{c4Diagram-5PPSVZJV-DarUk3Yq.js → c4Diagram-7LVT6UL2-DcLsbQmR.js} +696 -668
  16. package/dist/{capabilities-CMBBJTcc.js → capabilities-B3ce_GNu.js} +1 -1
  17. package/dist/{html-to-image-BtFMe_Nq.js → cells-DYIkSxs6.js} +6757 -10137
  18. package/dist/{channel-CyiYUzJv.js → channel-B5XnTarr.js} +1 -1
  19. package/dist/chat-ui-BXj3uYjy.js +5786 -0
  20. package/dist/{check-CHig47QV.js → check-B7cIK6gb.js} +1 -1
  21. package/dist/{chunk-2Q5K7J3B-BMuJl2jB.js → chunk-2Q5K7J3B-BMkUkeuy.js} +2 -2
  22. package/dist/chunk-4HAMMTFA-D2qv8E0X.js +4188 -0
  23. package/dist/{chunk-5VM5RSS4-Bcq0ftdy.js → chunk-5VM5RSS4-DKsmPCL6.js} +2 -2
  24. package/dist/{chunk-NSK5VX7P-CDTMcJB0.js → chunk-75Z2AOVW-5_HsvXwr.js} +23 -23
  25. package/dist/{chunk-I66GZJ75-BqyTCAPf.js → chunk-DU6HZSFF-BUgAHvnM.js} +21 -4
  26. package/dist/{chunk-2GRJ4B5K-DgO8Qudq.js → chunk-F27PBJKO-DHmYWZXr.js} +4 -4
  27. package/dist/{chunk-KEIR6QF5-C4KX3XYh.js → chunk-FOHPRMQF-BpYR8RqP.js} +4 -4
  28. package/dist/{chunk-WRU74C26-BpWsbiDK.js → chunk-GMAD6QVW-Czynz8aA.js} +486 -258
  29. package/dist/chunk-GVQU2GXP-yQEdulRS.js +37 -0
  30. package/dist/{chunk-5RXB4S5H-tLNUVDdO.js → chunk-IMKFNOWR-BfwTebD0.js} +11 -11
  31. package/dist/{chunk-JWPE2WC7-BJwjGUnF.js → chunk-JWPE2WC7-DJvv1t8U.js} +2 -2
  32. package/dist/chunk-L3NEJ4N5-DwRWnDDK.js +245 -0
  33. package/dist/{chunk-7Z6QIM7H-Dc18hFxH.js → chunk-OSK3NFVY-BBKU_Ign.js} +222 -144
  34. package/dist/{chunk-W5SLKNZC-DLnvpEtV.js → chunk-P2QGCYS3-C0iGU29N.js} +20 -20
  35. package/dist/{chunk-KBJHAD2P-BuqWqkcW.js → chunk-POPQ4Y6H-BCbS3Ozc.js} +4 -4
  36. package/dist/{chunk-4I5QYGJK-DpytHuZQ.js → chunk-PWAF6VOD-CTFCL0jI.js} +4 -4
  37. package/dist/{chunk-JQJVKLGR-CgqCwe8E.js → chunk-SHT3W25Y-BspJEJ5H.js} +109 -63
  38. package/dist/{chunk-6Q2QTUOP-DmTcEBMn.js → chunk-SVP7TREG-DX3rFNTe.js} +5 -5
  39. package/dist/{chunk-GF5L2VYU-B0wgCQgS.js → chunk-TICWLB2K-fVF7Uujg.js} +13 -13
  40. package/dist/{chunk-XXDRQBXY-D73H4IN0.js → chunk-XXDRQBXY-Dnl5VBqG.js} +3 -3
  41. package/dist/{chunk-Y2CYZVJY-DoegUj_e.js → chunk-Y2CYZVJY-DKKS1VyV.js} +1 -1
  42. package/dist/{chunk-5FQGJX7Z-B85XCPv6.js → chunk-YOKDWASO-DrWbKnxA.js} +6925 -5460
  43. package/dist/classDiagram-ZZMXUADV-Fe-V14Sc.js +30 -0
  44. package/dist/classDiagram-v2-VYDZK3BY-xTDg7lOs.js +30 -0
  45. package/dist/code-visibility-BC_yF09p.js +138 -0
  46. package/dist/{common-Cv-4hMa0.js → common-Dv227ygK.js} +8838 -12645
  47. package/dist/{compiler-runtime-CAH9RLw2.js → compiler-runtime-Cj8ZWiNS.js} +2 -2
  48. package/dist/copy-icon-CLdENY__.js +190 -0
  49. package/dist/{cose-bilkent-JH36ORCC-FUWHkXFX.js → cose-bilkent-JH36ORCC-_LyRKVqm.js} +2 -2
  50. package/dist/cubic-OaEBhQPK.js +1404 -0
  51. package/dist/cynefin-OW5HDTMX-obq-i80l.js +3 -0
  52. package/dist/{cynefinDiagram-MW4NZA55-BXSFK93J.js → cynefinDiagram-5FMLGOSQ-CFQrqzSX.js} +10 -10
  53. package/dist/{dagre-CGyalH38.js → dagre-BGSfXNEb.js} +678 -537
  54. package/dist/dagre-GXQ25YYZ-xHNAUTyG.js +425 -0
  55. package/dist/{data-grid-overlay-editor-DZM4BAaI.js → data-grid-overlay-editor-B-I2K7z3.js} +8 -9
  56. package/dist/{data-grid-types-BnZwWG8z.js → data-grid-types-BucVmDDp.js} +1 -1
  57. package/dist/{defaultLocale-DKaU_opG.js → defaultLocale-JI_lnoCe.js} +1 -1
  58. package/dist/{diagram-7IWD3JNH-BjfzDNvj.js → diagram-S7CK7UJ4-Bt1rPbAx.js} +40 -39
  59. package/dist/{diagram-UB23O5K3-DDg-7wLA.js → diagram-UQ7AKVKN-D1sq5FoZ.js} +10 -10
  60. package/dist/{diagram-B4RE2ZJO-CKccR9eE.js → diagram-VSXAHHWV-BKpmG23x.js} +10 -10
  61. package/dist/{diagram-Q27KOJAE-Zhz01ss7.js → diagram-VX7I27RA-BMwGFVD6.js} +21 -21
  62. package/dist/{diagram-LBJQPF4R-CJ-bOruh.js → diagram-Z3DM3KII--KLDR9Pl.js} +10 -10
  63. package/dist/dialog-CgNq6y9-.js +94 -0
  64. package/dist/{dist-dAqZAPcF.js → dist-1HDa70oE.js} +3 -3
  65. package/dist/{dist-Re9sOPOx.js → dist-9x1ZRe-e.js} +2 -2
  66. package/dist/{dist-DEeLqRlU.js → dist-B1vYLK28.js} +1 -1
  67. package/dist/{dist-C5Bn52W4.js → dist-B8D7McG3.js} +3 -3
  68. package/dist/{dist-_XvgytiS.js → dist-BHCHt1NI.js} +1 -1
  69. package/dist/{dist-CRjAdnqF.js → dist-BRxfaJgs.js} +3 -3
  70. package/dist/{dist-Byj2bV8o.js → dist-BVGtK7Ht.js} +1 -1
  71. package/dist/{dist-BIN5LKyE.js → dist-BaHjhkpZ.js} +2 -2
  72. package/dist/{dist-DVFbIwc5.js → dist-BtKIs9N-.js} +1 -1
  73. package/dist/{dist-BrQGcfQ9.js → dist-C2KzV-vf.js} +2 -2
  74. package/dist/{dist-DJFiGP2k.js → dist-C2wDlYdD.js} +2 -2
  75. package/dist/{dist-BVRM2y1P.js → dist-C8xMLVYi.js} +2 -2
  76. package/dist/dist-CMh_W4y4.js +538 -0
  77. package/dist/{extends-BPB6_lTK.js → dist-CO1AwwG_.js} +516 -561
  78. package/dist/{dist-BzN60Z2s.js → dist-CPGxfVGX.js} +1 -1
  79. package/dist/{dist-C7v-9nUK.js → dist-Cm3iAFMD.js} +3 -3
  80. package/dist/{dist-CGAxEiaM.js → dist-Cs2FijYk.js} +2 -2
  81. package/dist/{dist-hXd65f0_.js → dist-D1PpnuZB.js} +1 -1
  82. package/dist/{dist-VdvbxG72.js → dist-DHOTQar0.js} +1 -1
  83. package/dist/{dist-DcgzXCfy.js → dist-DPcEtqmG.js} +2 -2
  84. package/dist/{dist-D4Z_qdP4.js → dist-Df0wKI0F.js} +1 -1
  85. package/dist/{dist-qhLI-SHd.js → dist-DszxuxS1.js} +2 -2
  86. package/dist/{dist-BEmkrGoQ.js → dist-Kxgjxakw.js} +1 -1
  87. package/dist/{dist-BbSMhhD2.js → dist-KzZ7WELx.js} +2 -2
  88. package/dist/{dist-jWUab2d1.js → dist-lA1Cttkb.js} +1 -1
  89. package/dist/dropdown-menu-CZgjYSAh.js +4502 -0
  90. package/dist/{ebnfDiagram-BXEA7PRR-Dm75pCAS.js → ebnfDiagram-PWID7BFC-WnG4cvSQ.js} +17 -18
  91. package/dist/{erDiagram-JOGREHBK-rVDG3VSQ.js → erDiagram-RLTQ6QDP-DhzKiYHc.js} +1037 -798
  92. package/dist/error-banner-B94dcDmP.js +391 -0
  93. package/dist/error-entries-C0NsUqXl.js +56 -0
  94. package/dist/{esm-CR1nhb1c.js → esm-BElI3qKH.js} +22 -22
  95. package/dist/{esm-C1d0g6Bv.js → esm-G4Fhsgng.js} +51 -37
  96. package/dist/{esm-CesmlDrs.js → esm-h8f7-1CJ.js} +423 -423
  97. package/dist/eventmodeling-NTZA5JFV-D7nP7Uyu.js +3 -0
  98. package/dist/feedback-button-D2hUXe09.js +380 -0
  99. package/dist/flowDiagram-HODETNUW-6dMdB8pR.js +16 -0
  100. package/dist/{formats-CslNOKy0.js → formats-BR5iGb4s.js} +8 -8
  101. package/dist/{ganttDiagram-PKOTCBZU-9D-LXF6P.js → ganttDiagram-EL5Y4UJY-DbzEBLbl.js} +15 -15
  102. package/dist/gitGraph-4MIJSDKK-Dy9uQXGh.js +3 -0
  103. package/dist/{gitGraphDiagram-DS77QQ5N-BfpsXTLf.js → gitGraphDiagram-WWUBYQGX-BMf0iKi1.js} +10 -10
  104. package/dist/{glide-data-editor-sPZ8fUFn.js → glide-data-editor-B851uguN.js} +2143 -1910
  105. package/dist/{glide-utils-NShAPPtn.js → glide-utils-B3rUT5PI.js} +15 -15
  106. package/dist/globals-CmijFoIU.js +19 -0
  107. package/dist/highlighted-body-KPVGNVTW-Ad3MKZ18.js +38 -0
  108. package/dist/html-to-image-CeYYvQNb.js +3272 -0
  109. package/dist/info-A6RAGUB7-DKoayiHY.js +3 -0
  110. package/dist/{infoDiagram-6WML65LV-DqCTXHVy.js → infoDiagram-27XIBGKW-BagtCX_5.js} +7 -7
  111. package/dist/{ishikawaDiagram-WSZJBQD7-BCUYmZ1v.js → ishikawaDiagram-5VMMS53U-DByDehYy.js} +8 -8
  112. package/dist/{journeyDiagram-NVQOT4AX-BXB6M4zN.js → journeyDiagram-3NMN7TZE-D2LcKDUO.js} +8 -8
  113. package/dist/{jsx-runtime-CpoKNRgu.js → jsx-runtime-DgDPJV9S.js} +1 -1
  114. package/dist/{kanban-definition-27J2QSJJ-CGRhrDUX.js → kanban-definition-UXKFOSKX-BxwkbBI_.js} +29 -29
  115. package/dist/katex-DFBiSucW.js +21840 -0
  116. package/dist/{label-lwzzBHUW.js → label-BJ49YTvk.js} +6 -6
  117. package/dist/{linear-D5r_1YqD.js → linear-Cnaq3Tfb.js} +4 -4
  118. package/dist/{loader-VZ__bv4g.js → loader-D2W4oM-3.js} +15 -15
  119. package/dist/main.js +8113 -13475
  120. package/dist/mermaid-DPNuhemn.js +3084 -0
  121. package/dist/mermaid-HWGCJPDP-DYCzSILp.js +2 -0
  122. package/dist/mermaid-parser.core-DxuSfYwJ.js +638 -0
  123. package/dist/{mhchem-BjwrxcV-.js → mhchem-DWCF06w9.js} +1 -1
  124. package/dist/{micromark-factory-space-DruVGzeG.js → micromark-factory-space-DGxAzmw8.js} +2 -2
  125. package/dist/{mindmap-definition-FAOFIHXS-C9gRhzZq.js → mindmap-definition-YA3MSWOX-Cgvojw3y.js} +17 -17
  126. package/dist/{node-sql-parser-DesT1xNw.js → node-sql-parser-BiZOJ-FS.js} +0 -3
  127. package/dist/{number-overlay-editor-De2CabLL.js → number-overlay-editor-BtdoxWiD.js} +5 -5
  128. package/dist/objectWithoutPropertiesLoose-BRDcTsfB.js +23 -0
  129. package/dist/packet-AYTQ26CC-Yw7ajchJ.js +3 -0
  130. package/dist/{pegDiagram-VL7TDLO6-Df9IUjMD.js → pegDiagram-XKGWAZYB-DahHhYyN.js} +19 -20
  131. package/dist/{pick-SnHlmIBN.js → pick-CJeoxYOS.js} +1 -1
  132. package/dist/pie-WAS4IAKB-BKdKOAkL.js +3 -0
  133. package/dist/{pieDiagram-7S7Q4E2Y-BmRzQ8ZP.js → pieDiagram-E7YTZNPT-CCtX0oCK.js} +29 -31
  134. package/dist/{process-output-CPy0YKUe.js → process-output-BCTjlyuH.js} +7 -6
  135. package/dist/purify.es-DgKyQviY.js +805 -0
  136. package/dist/{quadrantDiagram-CIZ2JOQS-wFBvWcxS.js → quadrantDiagram-AXDQQJYC-DftINo6g.js} +5 -5
  137. package/dist/radar-RG4KPBEZ-ScR_D_Ts.js +3 -0
  138. package/dist/railroad-74A4TZTK-DQvPSdo5.js +3 -0
  139. package/dist/railroad-abnf-HS5TGJTU-CsJQG2O8.js +3 -0
  140. package/dist/railroad-ebnf-LZEXJU2U-BgEobkSn.js +3 -0
  141. package/dist/railroad-peg-WCYAUIDC-DjLAjofI.js +3 -0
  142. package/dist/{railroadDiagram-AXF67PYL-DxbIatiN.js → railroadDiagram-O6MQD6OU-Du5NsPUb.js} +17 -18
  143. package/dist/{react-dom-C94wmq5w.js → react-dom-BUgJ-ab_.js} +3 -3
  144. package/dist/{react-DMWcHin-.js → react-ofJbxM4x.js} +2 -2
  145. package/dist/{react-vega-DSD5aT7_.js → react-vega-5AcMW8gG.js} +10012 -9369
  146. package/dist/{requirementDiagram-LRYGKXZP-X_x-Y713.js → requirementDiagram-BXWQKSXE-0pmmxL6_.js} +20 -19
  147. package/dist/{reveal-component-CVsYlb9J.js → reveal-component-DQq7NUGJ.js} +1303 -1237
  148. package/dist/{sankeyDiagram-W5VNT64P-BYJALbbm.js → sankeyDiagram-P5KCCOFB-CDKR5TJH.js} +4 -4
  149. package/dist/{select-3qHpFKF9.js → select-C6plhmZr.js} +317 -562
  150. package/dist/{sequenceDiagram-SI44F4Z6-BiPBe3Sv.js → sequenceDiagram-WJ2MYXX4-DB-ChWwU.js} +11 -11
  151. package/dist/{sizeCapture-X5ZJPWSS-BKLDeh5H.js → sizeCapture-INFHLROL-Dx5SpkQF.js} +2 -2
  152. package/dist/{spec-CutWdqo3.js → spec-CAYwFeV6.js} +4 -4
  153. package/dist/{src-C31ngt98.js → src-CA_m4ONl.js} +298 -303
  154. package/dist/{stateDiagram-OKZ733FA-B7QyNBxH.js → stateDiagram-D77RDMKH-orN6AwMx.js} +19 -20
  155. package/dist/stateDiagram-v2-MP3YSRHH-o05_rJN8.js +30 -0
  156. package/dist/style.css +2 -2
  157. package/dist/{swimlanes-SLNWSIFB-B4f8VP3b.js → swimlanes-42K2YHIH-BkSDcqDT.js} +1501 -1591
  158. package/dist/swimlanesDiagram-VR7AAH4N-D_nFQfRc.js +30 -0
  159. package/dist/{swiper-component-C90YjhaV.js → swiper-component-IOUowglM.js} +39 -26
  160. package/dist/{time-aWGfjN8x.js → time-BieKwdYS.js} +42 -42
  161. package/dist/{timeline-definition-Z64GVDOM-Dacq_5lr.js → timeline-definition-24CTP7MA-BuqJUIRZ.js} +7 -7
  162. package/dist/{toDate-CpXBeDq0.js → toDate-WXg1yLcI.js} +7 -7
  163. package/dist/toast-DvY70eFX.js +1834 -0
  164. package/dist/tooltip-qB8NlSqV.js +1742 -0
  165. package/dist/treeView-Q6P3EWNA-DuRV97YF.js +3 -0
  166. package/dist/treemap-WGGIJYW6-AsLq-uwC.js +3 -0
  167. package/dist/use-restore-focus-D5D9xEjZ.js +5946 -0
  168. package/dist/{use-vega-container-remeasure-DUW4tRxq.js → use-vega-container-remeasure-4DwJbPWu.js} +2 -2
  169. package/dist/{useAsyncData-CH6-CgJF.js → useAsyncData-BD6AStMt.js} +3 -3
  170. package/dist/{useDateFormatter-Cp9Jdxls.js → useDateFormatter-BRTPsUK7.js} +8 -8
  171. package/dist/{useDeepCompareMemoize-JC87C_jO.js → useDeepCompareMemoize-D_HNdyvI.js} +2 -2
  172. package/dist/{useIframeCapabilities-De3C-9b4.js → useIframeCapabilities-CVtNkI3Y.js} +2 -2
  173. package/dist/{useLifecycle-B4RGlyf0.js → useLifecycle-DPgiiwwU.js} +6 -6
  174. package/dist/useNumberFormatter-BfDpa21j.js +251 -0
  175. package/dist/useTheme-DzXmYZ5V.js +904 -0
  176. package/dist/{vega-component-ovBXgp91.js → vega-component-D0QXopU8.js} +34 -34
  177. package/dist/{vega-embed-container-TJ5z5dZw.js → vega-embed-container-CbnTccZi.js} +6 -6
  178. package/dist/vega-loader.browser-D95WfUcj.js +1139 -0
  179. package/dist/{vennDiagram-T6HMQDX7-D-Rcq3Iu.js → vennDiagram-4TSXK5OY-CTUlJ2PK.js} +9 -9
  180. package/dist/wardley-WFR3VGLG-Na-tFhQJ.js +3 -0
  181. package/dist/{wardleyDiagram-T6FBY63Y-Z-Og7_Wd.js → wardleyDiagram-VM6X3IG4-3evLUb0M.js} +10 -10
  182. package/dist/{xychartDiagram-ELKLHX3M-BDJ2dITA.js → xychartDiagram-S5SC5T6Z-DL2E3K8-.js} +248 -139
  183. package/package.json +54 -57
  184. package/src/__mocks__/notebook.ts +1 -0
  185. package/src/__mocks__/requests.ts +7 -0
  186. package/src/__tests__/__snapshots__/CellStatus.test.tsx.snap +12 -12
  187. package/src/__tests__/fixtures/pair-preview.ts +19 -0
  188. package/src/__tests__/mount.test.ts +18 -0
  189. package/src/components/app-config/optional-features.tsx +6 -0
  190. package/src/components/chat/acp/__tests__/agent-panel-initialization.test.tsx +394 -0
  191. package/src/components/chat/acp/__tests__/agent-panel.test.tsx +272 -0
  192. package/src/components/chat/acp/__tests__/state.test.ts +2 -2
  193. package/src/components/chat/acp/agent-panel.tsx +115 -74
  194. package/src/components/chat/acp/state.ts +1 -1
  195. package/src/components/data-table/__tests__/filters.test.ts +21 -21
  196. package/src/components/data-table/charts/__tests__/spec.test.ts +5 -10
  197. package/src/components/data-table/column-explorer-panel/column-explorer.tsx +2 -6
  198. package/src/components/data-table/column-summary/chart-spec-model.tsx +1 -1
  199. package/src/components/data-table/columns.tsx +64 -67
  200. package/src/components/editor/RecoveryButton.tsx +1 -0
  201. package/src/components/editor/__tests__/dynamic-favicon.test.tsx +36 -2
  202. package/src/components/editor/actions/__tests__/pair-with-agent-commands.test.ts +115 -0
  203. package/src/components/editor/actions/__tests__/pair-with-agent-modal.test.tsx +218 -0
  204. package/src/components/editor/actions/pair-with-agent-commands.ts +46 -9
  205. package/src/components/editor/actions/pair-with-agent-modal.tsx +49 -23
  206. package/src/components/editor/ai/add-cell-with-ai.tsx +1 -0
  207. package/src/components/editor/ai/ai-completion-editor.tsx +3 -1
  208. package/src/components/editor/alerts/__tests__/connection-notice.test.tsx +186 -0
  209. package/src/components/editor/alerts/__tests__/startup-progress.test.tsx +185 -0
  210. package/src/components/editor/alerts/connecting-alert.tsx +1 -66
  211. package/src/components/editor/alerts/connection-notice.tsx +186 -0
  212. package/src/components/editor/alerts/startup-output.tsx +173 -0
  213. package/src/components/editor/alerts/startup-progress.tsx +204 -0
  214. package/src/components/editor/app-container.tsx +9 -3
  215. package/src/components/editor/boundary/ErrorBoundary.tsx +38 -16
  216. package/src/components/editor/boundary/__tests__/ErrorBoundary.test.tsx +311 -0
  217. package/src/components/editor/cell/__tests__/toolbar.test.tsx +73 -0
  218. package/src/components/editor/cell/code/__tests__/rtc-editor-config.test.ts +50 -0
  219. package/src/components/editor/cell/code/cell-editor.tsx +41 -42
  220. package/src/components/editor/cell/toolbar.tsx +11 -0
  221. package/src/components/editor/chrome/components/__tests__/feedback-button.test.tsx +94 -0
  222. package/src/components/editor/chrome/components/feedback-button.tsx +63 -42
  223. package/src/components/editor/chrome/panels/__tests__/packages-panel.test.tsx +164 -8
  224. package/src/components/editor/chrome/panels/__tests__/sandbox-details.test.tsx +358 -0
  225. package/src/components/editor/chrome/panels/__tests__/sandbox-recovery.test.tsx +168 -0
  226. package/src/components/editor/chrome/panels/packages-panel.tsx +113 -175
  227. package/src/components/editor/chrome/panels/sandbox-controller.tsx +106 -0
  228. package/src/components/editor/chrome/panels/sandbox-details-state.ts +38 -0
  229. package/src/components/editor/chrome/panels/sandbox-panel.tsx +230 -0
  230. package/src/components/editor/chrome/panels/sandbox-toggle.tsx +52 -0
  231. package/src/components/editor/chrome/wrapper/app-chrome.tsx +7 -0
  232. package/src/components/editor/chrome/wrapper/footer-items/backend-status.tsx +3 -1
  233. package/src/components/editor/code/__tests__/readonly-diff.test.tsx +65 -0
  234. package/src/components/editor/code/readonly-diff.tsx +1 -1
  235. package/src/components/editor/connections/database/__tests__/__snapshots__/as-code.test.ts.snap +98 -98
  236. package/src/components/editor/connections/database/__tests__/as-code.test.ts +11 -5
  237. package/src/components/editor/dynamic-favicon.tsx +17 -10
  238. package/src/components/editor/file-tree/__tests__/file-explorer-navigation.test.tsx +13 -11
  239. package/src/components/editor/file-tree/__tests__/tree-actions.test.tsx +54 -0
  240. package/src/components/editor/file-tree/tree-actions.tsx +11 -14
  241. package/src/components/editor/header/__tests__/status.test.tsx +8 -20
  242. package/src/components/editor/header/filename-input.tsx +2 -0
  243. package/src/components/editor/header/status.tsx +5 -3
  244. package/src/components/editor/navigation/clipboard.ts +1 -0
  245. package/src/components/editor/notebook-cell.tsx +4 -2
  246. package/src/components/editor/output/JsonOutput.tsx +182 -632
  247. package/src/components/editor/output/Outputs.css +49 -17
  248. package/src/components/editor/output/__tests__/JsonOutput-interactions.test.tsx +254 -0
  249. package/src/components/editor/output/__tests__/JsonOutput-mimetype.test.tsx +41 -46
  250. package/src/components/editor/output/__tests__/{json-output.test.ts → json-output-formatting.test.ts} +113 -75
  251. package/src/components/editor/output/__tests__/json-output-pagination.test.ts +252 -0
  252. package/src/components/editor/output/json-output/formatting.ts +167 -0
  253. package/src/components/editor/output/json-output/pagination.ts +155 -0
  254. package/src/components/editor/output/json-output/renderers.tsx +196 -0
  255. package/src/components/editor/output/json-output/themes.ts +52 -0
  256. package/src/components/editor/package-alert.tsx +112 -66
  257. package/src/components/editor/renderers/cell-array.tsx +1 -5
  258. package/src/components/editor/renderers/slides-layout/__tests__/plugin.test.ts +3 -7
  259. package/src/components/slides/slide-form.tsx +1 -0
  260. package/src/components/slides/slide-notes-editor.tsx +1 -0
  261. package/src/components/tracing/tracing-spec.ts +1 -1
  262. package/src/components/ui/__tests__/badge.test.ts +6 -4
  263. package/src/components/ui/use-toast.ts +8 -0
  264. package/src/core/MarimoApp.tsx +0 -2
  265. package/src/core/ai/context/providers/__tests__/error.test.ts +16 -22
  266. package/src/core/alerts/__tests__/environment.test.ts +183 -0
  267. package/src/core/alerts/__tests__/state.test.tsx +240 -0
  268. package/src/core/alerts/environment.ts +57 -0
  269. package/src/core/alerts/state.ts +155 -99
  270. package/src/core/cells/__tests__/__snapshots__/cells.test.ts.snap +296 -259
  271. package/src/core/cells/__tests__/apply-transaction.test.ts +34 -0
  272. package/src/core/cells/__tests__/cell.test.ts +61 -0
  273. package/src/core/cells/__tests__/cells.test.ts +182 -37
  274. package/src/core/cells/__tests__/document-changes.test.ts +39 -1
  275. package/src/core/cells/__tests__/outputs.test.tsx +117 -0
  276. package/src/core/cells/__tests__/pending-delete-service.test.tsx +4 -3
  277. package/src/core/cells/__tests__/session.test.ts +7 -0
  278. package/src/core/cells/cell.ts +9 -1
  279. package/src/core/cells/cells.ts +13 -18
  280. package/src/core/cells/document-changes.ts +11 -1
  281. package/src/core/cells/outputs.ts +66 -9
  282. package/src/core/cells/pending-delete-service.ts +12 -16
  283. package/src/core/cells/session.ts +2 -0
  284. package/src/core/cells/types.ts +2 -0
  285. package/src/core/codemirror/find-replace/__tests__/navigate.test.ts +8 -16
  286. package/src/core/codemirror/language/__tests__/sql.test.ts +70 -2
  287. package/src/core/codemirror/language/embedded/__tests__/embedded-python.test.ts +4 -8
  288. package/src/core/codemirror/language/languages/sql/sql.ts +16 -1
  289. package/src/core/codemirror/rtc/extension.ts +5 -2
  290. package/src/core/config/pair.ts +19 -0
  291. package/src/core/datasets/__tests__/data-source.test.ts +2 -0
  292. package/src/core/datasets/data-source-connections.ts +15 -10
  293. package/src/core/edit-app.tsx +8 -5
  294. package/src/core/errors/state.ts +1 -2
  295. package/src/core/export/__tests__/hooks.test.ts +1 -6
  296. package/src/core/islands/bootstrap.ts +3 -1
  297. package/src/core/islands/bridge.ts +3 -0
  298. package/src/core/islands/worker-factory.ts +2 -12
  299. package/src/core/kernel/messages.ts +2 -2
  300. package/src/core/network/__tests__/requests-network.test.ts +4 -3
  301. package/src/core/network/connection-notice.ts +117 -0
  302. package/src/core/network/connection.ts +19 -0
  303. package/src/core/network/requests-lazy.ts +3 -0
  304. package/src/core/network/requests-network.ts +12 -0
  305. package/src/core/network/requests-static.ts +3 -0
  306. package/src/core/network/requests-toasting.tsx +3 -0
  307. package/src/core/network/resolve.ts +2 -1
  308. package/src/core/network/types.ts +7 -0
  309. package/src/core/network/useConnectionNotice.ts +53 -0
  310. package/src/core/packages/__tests__/usePackageAction.test.tsx +129 -0
  311. package/src/core/packages/__tests__/useSandboxController.test.tsx +246 -0
  312. package/src/core/packages/package-data.ts +35 -0
  313. package/src/core/packages/sandbox-state.ts +67 -0
  314. package/src/core/packages/toast-components.tsx +11 -0
  315. package/src/core/packages/useInstallPackage.ts +1 -1
  316. package/src/core/packages/usePackageAction.ts +51 -0
  317. package/src/core/packages/usePackageDependencies.ts +22 -0
  318. package/src/core/packages/useSandboxController.ts +208 -0
  319. package/src/core/run-app.tsx +2 -0
  320. package/src/core/static/__tests__/files.test.ts +12 -30
  321. package/src/core/wasm/__tests__/bootstrap.test.ts +63 -0
  322. package/src/core/wasm/__tests__/bridge.test.ts +13 -4
  323. package/src/core/wasm/__tests__/fs.test.ts +22 -0
  324. package/src/core/wasm/__tests__/runtime-config.test.ts +65 -0
  325. package/src/core/wasm/bridge.ts +35 -23
  326. package/src/core/wasm/rpc.ts +2 -0
  327. package/src/core/wasm/runtime-config.ts +31 -0
  328. package/src/core/wasm/worker/bootstrap.ts +21 -11
  329. package/src/core/wasm/worker/constants.ts +1 -0
  330. package/src/core/wasm/worker/fs.ts +4 -0
  331. package/src/core/wasm/worker/getController.ts +3 -1
  332. package/src/core/wasm/worker/save-worker.ts +10 -9
  333. package/src/core/wasm/worker/types.ts +6 -4
  334. package/src/core/wasm/worker/worker.ts +9 -9
  335. package/src/core/websocket/__tests__/useMarimoKernelConnection.hook.test.tsx +404 -3
  336. package/src/core/websocket/__tests__/useMarimoKernelConnection.test.ts +8 -6
  337. package/src/core/websocket/transports/transport.ts +1 -1
  338. package/src/core/websocket/transports/ws.ts +1 -1
  339. package/src/core/websocket/types.ts +11 -1
  340. package/src/core/websocket/useMarimoKernelConnection.tsx +63 -16
  341. package/src/hooks/useDebounce.ts +2 -0
  342. package/src/mount.tsx +3 -0
  343. package/src/plugins/core/BadPlugin.tsx +3 -14
  344. package/src/plugins/core/RenderHTML.tsx +22 -2
  345. package/src/plugins/core/__test__/RenderHTML.test.ts +187 -0
  346. package/src/plugins/core/registerReactComponent.tsx +0 -1
  347. package/src/plugins/impl/FileBrowserPlugin.tsx +10 -4
  348. package/src/plugins/impl/FormPlugin.tsx +2 -0
  349. package/src/plugins/impl/MatrixPlugin.tsx +2 -0
  350. package/src/plugins/impl/RangeSliderPlugin.tsx +2 -0
  351. package/src/plugins/impl/SliderPlugin.tsx +2 -0
  352. package/src/plugins/impl/__tests__/FileBrowserPlugin.test.tsx +50 -1
  353. package/src/plugins/impl/data-editor/__tests__/glide-data-editor.test.tsx +23 -18
  354. package/src/plugins/impl/data-frames/panel.tsx +1 -0
  355. package/src/plugins/impl/image-comparison/ImageComparisonComponent.tsx +1 -1
  356. package/src/plugins/impl/image-comparison/__tests__/ImageComparisonComponent.test.tsx +15 -0
  357. package/src/plugins/impl/vega/__tests__/make-selectable.test.ts +42 -48
  358. package/src/plugins/layout/AccordionPlugin.tsx +7 -2
  359. package/src/plugins/layout/JsonOutputPlugin.tsx +7 -10
  360. package/src/plugins/layout/__test__/AccordionPlugin.test.tsx +66 -0
  361. package/src/stories/sandbox.stories.tsx +488 -0
  362. package/src/utils/__tests__/path.test.ts +6 -5
  363. package/src/utils/__tests__/worker.test.ts +81 -0
  364. package/src/utils/worker.ts +22 -0
  365. package/dist/ErrorBoundary-CR-ZQN_c.js +0 -125
  366. package/dist/_baseMerge-Dv8bBloN.js +0 -73
  367. package/dist/_initCloneObject---vediN2.js +0 -95
  368. package/dist/arc-DOVLrCPd.js +0 -82
  369. package/dist/architecture-TIHT7OUA-MiJpPpQW.js +0 -3
  370. package/dist/array-CApNbSU9.js +0 -6
  371. package/dist/assets/__vite-browser-external-BdKGjRZ4.js +0 -1
  372. package/dist/assets/worker-DlIBfp9S.js +0 -98
  373. package/dist/blockDiagram-VBNYF7ZC-Bc--I65C.js +0 -3158
  374. package/dist/chat-ui-BSwr409J.js +0 -8455
  375. package/dist/chunk-3NCLNEKW-BIp_lB_4.js +0 -14
  376. package/dist/chunk-5FCAYU7R-C_HO9A1J.js +0 -23
  377. package/dist/chunk-5HE753X5-Bixm_MV-.js +0 -38
  378. package/dist/chunk-5JV3BV7I-CH5J3iZY.js +0 -54
  379. package/dist/chunk-5TONJI2A-DG6gDiSS.js +0 -62
  380. package/dist/chunk-7BUUIJ7U-5afmIPeo.js +0 -82
  381. package/dist/chunk-BIQX33UG-7TMBUf89.js +0 -23
  382. package/dist/chunk-CQNSW5MT-Cnqqsxt-.js +0 -38
  383. package/dist/chunk-CYSBUYHQ-BAbymFHR.js +0 -23
  384. package/dist/chunk-EMLP6XTP-Bsz-QL77.js +0 -23
  385. package/dist/chunk-J7OUQ5F2-CM_meqZH.js +0 -57
  386. package/dist/chunk-JG7HCLWE-DUnCDgPk.js +0 -62
  387. package/dist/chunk-MOZMSUNE-BG6IHvzT.js +0 -35
  388. package/dist/chunk-OSBZ3O6U-CYwj_bvR.js +0 -23
  389. package/dist/chunk-QBLGF6JB-B4vJ4j8J.js +0 -23
  390. package/dist/chunk-QR6OTTB3-D4wH2ldi.js +0 -3738
  391. package/dist/chunk-R7FJI6CG-Blf8FcmZ.js +0 -64
  392. package/dist/chunk-RYQCIY6F-BWbIlBIH.js +0 -241
  393. package/dist/chunk-U6XO7XAA-COw445DS.js +0 -63
  394. package/dist/chunk-UBXNYLIW-BHigVU4H.js +0 -32
  395. package/dist/chunk-YOTPTUD7-Dn044Q_d.js +0 -30
  396. package/dist/chunk-ZIRB5QZD-BR4TMfOa.js +0 -1153
  397. package/dist/classDiagram-JCYQIIEL-DmXSLxe_.js +0 -30
  398. package/dist/classDiagram-v2-OCEON4UE-CooqVexA.js +0 -30
  399. package/dist/click-outside-container-D_URcm3D.js +0 -167
  400. package/dist/code-block-37QAKDTI-CQrzBOr-.js +0 -107
  401. package/dist/copy-CD7S58CY.js +0 -141
  402. package/dist/cynefin-VYW2F7L2-CeHAxOEX.js +0 -3
  403. package/dist/dagre-VZM6K2ZE-CJggWPTJ.js +0 -328
  404. package/dist/dist-3_o3T78I.js +0 -1360
  405. package/dist/dist-ABQjhuek.js +0 -64
  406. package/dist/dist-CO5R6VMi.js +0 -538
  407. package/dist/dropdown-menu-DhCfcscX.js +0 -5858
  408. package/dist/emotion-is-prop-valid.esm-M57VsT8j.js +0 -14
  409. package/dist/error-banner-CsXbEEjo.js +0 -611
  410. package/dist/eventmodeling-45OFAUF4-B_lWZ-Pd.js +0 -3
  411. package/dist/flowDiagram-UKHOOZJN-g1AmrZzM.js +0 -17
  412. package/dist/gitGraph-TEB2WS4Q-Dj-eXUph.js +0 -3
  413. package/dist/info-DKCQHKI2-Bhb-pe2e.js +0 -3
  414. package/dist/line-CuKjIQa1.js +0 -34
  415. package/dist/map-BJpOfPlL.js +0 -149
  416. package/dist/math-BXtKgYah.js +0 -10
  417. package/dist/mermaid-4DMBBIKO-Ddp9TgNp.js +0 -2
  418. package/dist/mermaid-Bi23Ibnw.js +0 -1173
  419. package/dist/mermaid-parser.core-Din9FvSi.js +0 -99
  420. package/dist/packet-7NZHBO7P-fbkIIyKE.js +0 -3
  421. package/dist/path-BNHuHZP8.js +0 -87
  422. package/dist/pie-RZYD4A2V-CLRIsxY1.js +0 -3
  423. package/dist/purify.es-CB-YO1Hn.js +0 -774
  424. package/dist/radar-I7S5WNFK-BGzCbgXu.js +0 -3
  425. package/dist/railroad-3IZDKUUU-CvQIIcuU.js +0 -3
  426. package/dist/railroad-abnf-AHOZXSZD-CMwtlNtu.js +0 -3
  427. package/dist/railroad-ebnf-EBAXGLYW-n1QUOAsh.js +0 -3
  428. package/dist/railroad-peg-LSFZ7HO6-PjnrpmCs.js +0 -3
  429. package/dist/schemas-DzK6U94N.js +0 -6057
  430. package/dist/stateDiagram-v2-UEYNNEHI-BTRUs8Il.js +0 -30
  431. package/dist/step-CKczO72Q.js +0 -670
  432. package/dist/swimlanesDiagram-ULZ7WXOC-NBmgBl9G.js +0 -31
  433. package/dist/timer-DpDyj9G0.js +0 -596
  434. package/dist/tooltip-Dt77sBeT.js +0 -390
  435. package/dist/treeView-QDETBFTQ-DU8LwHuf.js +0 -3
  436. package/dist/treemap-6X3UGDF4-DUk4-k_O.js +0 -3
  437. package/dist/useTheme-CVJ0UOf2.js +0 -841
  438. package/dist/vega-loader.browser-DEggZzni.js +0 -1083
  439. package/dist/wardley-OPB4EBWU-Db-AaGas.js +0 -3
  440. package/src/components/editor/output/EmotionCacheProvider.tsx +0 -32
@@ -1,6 +1,6 @@
1
1
  // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2
2
 
3
- exports[`generateDatabaseCode > basic connections > bigquery 1`] = `
3
+ exports[`generateDatabaseCode > basic connections > bigquery > generated code 1`] = `
4
4
  "import json
5
5
  import sqlmodel
6
6
 
@@ -8,13 +8,13 @@ credentials = json.loads(r"""{"type": "service_account", "project_id": "test"}""
8
8
  engine = sqlmodel.create_engine(f"bigquery://my-project/my_dataset", credentials_info=credentials)"
9
9
  `;
10
10
 
11
- exports[`generateDatabaseCode > basic connections > chdb 1`] = `
11
+ exports[`generateDatabaseCode > basic connections > chdb > generated code 1`] = `
12
12
  "import chdb
13
13
 
14
14
  engine = chdb.connect("file:///path/to/db.chdb", read_only=False)"
15
15
  `;
16
16
 
17
- exports[`generateDatabaseCode > basic connections > clickhouse 1`] = `
17
+ exports[`generateDatabaseCode > basic connections > clickhouse > generated code 1`] = `
18
18
  "import clickhouse_connect
19
19
  import os
20
20
 
@@ -28,7 +28,7 @@ engine = clickhouse_connect.get_client(
28
28
  )"
29
29
  `;
30
30
 
31
- exports[`generateDatabaseCode > basic connections > databricks 1`] = `
31
+ exports[`generateDatabaseCode > basic connections > databricks > generated code 1`] = `
32
32
  "import os
33
33
  import sqlalchemy
34
34
 
@@ -39,7 +39,7 @@ DATABASE_URL = f"databricks://token:{_access_token}@{_server_hostname}?http_path
39
39
  engine = sqlalchemy.create_engine(DATABASE_URL)"
40
40
  `;
41
41
 
42
- exports[`generateDatabaseCode > basic connections > databricks with catalog and schema 1`] = `
42
+ exports[`generateDatabaseCode > basic connections > databricks with catalog and schema > generated code 1`] = `
43
43
  "import os
44
44
  import sqlalchemy
45
45
 
@@ -50,7 +50,7 @@ DATABASE_URL = f"databricks://token:{_access_token}@{_server_hostname}?http_path
50
50
  engine = sqlalchemy.create_engine(DATABASE_URL)"
51
51
  `;
52
52
 
53
- exports[`generateDatabaseCode > basic connections > databricks with ibis 1`] = `
53
+ exports[`generateDatabaseCode > basic connections > databricks with ibis > generated code 1`] = `
54
54
  "import ibis
55
55
  import os
56
56
 
@@ -64,14 +64,14 @@ engine = ibis.databricks.connect(
64
64
  )"
65
65
  `;
66
66
 
67
- exports[`generateDatabaseCode > basic connections > datafusion 1`] = `
67
+ exports[`generateDatabaseCode > basic connections > datafusion > generated code 1`] = `
68
68
  "from datafusion import SessionContext
69
69
  import ibis
70
70
 
71
71
  con = ibis.datafusion.connect()"
72
72
  `;
73
73
 
74
- exports[`generateDatabaseCode > basic connections > datafusion with session 1`] = `
74
+ exports[`generateDatabaseCode > basic connections > datafusion with session > generated code 1`] = `
75
75
  "from datafusion import SessionContext
76
76
  import ibis
77
77
 
@@ -82,20 +82,20 @@ _ = ctx.from_pydict({"a": [1, 2, 3]}, "my_table")
82
82
  con = ibis.datafusion.connect(ctx)"
83
83
  `;
84
84
 
85
- exports[`generateDatabaseCode > basic connections > duckdb 1`] = `
85
+ exports[`generateDatabaseCode > basic connections > duckdb > generated code 1`] = `
86
86
  "import duckdb
87
87
 
88
88
  DATABASE_URL = "data.duckdb"
89
89
  engine = duckdb.connect(DATABASE_URL, read_only=True)"
90
90
  `;
91
91
 
92
- exports[`generateDatabaseCode > basic connections > iceberg configured catalog 1`] = `
92
+ exports[`generateDatabaseCode > basic connections > iceberg configured catalog > generated code 1`] = `
93
93
  "from pyiceberg.catalog import load_catalog
94
94
 
95
95
  catalog = load_catalog("my_catalog")"
96
96
  `;
97
97
 
98
- exports[`generateDatabaseCode > basic connections > iceberg dynamodb 1`] = `
98
+ exports[`generateDatabaseCode > basic connections > iceberg dynamodb > generated code 1`] = `
99
99
  "from pyiceberg.catalog.dynamodb import DynamoDBCatalog
100
100
 
101
101
  catalog = DynamoDBCatalog(
@@ -110,7 +110,7 @@ catalog = DynamoDBCatalog(
110
110
  )"
111
111
  `;
112
112
 
113
- exports[`generateDatabaseCode > basic connections > iceberg glue 1`] = `
113
+ exports[`generateDatabaseCode > basic connections > iceberg glue > generated code 1`] = `
114
114
  "from pyiceberg.catalog.glue import GlueCatalog
115
115
 
116
116
  catalog = GlueCatalog(
@@ -121,7 +121,7 @@ catalog = GlueCatalog(
121
121
  )"
122
122
  `;
123
123
 
124
- exports[`generateDatabaseCode > basic connections > iceberg hive 1`] = `
124
+ exports[`generateDatabaseCode > basic connections > iceberg hive > generated code 1`] = `
125
125
  "from pyiceberg.catalog.hive import HiveCatalog
126
126
 
127
127
  catalog = HiveCatalog(
@@ -133,7 +133,7 @@ catalog = HiveCatalog(
133
133
  )"
134
134
  `;
135
135
 
136
- exports[`generateDatabaseCode > basic connections > iceberg rest 1`] = `
136
+ exports[`generateDatabaseCode > basic connections > iceberg rest > generated code 1`] = `
137
137
  "from pyiceberg.catalog.rest import RestCatalog
138
138
 
139
139
  catalog = RestCatalog(
@@ -145,7 +145,7 @@ catalog = RestCatalog(
145
145
  )"
146
146
  `;
147
147
 
148
- exports[`generateDatabaseCode > basic connections > iceberg sql 1`] = `
148
+ exports[`generateDatabaseCode > basic connections > iceberg sql > generated code 1`] = `
149
149
  "from pyiceberg.catalog.sql import SqlCatalog
150
150
 
151
151
  catalog = SqlCatalog(
@@ -157,7 +157,7 @@ catalog = SqlCatalog(
157
157
  )"
158
158
  `;
159
159
 
160
- exports[`generateDatabaseCode > basic connections > motherduck 1`] = `
160
+ exports[`generateDatabaseCode > basic connections > motherduck > generated code 1`] = `
161
161
  "import duckdb
162
162
  import os
163
163
 
@@ -165,7 +165,7 @@ _password = os.environ.get("MOTHERDUCK_TOKEN", "my_token")
165
165
  conn = duckdb.connect("md:my_db", config={"motherduck_token": _password})"
166
166
  `;
167
167
 
168
- exports[`generateDatabaseCode > basic connections > mysql with SQLAlchemy 1`] = `
168
+ exports[`generateDatabaseCode > basic connections > mysql with SQLAlchemy > generated code 1`] = `
169
169
  "import os
170
170
  import sqlalchemy
171
171
 
@@ -174,7 +174,7 @@ DATABASE_URL = f"mysql+pymysql://user:{_password}@localhost:3306/test"
174
174
  engine = sqlalchemy.create_engine(DATABASE_URL, connect_args={'ssl': {'ssl-mode': 'preferred'}})"
175
175
  `;
176
176
 
177
- exports[`generateDatabaseCode > basic connections > mysql with SQLModel 1`] = `
177
+ exports[`generateDatabaseCode > basic connections > mysql with SQLModel > generated code 1`] = `
178
178
  "import os
179
179
  import sqlmodel
180
180
 
@@ -183,7 +183,7 @@ DATABASE_URL = f"mysql+pymysql://user:{_password}@localhost:3306/test"
183
183
  engine = sqlmodel.create_engine(DATABASE_URL, connect_args={'ssl': {'ssl-mode': 'preferred'}})"
184
184
  `;
185
185
 
186
- exports[`generateDatabaseCode > basic connections > postgres with SQLAlchemy 1`] = `
186
+ exports[`generateDatabaseCode > basic connections > postgres with SQLAlchemy > generated code 1`] = `
187
187
  "import os
188
188
  import sqlalchemy
189
189
 
@@ -192,7 +192,7 @@ DATABASE_URL = f"postgresql://user:{_password}@localhost:5432/test"
192
192
  engine = sqlalchemy.create_engine(DATABASE_URL, connect_args={'sslmode': 'require'})"
193
193
  `;
194
194
 
195
- exports[`generateDatabaseCode > basic connections > postgres with SQLModel 1`] = `
195
+ exports[`generateDatabaseCode > basic connections > postgres with SQLModel > generated code 1`] = `
196
196
  "import os
197
197
  import sqlmodel
198
198
 
@@ -201,14 +201,14 @@ DATABASE_URL = f"postgresql://user:{_password}@localhost:5432/test"
201
201
  engine = sqlmodel.create_engine(DATABASE_URL, connect_args={'sslmode': 'require'})"
202
202
  `;
203
203
 
204
- exports[`generateDatabaseCode > basic connections > pyspark 1`] = `
204
+ exports[`generateDatabaseCode > basic connections > pyspark > generated code 1`] = `
205
205
  "from pyspark.sql import SparkSession
206
206
  import ibis
207
207
 
208
208
  con = ibis.pyspark.connect()"
209
209
  `;
210
210
 
211
- exports[`generateDatabaseCode > basic connections > pyspark with session 1`] = `
211
+ exports[`generateDatabaseCode > basic connections > pyspark with session > generated code 1`] = `
212
212
  "from pyspark.sql import SparkSession
213
213
  import ibis
214
214
 
@@ -216,7 +216,7 @@ session = SparkSession.builder.remote(f"sc://localhost:15002").getOrCreate()
216
216
  con = ibis.pyspark.connect(session)"
217
217
  `;
218
218
 
219
- exports[`generateDatabaseCode > basic connections > redshift with DB credentials 1`] = `
219
+ exports[`generateDatabaseCode > basic connections > redshift with DB credentials > generated code 1`] = `
220
220
  "import os
221
221
  import redshift_connector
222
222
 
@@ -230,7 +230,7 @@ con = redshift_connector.connect(
230
230
  )"
231
231
  `;
232
232
 
233
- exports[`generateDatabaseCode > basic connections > redshift with IAM credentials 1`] = `
233
+ exports[`generateDatabaseCode > basic connections > redshift with IAM credentials > generated code 1`] = `
234
234
  "import redshift_connector
235
235
 
236
236
  con = redshift_connector.connect(
@@ -245,7 +245,7 @@ con = redshift_connector.connect(
245
245
  )"
246
246
  `;
247
247
 
248
- exports[`generateDatabaseCode > basic connections > snowflake 1`] = `
248
+ exports[`generateDatabaseCode > basic connections > snowflake > generated code 1`] = `
249
249
  "from snowflake.sqlalchemy import URL
250
250
  import os
251
251
  import sqlmodel
@@ -264,7 +264,7 @@ engine = sqlmodel.create_engine(
264
264
  )"
265
265
  `;
266
266
 
267
- exports[`generateDatabaseCode > basic connections > snowflake with MFA 1`] = `
267
+ exports[`generateDatabaseCode > basic connections > snowflake with MFA > generated code 1`] = `
268
268
  "from snowflake.sqlalchemy import URL
269
269
  import os
270
270
  import sqlmodel
@@ -284,7 +284,7 @@ engine = sqlmodel.create_engine(
284
284
  )"
285
285
  `;
286
286
 
287
- exports[`generateDatabaseCode > basic connections > snowflake with OAuth/PAT 1`] = `
287
+ exports[`generateDatabaseCode > basic connections > snowflake with OAuth/PAT > generated code 1`] = `
288
288
  "from snowflake.sqlalchemy import URL
289
289
  import os
290
290
  import sqlmodel
@@ -303,7 +303,7 @@ engine = sqlmodel.create_engine(
303
303
  )"
304
304
  `;
305
305
 
306
- exports[`generateDatabaseCode > basic connections > snowflake with SSO 1`] = `
306
+ exports[`generateDatabaseCode > basic connections > snowflake with SSO > generated code 1`] = `
307
307
  "from snowflake.sqlalchemy import URL
308
308
  import sqlmodel
309
309
 
@@ -320,7 +320,7 @@ engine = sqlmodel.create_engine(
320
320
  )"
321
321
  `;
322
322
 
323
- exports[`generateDatabaseCode > basic connections > snowflake with key pair 1`] = `
323
+ exports[`generateDatabaseCode > basic connections > snowflake with key pair > generated code 1`] = `
324
324
  "from snowflake.sqlalchemy import URL
325
325
  import os
326
326
  import sqlmodel
@@ -343,14 +343,14 @@ engine = sqlmodel.create_engine(
343
343
  )"
344
344
  `;
345
345
 
346
- exports[`generateDatabaseCode > basic connections > sqlite 1`] = `
346
+ exports[`generateDatabaseCode > basic connections > sqlite > generated code 1`] = `
347
347
  "import sqlmodel
348
348
 
349
349
  DATABASE_URL = "sqlite:////path/to/db.sqlite"
350
350
  engine = sqlmodel.create_engine(DATABASE_URL)"
351
351
  `;
352
352
 
353
- exports[`generateDatabaseCode > basic connections > supabase with SQLModel 1`] = `
353
+ exports[`generateDatabaseCode > basic connections > supabase with SQLModel > generated code 1`] = `
354
354
  "import os
355
355
  import sqlmodel
356
356
 
@@ -359,7 +359,7 @@ DATABASE_URL = f"postgresql+psycopg2://postgres:{_password}@db.example.supabase.
359
359
  engine = sqlmodel.create_engine(DATABASE_URL)"
360
360
  `;
361
361
 
362
- exports[`generateDatabaseCode > basic connections > supabase with client-side pooling disabled 1`] = `
362
+ exports[`generateDatabaseCode > basic connections > supabase with client-side pooling disabled > generated code 1`] = `
363
363
  "from sqlalchemy.pool import NullPool
364
364
  import os
365
365
  import sqlalchemy
@@ -369,7 +369,7 @@ DATABASE_URL = f"postgresql+psycopg2://postgres.session:{_password}@db.example.s
369
369
  engine = sqlalchemy.create_engine(DATABASE_URL, poolclass=NullPool)"
370
370
  `;
371
371
 
372
- exports[`generateDatabaseCode > basic connections > timeplus 1`] = `
372
+ exports[`generateDatabaseCode > basic connections > timeplus > generated code 1`] = `
373
373
  "import os
374
374
  import sqlalchemy
375
375
 
@@ -378,7 +378,7 @@ DATABASE_URL = f"timeplus://default:{_password}@localhost:8123"
378
378
  engine = sqlalchemy.create_engine(DATABASE_URL)"
379
379
  `;
380
380
 
381
- exports[`generateDatabaseCode > basic connections > trino 1`] = `
381
+ exports[`generateDatabaseCode > basic connections > trino > generated code 1`] = `
382
382
  "import os
383
383
  import sqlmodel
384
384
  import trino.sqlalchemy
@@ -387,7 +387,7 @@ _password = os.environ.get("TRINO_PASSWORD", "pass")
387
387
  engine = sqlmodel.create_engine(f"trino://user:{_password}@localhost:8080/test")"
388
388
  `;
389
389
 
390
- exports[`generateDatabaseCode > connections with secrets > bigquery with credentials as secret 1`] = `
390
+ exports[`generateDatabaseCode > connections with secrets > bigquery with credentials as secret > generated code 1`] = `
391
391
  "import json
392
392
  import os
393
393
  import sqlmodel
@@ -398,13 +398,13 @@ credentials = json.loads(r"""{"type": "service_account", "project_id": "test"}""
398
398
  engine = sqlmodel.create_engine(f"bigquery://{_project}/{_dataset}", credentials_info=credentials)"
399
399
  `;
400
400
 
401
- exports[`generateDatabaseCode > connections with secrets > bigquery with credentials_json as a file path 1`] = `
401
+ exports[`generateDatabaseCode > connections with secrets > bigquery with credentials_json as a file path > generated code 1`] = `
402
402
  "import sqlmodel
403
403
 
404
404
  engine = sqlmodel.create_engine(f"bigquery://my-project/my_dataset", credentials_path="/etc/secrets/bigquery.json")"
405
405
  `;
406
406
 
407
- exports[`generateDatabaseCode > connections with secrets > bigquery with credentials_json as secret 1`] = `
407
+ exports[`generateDatabaseCode > connections with secrets > bigquery with credentials_json as secret > generated code 1`] = `
408
408
  "import json
409
409
  import os
410
410
  import sqlmodel
@@ -414,7 +414,7 @@ credentials = json.loads(_credentials_json)
414
414
  engine = sqlmodel.create_engine(f"bigquery://my-project/my_dataset", credentials_info=credentials)"
415
415
  `;
416
416
 
417
- exports[`generateDatabaseCode > connections with secrets > clickhouse with all connection details as secrets 1`] = `
417
+ exports[`generateDatabaseCode > connections with secrets > clickhouse with all connection details as secrets > generated code 1`] = `
418
418
  "import clickhouse_connect
419
419
  import os
420
420
 
@@ -430,7 +430,7 @@ engine = clickhouse_connect.get_client(
430
430
  )"
431
431
  `;
432
432
 
433
- exports[`generateDatabaseCode > connections with secrets > motherduck with token as secret 1`] = `
433
+ exports[`generateDatabaseCode > connections with secrets > motherduck with token as secret > generated code 1`] = `
434
434
  "import duckdb
435
435
  import os
436
436
 
@@ -438,7 +438,7 @@ _password = os.environ.get("ENV_TOKEN")
438
438
  conn = duckdb.connect("md:my_db", config={"motherduck_token": _password})"
439
439
  `;
440
440
 
441
- exports[`generateDatabaseCode > connections with secrets > mysql with username and password as secrets 1`] = `
441
+ exports[`generateDatabaseCode > connections with secrets > mysql with username and password as secrets > generated code 1`] = `
442
442
  "import os
443
443
  import sqlalchemy
444
444
 
@@ -448,7 +448,7 @@ DATABASE_URL = f"mysql+pymysql://{_username}:{_password}@localhost:3306/test"
448
448
  engine = sqlalchemy.create_engine(DATABASE_URL, connect_args={'ssl': {'ssl-mode': 'preferred'}})"
449
449
  `;
450
450
 
451
- exports[`generateDatabaseCode > connections with secrets > postgres with password as secret 1`] = `
451
+ exports[`generateDatabaseCode > connections with secrets > postgres with password as secret > generated code 1`] = `
452
452
  "import os
453
453
  import sqlmodel
454
454
 
@@ -458,7 +458,7 @@ DATABASE_URL = f"postgresql://user:{_password}@{_host}:5432/test"
458
458
  engine = sqlmodel.create_engine(DATABASE_URL, connect_args={'sslmode': 'require'})"
459
459
  `;
460
460
 
461
- exports[`generateDatabaseCode > connections with secrets > snowflake with multiple secrets 1`] = `
461
+ exports[`generateDatabaseCode > connections with secrets > snowflake with multiple secrets > generated code 1`] = `
462
462
  "from snowflake.sqlalchemy import URL
463
463
  import os
464
464
  import sqlmodel
@@ -479,7 +479,7 @@ engine = sqlmodel.create_engine(
479
479
  )"
480
480
  `;
481
481
 
482
- exports[`generateDatabaseCode > connections with secrets > supabase with all connection details as secrets 1`] = `
482
+ exports[`generateDatabaseCode > connections with secrets > supabase with all connection details as secrets > generated code 1`] = `
483
483
  "import os
484
484
  import sqlalchemy
485
485
 
@@ -491,7 +491,7 @@ DATABASE_URL = f"postgresql+psycopg2://{_username}:{_password}@{_host}:5432/{_da
491
491
  engine = sqlalchemy.create_engine(DATABASE_URL)"
492
492
  `;
493
493
 
494
- exports[`generateDatabaseCode > connections with secrets > timeplus with all connection details as secrets 1`] = `
494
+ exports[`generateDatabaseCode > connections with secrets > timeplus with all connection details as secrets > generated code 1`] = `
495
495
  "import os
496
496
  import sqlalchemy
497
497
 
@@ -502,7 +502,7 @@ DATABASE_URL = f"timeplus://{_username}:{_password}@{_host}:8123"
502
502
  engine = sqlalchemy.create_engine(DATABASE_URL)"
503
503
  `;
504
504
 
505
- exports[`generateDatabaseCode > edge cases > ENV with special chars SQLModel 1`] = `
505
+ exports[`generateDatabaseCode > edge cases > ENV with special chars SQLModel > generated code 1`] = `
506
506
  "import os
507
507
  import sqlmodel
508
508
 
@@ -511,7 +511,7 @@ DATABASE_URL = f"postgresql://user-name.special:{_password}@localhost:5432/test-
511
511
  engine = sqlmodel.create_engine(DATABASE_URL, connect_args={'sslmode': 'require'})"
512
512
  `;
513
513
 
514
- exports[`generateDatabaseCode > edge cases > bigquery with long credentials 1`] = `
514
+ exports[`generateDatabaseCode > edge cases > bigquery with long credentials > generated code 1`] = `
515
515
  "import json
516
516
  import sqlmodel
517
517
 
@@ -519,13 +519,13 @@ credentials = json.loads(r"""xxxxxxxxxx""")
519
519
  engine = sqlmodel.create_engine(f"bigquery://my-project/my_dataset", credentials_info=credentials)"
520
520
  `;
521
521
 
522
- exports[`generateDatabaseCode > edge cases > chdb with no database 1`] = `
522
+ exports[`generateDatabaseCode > edge cases > chdb with no database > generated code 1`] = `
523
523
  "import chdb
524
524
 
525
525
  engine = chdb.connect("", read_only=False)"
526
526
  `;
527
527
 
528
- exports[`generateDatabaseCode > edge cases > clickhouse connect with minimal config 1`] = `
528
+ exports[`generateDatabaseCode > edge cases > clickhouse connect with minimal config > generated code 1`] = `
529
529
  "import clickhouse_connect
530
530
 
531
531
  engine = clickhouse_connect.get_client(
@@ -535,7 +535,7 @@ engine = clickhouse_connect.get_client(
535
535
  )"
536
536
  `;
537
537
 
538
- exports[`generateDatabaseCode > edge cases > clickhouse with https 1`] = `
538
+ exports[`generateDatabaseCode > edge cases > clickhouse with https > generated code 1`] = `
539
539
  "import clickhouse_connect
540
540
  import os
541
541
 
@@ -549,7 +549,7 @@ engine = clickhouse_connect.get_client(
549
549
  )"
550
550
  `;
551
551
 
552
- exports[`generateDatabaseCode > edge cases > clickhouse with no port 1`] = `
552
+ exports[`generateDatabaseCode > edge cases > clickhouse with no port > generated code 1`] = `
553
553
  "import clickhouse_connect
554
554
  import os
555
555
 
@@ -562,7 +562,7 @@ engine = clickhouse_connect.get_client(
562
562
  )"
563
563
  `;
564
564
 
565
- exports[`generateDatabaseCode > edge cases > clickhouse with proxy_path 1`] = `
565
+ exports[`generateDatabaseCode > edge cases > clickhouse with proxy_path > generated code 1`] = `
566
566
  "import clickhouse_connect
567
567
  import os
568
568
 
@@ -577,14 +577,14 @@ engine = clickhouse_connect.get_client(
577
577
  )"
578
578
  `;
579
579
 
580
- exports[`generateDatabaseCode > edge cases > duckdb with relative path 1`] = `
580
+ exports[`generateDatabaseCode > edge cases > duckdb with relative path > generated code 1`] = `
581
581
  "import sqlmodel
582
582
 
583
583
  DATABASE_URL = "./relative/path/db.duckdb"
584
584
  engine = sqlmodel.connect(DATABASE_URL, read_only=False)"
585
585
  `;
586
586
 
587
- exports[`generateDatabaseCode > edge cases > motherduck with special chars in database name 1`] = `
587
+ exports[`generateDatabaseCode > edge cases > motherduck with special chars in database name > generated code 1`] = `
588
588
  "import duckdb
589
589
  import os
590
590
 
@@ -592,7 +592,7 @@ _password = os.environ.get("MOTHERDUCK_TOKEN", "my_token")
592
592
  conn = duckdb.connect("md:test-db.special", config={"motherduck_token": _password})"
593
593
  `;
594
594
 
595
- exports[`generateDatabaseCode > edge cases > mysql with extremely long database name 1`] = `
595
+ exports[`generateDatabaseCode > edge cases > mysql with extremely long database name > generated code 1`] = `
596
596
  "import os
597
597
  import sqlmodel
598
598
 
@@ -601,7 +601,7 @@ DATABASE_URL = f"mysql+pymysql://user:{_password}@localhost:3306/xxxxxxxxxxxxxxx
601
601
  engine = sqlmodel.create_engine(DATABASE_URL, connect_args={'ssl': {'ssl-mode': 'preferred'}})"
602
602
  `;
603
603
 
604
- exports[`generateDatabaseCode > edge cases > mysql with max port 1`] = `
604
+ exports[`generateDatabaseCode > edge cases > mysql with max port > generated code 1`] = `
605
605
  "import os
606
606
  import sqlmodel
607
607
 
@@ -610,7 +610,7 @@ DATABASE_URL = f"mysql+pymysql://user:{_password}@localhost:65535/test"
610
610
  engine = sqlmodel.create_engine(DATABASE_URL, connect_args={'ssl': {'ssl-mode': 'preferred'}})"
611
611
  `;
612
612
 
613
- exports[`generateDatabaseCode > edge cases > postgres with IPv6 1`] = `
613
+ exports[`generateDatabaseCode > edge cases > postgres with IPv6 > generated code 1`] = `
614
614
  "import os
615
615
  import sqlmodel
616
616
 
@@ -619,7 +619,7 @@ DATABASE_URL = f"postgresql://user:{_password}@2001:0db8:85a3:0000:0000:8a2e:037
619
619
  engine = sqlmodel.create_engine(DATABASE_URL, connect_args={'sslmode': 'require'})"
620
620
  `;
621
621
 
622
- exports[`generateDatabaseCode > edge cases > postgres with URL-encoded characters 1`] = `
622
+ exports[`generateDatabaseCode > edge cases > postgres with URL-encoded characters > generated code 1`] = `
623
623
  "import os
624
624
  import sqlmodel
625
625
 
@@ -628,7 +628,7 @@ DATABASE_URL = f"postgresql://user%20name:{_password}@localhost:5432/test%20db"
628
628
  engine = sqlmodel.create_engine(DATABASE_URL, connect_args={'sslmode': 'require'})"
629
629
  `;
630
630
 
631
- exports[`generateDatabaseCode > edge cases > postgres with domain socket 1`] = `
631
+ exports[`generateDatabaseCode > edge cases > postgres with domain socket > generated code 1`] = `
632
632
  "import os
633
633
  import sqlmodel
634
634
 
@@ -637,7 +637,7 @@ DATABASE_URL = f"postgresql://user:{_password}@/var/run/postgresql:/test"
637
637
  engine = sqlmodel.create_engine(DATABASE_URL, connect_args={'sslmode': 'require'})"
638
638
  `;
639
639
 
640
- exports[`generateDatabaseCode > edge cases > postgres with non-standard port 1`] = `
640
+ exports[`generateDatabaseCode > edge cases > postgres with non-standard port > generated code 1`] = `
641
641
  "import os
642
642
  import sqlmodel
643
643
 
@@ -646,7 +646,7 @@ DATABASE_URL = f"postgresql://user:{_password}@localhost:54321/test"
646
646
  engine = sqlmodel.create_engine(DATABASE_URL, connect_args={'sslmode': 'require'})"
647
647
  `;
648
648
 
649
- exports[`generateDatabaseCode > edge cases > postgres with special chars SQLAlchemy 1`] = `
649
+ exports[`generateDatabaseCode > edge cases > postgres with special chars SQLAlchemy > generated code 1`] = `
650
650
  "import os
651
651
  import sqlalchemy
652
652
 
@@ -655,7 +655,7 @@ DATABASE_URL = f"postgresql://user-name.special:{_password}@localhost:5432/test-
655
655
  engine = sqlalchemy.create_engine(DATABASE_URL, connect_args={'sslmode': 'require'})"
656
656
  `;
657
657
 
658
- exports[`generateDatabaseCode > edge cases > postgres with unicode 1`] = `
658
+ exports[`generateDatabaseCode > edge cases > postgres with unicode > generated code 1`] = `
659
659
  "import os
660
660
  import sqlmodel
661
661
 
@@ -664,7 +664,7 @@ DATABASE_URL = f"postgresql://用户:{_password}@localhost:5432/测试数据库"
664
664
  engine = sqlmodel.create_engine(DATABASE_URL, connect_args={'sslmode': 'require'})"
665
665
  `;
666
666
 
667
- exports[`generateDatabaseCode > edge cases > snowflake key pair without passphrase 1`] = `
667
+ exports[`generateDatabaseCode > edge cases > snowflake key pair without passphrase > generated code 1`] = `
668
668
  "from snowflake.sqlalchemy import URL
669
669
  import sqlmodel
670
670
 
@@ -684,7 +684,7 @@ engine = sqlmodel.create_engine(
684
684
  )"
685
685
  `;
686
686
 
687
- exports[`generateDatabaseCode > edge cases > snowflake with all optional fields filled 1`] = `
687
+ exports[`generateDatabaseCode > edge cases > snowflake with all optional fields filled > generated code 1`] = `
688
688
  "from snowflake.sqlalchemy import URL
689
689
  import os
690
690
  import sqlmodel
@@ -703,7 +703,7 @@ engine = sqlmodel.create_engine(
703
703
  )"
704
704
  `;
705
705
 
706
- exports[`generateDatabaseCode > edge cases > snowflake with minimal config SQLModel 1`] = `
706
+ exports[`generateDatabaseCode > edge cases > snowflake with minimal config SQLModel > generated code 1`] = `
707
707
  "from snowflake.sqlalchemy import URL
708
708
  import os
709
709
  import sqlmodel
@@ -719,14 +719,14 @@ engine = sqlmodel.create_engine(
719
719
  )"
720
720
  `;
721
721
 
722
- exports[`generateDatabaseCode > edge cases > sqlite with empty path 1`] = `
722
+ exports[`generateDatabaseCode > edge cases > sqlite with empty path > generated code 1`] = `
723
723
  "import sqlmodel
724
724
 
725
725
  DATABASE_URL = "sqlite:///"
726
726
  engine = sqlmodel.create_engine(DATABASE_URL)"
727
727
  `;
728
728
 
729
- exports[`generateDatabaseCode > edge cases > timeplus connect with minimal config 1`] = `
729
+ exports[`generateDatabaseCode > edge cases > timeplus connect with minimal config > generated code 1`] = `
730
730
  "import os
731
731
  import sqlalchemy
732
732
 
@@ -735,7 +735,7 @@ DATABASE_URL = f"timeplus://default:{_password}@localhost:"
735
735
  engine = sqlalchemy.create_engine(DATABASE_URL)"
736
736
  `;
737
737
 
738
- exports[`generateDatabaseCode > edge cases > timeplus with no port 1`] = `
738
+ exports[`generateDatabaseCode > edge cases > timeplus with no port > generated code 1`] = `
739
739
  "import os
740
740
  import sqlalchemy
741
741
 
@@ -744,7 +744,7 @@ DATABASE_URL = f"timeplus://default:{_password}@localhost:"
744
744
  engine = sqlalchemy.create_engine(DATABASE_URL)"
745
745
  `;
746
746
 
747
- exports[`generateDatabaseCode > edge cases > trino with async support 1`] = `
747
+ exports[`generateDatabaseCode > edge cases > trino with async support > generated code 1`] = `
748
748
  "import aiotrino
749
749
  import os
750
750
  import sqlalchemy
@@ -753,15 +753,7 @@ _password = os.environ.get("TRINO_PASSWORD", "pass")
753
753
  engine = sqlalchemy.create_engine(f"aiotrino://user:{_password}@localhost:8080/test")"
754
754
  `;
755
755
 
756
- exports[`generateDatabaseCode > security cases > bigquery with malformed JSON 1`] = `
757
- "import json
758
- import sqlmodel
759
-
760
- credentials = json.loads(r"""{"type": "service_account", "project_id": "test"""")
761
- engine = sqlmodel.create_engine(f"bigquery://my-project/my_dataset", credentials_info=credentials)"
762
- `;
763
-
764
- exports[`generateDatabaseCode > security cases > bigquery with malformed JSON 2`] = `
756
+ exports[`generateDatabaseCode > security cases > bigquery with malformed JSON > sqlalchemy 1`] = `
765
757
  "import json
766
758
  import sqlalchemy
767
759
 
@@ -769,16 +761,15 @@ credentials = json.loads(r"""{"type": "service_account", "project_id": "test""""
769
761
  engine = sqlalchemy.create_engine(f"bigquery://my-project/my_dataset", credentials_info=credentials)"
770
762
  `;
771
763
 
772
- exports[`generateDatabaseCode > security cases > mysql with very long password 1`] = `
773
- "import os
764
+ exports[`generateDatabaseCode > security cases > bigquery with malformed JSON > sqlmodel 1`] = `
765
+ "import json
774
766
  import sqlmodel
775
767
 
776
- _password = os.environ.get("MYSQL_PASSWORD", "xxxxxxxxxx")
777
- DATABASE_URL = f"mysql+pymysql://user:{_password}@localhost:3306/test"
778
- engine = sqlmodel.create_engine(DATABASE_URL, connect_args={'ssl': {'ssl-mode': 'preferred'}})"
768
+ credentials = json.loads(r"""{"type": "service_account", "project_id": "test"""")
769
+ engine = sqlmodel.create_engine(f"bigquery://my-project/my_dataset", credentials_info=credentials)"
779
770
  `;
780
771
 
781
- exports[`generateDatabaseCode > security cases > mysql with very long password 2`] = `
772
+ exports[`generateDatabaseCode > security cases > mysql with very long password > sqlalchemy 1`] = `
782
773
  "import os
783
774
  import sqlalchemy
784
775
 
@@ -787,16 +778,16 @@ DATABASE_URL = f"mysql+pymysql://user:{_password}@localhost:3306/test"
787
778
  engine = sqlalchemy.create_engine(DATABASE_URL, connect_args={'ssl': {'ssl-mode': 'preferred'}})"
788
779
  `;
789
780
 
790
- exports[`generateDatabaseCode > security cases > postgres with SQL injection attempt in database name 1`] = `
781
+ exports[`generateDatabaseCode > security cases > mysql with very long password > sqlmodel 1`] = `
791
782
  "import os
792
783
  import sqlmodel
793
784
 
794
- _password = os.environ.get("POSTGRES_PASSWORD", "pass")
795
- DATABASE_URL = f"postgresql://user:{_password}@localhost:5432/db'; DROP TABLE users;--"
796
- engine = sqlmodel.create_engine(DATABASE_URL, connect_args={'sslmode': 'require'})"
785
+ _password = os.environ.get("MYSQL_PASSWORD", "xxxxxxxxxx")
786
+ DATABASE_URL = f"mysql+pymysql://user:{_password}@localhost:3306/test"
787
+ engine = sqlmodel.create_engine(DATABASE_URL, connect_args={'ssl': {'ssl-mode': 'preferred'}})"
797
788
  `;
798
789
 
799
- exports[`generateDatabaseCode > security cases > postgres with SQL injection attempt in database name 2`] = `
790
+ exports[`generateDatabaseCode > security cases > postgres with SQL injection attempt in database name > sqlalchemy 1`] = `
800
791
  "import os
801
792
  import sqlalchemy
802
793
 
@@ -805,16 +796,16 @@ DATABASE_URL = f"postgresql://user:{_password}@localhost:5432/db'; DROP TABLE us
805
796
  engine = sqlalchemy.create_engine(DATABASE_URL, connect_args={'sslmode': 'require'})"
806
797
  `;
807
798
 
808
- exports[`generateDatabaseCode > security cases > postgres with empty password 1`] = `
799
+ exports[`generateDatabaseCode > security cases > postgres with SQL injection attempt in database name > sqlmodel 1`] = `
809
800
  "import os
810
801
  import sqlmodel
811
802
 
812
- _password = os.environ.get("POSTGRES_PASSWORD", "")
813
- DATABASE_URL = f"postgresql://user:{_password}@localhost:5432/test"
803
+ _password = os.environ.get("POSTGRES_PASSWORD", "pass")
804
+ DATABASE_URL = f"postgresql://user:{_password}@localhost:5432/db'; DROP TABLE users;--"
814
805
  engine = sqlmodel.create_engine(DATABASE_URL, connect_args={'sslmode': 'require'})"
815
806
  `;
816
807
 
817
- exports[`generateDatabaseCode > security cases > postgres with empty password 2`] = `
808
+ exports[`generateDatabaseCode > security cases > postgres with empty password > sqlalchemy 1`] = `
818
809
  "import os
819
810
  import sqlalchemy
820
811
 
@@ -823,13 +814,22 @@ DATABASE_URL = f"postgresql://user:{_password}@localhost:5432/test"
823
814
  engine = sqlalchemy.create_engine(DATABASE_URL, connect_args={'sslmode': 'require'})"
824
815
  `;
825
816
 
826
- exports[`generateDatabaseCode > security cases > snowflake with sensitive info in account 1`] = `
817
+ exports[`generateDatabaseCode > security cases > postgres with empty password > sqlmodel 1`] = `
818
+ "import os
819
+ import sqlmodel
820
+
821
+ _password = os.environ.get("POSTGRES_PASSWORD", "")
822
+ DATABASE_URL = f"postgresql://user:{_password}@localhost:5432/test"
823
+ engine = sqlmodel.create_engine(DATABASE_URL, connect_args={'sslmode': 'require'})"
824
+ `;
825
+
826
+ exports[`generateDatabaseCode > security cases > snowflake with sensitive info in account > sqlalchemy 1`] = `
827
827
  "from snowflake.sqlalchemy import URL
828
828
  import os
829
- import sqlmodel
829
+ import sqlalchemy
830
830
 
831
831
  _password = os.environ.get("SNOWFLAKE_PASSWORD", "pass")
832
- engine = sqlmodel.create_engine(
832
+ engine = sqlalchemy.create_engine(
833
833
  URL(
834
834
  account="account-with-password123",
835
835
  database="db",
@@ -842,13 +842,13 @@ engine = sqlmodel.create_engine(
842
842
  )"
843
843
  `;
844
844
 
845
- exports[`generateDatabaseCode > security cases > snowflake with sensitive info in account 2`] = `
845
+ exports[`generateDatabaseCode > security cases > snowflake with sensitive info in account > sqlmodel 1`] = `
846
846
  "from snowflake.sqlalchemy import URL
847
847
  import os
848
- import sqlalchemy
848
+ import sqlmodel
849
849
 
850
850
  _password = os.environ.get("SNOWFLAKE_PASSWORD", "pass")
851
- engine = sqlalchemy.create_engine(
851
+ engine = sqlmodel.create_engine(
852
852
  URL(
853
853
  account="account-with-password123",
854
854
  database="db",