@marimo-team/islands 0.24.3-dev9 → 0.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{ConnectedDataExplorerComponent-C9OF_75w.js → ConnectedDataExplorerComponent-KVhjDMSe.js} +1066 -1066
- package/dist/ErrorBoundary-DnNkbB_U.js +200 -0
- package/dist/{ImageComparisonComponent-2a9TMMm2.js → ImageComparisonComponent-Dlm5aWnH.js} +4 -4
- package/dist/{Plot-C-9MQeGP.js → Plot-CTyjbQDT.js} +21032 -20666
- package/dist/_baseMerge-BiGRwuqv.js +165 -0
- package/dist/{abnfDiagram-N423BO3Z-CQKwzX8t.js → abnfDiagram-VCTEODGH-CpN0FRda.js} +17 -18
- package/dist/{any-language-editor-DmQ7dyCx.js → any-language-editor-CycIVIeP.js} +17 -17
- package/dist/arc-7ra3iNdN.js +81 -0
- package/dist/architecture-7GRP2DOG-BWLylgiA.js +3 -0
- package/dist/{architectureDiagram-T3A2C74G-CncrDpfa.js → architectureDiagram-5GKGNRK7-DDyj5SRB.js} +25 -25
- package/dist/assets/__vite-browser-external-C9iR87Zl.js +1 -0
- package/dist/assets/worker-D7hWi02M.js +109 -0
- package/dist/blockDiagram-I7D4REHJ-BbXEXJRu.js +1922 -0
- package/dist/{button-CKBkqR9J.js → button-DdXAm8iz.js} +5 -5
- package/dist/{c4Diagram-5PPSVZJV-DarUk3Yq.js → c4Diagram-7LVT6UL2-DcLsbQmR.js} +696 -668
- package/dist/{capabilities-CMBBJTcc.js → capabilities-B3ce_GNu.js} +1 -1
- package/dist/{html-to-image-BtFMe_Nq.js → cells-DYIkSxs6.js} +6757 -10137
- package/dist/{channel-CyiYUzJv.js → channel-B5XnTarr.js} +1 -1
- package/dist/chat-ui-BXj3uYjy.js +5786 -0
- package/dist/{check-CHig47QV.js → check-B7cIK6gb.js} +1 -1
- package/dist/{chunk-2Q5K7J3B-BMuJl2jB.js → chunk-2Q5K7J3B-BMkUkeuy.js} +2 -2
- package/dist/chunk-4HAMMTFA-D2qv8E0X.js +4188 -0
- package/dist/{chunk-5VM5RSS4-Bcq0ftdy.js → chunk-5VM5RSS4-DKsmPCL6.js} +2 -2
- package/dist/{chunk-NSK5VX7P-CDTMcJB0.js → chunk-75Z2AOVW-5_HsvXwr.js} +23 -23
- package/dist/{chunk-I66GZJ75-BqyTCAPf.js → chunk-DU6HZSFF-BUgAHvnM.js} +21 -4
- package/dist/{chunk-2GRJ4B5K-DgO8Qudq.js → chunk-F27PBJKO-DHmYWZXr.js} +4 -4
- package/dist/{chunk-KEIR6QF5-C4KX3XYh.js → chunk-FOHPRMQF-BpYR8RqP.js} +4 -4
- package/dist/{chunk-WRU74C26-BpWsbiDK.js → chunk-GMAD6QVW-Czynz8aA.js} +486 -258
- package/dist/chunk-GVQU2GXP-yQEdulRS.js +37 -0
- package/dist/{chunk-5RXB4S5H-tLNUVDdO.js → chunk-IMKFNOWR-BfwTebD0.js} +11 -11
- package/dist/{chunk-JWPE2WC7-BJwjGUnF.js → chunk-JWPE2WC7-DJvv1t8U.js} +2 -2
- package/dist/chunk-L3NEJ4N5-DwRWnDDK.js +245 -0
- package/dist/{chunk-7Z6QIM7H-Dc18hFxH.js → chunk-OSK3NFVY-BBKU_Ign.js} +222 -144
- package/dist/{chunk-W5SLKNZC-DLnvpEtV.js → chunk-P2QGCYS3-C0iGU29N.js} +20 -20
- package/dist/{chunk-KBJHAD2P-BuqWqkcW.js → chunk-POPQ4Y6H-BCbS3Ozc.js} +4 -4
- package/dist/{chunk-4I5QYGJK-DpytHuZQ.js → chunk-PWAF6VOD-CTFCL0jI.js} +4 -4
- package/dist/{chunk-JQJVKLGR-CgqCwe8E.js → chunk-SHT3W25Y-BspJEJ5H.js} +109 -63
- package/dist/{chunk-6Q2QTUOP-DmTcEBMn.js → chunk-SVP7TREG-DX3rFNTe.js} +5 -5
- package/dist/{chunk-GF5L2VYU-B0wgCQgS.js → chunk-TICWLB2K-fVF7Uujg.js} +13 -13
- package/dist/{chunk-XXDRQBXY-D73H4IN0.js → chunk-XXDRQBXY-Dnl5VBqG.js} +3 -3
- package/dist/{chunk-Y2CYZVJY-DoegUj_e.js → chunk-Y2CYZVJY-DKKS1VyV.js} +1 -1
- package/dist/{chunk-5FQGJX7Z-B85XCPv6.js → chunk-YOKDWASO-DrWbKnxA.js} +6925 -5460
- package/dist/classDiagram-ZZMXUADV-Fe-V14Sc.js +30 -0
- package/dist/classDiagram-v2-VYDZK3BY-xTDg7lOs.js +30 -0
- package/dist/code-visibility-DElzk_hh.js +138 -0
- package/dist/{common-Cv-4hMa0.js → common-B4-ih9IA.js} +8838 -12645
- package/dist/{compiler-runtime-CAH9RLw2.js → compiler-runtime-Cj8ZWiNS.js} +2 -2
- package/dist/copy-icon-CLdENY__.js +190 -0
- package/dist/{cose-bilkent-JH36ORCC-FUWHkXFX.js → cose-bilkent-JH36ORCC-_LyRKVqm.js} +2 -2
- package/dist/cubic-OaEBhQPK.js +1404 -0
- package/dist/cynefin-OW5HDTMX-obq-i80l.js +3 -0
- package/dist/{cynefinDiagram-MW4NZA55-BXSFK93J.js → cynefinDiagram-5FMLGOSQ-CFQrqzSX.js} +10 -10
- package/dist/{dagre-CGyalH38.js → dagre-BGSfXNEb.js} +678 -537
- package/dist/dagre-GXQ25YYZ-xHNAUTyG.js +425 -0
- package/dist/{data-grid-overlay-editor-DZM4BAaI.js → data-grid-overlay-editor-CRH6JQPE.js} +8 -9
- package/dist/{data-grid-types-BnZwWG8z.js → data-grid-types-BucVmDDp.js} +1 -1
- package/dist/{defaultLocale-DKaU_opG.js → defaultLocale-JI_lnoCe.js} +1 -1
- package/dist/{diagram-7IWD3JNH-BjfzDNvj.js → diagram-S7CK7UJ4-Bt1rPbAx.js} +40 -39
- package/dist/{diagram-UB23O5K3-DDg-7wLA.js → diagram-UQ7AKVKN-D1sq5FoZ.js} +10 -10
- package/dist/{diagram-B4RE2ZJO-CKccR9eE.js → diagram-VSXAHHWV-BKpmG23x.js} +10 -10
- package/dist/{diagram-Q27KOJAE-Zhz01ss7.js → diagram-VX7I27RA-BMwGFVD6.js} +21 -21
- package/dist/{diagram-LBJQPF4R-CJ-bOruh.js → diagram-Z3DM3KII--KLDR9Pl.js} +10 -10
- package/dist/dialog-CgNq6y9-.js +94 -0
- package/dist/{dist-dAqZAPcF.js → dist-1HDa70oE.js} +3 -3
- package/dist/{dist-Re9sOPOx.js → dist-9x1ZRe-e.js} +2 -2
- package/dist/{dist-DEeLqRlU.js → dist-B1vYLK28.js} +1 -1
- package/dist/{dist-C5Bn52W4.js → dist-B8D7McG3.js} +3 -3
- package/dist/{dist-_XvgytiS.js → dist-BHCHt1NI.js} +1 -1
- package/dist/{dist-CRjAdnqF.js → dist-BRxfaJgs.js} +3 -3
- package/dist/{dist-Byj2bV8o.js → dist-BVGtK7Ht.js} +1 -1
- package/dist/{dist-BIN5LKyE.js → dist-BaHjhkpZ.js} +2 -2
- package/dist/{dist-DVFbIwc5.js → dist-BtKIs9N-.js} +1 -1
- package/dist/{dist-BrQGcfQ9.js → dist-C2KzV-vf.js} +2 -2
- package/dist/{dist-DJFiGP2k.js → dist-C2wDlYdD.js} +2 -2
- package/dist/{dist-BVRM2y1P.js → dist-C8xMLVYi.js} +2 -2
- package/dist/dist-CMh_W4y4.js +538 -0
- package/dist/{extends-BPB6_lTK.js → dist-CO1AwwG_.js} +516 -561
- package/dist/{dist-BzN60Z2s.js → dist-CPGxfVGX.js} +1 -1
- package/dist/{dist-C7v-9nUK.js → dist-Cm3iAFMD.js} +3 -3
- package/dist/{dist-CGAxEiaM.js → dist-Cs2FijYk.js} +2 -2
- package/dist/{dist-hXd65f0_.js → dist-D1PpnuZB.js} +1 -1
- package/dist/{dist-VdvbxG72.js → dist-DHOTQar0.js} +1 -1
- package/dist/{dist-DcgzXCfy.js → dist-DPcEtqmG.js} +2 -2
- package/dist/{dist-D4Z_qdP4.js → dist-Df0wKI0F.js} +1 -1
- package/dist/{dist-qhLI-SHd.js → dist-DszxuxS1.js} +2 -2
- package/dist/{dist-BEmkrGoQ.js → dist-Kxgjxakw.js} +1 -1
- package/dist/{dist-BbSMhhD2.js → dist-KzZ7WELx.js} +2 -2
- package/dist/{dist-jWUab2d1.js → dist-lA1Cttkb.js} +1 -1
- package/dist/dropdown-menu-CZgjYSAh.js +4502 -0
- package/dist/{ebnfDiagram-BXEA7PRR-Dm75pCAS.js → ebnfDiagram-PWID7BFC-WnG4cvSQ.js} +17 -18
- package/dist/{erDiagram-JOGREHBK-rVDG3VSQ.js → erDiagram-RLTQ6QDP-DhzKiYHc.js} +1037 -798
- package/dist/error-banner-B94dcDmP.js +391 -0
- package/dist/error-entries-C0NsUqXl.js +56 -0
- package/dist/{esm-CR1nhb1c.js → esm-BElI3qKH.js} +22 -22
- package/dist/{esm-C1d0g6Bv.js → esm-G4Fhsgng.js} +51 -37
- package/dist/{esm-CesmlDrs.js → esm-h8f7-1CJ.js} +423 -423
- package/dist/eventmodeling-NTZA5JFV-D7nP7Uyu.js +3 -0
- package/dist/feedback-button-cQcMqpEP.js +380 -0
- package/dist/flowDiagram-HODETNUW-6dMdB8pR.js +16 -0
- package/dist/{formats-CslNOKy0.js → formats-BR5iGb4s.js} +8 -8
- package/dist/{ganttDiagram-PKOTCBZU-9D-LXF6P.js → ganttDiagram-EL5Y4UJY-DbzEBLbl.js} +15 -15
- package/dist/gitGraph-4MIJSDKK-Dy9uQXGh.js +3 -0
- package/dist/{gitGraphDiagram-DS77QQ5N-BfpsXTLf.js → gitGraphDiagram-WWUBYQGX-BMf0iKi1.js} +10 -10
- package/dist/{glide-data-editor-sPZ8fUFn.js → glide-data-editor-DYOxfSzI.js} +2143 -1910
- package/dist/{glide-utils-NShAPPtn.js → glide-utils-B3rUT5PI.js} +15 -15
- package/dist/globals-BOoLHa7X.js +19 -0
- package/dist/highlighted-body-KPVGNVTW-Ad3MKZ18.js +38 -0
- package/dist/html-to-image-CeYYvQNb.js +3272 -0
- package/dist/info-A6RAGUB7-DKoayiHY.js +3 -0
- package/dist/{infoDiagram-6WML65LV-DqCTXHVy.js → infoDiagram-27XIBGKW-BagtCX_5.js} +7 -7
- package/dist/{ishikawaDiagram-WSZJBQD7-BCUYmZ1v.js → ishikawaDiagram-5VMMS53U-DByDehYy.js} +8 -8
- package/dist/{journeyDiagram-NVQOT4AX-BXB6M4zN.js → journeyDiagram-3NMN7TZE-D2LcKDUO.js} +8 -8
- package/dist/{jsx-runtime-CpoKNRgu.js → jsx-runtime-DgDPJV9S.js} +1 -1
- package/dist/{kanban-definition-27J2QSJJ-CGRhrDUX.js → kanban-definition-UXKFOSKX-BxwkbBI_.js} +29 -29
- package/dist/katex-DFBiSucW.js +21840 -0
- package/dist/{label-lwzzBHUW.js → label-BJ49YTvk.js} +6 -6
- package/dist/{linear-D5r_1YqD.js → linear-Cnaq3Tfb.js} +4 -4
- package/dist/{loader-VZ__bv4g.js → loader-D2W4oM-3.js} +15 -15
- package/dist/main.js +8113 -13475
- package/dist/mermaid-DPNuhemn.js +3084 -0
- package/dist/mermaid-HWGCJPDP-DYCzSILp.js +2 -0
- package/dist/mermaid-parser.core-DxuSfYwJ.js +638 -0
- package/dist/{mhchem-BjwrxcV-.js → mhchem-DWCF06w9.js} +1 -1
- package/dist/{micromark-factory-space-DruVGzeG.js → micromark-factory-space-DGxAzmw8.js} +2 -2
- package/dist/{mindmap-definition-FAOFIHXS-C9gRhzZq.js → mindmap-definition-YA3MSWOX-Cgvojw3y.js} +17 -17
- package/dist/{node-sql-parser-DesT1xNw.js → node-sql-parser-BiZOJ-FS.js} +0 -3
- package/dist/{number-overlay-editor-De2CabLL.js → number-overlay-editor-DZp5bEmI.js} +5 -5
- package/dist/objectWithoutPropertiesLoose-BRDcTsfB.js +23 -0
- package/dist/packet-AYTQ26CC-Yw7ajchJ.js +3 -0
- package/dist/{pegDiagram-VL7TDLO6-Df9IUjMD.js → pegDiagram-XKGWAZYB-DahHhYyN.js} +19 -20
- package/dist/{pick-SnHlmIBN.js → pick-CJeoxYOS.js} +1 -1
- package/dist/pie-WAS4IAKB-BKdKOAkL.js +3 -0
- package/dist/{pieDiagram-7S7Q4E2Y-BmRzQ8ZP.js → pieDiagram-E7YTZNPT-CCtX0oCK.js} +29 -31
- package/dist/{process-output-CPy0YKUe.js → process-output-BCTjlyuH.js} +7 -6
- package/dist/purify.es-DgKyQviY.js +805 -0
- package/dist/{quadrantDiagram-CIZ2JOQS-wFBvWcxS.js → quadrantDiagram-AXDQQJYC-DftINo6g.js} +5 -5
- package/dist/radar-RG4KPBEZ-ScR_D_Ts.js +3 -0
- package/dist/railroad-74A4TZTK-DQvPSdo5.js +3 -0
- package/dist/railroad-abnf-HS5TGJTU-CsJQG2O8.js +3 -0
- package/dist/railroad-ebnf-LZEXJU2U-BgEobkSn.js +3 -0
- package/dist/railroad-peg-WCYAUIDC-DjLAjofI.js +3 -0
- package/dist/{railroadDiagram-AXF67PYL-DxbIatiN.js → railroadDiagram-O6MQD6OU-Du5NsPUb.js} +17 -18
- package/dist/{react-dom-C94wmq5w.js → react-dom-BUgJ-ab_.js} +3 -3
- package/dist/{react-DMWcHin-.js → react-ofJbxM4x.js} +2 -2
- package/dist/{react-vega-DSD5aT7_.js → react-vega-5AcMW8gG.js} +10012 -9369
- package/dist/{requirementDiagram-LRYGKXZP-X_x-Y713.js → requirementDiagram-BXWQKSXE-0pmmxL6_.js} +20 -19
- package/dist/{reveal-component-CVsYlb9J.js → reveal-component-C9h2Lubu.js} +1303 -1237
- package/dist/{sankeyDiagram-W5VNT64P-BYJALbbm.js → sankeyDiagram-P5KCCOFB-CDKR5TJH.js} +4 -4
- package/dist/{select-3qHpFKF9.js → select-C6plhmZr.js} +317 -562
- package/dist/{sequenceDiagram-SI44F4Z6-BiPBe3Sv.js → sequenceDiagram-WJ2MYXX4-DB-ChWwU.js} +11 -11
- package/dist/{sizeCapture-X5ZJPWSS-BKLDeh5H.js → sizeCapture-INFHLROL-Dx5SpkQF.js} +2 -2
- package/dist/{spec-CutWdqo3.js → spec-CAYwFeV6.js} +4 -4
- package/dist/{src-C31ngt98.js → src-CA_m4ONl.js} +298 -303
- package/dist/{stateDiagram-OKZ733FA-B7QyNBxH.js → stateDiagram-D77RDMKH-orN6AwMx.js} +19 -20
- package/dist/stateDiagram-v2-MP3YSRHH-o05_rJN8.js +30 -0
- package/dist/style.css +2 -2
- package/dist/{swimlanes-SLNWSIFB-B4f8VP3b.js → swimlanes-42K2YHIH-BkSDcqDT.js} +1501 -1591
- package/dist/swimlanesDiagram-VR7AAH4N-D_nFQfRc.js +30 -0
- package/dist/{swiper-component-C90YjhaV.js → swiper-component-IOUowglM.js} +39 -26
- package/dist/{time-aWGfjN8x.js → time-BieKwdYS.js} +42 -42
- package/dist/{timeline-definition-Z64GVDOM-Dacq_5lr.js → timeline-definition-24CTP7MA-BuqJUIRZ.js} +7 -7
- package/dist/{toDate-CpXBeDq0.js → toDate-WXg1yLcI.js} +7 -7
- package/dist/toast-DvY70eFX.js +1834 -0
- package/dist/tooltip-qB8NlSqV.js +1742 -0
- package/dist/treeView-Q6P3EWNA-DuRV97YF.js +3 -0
- package/dist/treemap-WGGIJYW6-AsLq-uwC.js +3 -0
- package/dist/use-restore-focus-D5D9xEjZ.js +5946 -0
- package/dist/{use-vega-container-remeasure-DUW4tRxq.js → use-vega-container-remeasure-4DwJbPWu.js} +2 -2
- package/dist/{useAsyncData-CH6-CgJF.js → useAsyncData-BD6AStMt.js} +3 -3
- package/dist/{useDateFormatter-Cp9Jdxls.js → useDateFormatter-BRTPsUK7.js} +8 -8
- package/dist/{useDeepCompareMemoize-JC87C_jO.js → useDeepCompareMemoize-D_HNdyvI.js} +2 -2
- package/dist/{useIframeCapabilities-De3C-9b4.js → useIframeCapabilities-CVtNkI3Y.js} +2 -2
- package/dist/{useLifecycle-B4RGlyf0.js → useLifecycle-DPgiiwwU.js} +6 -6
- package/dist/useNumberFormatter-BfDpa21j.js +251 -0
- package/dist/useTheme-DzXmYZ5V.js +904 -0
- package/dist/{vega-component-ovBXgp91.js → vega-component-D0QXopU8.js} +34 -34
- package/dist/{vega-embed-container-TJ5z5dZw.js → vega-embed-container-CbnTccZi.js} +6 -6
- package/dist/vega-loader.browser-D95WfUcj.js +1139 -0
- package/dist/{vennDiagram-T6HMQDX7-D-Rcq3Iu.js → vennDiagram-4TSXK5OY-CTUlJ2PK.js} +9 -9
- package/dist/wardley-WFR3VGLG-Na-tFhQJ.js +3 -0
- package/dist/{wardleyDiagram-T6FBY63Y-Z-Og7_Wd.js → wardleyDiagram-VM6X3IG4-3evLUb0M.js} +10 -10
- package/dist/{xychartDiagram-ELKLHX3M-BDJ2dITA.js → xychartDiagram-S5SC5T6Z-DL2E3K8-.js} +248 -139
- package/package.json +54 -57
- package/src/__mocks__/notebook.ts +1 -0
- package/src/__mocks__/requests.ts +7 -0
- package/src/__tests__/__snapshots__/CellStatus.test.tsx.snap +12 -12
- package/src/__tests__/fixtures/pair-preview.ts +19 -0
- package/src/__tests__/mount.test.ts +18 -0
- package/src/components/app-config/optional-features.tsx +6 -0
- package/src/components/chat/acp/__tests__/agent-panel-initialization.test.tsx +394 -0
- package/src/components/chat/acp/__tests__/agent-panel.test.tsx +272 -0
- package/src/components/chat/acp/__tests__/state.test.ts +2 -2
- package/src/components/chat/acp/agent-panel.tsx +115 -74
- package/src/components/chat/acp/state.ts +1 -1
- package/src/components/data-table/__tests__/filters.test.ts +21 -21
- package/src/components/data-table/charts/__tests__/spec.test.ts +5 -10
- package/src/components/data-table/column-explorer-panel/column-explorer.tsx +2 -6
- package/src/components/data-table/column-summary/chart-spec-model.tsx +1 -1
- package/src/components/data-table/columns.tsx +64 -67
- package/src/components/editor/RecoveryButton.tsx +1 -0
- package/src/components/editor/__tests__/dynamic-favicon.test.tsx +36 -2
- package/src/components/editor/actions/__tests__/pair-with-agent-commands.test.ts +115 -0
- package/src/components/editor/actions/__tests__/pair-with-agent-modal.test.tsx +218 -0
- package/src/components/editor/actions/pair-with-agent-commands.ts +46 -9
- package/src/components/editor/actions/pair-with-agent-modal.tsx +49 -23
- package/src/components/editor/ai/add-cell-with-ai.tsx +1 -0
- package/src/components/editor/ai/ai-completion-editor.tsx +3 -1
- package/src/components/editor/alerts/__tests__/connection-notice.test.tsx +186 -0
- package/src/components/editor/alerts/__tests__/startup-progress.test.tsx +185 -0
- package/src/components/editor/alerts/connecting-alert.tsx +1 -66
- package/src/components/editor/alerts/connection-notice.tsx +186 -0
- package/src/components/editor/alerts/startup-output.tsx +173 -0
- package/src/components/editor/alerts/startup-progress.tsx +204 -0
- package/src/components/editor/app-container.tsx +9 -3
- package/src/components/editor/boundary/ErrorBoundary.tsx +38 -16
- package/src/components/editor/boundary/__tests__/ErrorBoundary.test.tsx +311 -0
- package/src/components/editor/cell/__tests__/toolbar.test.tsx +73 -0
- package/src/components/editor/cell/code/__tests__/rtc-editor-config.test.ts +50 -0
- package/src/components/editor/cell/code/cell-editor.tsx +41 -42
- package/src/components/editor/cell/toolbar.tsx +11 -0
- package/src/components/editor/chrome/components/__tests__/feedback-button.test.tsx +94 -0
- package/src/components/editor/chrome/components/feedback-button.tsx +63 -42
- package/src/components/editor/chrome/panels/__tests__/packages-panel.test.tsx +164 -8
- package/src/components/editor/chrome/panels/__tests__/sandbox-details.test.tsx +358 -0
- package/src/components/editor/chrome/panels/__tests__/sandbox-recovery.test.tsx +168 -0
- package/src/components/editor/chrome/panels/packages-panel.tsx +113 -175
- package/src/components/editor/chrome/panels/sandbox-controller.tsx +106 -0
- package/src/components/editor/chrome/panels/sandbox-details-state.ts +38 -0
- package/src/components/editor/chrome/panels/sandbox-panel.tsx +230 -0
- package/src/components/editor/chrome/panels/sandbox-toggle.tsx +52 -0
- package/src/components/editor/chrome/wrapper/app-chrome.tsx +7 -0
- package/src/components/editor/chrome/wrapper/footer-items/backend-status.tsx +3 -1
- package/src/components/editor/code/__tests__/readonly-diff.test.tsx +65 -0
- package/src/components/editor/code/readonly-diff.tsx +1 -1
- package/src/components/editor/connections/database/__tests__/__snapshots__/as-code.test.ts.snap +98 -98
- package/src/components/editor/connections/database/__tests__/as-code.test.ts +11 -5
- package/src/components/editor/dynamic-favicon.tsx +17 -10
- package/src/components/editor/file-tree/__tests__/file-explorer-navigation.test.tsx +13 -11
- package/src/components/editor/file-tree/__tests__/tree-actions.test.tsx +54 -0
- package/src/components/editor/file-tree/tree-actions.tsx +11 -14
- package/src/components/editor/header/__tests__/status.test.tsx +8 -20
- package/src/components/editor/header/filename-input.tsx +2 -0
- package/src/components/editor/header/status.tsx +5 -3
- package/src/components/editor/navigation/clipboard.ts +1 -0
- package/src/components/editor/notebook-cell.tsx +4 -2
- package/src/components/editor/output/JsonOutput.tsx +182 -632
- package/src/components/editor/output/Outputs.css +49 -17
- package/src/components/editor/output/__tests__/JsonOutput-interactions.test.tsx +254 -0
- package/src/components/editor/output/__tests__/JsonOutput-mimetype.test.tsx +41 -46
- package/src/components/editor/output/__tests__/{json-output.test.ts → json-output-formatting.test.ts} +113 -75
- package/src/components/editor/output/__tests__/json-output-pagination.test.ts +252 -0
- package/src/components/editor/output/json-output/formatting.ts +167 -0
- package/src/components/editor/output/json-output/pagination.ts +155 -0
- package/src/components/editor/output/json-output/renderers.tsx +196 -0
- package/src/components/editor/output/json-output/themes.ts +52 -0
- package/src/components/editor/package-alert.tsx +112 -66
- package/src/components/editor/renderers/cell-array.tsx +1 -5
- package/src/components/editor/renderers/slides-layout/__tests__/plugin.test.ts +3 -7
- package/src/components/slides/slide-form.tsx +1 -0
- package/src/components/slides/slide-notes-editor.tsx +1 -0
- package/src/components/tracing/tracing-spec.ts +1 -1
- package/src/components/ui/__tests__/badge.test.ts +6 -4
- package/src/components/ui/use-toast.ts +8 -0
- package/src/core/MarimoApp.tsx +0 -2
- package/src/core/ai/context/providers/__tests__/error.test.ts +16 -22
- package/src/core/alerts/__tests__/environment.test.ts +183 -0
- package/src/core/alerts/__tests__/state.test.tsx +240 -0
- package/src/core/alerts/environment.ts +57 -0
- package/src/core/alerts/state.ts +155 -99
- package/src/core/cells/__tests__/__snapshots__/cells.test.ts.snap +296 -259
- package/src/core/cells/__tests__/apply-transaction.test.ts +34 -0
- package/src/core/cells/__tests__/cell.test.ts +61 -0
- package/src/core/cells/__tests__/cells.test.ts +182 -37
- package/src/core/cells/__tests__/document-changes.test.ts +39 -1
- package/src/core/cells/__tests__/outputs.test.tsx +117 -0
- package/src/core/cells/__tests__/pending-delete-service.test.tsx +4 -3
- package/src/core/cells/__tests__/session.test.ts +7 -0
- package/src/core/cells/cell.ts +9 -1
- package/src/core/cells/cells.ts +13 -18
- package/src/core/cells/document-changes.ts +11 -1
- package/src/core/cells/outputs.ts +66 -9
- package/src/core/cells/pending-delete-service.ts +12 -16
- package/src/core/cells/session.ts +2 -0
- package/src/core/cells/types.ts +2 -0
- package/src/core/codemirror/find-replace/__tests__/navigate.test.ts +8 -16
- package/src/core/codemirror/language/__tests__/sql.test.ts +70 -2
- package/src/core/codemirror/language/embedded/__tests__/embedded-python.test.ts +4 -8
- package/src/core/codemirror/language/languages/sql/sql.ts +16 -1
- package/src/core/codemirror/rtc/extension.ts +5 -2
- package/src/core/config/pair.ts +19 -0
- package/src/core/datasets/__tests__/data-source.test.ts +2 -0
- package/src/core/datasets/data-source-connections.ts +15 -10
- package/src/core/edit-app.tsx +8 -5
- package/src/core/errors/state.ts +1 -2
- package/src/core/export/__tests__/hooks.test.ts +1 -6
- package/src/core/islands/bootstrap.ts +3 -1
- package/src/core/islands/bridge.ts +3 -0
- package/src/core/islands/worker-factory.ts +2 -12
- package/src/core/kernel/messages.ts +2 -2
- package/src/core/network/__tests__/requests-network.test.ts +4 -3
- package/src/core/network/connection-notice.ts +117 -0
- package/src/core/network/connection.ts +19 -0
- package/src/core/network/requests-lazy.ts +3 -0
- package/src/core/network/requests-network.ts +12 -0
- package/src/core/network/requests-static.ts +3 -0
- package/src/core/network/requests-toasting.tsx +3 -0
- package/src/core/network/resolve.ts +2 -1
- package/src/core/network/types.ts +7 -0
- package/src/core/network/useConnectionNotice.ts +53 -0
- package/src/core/packages/__tests__/usePackageAction.test.tsx +129 -0
- package/src/core/packages/__tests__/useSandboxController.test.tsx +246 -0
- package/src/core/packages/package-data.ts +35 -0
- package/src/core/packages/sandbox-state.ts +67 -0
- package/src/core/packages/toast-components.tsx +11 -0
- package/src/core/packages/useInstallPackage.ts +1 -1
- package/src/core/packages/usePackageAction.ts +51 -0
- package/src/core/packages/usePackageDependencies.ts +22 -0
- package/src/core/packages/useSandboxController.ts +208 -0
- package/src/core/run-app.tsx +2 -0
- package/src/core/static/__tests__/files.test.ts +12 -30
- package/src/core/wasm/__tests__/bootstrap.test.ts +63 -0
- package/src/core/wasm/__tests__/bridge.test.ts +13 -4
- package/src/core/wasm/__tests__/fs.test.ts +22 -0
- package/src/core/wasm/__tests__/runtime-config.test.ts +65 -0
- package/src/core/wasm/bridge.ts +35 -23
- package/src/core/wasm/rpc.ts +2 -0
- package/src/core/wasm/runtime-config.ts +31 -0
- package/src/core/wasm/worker/bootstrap.ts +21 -11
- package/src/core/wasm/worker/constants.ts +1 -0
- package/src/core/wasm/worker/fs.ts +4 -0
- package/src/core/wasm/worker/getController.ts +3 -1
- package/src/core/wasm/worker/save-worker.ts +10 -9
- package/src/core/wasm/worker/types.ts +6 -4
- package/src/core/wasm/worker/worker.ts +9 -9
- package/src/core/websocket/__tests__/useMarimoKernelConnection.hook.test.tsx +404 -3
- package/src/core/websocket/__tests__/useMarimoKernelConnection.test.ts +8 -6
- package/src/core/websocket/transports/transport.ts +1 -1
- package/src/core/websocket/transports/ws.ts +1 -1
- package/src/core/websocket/types.ts +11 -1
- package/src/core/websocket/useMarimoKernelConnection.tsx +63 -16
- package/src/hooks/useDebounce.ts +2 -0
- package/src/mount.tsx +3 -0
- package/src/plugins/core/BadPlugin.tsx +3 -14
- package/src/plugins/core/RenderHTML.tsx +22 -2
- package/src/plugins/core/__test__/RenderHTML.test.ts +187 -0
- package/src/plugins/core/registerReactComponent.tsx +0 -1
- package/src/plugins/impl/FileBrowserPlugin.tsx +10 -4
- package/src/plugins/impl/FormPlugin.tsx +2 -0
- package/src/plugins/impl/MatrixPlugin.tsx +2 -0
- package/src/plugins/impl/RangeSliderPlugin.tsx +2 -0
- package/src/plugins/impl/SliderPlugin.tsx +2 -0
- package/src/plugins/impl/__tests__/FileBrowserPlugin.test.tsx +50 -1
- package/src/plugins/impl/data-editor/__tests__/glide-data-editor.test.tsx +23 -18
- package/src/plugins/impl/data-frames/panel.tsx +1 -0
- package/src/plugins/impl/image-comparison/ImageComparisonComponent.tsx +1 -1
- package/src/plugins/impl/image-comparison/__tests__/ImageComparisonComponent.test.tsx +15 -0
- package/src/plugins/impl/vega/__tests__/make-selectable.test.ts +42 -48
- package/src/plugins/layout/AccordionPlugin.tsx +7 -2
- package/src/plugins/layout/JsonOutputPlugin.tsx +7 -10
- package/src/plugins/layout/__test__/AccordionPlugin.test.tsx +66 -0
- package/src/stories/sandbox.stories.tsx +488 -0
- package/src/utils/__tests__/path.test.ts +6 -5
- package/src/utils/__tests__/worker.test.ts +81 -0
- package/src/utils/worker.ts +22 -0
- package/dist/ErrorBoundary-CR-ZQN_c.js +0 -125
- package/dist/_baseMerge-Dv8bBloN.js +0 -73
- package/dist/_initCloneObject---vediN2.js +0 -95
- package/dist/arc-DOVLrCPd.js +0 -82
- package/dist/architecture-TIHT7OUA-MiJpPpQW.js +0 -3
- package/dist/array-CApNbSU9.js +0 -6
- package/dist/assets/__vite-browser-external-BdKGjRZ4.js +0 -1
- package/dist/assets/worker-DlIBfp9S.js +0 -98
- package/dist/blockDiagram-VBNYF7ZC-Bc--I65C.js +0 -3158
- package/dist/chat-ui-BSwr409J.js +0 -8455
- package/dist/chunk-3NCLNEKW-BIp_lB_4.js +0 -14
- package/dist/chunk-5FCAYU7R-C_HO9A1J.js +0 -23
- package/dist/chunk-5HE753X5-Bixm_MV-.js +0 -38
- package/dist/chunk-5JV3BV7I-CH5J3iZY.js +0 -54
- package/dist/chunk-5TONJI2A-DG6gDiSS.js +0 -62
- package/dist/chunk-7BUUIJ7U-5afmIPeo.js +0 -82
- package/dist/chunk-BIQX33UG-7TMBUf89.js +0 -23
- package/dist/chunk-CQNSW5MT-Cnqqsxt-.js +0 -38
- package/dist/chunk-CYSBUYHQ-BAbymFHR.js +0 -23
- package/dist/chunk-EMLP6XTP-Bsz-QL77.js +0 -23
- package/dist/chunk-J7OUQ5F2-CM_meqZH.js +0 -57
- package/dist/chunk-JG7HCLWE-DUnCDgPk.js +0 -62
- package/dist/chunk-MOZMSUNE-BG6IHvzT.js +0 -35
- package/dist/chunk-OSBZ3O6U-CYwj_bvR.js +0 -23
- package/dist/chunk-QBLGF6JB-B4vJ4j8J.js +0 -23
- package/dist/chunk-QR6OTTB3-D4wH2ldi.js +0 -3738
- package/dist/chunk-R7FJI6CG-Blf8FcmZ.js +0 -64
- package/dist/chunk-RYQCIY6F-BWbIlBIH.js +0 -241
- package/dist/chunk-U6XO7XAA-COw445DS.js +0 -63
- package/dist/chunk-UBXNYLIW-BHigVU4H.js +0 -32
- package/dist/chunk-YOTPTUD7-Dn044Q_d.js +0 -30
- package/dist/chunk-ZIRB5QZD-BR4TMfOa.js +0 -1153
- package/dist/classDiagram-JCYQIIEL-DmXSLxe_.js +0 -30
- package/dist/classDiagram-v2-OCEON4UE-CooqVexA.js +0 -30
- package/dist/click-outside-container-D_URcm3D.js +0 -167
- package/dist/code-block-37QAKDTI-CQrzBOr-.js +0 -107
- package/dist/copy-CD7S58CY.js +0 -141
- package/dist/cynefin-VYW2F7L2-CeHAxOEX.js +0 -3
- package/dist/dagre-VZM6K2ZE-CJggWPTJ.js +0 -328
- package/dist/dist-3_o3T78I.js +0 -1360
- package/dist/dist-ABQjhuek.js +0 -64
- package/dist/dist-CO5R6VMi.js +0 -538
- package/dist/dropdown-menu-DhCfcscX.js +0 -5858
- package/dist/emotion-is-prop-valid.esm-M57VsT8j.js +0 -14
- package/dist/error-banner-CsXbEEjo.js +0 -611
- package/dist/eventmodeling-45OFAUF4-B_lWZ-Pd.js +0 -3
- package/dist/flowDiagram-UKHOOZJN-g1AmrZzM.js +0 -17
- package/dist/gitGraph-TEB2WS4Q-Dj-eXUph.js +0 -3
- package/dist/info-DKCQHKI2-Bhb-pe2e.js +0 -3
- package/dist/line-CuKjIQa1.js +0 -34
- package/dist/map-BJpOfPlL.js +0 -149
- package/dist/math-BXtKgYah.js +0 -10
- package/dist/mermaid-4DMBBIKO-Ddp9TgNp.js +0 -2
- package/dist/mermaid-Bi23Ibnw.js +0 -1173
- package/dist/mermaid-parser.core-Din9FvSi.js +0 -99
- package/dist/packet-7NZHBO7P-fbkIIyKE.js +0 -3
- package/dist/path-BNHuHZP8.js +0 -87
- package/dist/pie-RZYD4A2V-CLRIsxY1.js +0 -3
- package/dist/purify.es-CB-YO1Hn.js +0 -774
- package/dist/radar-I7S5WNFK-BGzCbgXu.js +0 -3
- package/dist/railroad-3IZDKUUU-CvQIIcuU.js +0 -3
- package/dist/railroad-abnf-AHOZXSZD-CMwtlNtu.js +0 -3
- package/dist/railroad-ebnf-EBAXGLYW-n1QUOAsh.js +0 -3
- package/dist/railroad-peg-LSFZ7HO6-PjnrpmCs.js +0 -3
- package/dist/schemas-DzK6U94N.js +0 -6057
- package/dist/stateDiagram-v2-UEYNNEHI-BTRUs8Il.js +0 -30
- package/dist/step-CKczO72Q.js +0 -670
- package/dist/swimlanesDiagram-ULZ7WXOC-NBmgBl9G.js +0 -31
- package/dist/timer-DpDyj9G0.js +0 -596
- package/dist/tooltip-Dt77sBeT.js +0 -390
- package/dist/treeView-QDETBFTQ-DU8LwHuf.js +0 -3
- package/dist/treemap-6X3UGDF4-DUk4-k_O.js +0 -3
- package/dist/useTheme-CVJ0UOf2.js +0 -841
- package/dist/vega-loader.browser-DEggZzni.js +0 -1083
- package/dist/wardley-OPB4EBWU-Db-AaGas.js +0 -3
- package/src/components/editor/output/EmotionCacheProvider.tsx +0 -32
package/src/components/editor/connections/database/__tests__/__snapshots__/as-code.test.ts.snap
CHANGED
|
@@ -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 >
|
|
773
|
-
"import
|
|
764
|
+
exports[`generateDatabaseCode > security cases > bigquery with malformed JSON > sqlmodel 1`] = `
|
|
765
|
+
"import json
|
|
774
766
|
import sqlmodel
|
|
775
767
|
|
|
776
|
-
|
|
777
|
-
|
|
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
|
|
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 >
|
|
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("
|
|
795
|
-
DATABASE_URL = f"
|
|
796
|
-
engine = sqlmodel.create_engine(DATABASE_URL, connect_args={'
|
|
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
|
|
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
|
|
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/
|
|
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
|
|
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 >
|
|
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
|
|
829
|
+
import sqlalchemy
|
|
830
830
|
|
|
831
831
|
_password = os.environ.get("SNOWFLAKE_PASSWORD", "pass")
|
|
832
|
-
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
|
|
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
|
|
848
|
+
import sqlmodel
|
|
849
849
|
|
|
850
850
|
_password = os.environ.get("SNOWFLAKE_PASSWORD", "pass")
|
|
851
|
-
engine =
|
|
851
|
+
engine = sqlmodel.create_engine(
|
|
852
852
|
URL(
|
|
853
853
|
account="account-with-password123",
|
|
854
854
|
database="db",
|