streamlit-nightly 1.52.3.dev20251221__tar.gz → 1.52.3.dev20251223__tar.gz
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.
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/PKG-INFO +2 -2
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/setup.py +2 -2
- streamlit_nightly-1.52.3.dev20251223/streamlit/auth_util.py +471 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/dataframe_util.py +11 -1
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/json.py +14 -1
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/lib/column_types.py +9 -4
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/vega_charts.py +78 -4
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/widgets/slider.py +42 -14
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/runtime/app_session.py +2 -1
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/runtime/caching/cache_resource_api.py +78 -7
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/runtime/caching/cache_utils.py +14 -2
- streamlit_nightly-1.52.3.dev20251223/streamlit/runtime/caching/ttl_cleanup_cache.py +85 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/runtime/runtime.py +3 -2
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/runtime/scriptrunner/script_runner.py +2 -1
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/runtime/scriptrunner_utils/script_run_context.py +2 -2
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/runtime/session_manager.py +2 -1
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/runtime/websocket_session_manager.py +2 -1
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/index.html +1 -1
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/manifest.json +313 -290
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/ErrorOutline.esm.DrqbT-rO.js → streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/ErrorOutline.esm.CJ-r0mHP.js +1 -1
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/FileDownload.esm.qBf8Okv_.js → streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/FileDownload.esm.DTt9vXrY.js +1 -1
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/FileHelper.Kd_64XvH.js → streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/FileHelper.qvIXOxD5.js +1 -1
- streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/FormClearHelper.3txIi5U2.js +1 -0
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/InputInstructions.D6_tbGbO.js → streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/InputInstructions.JLDhda-k.js +1 -1
- streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/Particles.DW-szZND.js +1 -0
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/ProgressBar.BcYS7ZS2.js → streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/ProgressBar.Bv1YUK2X.js +1 -1
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/StreamlitSyntaxHighlighter.r6Sjoo6b.js → streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/StreamlitSyntaxHighlighter.Cdk1H8L5.js +1 -1
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/TableChart.esm.k89QSJr_.js → streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/TableChart.esm.JBXpd4Er.js +1 -1
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/Toolbar.DuoPZXGf.js → streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/Toolbar.DM7tkRnn.js +1 -1
- streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/WidgetLabelHelpIconInline.BK3Q-tdZ.js +1 -0
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/base-input.CvyJt4xh.js → streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/base-input.LR6d1AQ3.js +4 -4
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/checkbox.IH_3pIdm.js → streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/checkbox.aiaUtfVC.js +1 -1
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/createDownloadLinkElement.DTopcocE.js → streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/createDownloadLinkElement.KZ488xay.js +1 -1
- streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/data-grid-overlay-editor.Bvq3AnFd.js +1 -0
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/downloader.KQNtBG8U.js → streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/downloader.Cm5OkKk_.js +1 -1
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/embed.BFneUY_q.js → streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/embed.BmfnSGxd.js +1 -1
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/es6.BnZOwb4O.js → streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/es6.kmN9fr5V.js +2 -2
- streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/formatMoment.C6Hwn6X5.js +1 -0
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/formatNumber.CR8FBFY3.js → streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/formatNumber.DGhYc_Mf.js +1 -1
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/iconPosition.BqxgiGPw.js → streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/iconPosition.BnUUQ30a.js +1 -1
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/iframeResizer.contentWindow.C6sVkiKl.js → streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/iframeResizer.contentWindow.D3HlN2_u.js +1 -1
- streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/index.-6iyrqXe.js +2 -0
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/index.CspBKU2T.js → streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/index.4Py-BAlV.js +27 -27
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/index.iCiq9EJw.js → streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/index.ASGSMEuq.js +1 -1
- streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/index.AoB_TJ4O.js +2 -0
- streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/index.BTnyrk_J.js +1 -0
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/index.BAfC2erD.js → streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/index.BZfRhYeD.js +1 -1
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/index.BUp88Kdb.js → streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/index.BawxRUvY.js +1 -1
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/index.DOV-WoQd.js → streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/index.Bc2Sogpd.js +1 -1
- streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/index.Be44uNWE.js +155 -0
- streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/index.BfZaYl9Q.js +1 -0
- streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/index.BkTA7mhD.js +1 -0
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/index.BwXoiyYM.js → streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/index.BmZ9lqlh.js +1 -1
- streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/index.BrUZv2-i.js +1 -0
- streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/index.BwUt1N7e.js +1 -0
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/index.anVaDOmL.js → streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/index.BweYZuYB.js +1 -1
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/index.DVlrEw10.js → streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/index.BxxnmN7s.js +1 -1
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/index.Bf5jk73Q.js → streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/index.Bzer1l17.js +1 -1
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/index.D3oMFV45.js → streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/index.C-LQI-jM.js +2 -2
- streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/index.CBP0Yj26.js +3 -0
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/index.zEALeeum.js → streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/index.CL4i8dLy.js +3 -3
- streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/index.Cget4l_o.js +1 -0
- streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/index.Cgpx_JIE.js +1 -0
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/index.CrkJ5SDq.js → streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/index.CkUcLi4S.js +1 -1
- streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/index.ClWPH1ol.js +1 -0
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/index.CGdYqDpk.js → streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/index.CqXI0FvE.js +1 -1
- streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/index.CsDvdugJ.js +1 -0
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/index.CFsfbj66.js → streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/index.D3PFGrKx.js +2 -2
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/index.CDC33-So.js → streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/index.D9DmFe4f.js +2 -2
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/index.BaFW4x9S.js → streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/index.DA1H59ev.js +1 -1
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/index.6TaKlaPt.js → streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/index.DCDzmKGh.js +1 -1
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/index.BzHOdT_l.js → streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/index.DGlNWX-d.js +4 -4
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/index.FyevAnzf.js → streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/index.DJyaagfL.js +1 -1
- streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/index.DKHCQGvc.js +1 -0
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/index.DQdyitPA.js → streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/index.DMvqRKrG.js +2 -2
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/index.C9RAIqk8.js → streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/index.DSgAF5Ya.js +1 -1
- streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/index.DXIXAgXZ.js +1 -0
- streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/index.DYU8DSsz.js +1 -0
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/index.C8lQ0s75.js → streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/index.DcgZZBLA.js +1 -1
- streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/index.DrEgBjHk.js +1 -0
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/index.BI6oefCo.js → streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/index.DvJewWKZ.js +1 -1
- streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/index.E7tHKIeN.js +11 -0
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/index.VPjKy0j4.js → streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/index.cJD6QuWU.js +1 -1
- streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/index.efJCKg5J.js +1 -0
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/index.pdeUBjvr.js → streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/index.g0M-BhA_.js +1 -1
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/index.Cd2dEbEZ.js → streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/index.gWwJtOw7.js +1 -1
- streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/index.iHHnyqB6.js +1 -0
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/index.DFyLAcxR.js → streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/index.kWhskx02.js +1 -1
- streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/index.koIpOVlc.js +1 -0
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/input.BeaiDqNC.js → streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/input.BSL21NTV.js +2 -2
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/main.ubplH6hC.js → streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/main.BpT2ATMT.js +1 -1
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/memory.B79dcmIs.js → streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/memory.cB4wh9Fi.js +1 -1
- streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/number-overlay-editor.Dq7eo7Iv.js +9 -0
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/pandasStylerUtils.BIv7Tnz1.js → streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/pandasStylerUtils.CNWaNfX0.js +1 -1
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/sandbox.d3SMAXXf.js → streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/sandbox.SWFjuzzE.js +1 -1
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/styled-components.fE-8QQng.js → streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/styled-components.CL2wCoKu.js +1 -1
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/throttle.CYz-lQC4.js → streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/throttle.tYQai0iG.js +1 -1
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/timepicker.BOQddWsQ.js → streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/timepicker.BoIflsNb.js +1 -1
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/toConsumableArray.BOWMBnbQ.js → streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/toConsumableArray.yJBHJHiJ.js +1 -1
- streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/uniqueId.C3_1KC89.js +1 -0
- streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/useBasicWidgetState.gtwv2ATI.js +1 -0
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/useIntlLocale.ZWsXdm9C.js → streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/useIntlLocale.CeFO_s8L.js +8 -8
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/useTextInputAutoExpand.Dl_ET1Sb.js → streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/useTextInputAutoExpand.dVyX-6Qj.js +1 -1
- streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/useUpdateUiValue.C8TwIzyl.js +1 -0
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/useWaveformController.CsVIufmw.js → streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/useWaveformController.DQcQ8iSx.js +1 -1
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/withCalculatedWidth.DhUD1YrP.js → streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/withCalculatedWidth.CJBjGOx4.js +1 -1
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/withFullScreenWrapper.DK959XUN.js → streamlit_nightly-1.52.3.dev20251223/streamlit/static/static/js/withFullScreenWrapper.gfqK0Xv0.js +1 -1
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/type_util.py +18 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/user_info.py +113 -10
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/web/server/browser_websocket_handler.py +36 -7
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/web/server/oauth_authlib_routes.py +58 -16
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/web/server/server_util.py +1 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit_nightly.egg-info/PKG-INFO +2 -2
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit_nightly.egg-info/SOURCES.txt +89 -86
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit_nightly.egg-info/requires.txt +1 -1
- streamlit_nightly-1.52.3.dev20251221/streamlit/auth_util.py +0 -219
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/FormClearHelper.B7CR0MaP.js +0 -1
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/Particles.beTCTKhG.js +0 -1
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/data-grid-overlay-editor.D6l1eXhW.js +0 -1
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/index.B5kJ0Ny6.js +0 -3
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/index.BBRp4YNO.js +0 -2
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/index.BBzjOUNy.js +0 -1
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/index.BGbryhje.js +0 -1
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/index.BPAL5EyG.js +0 -155
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/index.BSbhaCbp.js +0 -1
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/index.BYdL13aL.js +0 -1
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/index.BvK16VTL.js +0 -1
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/index.CAJA8fnM.js +0 -1
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/index.CJl4rsuO.js +0 -1
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/index.D83ZWRP2.js +0 -1
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/index.DDNRs1dr.js +0 -1
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/index.DEA05l1h.js +0 -1
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/index.DF9GiBMJ.js +0 -1
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/index.DVPXrxlI.js +0 -11
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/index.DhLFP1Nd.js +0 -2
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/index.qNVsyy2R.js +0 -1
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/index.r64waisU.js +0 -1
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/index.rYdNTbT3.js +0 -1
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/index.vAith9Op.js +0 -1
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/index.zbBoWByY.js +0 -1
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/number-overlay-editor.bH4KvDSc.js +0 -9
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/uniqueId.CO3kw8wD.js +0 -1
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/useBasicWidgetState.C3D1fhxI.js +0 -1
- streamlit_nightly-1.52.3.dev20251221/streamlit/static/static/js/useUpdateUiValue.C5yq6U4i.js +0 -1
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/MANIFEST.in +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/bin/streamlit.cmd +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/setup.cfg +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/__init__.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/__main__.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/cli_util.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/column_config.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/commands/__init__.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/commands/echo.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/commands/execution_control.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/commands/experimental_query_params.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/commands/logo.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/commands/navigation.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/commands/page_config.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/components/__init__.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/components/lib/__init__.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/components/lib/local_component_registry.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/components/types/__init__.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/components/types/base_component_registry.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/components/types/base_custom_component.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/components/v1/__init__.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/components/v1/component_arrow.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/components/v1/component_registry.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/components/v1/components.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/components/v1/custom_component.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/components/v2/__init__.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/components/v2/bidi_component/__init__.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/components/v2/bidi_component/constants.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/components/v2/bidi_component/main.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/components/v2/bidi_component/serialization.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/components/v2/bidi_component/state.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/components/v2/component_definition_resolver.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/components/v2/component_file_watcher.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/components/v2/component_manager.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/components/v2/component_manifest_handler.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/components/v2/component_path_utils.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/components/v2/component_registry.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/components/v2/get_bidi_component_manager.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/components/v2/manifest_scanner.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/components/v2/presentation.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/components/v2/types.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/config.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/config_option.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/config_util.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/connections/__init__.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/connections/base_connection.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/connections/snowflake_connection.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/connections/snowpark_connection.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/connections/sql_connection.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/connections/util.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/cursor.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/delta_generator.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/delta_generator_singletons.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/deprecation_util.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/development.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/__init__.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/alert.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/arrow.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/balloons.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/bokeh_chart.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/code.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/deck_gl_json_chart.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/dialog_decorator.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/doc_string.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/empty.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/exception.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/form.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/graphviz_chart.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/heading.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/html.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/iframe.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/image.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/layouts.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/lib/__init__.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/lib/built_in_chart_utils.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/lib/color_util.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/lib/column_config_utils.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/lib/dialog.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/lib/dicttools.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/lib/file_uploader_utils.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/lib/form_utils.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/lib/image_utils.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/lib/js_number.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/lib/layout_utils.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/lib/mutable_status_container.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/lib/options_selector_utils.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/lib/pandas_styler_utils.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/lib/policies.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/lib/shortcut_utils.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/lib/streamlit_plotly_theme.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/lib/subtitle_utils.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/lib/utils.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/map.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/markdown.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/media.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/metric.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/pdf.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/plotly_chart.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/progress.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/pyplot.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/snow.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/space.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/spinner.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/text.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/toast.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/widgets/__init__.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/widgets/audio_input.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/widgets/button.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/widgets/button_group.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/widgets/camera_input.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/widgets/chat.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/widgets/checkbox.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/widgets/color_picker.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/widgets/data_editor.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/widgets/file_uploader.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/widgets/multiselect.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/widgets/number_input.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/widgets/radio.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/widgets/select_slider.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/widgets/selectbox.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/widgets/text_widgets.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/widgets/time_widgets.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/elements/write.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/emojis.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/env_util.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/error_util.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/errors.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/external/__init__.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/external/langchain/__init__.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/external/langchain/streamlit_callback_handler.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/file_util.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/git_util.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/hello/__init__.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/hello/animation_demo.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/hello/dataframe_demo.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/hello/hello.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/hello/mapping_demo.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/hello/plotting_demo.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/hello/streamlit_app.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/hello/utils.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/logger.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/material_icon_names.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/navigation/__init__.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/navigation/page.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/net_util.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/platform.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Alert_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Alert_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/AppPage_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/AppPage_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/ArrowData_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/ArrowData_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/ArrowNamedDataSet_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/ArrowNamedDataSet_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/ArrowVegaLiteChart_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/ArrowVegaLiteChart_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Arrow_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Arrow_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/AudioInput_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/AudioInput_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Audio_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Audio_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/AuthRedirect_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/AuthRedirect_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/AutoRerun_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/AutoRerun_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/BackMsg_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/BackMsg_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Balloons_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Balloons_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/BidiComponent_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/BidiComponent_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Block_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Block_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/BokehChart_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/BokehChart_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/ButtonGroup_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/ButtonGroup_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/ButtonLikeIconPosition_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/ButtonLikeIconPosition_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Button_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Button_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/CameraInput_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/CameraInput_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/ChatInput_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/ChatInput_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Checkbox_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Checkbox_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/ClientState_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/ClientState_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Code_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Code_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/ColorPicker_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/ColorPicker_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Common_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Common_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Components_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Components_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/DataFrame_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/DataFrame_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/DateInput_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/DateInput_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/DateTimeInput_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/DateTimeInput_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/DeckGlJsonChart_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/DeckGlJsonChart_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Delta_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Delta_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/DocString_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/DocString_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/DownloadButton_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/DownloadButton_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Element_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Element_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Empty_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Empty_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Exception_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Exception_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Favicon_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Favicon_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/FileUploader_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/FileUploader_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/ForwardMsg_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/ForwardMsg_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/GapSize_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/GapSize_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/GitInfo_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/GitInfo_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/GraphVizChart_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/GraphVizChart_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Heading_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Heading_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/HeightConfig_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/HeightConfig_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Html_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Html_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/IFrame_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/IFrame_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Image_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Image_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Json_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Json_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/LabelVisibilityMessage_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/LabelVisibilityMessage_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/LinkButton_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/LinkButton_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Logo_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Logo_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Markdown_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Markdown_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Metric_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Metric_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/MetricsEvent_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/MetricsEvent_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/MultiSelect_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/MultiSelect_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/NamedDataSet_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/NamedDataSet_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Navigation_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Navigation_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/NewSession_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/NewSession_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/NumberInput_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/NumberInput_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/PageConfig_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/PageConfig_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/PageInfo_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/PageInfo_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/PageLink_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/PageLink_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/PageNotFound_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/PageNotFound_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/PageProfile_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/PageProfile_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/PagesChanged_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/PagesChanged_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/ParentMessage_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/ParentMessage_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/PlotlyChart_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/PlotlyChart_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Progress_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Progress_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Radio_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Radio_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/RootContainer_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/RootContainer_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Selectbox_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Selectbox_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/SessionEvent_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/SessionEvent_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/SessionStatus_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/SessionStatus_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Skeleton_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Skeleton_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Slider_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Slider_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Snow_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Snow_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Space_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Space_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Spinner_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Spinner_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/TextAlignmentConfig_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/TextAlignmentConfig_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/TextArea_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/TextArea_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/TextInput_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/TextInput_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Text_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Text_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/TimeInput_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/TimeInput_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Toast_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Toast_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Transient_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Transient_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/VegaLiteChart_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/VegaLiteChart_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Video_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/Video_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/WidgetStates_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/WidgetStates_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/WidthConfig_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/WidthConfig_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/__init__.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/openmetrics_data_model_pb2.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/proto/openmetrics_data_model_pb2.pyi +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/py.typed +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/runtime/__init__.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/runtime/caching/__init__.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/runtime/caching/cache_data_api.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/runtime/caching/cache_errors.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/runtime/caching/cache_type.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/runtime/caching/cached_message_replay.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/runtime/caching/hashing.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/runtime/caching/legacy_cache_api.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/runtime/caching/storage/__init__.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/runtime/caching/storage/cache_storage_protocol.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/runtime/caching/storage/dummy_cache_storage.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/runtime/caching/storage/in_memory_cache_storage_wrapper.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/runtime/caching/storage/local_disk_cache_storage.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/runtime/connection_factory.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/runtime/context.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/runtime/context_util.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/runtime/credentials.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/runtime/download_data_util.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/runtime/forward_msg_cache.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/runtime/forward_msg_queue.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/runtime/fragment.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/runtime/media_file_manager.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/runtime/media_file_storage.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/runtime/memory_media_file_storage.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/runtime/memory_session_storage.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/runtime/memory_uploaded_file_manager.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/runtime/metrics_util.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/runtime/pages_manager.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/runtime/runtime_util.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/runtime/script_data.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/runtime/scriptrunner/__init__.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/runtime/scriptrunner/exec_code.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/runtime/scriptrunner/magic.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/runtime/scriptrunner/magic_funcs.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/runtime/scriptrunner/script_cache.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/runtime/scriptrunner_utils/__init__.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/runtime/scriptrunner_utils/exceptions.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/runtime/scriptrunner_utils/script_requests.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/runtime/secrets.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/runtime/state/__init__.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/runtime/state/common.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/runtime/state/presentation.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/runtime/state/query_params.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/runtime/state/query_params_proxy.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/runtime/state/safe_session_state.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/runtime/state/session_state.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/runtime/state/session_state_proxy.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/runtime/state/widgets.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/runtime/stats.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/runtime/theme_util.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/runtime/uploaded_file_manager.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/source_util.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/favicon.png +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/css/index.BUP6fTcR.css +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/css/index.BuwrT-ty.css +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/css/index.DgR7E2CV.css +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/js/IFrameUtil.DefezniK.js +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/js/UploadFileInfo.Dr-zDST7.js +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/js/_arrayIncludes.B19Iyn2B.js +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/js/_baseIndexOf.BTknn6Gb.js +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/js/index.8HslT92O.js +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/js/index.BBTKOM0z.js +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/js/index.bsVAaBS1.js +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/js/inputUtils.CptNuJwn.js +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/js/moment.C7qA8nIE.js +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/js/numbro.B9_PXfzp.js +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/js/record.DytFsBUt.js +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/js/sprintf.DpPCfzXw.js +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/js/threshold.CUNQbqMA.js +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/js/timer.BZio6gjG.js +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/js/urls.BwSlolu9.js +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/js/value.DaKxGC7O.js +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/js/wavesurfer.esm.D1Sty35j.js +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/KaTeX_AMS-Regular.BQhdFMY1.woff2 +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/KaTeX_AMS-Regular.DMm9YOAa.woff +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/KaTeX_AMS-Regular.DRggAlZN.ttf +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/KaTeX_Caligraphic-Bold.ATXxdsX0.ttf +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/KaTeX_Caligraphic-Bold.BEiXGLvX.woff +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/KaTeX_Caligraphic-Bold.Dq_IR9rO.woff2 +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/KaTeX_Caligraphic-Regular.CTRA-rTL.woff +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/KaTeX_Caligraphic-Regular.Di6jR-x-.woff2 +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/KaTeX_Caligraphic-Regular.wX97UBjC.ttf +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/KaTeX_Fraktur-Bold.BdnERNNW.ttf +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/KaTeX_Fraktur-Bold.BsDP51OF.woff +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/KaTeX_Fraktur-Bold.CL6g_b3V.woff2 +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/KaTeX_Fraktur-Regular.CB_wures.ttf +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/KaTeX_Fraktur-Regular.CTYiF6lA.woff2 +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/KaTeX_Fraktur-Regular.Dxdc4cR9.woff +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/KaTeX_Main-Bold.Cx986IdX.woff2 +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/KaTeX_Main-Bold.Jm3AIy58.woff +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/KaTeX_Main-Bold.waoOVXN0.ttf +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/KaTeX_Main-BoldItalic.DxDJ3AOS.woff2 +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/KaTeX_Main-BoldItalic.DzxPMmG6.ttf +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/KaTeX_Main-BoldItalic.SpSLRI95.woff +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/KaTeX_Main-Italic.3WenGoN9.ttf +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/KaTeX_Main-Italic.BMLOBm91.woff +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/KaTeX_Main-Italic.NWA7e6Wa.woff2 +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/KaTeX_Main-Regular.B22Nviop.woff2 +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/KaTeX_Main-Regular.Dr94JaBh.woff +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/KaTeX_Main-Regular.ypZvNtVU.ttf +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/KaTeX_Math-BoldItalic.B3XSjfu4.ttf +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/KaTeX_Math-BoldItalic.CZnvNsCZ.woff2 +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/KaTeX_Math-BoldItalic.iY-2wyZ7.woff +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/KaTeX_Math-Italic.DA0__PXp.woff +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/KaTeX_Math-Italic.flOr_0UB.ttf +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/KaTeX_Math-Italic.t53AETM-.woff2 +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/KaTeX_SansSerif-Bold.CFMepnvq.ttf +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/KaTeX_SansSerif-Bold.D1sUS0GD.woff2 +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/KaTeX_SansSerif-Bold.DbIhKOiC.woff +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/KaTeX_SansSerif-Italic.C3H0VqGB.woff2 +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/KaTeX_SansSerif-Italic.DN2j7dab.woff +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/KaTeX_SansSerif-Italic.YYjJ1zSn.ttf +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/KaTeX_SansSerif-Regular.BNo7hRIc.ttf +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/KaTeX_SansSerif-Regular.CS6fqUqJ.woff +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/KaTeX_SansSerif-Regular.DDBCnlJ7.woff2 +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/KaTeX_Script-Regular.C5JkGWo-.ttf +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/KaTeX_Script-Regular.D3wIWfF6.woff2 +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/KaTeX_Script-Regular.D5yQViql.woff +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/KaTeX_Size1-Regular.C195tn64.woff +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/KaTeX_Size1-Regular.Dbsnue_I.ttf +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/KaTeX_Size1-Regular.mCD8mA8B.woff2 +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/KaTeX_Size2-Regular.B7gKUWhC.ttf +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/KaTeX_Size2-Regular.Dy4dx90m.woff2 +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/KaTeX_Size2-Regular.oD1tc_U0.woff +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/KaTeX_Size3-Regular.CTq5MqoE.woff +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/KaTeX_Size3-Regular.DgpXs0kz.ttf +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/KaTeX_Size4-Regular.BF-4gkZK.woff +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/KaTeX_Size4-Regular.DWFBv043.ttf +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/KaTeX_Size4-Regular.Dl5lxZxV.woff2 +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/KaTeX_Typewriter-Regular.C0xS9mPB.woff +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/KaTeX_Typewriter-Regular.CO6r4hn1.woff2 +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/KaTeX_Typewriter-Regular.D3Ib7_Hf.ttf +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/MaterialSymbols-Rounded.C7IFxh57.woff2 +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/SourceCodeVF-Italic.ttf.Ba1oaZG1.woff2 +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/SourceCodeVF-Upright.ttf.BjWn63N-.woff2 +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/SourceSansVF-Italic.ttf.Bt9VkdQ3.woff2 +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/SourceSansVF-Upright.ttf.BsWL4Kly.woff2 +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/SourceSerifVariable-Italic.ttf.CVdzAtxO.woff2 +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/SourceSerifVariable-Roman.ttf.mdpVL9bi.woff2 +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/balloon-0.Czj7AKwE.png +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/balloon-1.CNvFFrND.png +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/balloon-2.DTvC6B1t.png +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/balloon-3.CgSk4tbL.png +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/balloon-4.mbtFrzxf.png +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/balloon-5.CSwkUfRA.png +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/fireworks.B4d-_KUe.gif +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/flake-0.DgWaVvm5.png +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/flake-1.B2r5AHMK.png +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/flake-2.BnWSExPC.png +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/static/static/media/snowflake.JU2jBHL8.svg +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/string_util.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/temporary_directory.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/testing/__init__.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/testing/v1/__init__.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/testing/v1/app_test.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/testing/v1/element_tree.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/testing/v1/local_script_runner.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/testing/v1/util.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/time_util.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/url_util.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/util.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/vendor/__init__.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/vendor/pympler/__init__.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/vendor/pympler/asizeof.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/version.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/watcher/__init__.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/watcher/event_based_path_watcher.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/watcher/folder_black_list.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/watcher/local_sources_watcher.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/watcher/path_watcher.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/watcher/polling_path_watcher.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/watcher/util.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/web/__init__.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/web/bootstrap.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/web/cache_storage_manager_config.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/web/cli.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/web/server/__init__.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/web/server/app_static_file_handler.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/web/server/authlib_tornado_integration.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/web/server/bidi_component_request_handler.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/web/server/component_file_utils.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/web/server/component_request_handler.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/web/server/media_file_handler.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/web/server/oidc_mixin.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/web/server/routes.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/web/server/server.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/web/server/stats_request_handler.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/web/server/upload_file_request_handler.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit/web/server/websocket_headers.py +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit_nightly.egg-info/dependency_links.txt +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit_nightly.egg-info/entry_points.txt +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit_nightly.egg-info/not-zip-safe +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/streamlit_nightly.egg-info/top_level.txt +0 -0
- {streamlit_nightly-1.52.3.dev20251221 → streamlit_nightly-1.52.3.dev20251223}/tests/testutil.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: streamlit-nightly
|
|
3
|
-
Version: 1.52.3.
|
|
3
|
+
Version: 1.52.3.dev20251223
|
|
4
4
|
Summary: A faster way to build and share data apps
|
|
5
5
|
Home-page: https://streamlit.io
|
|
6
6
|
Author: Snowflake Inc
|
|
@@ -33,7 +33,7 @@ Requires-Python: >=3.10
|
|
|
33
33
|
Description-Content-Type: text/markdown
|
|
34
34
|
Requires-Dist: altair!=5.4.0,!=5.4.1,<7,>=4.0
|
|
35
35
|
Requires-Dist: blinker<2,>=1.5.0
|
|
36
|
-
Requires-Dist: cachetools<7,>=
|
|
36
|
+
Requires-Dist: cachetools<7,>=5.5
|
|
37
37
|
Requires-Dist: click<9,>=7.0
|
|
38
38
|
Requires-Dist: numpy<3,>=1.23
|
|
39
39
|
Requires-Dist: packaging>=20
|
|
@@ -23,7 +23,7 @@ from setuptools.command.install import install
|
|
|
23
23
|
|
|
24
24
|
THIS_DIRECTORY = Path(__file__).parent
|
|
25
25
|
|
|
26
|
-
VERSION = "1.52.3.
|
|
26
|
+
VERSION = "1.52.3.dev20251223" # PEP-440
|
|
27
27
|
|
|
28
28
|
# IMPORTANT: We should try very hard *not* to add dependencies to Streamlit.
|
|
29
29
|
# And if you do add one, make the required version as general as possible:
|
|
@@ -38,7 +38,7 @@ INSTALL_REQUIRES = [
|
|
|
38
38
|
# See: https://github.com/streamlit/streamlit/issues/12064
|
|
39
39
|
"altair>=4.0, <7, !=5.4.0, !=5.4.1",
|
|
40
40
|
"blinker>=1.5.0, <2",
|
|
41
|
-
"cachetools>=
|
|
41
|
+
"cachetools>=5.5, <7",
|
|
42
42
|
"click>=7.0, <9",
|
|
43
43
|
"numpy>=1.23, <3",
|
|
44
44
|
# The "packaging" package isn't version-capped because they use calendar-based
|
|
@@ -0,0 +1,471 @@
|
|
|
1
|
+
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-2025)
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
from __future__ import annotations
|
|
16
|
+
|
|
17
|
+
import json
|
|
18
|
+
import re
|
|
19
|
+
from collections.abc import Callable, Mapping
|
|
20
|
+
from datetime import datetime, timedelta, timezone
|
|
21
|
+
from typing import TYPE_CHECKING, Any, Final, TypedDict, cast
|
|
22
|
+
|
|
23
|
+
from streamlit import config
|
|
24
|
+
from streamlit.errors import StreamlitAuthError
|
|
25
|
+
from streamlit.logger import get_logger
|
|
26
|
+
from streamlit.runtime.secrets import AttrDict, secrets_singleton
|
|
27
|
+
|
|
28
|
+
_LOGGER: Final = get_logger(__name__)
|
|
29
|
+
|
|
30
|
+
if TYPE_CHECKING:
|
|
31
|
+
|
|
32
|
+
class ProviderTokenPayload(TypedDict):
|
|
33
|
+
provider: str
|
|
34
|
+
exp: int
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
MAX_COOKIE_BYTES: Final = 4096
|
|
38
|
+
# Cookie attributes added by Tornado: "; Path=/; HttpOnly"
|
|
39
|
+
COOKIE_ATTRIBUTES: Final = "; Path=/; HttpOnly"
|
|
40
|
+
COOKIE_ATTR_SIZE: Final = len(COOKIE_ATTRIBUTES)
|
|
41
|
+
# Safety buffer for signing overhead to account for edge cases, rounding, and potential
|
|
42
|
+
# variations in signing implementations (e.g., longer timestamps after year 2286)
|
|
43
|
+
SIGNING_OVERHEAD_SAFETY_BUFFER: Final = 50
|
|
44
|
+
# Base64 encoding of 1 byte = 4 bytes, so overhead = total - 4
|
|
45
|
+
SINGLE_BYTE_BASE64_SIZE: Final = 4
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
class AuthCache:
|
|
49
|
+
"""Simple cache implementation for storing info required for Authlib."""
|
|
50
|
+
|
|
51
|
+
def __init__(self) -> None:
|
|
52
|
+
self.cache: dict[str, Any] = {}
|
|
53
|
+
|
|
54
|
+
def get(self, key: str) -> Any:
|
|
55
|
+
return self.cache.get(key)
|
|
56
|
+
|
|
57
|
+
# for set method, we are follow the same signature used in Authlib
|
|
58
|
+
# the expires_in is not used in our case
|
|
59
|
+
def set(self, key: str, value: Any, expires_in: int | None = None) -> None: # noqa: ARG002
|
|
60
|
+
self.cache[key] = value
|
|
61
|
+
|
|
62
|
+
def get_dict(self) -> dict[str, Any]:
|
|
63
|
+
return self.cache
|
|
64
|
+
|
|
65
|
+
def delete(self, key: str) -> None:
|
|
66
|
+
self.cache.pop(key, None)
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
def is_authlib_installed() -> bool:
|
|
70
|
+
"""Check if Authlib is installed."""
|
|
71
|
+
try:
|
|
72
|
+
import authlib
|
|
73
|
+
|
|
74
|
+
authlib_version = authlib.__version__
|
|
75
|
+
authlib_version_tuple = tuple(map(int, authlib_version.split(".")))
|
|
76
|
+
|
|
77
|
+
if authlib_version_tuple < (1, 3, 2):
|
|
78
|
+
return False
|
|
79
|
+
except (ImportError, ModuleNotFoundError):
|
|
80
|
+
return False
|
|
81
|
+
return True
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
def get_signing_secret() -> str:
|
|
85
|
+
"""Get the cookie signing secret from the configuration or secrets.toml."""
|
|
86
|
+
signing_secret: str = config.get_option("server.cookieSecret")
|
|
87
|
+
if secrets_singleton.load_if_toml_exists():
|
|
88
|
+
auth_section = secrets_singleton.get("auth")
|
|
89
|
+
if auth_section:
|
|
90
|
+
signing_secret = auth_section.get("cookie_secret", signing_secret)
|
|
91
|
+
return signing_secret
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
def get_secrets_auth_section() -> AttrDict:
|
|
95
|
+
auth_section = AttrDict({})
|
|
96
|
+
"""Get the 'auth' section of the secrets.toml."""
|
|
97
|
+
if secrets_singleton.load_if_toml_exists():
|
|
98
|
+
auth_section = cast("AttrDict", secrets_singleton.get("auth", AttrDict({})))
|
|
99
|
+
|
|
100
|
+
return auth_section
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
def get_expose_tokens_config() -> list[str]:
|
|
104
|
+
"""Get the expose_tokens configuration from secrets.toml.
|
|
105
|
+
|
|
106
|
+
Returns a list of token types to expose. Accepts both string and list formats:
|
|
107
|
+
- expose_tokens = "id" -> ["id"]
|
|
108
|
+
- expose_tokens = ["id", "access"] -> ["id", "access"]
|
|
109
|
+
"""
|
|
110
|
+
auth_section = get_secrets_auth_section()
|
|
111
|
+
expose_tokens = auth_section.get("expose_tokens")
|
|
112
|
+
|
|
113
|
+
if isinstance(expose_tokens, str):
|
|
114
|
+
res = [expose_tokens]
|
|
115
|
+
elif isinstance(expose_tokens, list):
|
|
116
|
+
res = [str(token) for token in expose_tokens]
|
|
117
|
+
else:
|
|
118
|
+
return []
|
|
119
|
+
|
|
120
|
+
if set(res) - {"id", "access"}:
|
|
121
|
+
raise StreamlitAuthError(
|
|
122
|
+
"Invalid expose_tokens configuration. Only 'id' and 'access' are allowed."
|
|
123
|
+
)
|
|
124
|
+
|
|
125
|
+
return res
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
def encode_provider_token(provider: str) -> str:
|
|
129
|
+
"""Returns a signed JWT token with the provider and expiration time."""
|
|
130
|
+
try:
|
|
131
|
+
from authlib.jose import jwt
|
|
132
|
+
except ImportError:
|
|
133
|
+
raise StreamlitAuthError(
|
|
134
|
+
"""To use authentication features, you need to install Authlib>=1.3.2, e.g. via `pip install Authlib`."""
|
|
135
|
+
) from None
|
|
136
|
+
|
|
137
|
+
header = {"alg": "HS256"}
|
|
138
|
+
payload = {
|
|
139
|
+
"provider": provider,
|
|
140
|
+
"exp": datetime.now(timezone.utc) + timedelta(minutes=2),
|
|
141
|
+
}
|
|
142
|
+
provider_token: bytes = jwt.encode(header, payload, get_signing_secret())
|
|
143
|
+
# JWT token is a byte string, so we need to decode it to a URL compatible string
|
|
144
|
+
return provider_token.decode("latin-1")
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
def decode_provider_token(provider_token: str) -> ProviderTokenPayload:
|
|
148
|
+
"""Decode the JWT token and validate the claims."""
|
|
149
|
+
try:
|
|
150
|
+
from authlib.jose import JoseError, JWTClaims, jwt
|
|
151
|
+
except ImportError:
|
|
152
|
+
raise StreamlitAuthError(
|
|
153
|
+
"""To use authentication features, you need to install Authlib>=1.3.2, e.g. via `pip install Authlib`."""
|
|
154
|
+
) from None
|
|
155
|
+
|
|
156
|
+
# Our JWT token is short-lived (2 minutes), so we check here that it contains
|
|
157
|
+
# the 'exp' (and it is not expired), and 'provider' field exists.
|
|
158
|
+
claim_options = {"exp": {"essential": True}, "provider": {"essential": True}}
|
|
159
|
+
try:
|
|
160
|
+
payload: JWTClaims = jwt.decode(
|
|
161
|
+
provider_token, get_signing_secret(), claims_options=claim_options
|
|
162
|
+
)
|
|
163
|
+
payload.validate()
|
|
164
|
+
except JoseError as e:
|
|
165
|
+
raise StreamlitAuthError(f"Error decoding provider token: {e}") from None
|
|
166
|
+
|
|
167
|
+
return cast("ProviderTokenPayload", payload)
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
def generate_default_provider_section(auth_section: AttrDict) -> dict[str, Any]:
|
|
171
|
+
"""Generate a default provider section for the 'auth' section of secrets.toml."""
|
|
172
|
+
default_provider_section = {}
|
|
173
|
+
if auth_section.get("client_id"):
|
|
174
|
+
default_provider_section["client_id"] = auth_section.get("client_id")
|
|
175
|
+
if auth_section.get("client_secret"):
|
|
176
|
+
default_provider_section["client_secret"] = auth_section.get("client_secret")
|
|
177
|
+
if auth_section.get("server_metadata_url"):
|
|
178
|
+
default_provider_section["server_metadata_url"] = auth_section.get(
|
|
179
|
+
"server_metadata_url"
|
|
180
|
+
)
|
|
181
|
+
if auth_section.get("client_kwargs"):
|
|
182
|
+
default_provider_section["client_kwargs"] = cast(
|
|
183
|
+
"AttrDict", auth_section.get("client_kwargs", AttrDict({}))
|
|
184
|
+
).to_dict()
|
|
185
|
+
if auth_section.get("expose_tokens"):
|
|
186
|
+
default_provider_section["expose_tokens"] = auth_section.get("expose_tokens")
|
|
187
|
+
return default_provider_section
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
def set_cookie_with_chunks(
|
|
191
|
+
set_single_cookie_fn: Callable[[str, str], None],
|
|
192
|
+
create_signed_value_fn: Callable[[str, str], bytes],
|
|
193
|
+
cookie_name: str,
|
|
194
|
+
value: dict[str, Any],
|
|
195
|
+
) -> None:
|
|
196
|
+
"""Set a cookie, splitting into multiple cookies if necessary.
|
|
197
|
+
|
|
198
|
+
Args:
|
|
199
|
+
set_single_cookie_fn: Function to set a single cookie (cookie_name, value)
|
|
200
|
+
create_signed_value_fn: Function to create a signed cookie value (cookie_name, value)
|
|
201
|
+
cookie_name: Name of the cookie
|
|
202
|
+
value: Dictionary value to serialize and store
|
|
203
|
+
"""
|
|
204
|
+
serialized_cookie_value = json.dumps(value)
|
|
205
|
+
|
|
206
|
+
# Calculate actual cookie size using the provided signing function
|
|
207
|
+
signed_value = create_signed_value_fn(cookie_name, serialized_cookie_value)
|
|
208
|
+
|
|
209
|
+
# Cookie format: "name=value" + COOKIE_ATTRIBUTES
|
|
210
|
+
actual_cookie_size = len(cookie_name) + 1 + len(signed_value) + COOKIE_ATTR_SIZE
|
|
211
|
+
|
|
212
|
+
# Check if cookie needs to be split
|
|
213
|
+
if actual_cookie_size > MAX_COOKIE_BYTES:
|
|
214
|
+
_LOGGER.debug(
|
|
215
|
+
"Cookie size (%d bytes) exceeds browser limit. Splitting into multiple cookies.",
|
|
216
|
+
actual_cookie_size,
|
|
217
|
+
)
|
|
218
|
+
_set_split_cookie(
|
|
219
|
+
set_single_cookie_fn,
|
|
220
|
+
create_signed_value_fn,
|
|
221
|
+
cookie_name,
|
|
222
|
+
serialized_cookie_value,
|
|
223
|
+
)
|
|
224
|
+
else:
|
|
225
|
+
set_single_cookie_fn(cookie_name, serialized_cookie_value)
|
|
226
|
+
|
|
227
|
+
|
|
228
|
+
def _calculate_signing_overhead(
|
|
229
|
+
create_signed_value_fn: Callable[[str, str], bytes],
|
|
230
|
+
cookie_name: str,
|
|
231
|
+
) -> int:
|
|
232
|
+
"""Calculate the server's signing overhead by measuring the size difference.
|
|
233
|
+
|
|
234
|
+
This empirically measures the overhead added by the signing function (e.g., Tornado's
|
|
235
|
+
create_signed_value) by signing a minimal test value and computing the difference.
|
|
236
|
+
|
|
237
|
+
Args:
|
|
238
|
+
create_signed_value_fn: Function to create a signed cookie value
|
|
239
|
+
cookie_name: Name of the cookie (affects overhead due to length prefix)
|
|
240
|
+
|
|
241
|
+
Returns
|
|
242
|
+
-------
|
|
243
|
+
The number of bytes added by signing (excluding the base64-encoded value)
|
|
244
|
+
"""
|
|
245
|
+
test_value = "x" # Minimal test value (1 byte)
|
|
246
|
+
signed = create_signed_value_fn(cookie_name, test_value)
|
|
247
|
+
return len(signed) - SINGLE_BYTE_BASE64_SIZE
|
|
248
|
+
|
|
249
|
+
|
|
250
|
+
def _set_split_cookie(
|
|
251
|
+
set_single_cookie_fn: Callable[[str, str], None],
|
|
252
|
+
create_signed_value_fn: Callable[[str, str], bytes],
|
|
253
|
+
cookie_name: str,
|
|
254
|
+
value: str,
|
|
255
|
+
) -> None:
|
|
256
|
+
"""Split a large cookie value into multiple smaller cookies.
|
|
257
|
+
|
|
258
|
+
The main cookie always exists and either contains the whole value or the chunk count.
|
|
259
|
+
Additional chunks are stored as cookie_name_1, cookie_name_2, etc.
|
|
260
|
+
|
|
261
|
+
Args:
|
|
262
|
+
set_single_cookie_fn: Function to set a single cookie (cookie_name, value)
|
|
263
|
+
create_signed_value_fn: Function to create a signed cookie value
|
|
264
|
+
cookie_name: Name of the cookie
|
|
265
|
+
value: Serialized string value to split and store
|
|
266
|
+
"""
|
|
267
|
+
# Calculate overhead empirically from the actual signing function, plus safety buffer
|
|
268
|
+
signing_overhead = (
|
|
269
|
+
_calculate_signing_overhead(create_signed_value_fn, cookie_name)
|
|
270
|
+
+ SIGNING_OVERHEAD_SAFETY_BUFFER
|
|
271
|
+
)
|
|
272
|
+
|
|
273
|
+
# Available space for the signed value:
|
|
274
|
+
# MAX_COOKIE_BYTES - cookie_name - "=" (1 byte) - cookie attributes
|
|
275
|
+
available_for_signed_value = (
|
|
276
|
+
MAX_COOKIE_BYTES - len(cookie_name) - 1 - COOKIE_ATTR_SIZE
|
|
277
|
+
)
|
|
278
|
+
|
|
279
|
+
# Space available for the base64-encoded value (after subtracting signing overhead)
|
|
280
|
+
available_for_base64_value = available_for_signed_value - signing_overhead
|
|
281
|
+
|
|
282
|
+
# If there is not enough space for the base64-encoded value, raise an error.
|
|
283
|
+
# We need at least 4 bytes for a minimal base64-encoded value.
|
|
284
|
+
if available_for_base64_value < SINGLE_BYTE_BASE64_SIZE:
|
|
285
|
+
raise StreamlitAuthError("Not enough space available for the signed value.")
|
|
286
|
+
|
|
287
|
+
# Convert from base64 space to raw value space (base64 has 4/3 expansion ratio)
|
|
288
|
+
chunk_size = (available_for_base64_value * 3) // 4
|
|
289
|
+
chunks = []
|
|
290
|
+
for i in range(0, len(value), chunk_size):
|
|
291
|
+
chunk = value[i : i + chunk_size]
|
|
292
|
+
chunks.append(chunk)
|
|
293
|
+
|
|
294
|
+
if len(chunks) == 1:
|
|
295
|
+
set_single_cookie_fn(cookie_name, chunks[0])
|
|
296
|
+
return
|
|
297
|
+
|
|
298
|
+
# Store count in the main cookie
|
|
299
|
+
set_single_cookie_fn(cookie_name, f"chunks-{len(chunks)}")
|
|
300
|
+
|
|
301
|
+
# Store remaining chunks as cookie_name_1, cookie_name_2, etc.
|
|
302
|
+
for i in range(len(chunks)):
|
|
303
|
+
chunk_name = f"{cookie_name}_{i + 1}"
|
|
304
|
+
set_single_cookie_fn(chunk_name, chunks[i])
|
|
305
|
+
|
|
306
|
+
_LOGGER.info(
|
|
307
|
+
"Split cookie '%s' into %d chunks",
|
|
308
|
+
cookie_name,
|
|
309
|
+
len(chunks),
|
|
310
|
+
)
|
|
311
|
+
|
|
312
|
+
|
|
313
|
+
_chunks_regex = re.compile(rb"chunks-(\d+)")
|
|
314
|
+
|
|
315
|
+
|
|
316
|
+
def get_cookie_with_chunks(
|
|
317
|
+
get_single_cookie_fn: Callable[[str], bytes | None],
|
|
318
|
+
cookie_name: str,
|
|
319
|
+
) -> bytes | None:
|
|
320
|
+
"""Get a cookie, reconstructing from chunks if it was split.
|
|
321
|
+
|
|
322
|
+
If a count cookie exists, the main cookie contains the first chunk,
|
|
323
|
+
and additional chunks are in cookie_name_1, cookie_name_2, etc.
|
|
324
|
+
If no count cookie exists, the main cookie contains the entire value.
|
|
325
|
+
|
|
326
|
+
Args:
|
|
327
|
+
get_single_cookie_fn: Function to get a single cookie (cookie_name) -> bytes | None
|
|
328
|
+
cookie_name: Name of the cookie
|
|
329
|
+
|
|
330
|
+
Returns
|
|
331
|
+
-------
|
|
332
|
+
Cookie value as bytes, or None if not found
|
|
333
|
+
"""
|
|
334
|
+
cookie_value = get_single_cookie_fn(cookie_name)
|
|
335
|
+
if cookie_value is None:
|
|
336
|
+
return cookie_value
|
|
337
|
+
|
|
338
|
+
match = _chunks_regex.match(cookie_value)
|
|
339
|
+
if match is None:
|
|
340
|
+
return cookie_value
|
|
341
|
+
|
|
342
|
+
# Parse chunk count
|
|
343
|
+
try:
|
|
344
|
+
chunk_count = int(match.group(1))
|
|
345
|
+
except (ValueError, TypeError):
|
|
346
|
+
_LOGGER.exception("Invalid chunk count for cookie '%s'", cookie_name)
|
|
347
|
+
return None
|
|
348
|
+
|
|
349
|
+
# Reconstruct the original value from chunks
|
|
350
|
+
chunks = []
|
|
351
|
+
|
|
352
|
+
for i in range(chunk_count):
|
|
353
|
+
chunk_name = f"{cookie_name}_{i + 1}"
|
|
354
|
+
chunk_value = get_single_cookie_fn(chunk_name)
|
|
355
|
+
if chunk_value is None:
|
|
356
|
+
_LOGGER.exception("Missing chunk %d for cookie '%s'", i + 1, cookie_name)
|
|
357
|
+
return None
|
|
358
|
+
chunks.append(chunk_value)
|
|
359
|
+
|
|
360
|
+
reconstructed_value = b"".join(chunks)
|
|
361
|
+
return reconstructed_value
|
|
362
|
+
|
|
363
|
+
|
|
364
|
+
def clear_cookie_and_chunks(
|
|
365
|
+
get_single_cookie_fn: Callable[[str], bytes | None],
|
|
366
|
+
clear_single_cookie_fn: Callable[[str], None],
|
|
367
|
+
cookie_name: str,
|
|
368
|
+
) -> None:
|
|
369
|
+
"""Clear a cookie and any associated chunk cookies.
|
|
370
|
+
|
|
371
|
+
The main cookie always exists. If there are chunks, also clear
|
|
372
|
+
cookie_name_1, cookie_name_2, etc., and the count cookie.
|
|
373
|
+
|
|
374
|
+
Args:
|
|
375
|
+
get_single_cookie_fn: Function to get a single cookie (cookie_name) -> bytes | None
|
|
376
|
+
clear_single_cookie_fn: Function to clear a single cookie (cookie_name)
|
|
377
|
+
cookie_name: Name of the cookie
|
|
378
|
+
"""
|
|
379
|
+
cookie_value = get_single_cookie_fn(cookie_name)
|
|
380
|
+
clear_single_cookie_fn(cookie_name)
|
|
381
|
+
if cookie_value is None:
|
|
382
|
+
return
|
|
383
|
+
|
|
384
|
+
match = _chunks_regex.match(cookie_value)
|
|
385
|
+
if match is None:
|
|
386
|
+
return
|
|
387
|
+
|
|
388
|
+
try:
|
|
389
|
+
chunk_count = int(match.group(1))
|
|
390
|
+
# Clear additional chunk cookies (starting from 1, since main cookie is chunk 0)
|
|
391
|
+
for i in range(1, chunk_count + 1):
|
|
392
|
+
clear_single_cookie_fn(f"{cookie_name}_{i}")
|
|
393
|
+
except (ValueError, TypeError):
|
|
394
|
+
# If count is invalid, but we already cleared the main cookie
|
|
395
|
+
# so we can ignore it
|
|
396
|
+
pass
|
|
397
|
+
|
|
398
|
+
|
|
399
|
+
def validate_auth_credentials(provider: str) -> None:
|
|
400
|
+
"""Validate the general auth credentials and auth credentials for the given
|
|
401
|
+
provider.
|
|
402
|
+
"""
|
|
403
|
+
if not secrets_singleton.load_if_toml_exists():
|
|
404
|
+
raise StreamlitAuthError(
|
|
405
|
+
"""To use authentication features you need to configure credentials for at
|
|
406
|
+
least one authentication provider in `.streamlit/secrets.toml`."""
|
|
407
|
+
)
|
|
408
|
+
|
|
409
|
+
auth_section = secrets_singleton.get("auth")
|
|
410
|
+
if auth_section is None:
|
|
411
|
+
raise StreamlitAuthError(
|
|
412
|
+
"""To use authentication features you need to configure credentials for at
|
|
413
|
+
least one authentication provider in `.streamlit/secrets.toml`."""
|
|
414
|
+
)
|
|
415
|
+
if "redirect_uri" not in auth_section:
|
|
416
|
+
raise StreamlitAuthError(
|
|
417
|
+
"""Authentication credentials in `.streamlit/secrets.toml` are missing the
|
|
418
|
+
"redirect_uri" key. Please check your configuration."""
|
|
419
|
+
)
|
|
420
|
+
if "cookie_secret" not in auth_section:
|
|
421
|
+
raise StreamlitAuthError(
|
|
422
|
+
"""Authentication credentials in `.streamlit/secrets.toml` are missing the
|
|
423
|
+
"cookie_secret" key. Please check your configuration."""
|
|
424
|
+
)
|
|
425
|
+
|
|
426
|
+
provider_section = auth_section.get(provider)
|
|
427
|
+
|
|
428
|
+
# TODO(kajarenc): Revisit this check later when investigating the ability
|
|
429
|
+
# TODO(kajarenc): to add "_" to the provider name.
|
|
430
|
+
if "_" in provider:
|
|
431
|
+
raise StreamlitAuthError(
|
|
432
|
+
f'Auth provider name "{provider}" contains an underscore. '
|
|
433
|
+
f"Please use a provider name without underscores."
|
|
434
|
+
)
|
|
435
|
+
|
|
436
|
+
if provider_section is None and provider == "default":
|
|
437
|
+
provider_section = generate_default_provider_section(auth_section)
|
|
438
|
+
|
|
439
|
+
if provider_section is None:
|
|
440
|
+
if provider == "default":
|
|
441
|
+
raise StreamlitAuthError(
|
|
442
|
+
"""Authentication credentials in `.streamlit/secrets.toml` are missing for
|
|
443
|
+
the default authentication provider. Please check your configuration."""
|
|
444
|
+
)
|
|
445
|
+
raise StreamlitAuthError(
|
|
446
|
+
f"Authentication credentials in `.streamlit/secrets.toml` are missing for "
|
|
447
|
+
f'the authentication provider "{provider}". Please check your '
|
|
448
|
+
f"configuration."
|
|
449
|
+
)
|
|
450
|
+
|
|
451
|
+
if not isinstance(provider_section, Mapping):
|
|
452
|
+
raise StreamlitAuthError(
|
|
453
|
+
f"Authentication credentials in `.streamlit/secrets.toml` for the "
|
|
454
|
+
f'authentication provider "{provider}" must be valid TOML. Please check '
|
|
455
|
+
f"your configuration."
|
|
456
|
+
)
|
|
457
|
+
|
|
458
|
+
required_keys = ["client_id", "client_secret", "server_metadata_url"]
|
|
459
|
+
missing_keys = [key for key in required_keys if key not in provider_section]
|
|
460
|
+
if missing_keys:
|
|
461
|
+
if provider == "default":
|
|
462
|
+
raise StreamlitAuthError(
|
|
463
|
+
"Authentication credentials in `.streamlit/secrets.toml` for the "
|
|
464
|
+
f"default authentication provider are missing the following keys: "
|
|
465
|
+
f"{missing_keys}. Please check your configuration."
|
|
466
|
+
)
|
|
467
|
+
raise StreamlitAuthError(
|
|
468
|
+
"Authentication credentials in `.streamlit/secrets.toml` for the "
|
|
469
|
+
f'authentication provider "{provider}" are missing the following keys: '
|
|
470
|
+
f"{missing_keys}. Please check your configuration."
|
|
471
|
+
)
|
|
@@ -41,12 +41,14 @@ from typing import (
|
|
|
41
41
|
from streamlit import config, errors, logger, string_util
|
|
42
42
|
from streamlit.type_util import (
|
|
43
43
|
CustomDict,
|
|
44
|
+
dump_pydantic_sequence,
|
|
44
45
|
has_callable_attr,
|
|
45
46
|
is_custom_dict,
|
|
46
47
|
is_dataclass_instance,
|
|
47
48
|
is_list_like,
|
|
48
49
|
is_namedtuple,
|
|
49
50
|
is_pydantic_model,
|
|
51
|
+
is_sequence_of_pydantic_models,
|
|
50
52
|
is_type,
|
|
51
53
|
is_version_less_than,
|
|
52
54
|
)
|
|
@@ -703,6 +705,14 @@ def convert_anything_to_pandas_df(
|
|
|
703
705
|
if is_snowpark_row_list(data):
|
|
704
706
|
return pd.DataFrame([row.as_dict() for row in data])
|
|
705
707
|
|
|
708
|
+
if is_sequence_of_pydantic_models(data):
|
|
709
|
+
# Try to convert pydantic models to DataFrame. If some elements are not
|
|
710
|
+
# pydantic models (mixed sequence), fall through to pandas' native handling.
|
|
711
|
+
try:
|
|
712
|
+
return pd.DataFrame(dump_pydantic_sequence(data))
|
|
713
|
+
except AttributeError:
|
|
714
|
+
pass
|
|
715
|
+
|
|
706
716
|
if has_callable_attr(data, "to_pandas"):
|
|
707
717
|
return pd.DataFrame(data.to_pandas())
|
|
708
718
|
|
|
@@ -1242,7 +1252,7 @@ def determine_data_format(input_data: Any) -> DataFormat:
|
|
|
1242
1252
|
# This should always contain at least one element,
|
|
1243
1253
|
# otherwise the values type from infer_dtype would have been empty
|
|
1244
1254
|
first_element = next(iter(input_data))
|
|
1245
|
-
if isinstance(first_element, dict):
|
|
1255
|
+
if isinstance(first_element, dict) or is_pydantic_model(first_element):
|
|
1246
1256
|
return DataFormat.LIST_OF_RECORDS
|
|
1247
1257
|
if isinstance(first_element, (list, tuple, set, frozenset)):
|
|
1248
1258
|
return DataFormat.LIST_OF_ROWS
|
|
@@ -27,11 +27,14 @@ from streamlit.elements.lib.layout_utils import (
|
|
|
27
27
|
from streamlit.proto.Json_pb2 import Json as JsonProto
|
|
28
28
|
from streamlit.runtime.metrics_util import gather_metrics
|
|
29
29
|
from streamlit.type_util import (
|
|
30
|
+
dump_pydantic_sequence,
|
|
30
31
|
is_custom_dict,
|
|
31
32
|
is_list_like,
|
|
32
33
|
is_namedtuple,
|
|
33
34
|
is_pydantic_model,
|
|
35
|
+
is_sequence_of_pydantic_models,
|
|
34
36
|
)
|
|
37
|
+
from streamlit.user_info import UserInfoProxy
|
|
35
38
|
|
|
36
39
|
if TYPE_CHECKING:
|
|
37
40
|
from streamlit.delta_generator import DeltaGenerator
|
|
@@ -109,7 +112,10 @@ class JsonMixin:
|
|
|
109
112
|
"""
|
|
110
113
|
|
|
111
114
|
if is_custom_dict(body):
|
|
115
|
+
is_user = isinstance(body, UserInfoProxy)
|
|
112
116
|
body = body.to_dict() # ty: ignore[unresolved-attribute]
|
|
117
|
+
if is_user and "tokens" in body:
|
|
118
|
+
body["tokens"] = dict.fromkeys(body["tokens"], "***")
|
|
113
119
|
|
|
114
120
|
if is_namedtuple(body):
|
|
115
121
|
body = body._asdict() # ty: ignore[unresolved-attribute]
|
|
@@ -120,7 +126,14 @@ class JsonMixin:
|
|
|
120
126
|
body = dict(body) # type: ignore
|
|
121
127
|
|
|
122
128
|
if is_list_like(body):
|
|
123
|
-
|
|
129
|
+
if is_sequence_of_pydantic_models(body):
|
|
130
|
+
try:
|
|
131
|
+
body = dump_pydantic_sequence(body)
|
|
132
|
+
except AttributeError:
|
|
133
|
+
# Fallback to list(body) if it contains non-Pydantic models:
|
|
134
|
+
body = list(body) # ty: ignore[invalid-argument-type]
|
|
135
|
+
else:
|
|
136
|
+
body = list(body) # ty: ignore[invalid-argument-type]
|
|
124
137
|
|
|
125
138
|
if not isinstance(body, str):
|
|
126
139
|
try:
|
|
@@ -45,6 +45,13 @@ NumberFormat: TypeAlias = Literal[
|
|
|
45
45
|
"bytes",
|
|
46
46
|
]
|
|
47
47
|
|
|
48
|
+
DateTimeFormat: TypeAlias = Literal[
|
|
49
|
+
"localized",
|
|
50
|
+
"distance",
|
|
51
|
+
"calendar",
|
|
52
|
+
"iso8601",
|
|
53
|
+
]
|
|
54
|
+
|
|
48
55
|
ColumnWidth: TypeAlias = Literal["small", "medium", "large"] | int
|
|
49
56
|
|
|
50
57
|
# Type alias that represents all available column types
|
|
@@ -194,9 +201,7 @@ class MultiselectColumnConfig(TypedDict):
|
|
|
194
201
|
|
|
195
202
|
class DatetimeColumnConfig(TypedDict):
|
|
196
203
|
type: Literal["datetime"]
|
|
197
|
-
format: NotRequired[
|
|
198
|
-
str | Literal["localized", "distance", "calendar", "iso8601"] | None
|
|
199
|
-
]
|
|
204
|
+
format: NotRequired[str | DateTimeFormat | None]
|
|
200
205
|
min_value: NotRequired[str | None]
|
|
201
206
|
max_value: NotRequired[str | None]
|
|
202
207
|
step: NotRequired[int | float | None]
|
|
@@ -1972,7 +1977,7 @@ def DatetimeColumn(
|
|
|
1972
1977
|
required: bool | None = None,
|
|
1973
1978
|
pinned: bool | None = None,
|
|
1974
1979
|
default: datetime.datetime | None = None,
|
|
1975
|
-
format: str |
|
|
1980
|
+
format: str | DateTimeFormat | None = None,
|
|
1976
1981
|
min_value: datetime.datetime | None = None,
|
|
1977
1982
|
max_value: datetime.datetime | None = None,
|
|
1978
1983
|
step: int | float | datetime.timedelta | None = None,
|