2024 release notes

本页面包含2024年发布的Streamlit版本的发布说明。有关Streamlit的最新版本,请参阅发布说明

发布日期:2024年12月10日

显著变化

  • 🔲 st.metricst.columns 有一个参数可以显示可选的边框 (#9927, #9928)。
  • 🎨 Markdown中的文本和背景颜色可以使用theme.primaryColor配置选项中的“primary”颜色(#9676)。
  • 🥶 您可以通过列配置冻结列,使它们在水平滚动时始终保持可见(#9535, #7078)。
  • 3️⃣ buttonstype 参数接受一个新的选项,"tertiary" (#9923)。
  • 🚶‍♂️ Streamlit 支持在所有可以使用字符串路径的地方使用 pathlib.Path 对象 (#9711, #9783)。
  • ⏱️ st.date_inputst.time_input 接受 ISO 格式的字符串作为初始值 (#9753)。
  • 💬 st.write_stream 接受异步生成器,它在内部将其转换为同步生成器 (#8724, #8161)。
  • 🪵 client.showErrorDetails 配置选项新增了更多值,用于显示或隐藏更多信息 (#9909)。
  • 🔎 当Streamlit在应用程序中显示未捕获异常的堆栈跟踪时,内部代码被省略或简化以便于调试 (#9913)。
  • 📈 st.line_chart 在悬停时显示最近点的工具提示 (#9674).
  • 🌐 st.html 将尝试使用 ._repr_html_() 转换非字符串对象,然后再回退到 str() (#9877)。
  • 🐍 Streamlit 支持 Python 3.13,不再支持 Python 3.8 (#9635)。

其他变更

  • 🔣 材料符号已更新为最新图标 (#9813, #9810).
  • 👽 Streamlit 支持 Watchdog 版本 6 (#9785)。感谢 RubenVanEldik
  • 🌀 Bug 修复:Streamlit 仅在缓存未命中时显示缓存函数的加载动画,并且不会为嵌套的缓存函数显示加载动画 (#9956, #9951)。
  • 🔈 Bug 修复:Streamlit 的音频缓冲区更好地处理声道,以在 Firefox 中正确播放录音 (#9885, #9799)。
  • 🦊 错误修复:URL模式正确匹配,允许社区云开发者工具在Firefox中正确显示 (#9849, #9848).
  • ☠️ 错误修复:修正了容器的性能和对齐问题 (#9901, #9456, #9560).
  • 👻 Bug 修复:如果传递了无效的 scopest.rerun,将会引发错误 (#9911, #9908)。
  • 🦋 Bug 修复:Dataframe 工具栏在对话框中正确显示 (#9897, #9461).
  • 🦀 Bug 修复: LinkColumn 的正则表达式用于 display_text 使用正确的 URI 解码 (#9895, #9893).
  • 🦎 Bug 修复:当 on_selection="ignore" 时,st.dataframe 具有正确的类型提示 (#9898, #9669)。
  • 🐌 错误修复:在宽屏和居中布局模式下,填充应用一致(#9882, #9707)。
  • 🕸️ Bug 修复:当 use_container_width=True 时,st.graphviz_chart 显示正确 (#9867, #9866).
  • 🦗 错误修复:st.pillsst.segmented_control 的重载定义使用了正确的选择模式默认值 (#9801)。感谢 RubenVanEldik
  • 🦂 错误修复:当使用 Ctrl+Enter 时,st.text_area(以及其他小部件)在表单中正确提交(#9847, #9841)。
  • 🦟 错误修复:st.write 使用 st.help 渲染 DeltaGenerator 对象 (#9828, #9827)。
  • 🦠 错误修复:st.text_area 在使用键时正确匹配会话状态中的值 (#9829, #9825)。
  • 🪰 Bug 修复:当用户提交未更改的值时,st.text_input 不会触发重新运行 (#9826)。
  • 🪳 Bug 修复:改进了 st.exception 的样式,以修复溢出和错误的填充 (#9818, #9817, #9816)。
  • 🕷️ Bug 修复:在全屏模式下,大数据帧不会溢出并覆盖数据帧工具栏 (#9803, #9798).
  • 🐞 错误修复:st.audio_input 在半小时偏移的时区中显示正确的录音时间 (#9791, #9631)。
  • 🐝 错误修复:在iOS中,st.number_input在获得焦点时显示数字键盘而不是普通键盘 (#9766, #9763)。
  • 🐜 错误修复:包含连字符的小部件键现在可以正确地以st-key-前缀添加到DOM中的HTML类中(#9793)。
  • 🪲 错误修复:由 st.audio_input 创建的音频文件包含时间戳,以确保文件名唯一 (#9768)。
  • 🐛 错误修复:双斜杠的URL路径名不会创建301重定向 (#9754, #9690).

发布日期:2024年11月6日

亮点

  • 💊 引入 st.pills 来创建单选或多选的药丸按钮组。
  • 🎛️ 引入 st.segmented_control 来创建一个分段按钮或按钮组。
  • 🎤 宣布 st.audio_input 的全面可用性,这是一个允许用户使用麦克风录制声音的小部件。

显著变化

  • ➡️ Markdown 渲染一组有限的排版符号(箭头和比较器)。
  • 你可以使用 :streamlit:Markdown 中渲染 Streamlit 徽标。
  • 🐍 st.text 包裹文本并不再使用等宽字体。
  • 🪣 你可以为 st.image 设置 use_container_widthuse_column_width 已被弃用。
  • 📅 st.date_input 根据用户的语言环境推断一周的第一天 (#9706, #5215).

其他变更

  • 🎶 Streamlit 的 CLI 工具接受配置选项的数组值 (#9577)。
  • ⛓️ 静态文件服务支持符号链接 (#9147, #9146)。感谢, link89!
  • 🚀 Streamlit 在应用本地运行时提供了有用的部署链接 (#9681)。
  • ↕️ 图表的全屏按钮与数据框架工具栏匹配 (#9721).
  • 🏃 跑步人图标在渲染前会有短暂的延迟,以避免在快速运行的应用程序中出现不必要的闪烁(#9732)。
  • 🖇️ ComponentRequestHandler 允许符号链接 (#9588)。
  • 👆 Streamlit 与 pillow 版本 11 兼容 (#9742)。感谢 hauntsaninja
  • 🗺️ Deck.gl 已升级至版本 9.0.33 (#9636).
  • 🦠 错误修复:当使用 help 关键字参数时,st.latex 保持居中对齐 (#9698, #9682)。感谢,emmagarr
  • 🪰 Bug 修复:应用程序在 Android 上正确访问本地存储 (#9744, #9740).
  • 🕷️ Bug 修复:可以清除缓存的类方法 (#9642, #9633).
  • 🐞 错误修复:当用户更改页面时,Streamlit 清除片段自动重新运行。这防止了无效索引 (#9617)。
  • 🐝 错误修复:st.page_link 的边距已修正 (#9625)。
  • 🐜 错误修复:表单小部件在获得焦点时显示提交说明 (#9576, #7079).
  • 🪲 错误修复:st.navigation 正确协调 client.showSidebarNavigation (#9589, #9581)。
  • 🐛 错误修复:st.text_area 需要最小高度为68px,以适应两行文本 (#9561, #9217)。
  • 💅 错误修复:各种样式修复 (#9529, #8131, #9555, #9496, #9554, #9349, #7739).

发布日期:2024年10月1日

亮点

显著变化

其他变更

  • 🔑 小部件键在DOM中以HTML类的形式出现,带有st-key-前缀(#9295, #5437, #3888)。
  • 🔍 StreamlitAPIException 类已扩展为针对一些最常见错误的更具体的异常 (#9318)。
  • 🗺️ st.mapst.pydeck_chart 有一个全屏切换按钮,与数据框架工具栏相匹配。
  • ⬆️ Vega的前端依赖已升级 (#9443, #9438).
  • 🕵️ Streamlit 兼容 Watchdog 版本 5 (#9354)。感谢 RubenVanEldik
  • 🔁 Streamlit 兼容 Tenacity 版本 9 (#9348)。
  • 🔢 错误修复:列配置将覆盖来自 pandas.Styler 的任何文本或数字格式 (#9538, #7329, #7977)。
  • 🦋 Bug 修复:Deck GL 缩放按钮具有正确的边框半径 (#9536).
  • 🦐 错误修复:嵌入式应用程序具有正确的填充以避免隐藏元素 (#9524, #9341).
  • 🎨 错误修复:st.multiselect 占位符文本的颜色已修正 (#9523, #9514)。
  • 🧹 错误修复:st.json 水平滚动而不是溢出其容器 (#9521, #9520)。
  • 🌬️ 错误修复:Bokeh 图表(暂时)没有全屏按钮以防止水平滚动(#9528, #2358)。
  • 🐡 错误修复:如果用户在页面URL末尾添加斜杠,用户将被正确重定向 (#9500, #9127).
  • 📁 Bug 修复: st.Page 警告开发者不要在 url_path 中使用子目录,因为这是不支持的 (#9499).
  • 💩 Bug 修复:Streamlit 正确计算数据框宽度,以防止最小化 React 错误 #185:超过最大更新深度 (#9490, #7949)。
  • ☠️ Bug 修复:ScriptRunContext 处理活动脚本的哈希值,以避免在多页面应用程序中小部件失去状态的竞态条件(#9441, #9100)。
  • 🪱 错误修复:通过 Streamlit 的静态文件服务托管时,PDF 不会显示为纯文本 (#9439, #9425)。
  • 👻 Bug 修复:当与自定义组件和回调一起使用时,片段元素不会消失 (#9381, #9389, #9372).
  • 👽 Bug 修复:Streamlit 监视正确的目录以进行文件更改 (#9453, #7467).
  • 🦀 错误修复:侧边栏导航使用页面计数来确定何时显示“显示更多”按钮,以实现更一致的行为 (#9394)。
  • 🦎 错误修复:在脚本运行开始时更新内部脚本哈希,而不是在结束时更新,以便在脚本运行中断时正确进行页面路由(#9408, #8975)。
  • 🐌 错误修复:标题中的粗体格式被忽略 (#9395, #4248)。
  • 🕸️ Bug 修复:Streamlit 正确识别更多文件的 MIME 类型,以防止自定义组件无法渲染 (#9390, #9365)。感谢 t0mdavid-m
  • 🦗 错误修复:client.showSidebarNavigation 配置选项与 st.navigation 正常工作(#9379)。
  • 🦂 错误修复:Streamlit 在健康检查中使用 example.com 而不是 test.com,以避免不必要的警告 (#9371)。感谢 wyattscarpenter
  • 🦟 错误修复:如果尝试使用空路径初始化页面,st.Page 将会引发错误 (#9374, #8892)。
  • 🦠 错误修复:用户关闭后,未更改的 st.dialog 可以通过编程方式重新打开 (#9333, #9323)。
  • 🪰 Bug 修复:Streamlit 将不会从 st.Page 中声明的页面标题中删除下划线 (#9375, #8890)。
  • 🪳 Bug 修复: st.logo 在切换页面时不会闪烁 (#9361, #8815).
  • 🕷️ 错误修复:st.data_editor 允许用户在删除后重新添加具有相同索引的行 (#8864, #8854)。
  • 🐞 错误修复:st.logo 在调整大小以适应侧边栏宽度时保持其宽高比 (#9368)。
  • 🐝 错误修复:如果在重新运行期间未调用 st.logo,Streamlit 会正确移除它 (#9337, #9336)。
  • 🐜 错误修复:当侧边栏改变状态时,st.logo 不会闪烁 (#9338)。
  • 🪲 错误修复:Streamlit 在 React Portal 中渲染 st.balloonsst.snow,以提高渲染效果和与 st.dialog 的兼容性 (#9335, #9236)。
  • 🐛 错误修复:当st.multiselect在狭窄的容器中显示时,选项标签会被干净地截断(#9334, #8213)。

发布日期:2024年8月27日

亮点

  • 📈 Streamlit 原生支持更多数据框格式!使用来自流行库的数据框和系列对象,如 Dask、Modin、Numpy、pandas、Polars、PyArrow、Snowpark、Xarray 等。使用符合 Python 数据库 API 规范 2.0 的数据库游标。使用任何支持 Python 数据框交换协议的内容。请参阅 文档

显著变化

  • ↔️ 您可以控制st.json元素的初始展开状态。
  • 🧑‍💻 你可以选择在 st.code 中换行。
  • 🕵️ Streamlit 支持 Kubernetes 风格的密钥,因此您可以使用 Snowflake Snowpark 容器服务的密钥格式 (#9078)。
  • ⤴️ 重大变更:我们移除了一个允许在 pydantic<2.0 中使用自定义验证器的补丁 (#9257)。
  • 💔 重大变更:我们从缓存装饰器中移除了实验性的缓存回放功能 (#9305)。

其他变更

  • 🌐 为了提高应用程序的效率,除非脚本运行被中断,否则WebSocket重新连接不会触发重新运行(#9083)。
  • 👋 我们更新了streamlit hello应用程序以使用Google Material图标。
  • ⌨️ st.number_input, st.selectbox, st.slider, st.select_slider, 和 st.radio 为它们的返回值提供了更精确的类型提示 (#9048, #9296, #8717). 感谢, Asaurus1!
  • ⭐ st.feedback 为其返回值提供了更精确的类型提示 (#9216)。感谢 wyattscarpenter
  • 💅 我们通过 postMessage 改进了嵌入式应用的主题管理 (#9103)。
  • 🌱 Bug 修复:在侧边栏中,st.logo 的图像会随着侧边栏宽度调整大小 (#9298, #8707)。
  • 🪹 错误修复:当父片段更新时,Streamlit 正确清理子片段 (#9246, #9233, #9267)。
  • 💩 错误修复:在片段重新运行时,元素在更新时不再一起重新运行,而是在片段重新运行结束时一起重新运行(#9285)。
  • 🪱 错误修复:如果在重新运行期间块类型发生变化,Streamlit 会丢弃该块的子元素,以防止出现不正确的视觉伪影,例如 st.tabs 导致空白页面 (#9276, #9259, #8676)。
  • ☠️ 错误修复:当页面重新运行被另一个重新运行中断时,小部件状态得以保留(#9187, #9163)。感谢,dannyopts
  • 👽 错误修复:st.selectboxst.multiselectst.radiost.select_slider 中的 options 正确使用了 dict_items (#9241, #9237, #5377)。
  • 👻 Bug 修复:在数据框中,SelectboxColumn 索引将以正确的灰色样式显示 (#9231, #8772)。
  • 🦀 Bug 修复:st.write_stream 在接收到空块时不会立即失败 (#9234, #9227)。
  • 🦋 Bug 修复:如果存在空锚点,Streamlit 不会自动滚动到该锚点 (#9206, #9203).
  • 🦎 Bug 修复:我们更改了 scriptRunId 的处理方式,以防止 st.tabs 在片段中显示额外的空标签 (#9186, #9158, #9215)。
  • 🐌 错误修复:自动重新运行片段不会引发 FragmentStorageKeyError,以防止可能的竞争条件 (#9183, #9080)。
  • 🕸️ Bug 修复:我们改进了 st.plotly_chart 对传递关键字参数 config 的处理 (#9190, #9134)。
  • 🦗 错误修复:所有 label 参数中的 Markdown 现在正确地忽略了标题 (#9189, #9141)。
  • 🦂 错误修复:我们撤销了一个关于片段的更改,该更改在某些情况下导致一些小部件丢失状态(#9178, #9171)。
  • 🦟 错误修复:st.experimental_fragmentst.experimental_dialog 的弃用警告仅在命令被调用时显示。这防止了使用它们的自定义组件在导入时引发过早的警告 (#9170, #9143)。
  • 🦠 错误修复:当 language="diff" 时,st.code 显示差异代码的语法高亮 (#9172, #8687)。
  • 🪰 Bug 修复:在 try-except 块中,引发 ScriptControlException 的 Streamlit 命令按预期执行 (#9167, #9155, #9182)。
  • 🪳 Bug 修复:st.date_inputvalue 类型正确,适用于 linting (#9149)。感谢 wyattscarpenter
  • 🕷️ Bug 修复:我们更新了 plotly.js 以支持 hoversubplots="axis" (#9144, #9118).
  • 🐞 错误修复:我们稳定了 st.map 实例的身份,以便在更新其参数时不会创建多个地图 (#9092, #8329)。
  • 🐝 错误修复:您现在可以清除缓存类实例方法的缓存(#9101, #8638)。
  • 🐜 错误修复:对话框中的复制按钮现在可以正常工作 (#9130, #9112).
  • 🪲 错误修复:Streamlit 魔法在 for-else、while-else、try-else、try-except 和 match 块中一致工作(#9110, #9109)。感谢 whitphx
  • 🐛 错误修复:打印应用程序时,底部容器将始终在最后打印,不会与其他内容重叠 (#9129)。

发布日期:2024年7月25日

亮点

  • 🍪 介绍 st.context 用于读取头部信息和cookies!
  • ⭐ 引入 st.feedback 以收集用户的评分和情感反馈!
  • 👟 宣布st.fragment的全面可用性,这是一个装饰器,允许你独立于整个页面重新运行函数。
  • 🍿 宣布 st.dialog 的正式发布,这是一个装饰器,允许你创建模态对话框。

显著变化

  • ℹ️ 你可以在Markdown中使用Material Symbols库中的图标!
  • 📈 你可以将 graphviz.Source 对象传递给 st.graphviz_chart
  • 📊 您可以修改st.bar_chartst.area_chart的堆叠行为。
  • 🔭 在片段中,您可以将 st.rerun 的作用域限定为该片段。
  • 🪺 Streamlit 支持嵌套片段 (#8931, #8635).
  • 📞 片段可以在回调函数中使用 (#8916, #8591).

其他变更

  • ⭕ Material Symbols 是圆形的而不是轮廓的 (#8998).
  • 🔢 Streamlit 支持 Numpy 2.0 版本 (#8940)。
  • 😄 我们已经更新了新表情符号的验证 (#8923).
  • 👻 我们已经移除了几个实验性命令,并提供了新的、普遍可用的版本 (#8943)。
  • ☠️ 我们已经根据宣布的过期日期移除了已弃用的配置选项 (#9005, #9013, #9018).
  • 🦎 错误修复:当子片段在父片段中的小部件之前时,嵌套片段正确重新运行 (#9114)。
  • 🐌 错误修复:Streamlit 在使用静态文件服务时,会在执行额外检查之前验证文件路径,以提高安全性 (#8990)。
  • 🕸️ Bug 修复:st.mapst.expander 内以正确的宽度显示 (#9070, #8004)。
  • 🦗 错误修复:Streamlit 在错误消息中显示正确的(Windows)路径用于 secrets.toml (#9061, #6147)。
  • 🦂 错误修复:st.switch_page 在用户切换页面时正确清除非嵌入查询参数 (#9059, #9050)。
  • 🦟 错误修复:自定义主题现在可以正确显示多页面元素,如 st.page_link (#8994, #8978)。
  • 🦠 错误修复:st.snowst.balloons 在打印时不显示 (#9053, #7790)。
  • 🪰 Bug 修复:我们已经改进了 st.number_input 的默认格式化 (#9035, #7163)。
  • 🪳 Bug 修复:修正了一个 st.navigation 示例 (#9027, #9026)。感谢 mahotd
  • 🕷️ Bug 修复:关闭对话框时不再有短暂的延迟 (#9023, #8747).
  • 🦀 Bug 修复:当在片段中遇到 KeyError 时,Streamlit 会正确抛出错误,而不是一个误导性的片段相关错误 (#9011, #8494)。
  • 🐞 错误修复:Streamlit 在片段重新运行时不清除 MediaFileManager 以防止无效引用 (#9010, #8932)。
  • 🐝 错误修复:删除自定义主题时,它们会被正确移除 (#8989, #8962).
  • 🐜 错误修复:Streamlit 支持非 Unix 风格的路径,以便在 Windows 中正确进行多页面路由 (#8988, #8958)。
  • 🪲 错误修复:在极少数情况下,在片段中使用 st.rerun 不会导致应用的主体内容在片段中渲染 (#8798)。
  • 🐛 错误修复:当片段中引发异常时,Streamlit 会在片段内显示错误消息 (#8868)。

发布日期:2024年6月20日

亮点

显著变化

  • 📊 st.bar_chart 可以水平渲染图表。
  • ℹ️ st.expander 支持在其标签旁边添加图标。
  • 🏗️ st.columns 允许你设置垂直对齐。
  • 📲 自定义组件支持回调函数 (#8633, #3977).
  • 📥 片段不再支持在其主体之外渲染小部件 (#8756)。
  • 🏷️ 您现在可以为st.area_chartst.bar_chartst.line_chartst.scatter_chart自定义轴标签。
  • ⌛ 缓存参数 experimental_allow_widgets 已弃用 (#8817).
  • ❌ Streamlit 不再支持旧版缓存。st.cache 现在是 st.cache_datast.cache_resource 的别名 (#8737)。
  • ⬆️ Streamlit 支持 protobuf 版本 5 (#8627)。

其他变更

  • ✨ Streamlit Hello 使用 st.navigationst.Page,这是声明多页面应用的新推荐方法 (#8806)。
  • 🧹 Streamlit 不再在应用程序的页面标题后附加 "· Streamlit",除非在 Community Cloud 上运行 (#8900)。
  • 🦋 Streamlit 魔法和 st.write 使用 st.json 来显示 st.secrets (#8659, #2905).
  • 🔍 Streamlit 不会自动检查 PyPi 上的新版本 (#8841, #8453)。
  • 🐌 错误修复:自定义组件函数需要导入 streamlit.components.v1 (#8666, #8644).
  • 🕸️ Bug 修复:由于导致回归,已恢复对 Altairs resolve_scale 方法的更改处理 (#8845, #8642).
  • 🦗 错误修复:Markdown 中的图片不会溢出 Markdown 容器 (#8794)。
  • 🦂 错误修复:当 index 大于 options 的大小时,澄清了 st.selectbox 的错误信息 (#8775, #8771)。
  • 🦟 Bug 修复:Streamlit 现在可以正确处理带有 ID 的非小部件元素 (#8770, #8768)。
  • 🦠 错误修复:文档字符串正确识别了当 use_container_width=True 是默认值的情况 (#8809)。
  • 🪰 Bug 修复:Streamlit 现在具有一致的最小元素高度,以实现更好的垂直对齐 (#8797, #8835, #8027, #8706).
  • 🪳 Bug 修复:添加了检查以确保在执行操作之前初始化 SessionInfo (#8779, #8321, #7549).
  • 🕷️ Bug 修复:默认情况下,Dataframe 使用原始数字而不进行格式化 (#8708, #8695)。
  • 🐞 错误修复:更新了不允许写入会话状态的错误消息 (#8720, #8715)。
  • 🐝 错误修复:如果文件监视被禁用,Streamlit 不会初始化 LocalSourcesWatcher (#8741, #8738).
  • 🐜 错误修复:st.experimental_dialog 不再为 title 提供无效的默认值 (#8729)。
  • 🪲 错误修复:移除了ast.Call中已弃用的kwargs以防止类型错误(#8711)。感谢JelleZijlstra
  • 🐛 错误修复:st.experimental_dialog 被显式导出以避免类型检查错误 (#8728, #8712).

发布日期:2024年5月23日

亮点

  • 📈 宣布图表用户选择功能!使用 st.plotly_chartst.altair_chartst.vega_lite_chart 来创建图表小部件,使应用程序更具交互性。
  • 🚣‍♂️ 宣布用户对数据框的选择。使用st.dataframe从用户那里获取行和列的选择。
  • 💼 介绍 st.logo 用于在侧边栏的导航上方添加图片。

显著变化

  • 🔗 st.page_link 支持 Material 图标 (#8593)。
  • ⚓ 标题的锚点按钮显示在标题的末尾,以获得更美观和一致的外观 (#8587).
  • 🈂️ SQLConnection 接受 query 作为 sqlalchemy.URL.create 参数,以便您可以指定字符集 (#8581)。感谢 LucianLiu6

其他变更

  • 🕸️ Bug 修复:为 CSV 下载添加了一个备用方法,以提高浏览器兼容性 (#8452, #8210)。
  • 🦗 Bug 修复:克隆时列配置被深度复制,以防止意外修改 (#8677).
  • 🦂 错误修复:当使用 st.data_editor 并在添加的行中使用 num_rows=dynamic 时,如果添加的行中有空值,渲染正确 (#8640, #7458)。
  • 🦟 错误修复:当使用 server.headless=true 初始化 Streamlit 时,streamlit run 将显示 localhost 地址 (#8647, #8629)。
  • 🦠 错误修复:滚动边距与新的工具栏(应用界面)高度匹配 (#8641, #8554).
  • 🪰 Bug 修复:枚举强制转换与 StrEnum 兼容 (#8622, #8500)。感谢 97k
  • 🪳 错误修复:点击提交后焦点返回到聊天输入框,以提供更好的移动体验 (#8637)。
  • 🕷️ 错误修复:Altair图表的内部参数和视图名称已稳定,以提高性能 (#8628).
  • 🐞 错误修复:改进了 st.query_params.update()st.query_params.from_dict() 的输入类型 (#8614, #8613)。感谢 Asaurus1
  • 🐝 错误修复:为了防止不必要的侧向滚动,st.table的全屏按钮不再显示 (#8621, #2358)。
  • 🐜 错误修复:当使用 st.rerun 时,Streamlit 正确清除了过时的元素 (#8599, #8360)。
  • 🪲 错误修复:自定义组件可以独立执行以进行测试和脚本编写 (#8620, #8606).
  • 👻 Bug 修复:Plotly 图表在更新时不再渲染缓存数据 (#8191, #5902)
  • 👽 当在带边框的容器中渲染时,Plotly 图表的宽度不会溢出其父容器 (#8191, #8244)。
  • 🦀 使用 webgl 渲染的 Plotly 图表在 macOS 的 M1/M2 芯片组上正确显示 (#8191, #8169).
  • 🦋 当垂直相邻渲染时,Plotly图表的大小是正确的(#8191, #7597)。
  • 🦎 错误修复:当应用程序窗口调整大小时,Plotly图表保持其状态(#8191, #6324)。
  • 🐛 错误修复:在 st.tabs 中的 Plotly 图表在切换标签时不再闪烁 (#8191, #8575)。
  • 🐌 错误修复:如果在重新运行之间更改了此参数,Plotly图表将尊重use_container_width#8191, #8576)。

发布日期:2024年5月2日

亮点

  • 🍿 介绍 st.experimental_dialog!创建一个模态覆盖层,它也可以独立于应用程序的其他部分重新运行。查看 文档 了解如何操作。

显著变化

其他变更

  • 🔲 Streamlit 支持 Modin 和 Snowpark pandas 的 DataFrames 和 Series (#8506)。
  • ⏱️ 改进了对 st.dataframest.data_editorperiod 数据类型的支持 (#7987)。
  • 🗺️ Streamlit 支持使用 pydeck-cartost.pydeck_chart 一起使用 (#8422)。
  • ❄️ 额外的 snowflake 要求已更新,以允许 Python 版本 3.8 到 3.11 (#8538)。
  • 🍞 st.toast 收到了视觉改进,现在出现在右上角 (#8433)。
  • 🦋 对话框和模态框的视觉调整。
  • 🦀 Bug 修复:当传递一个没有 yield 的生成器时,st.write_stream 返回一个空字符串 (#8560)。
  • 🦎 错误修复:支持None值的小部件现在可以通过Session State正确设置为None#8529, #7649)。
  • 🐌 错误修复:如果未设置st.date_input的初始值,并且今天的日期超出了声明的最小值或最大值,则将使用最小值或最大值,以较接近者为准(#8519, #6167)。
  • 🕸️ Bug 修复:Altair 的 resolve_scale 方法已正确处理 (#8497, #1667)。
  • 🦗 错误修复:st.multiselects 在传递给 optionsdefault 时正确处理集合 (#8471, #8466)。
  • 🦂 错误修复:当为空时,st.status 不显示扩展器切换 (#8369)。
  • 🦟 Bug 修复:Vega 和 Altair 中 vconcat 图表的宽度已正确设置 (#8498, #2751).
  • 🦠 错误修复:应用程序打印效果更佳,不再显示过多的空白(#8502, #7815)。
  • 🪰 Bug 修复:移除了无效的转义序列,以避免 pytest 的警告 (#8510, #8501)。
  • 🪳 Bug 修复:st.file_uploader 回调在第一次选择后每次文件选择时正确执行一次 (#8493, #4877)。
  • 🕷️ Bug 修复:Streamlit 兼容最低版本为 pillow 7.1.0 而不是 9.1.0 (#8492, #8486).
  • 🐞 错误修复:当脚本运行因切换页面而中断时,小部件值被正确丢弃(#8425, #7338)。
  • 🐝 错误修复:深色模式下的应用程序在打印后将返回深色模式 (#8469, #7879).
  • 🐜 错误修复:组件准备状态是动态的,以避免在Safari中导致空白应用程序的竞争条件(#8434, #8362)。
  • 🪲 错误修复:当 min_value 小于或等于 max_value 时,st.slider 会产生 Python 错误 (#8413, #8342)。
  • 🐛 错误修复:Vega 和 Altair 的时间偏移已正确修复 (#8278, #4342)。

发布日期:2024年4月4日

亮点

  • 👟 引入 st.experimental_fragment 来装饰函数并独立于整个页面重新运行它们。查看 文档 并为您的应用程序提速!
  • 🌐 介绍 st.html 以将自定义 HTML 插入到您的应用程序中!查看 文档 了解如何使用它。

显著变化

其他变更

  • 🖱️用户可以点击小部件标签以聚焦于st.number_inputst.text_inputst.text_area的输入(#8155)。感谢filiptammergard
  • ⬆️ Streamlit 支持 packaging 版本 24.x (#8338, #8328).
  • 🕸️ Bug 修复:Streamlit 现在除了页面外,还会监视导入模块的更改 (#8372)。感谢 zyxue
  • 🦗 错误修复:溢出的提示消息现在被正确截断 (#8337, #8330).
  • 🦂 错误修复:当使用 LangChain 的 StreamlitCallbackHandler 时,st.status 正确更新为完成状态 (#8331)。
  • 🦟 错误修复:自定义组件在暗色主题中不再显示白色背景 (#8242, #8156, #7813).
  • 🦠 错误修复:当全屏图标可能导致水平溢出时,内容区域的宽度会减小(#8279, #6990)。
  • 🪰 错误修复:未定义框架高度的自定义组件将以高度0渲染 (#8290, #8285).
  • 🪳 错误修复:恢复了活动会话的检查,以防止在没有用户连接时应用程序不必要地运行 (#8294)。
  • 🕷️ 错误修复:自定义主题优先于嵌入选项 (#8021, #7118).
  • 🐞 错误修复:恢复了异步计时器以过期会话存储缓存,以解决计算效率问题 (#8281)。
  • 🐝 错误修复:当使用 st.popover 并设置 use_container_width=True 时,弹出容器的最小宽度将与弹出按钮匹配(#8266, #8261)。
  • 🐜 错误修复:在AppTest中使用st.rerun与触发小部件不再创建无限循环 (#8264, #7768).
  • 🪲 错误修复:如果使用正则表达式或不使用完全限定的URL,LinkColumn中的URL将被正确解码(#8258, #7064)。
  • 🐛 错误修复:st.query_params 在更新多个参数时只发送一个 ForwardMsg (#8205, #8199)。感谢 Asaurus1

发布日期:2024年3月7日

亮点

  • 🍿 介绍 st.popover 以在您的 Streamlit 应用程序中创建弹出元素。查看 文档 了解如何使用它!

显著变化

  • 📺 您现在可以向 st.video 传递字幕了!查看我们的 功能演示
  • ⚗️ AppTest 包含对 st.expanderst.status 的支持。
  • 🧪 AppTest.from_function 接受一个带有参数和/或返回值的函数。
  • 🧩 自定义组件的超时警告已被替换为元素骨架,以改善加载缓慢组件的用户体验,特别是在一些云托管平台上(#8179, #7046)。
  • 📄 st.switch_pagest.page_link 在路径处理、性能和视觉外观方面得到了显著改进(详见下文)。
  • 🦀 Bug 修复:Streamlit 使用 glide-data-grid 版本 6.0.4 来修复各种数据框问题 (#7779, #6900, #7032, #7727, #6810, #7930, #7949, #7831, #8168).
  • 💦 错误修复:我们修复了协程循环中的一个重大内存泄漏问题。在客户端和服务器之间生成大量小消息的应用程序将大大受益(#8068, #7989, #6510)。

其他变更

  • 💪 现在多个模块被懒加载,以加快 Streamlit 的导入时间 (#8150, #8143, #8134, #8113, #8125, #8111, #8109, #6066).
  • 🖼️ st.write 支持 PIL 图像 (#8039).
  • 🔗 st.radio 允许在传递给 options 的项目中使用 markdown 链接 (#8028, #7992).
  • 💀 deprecation.showPyplotGlobalUse 配置选项已被弃用,并将在后续版本中移除 (#8133)。
  • 🤖 Streamlit 支持 AzureOpenAI 聊天流 (#8107, #8084).
  • 🌐 /healthz 端点支持 HTTP HEAD 方法 (#8145, #8144)。感谢 rahulmistri1997
  • 🌀 st.spinnercache 参数现在是私有的(_cache),因为它仅供内部使用(#8118)。
  • 🏃 会话存储的检查和过期是异步进行的,以提高低流量应用的性能和效率 (#8083)。
  • 🐜 st.write_stream 在消息无法解析时会抛出一个描述性的 Exception (#8036)。
  • 📘 修复了st.switch_pagest.page_link示例中的拼写错误(#8162)。感谢t1emp0
  • 👻 Bug 修复: st.help 正确显示条件成员 (#8228).
  • 🦋 Bug 修复:页面更改时应用状态完全清除,以防止残留的陈旧元素 (#8208)。
  • 🦎 Bug 修复: st.info, st.success, st.warning, 和 st.error 不会因为长的 markdown 字符串而溢出 (#8194, #6394).
  • 🐌 错误修复:当服务器端口设置为3000时,Streamlit会显示一个警告,提示端口3000是为开发保留的(#8152, #8149)。
  • 🕸️ Bug 修复:st.page_linkst.switch_page 改进了路径计算以提高一致性 (#8127)。
  • 🦗 错误修复:st.page_link 在悬停时显示浏览器中的正确路径 (#8086, #8080)。
  • 🦂 错误修复:st.page_linkst.switch_page 规范化路径以在 Windows 中正确处理 (#8103, #8070)。
  • 🦟 错误修复:脚本运行器使用 while 循环代替递归以避免堆栈溢出 (#8100)。
  • 🦠 错误修复:st.page_linkst.switch_page 正确处理以 "/" 为前缀的相对路径 (#8085, #8081)。
  • 🪰 Bug 修复: st.image 在 Windows 中正确解析路径 (#8092, #7271, #6066).
  • 🪳 Bug 修复:st.switch_page 不再等待当前页面运行完毕后再切换页面 (#8054, #7954).
  • 🕷️ Bug 修复: st.map 和其他简单图表在数据索引不从0开始时正确处理颜色 (#8158, #8079, #8077). 感谢, awhazell!
  • 🐞 错误修复:st.selectbox, st.multiselect, st.select_slider, 和 st.radio 使用选项的浅拷贝以防止意外的突变 (#8064, #7534).
  • 🐝 错误修复:在暗模式下,st.time_input 中选择的时间显示正确 (#8056, #7436)。
  • 🪲 错误修复:在最新版本的Chrome中,Dataframe滚动条显示正确 (#8034)。
  • 🐛 错误修复:将 st.query_params 转换为 str 将打印查询参数的内容,而不是类描述 (#8030)。

发布日期:2024年2月1日

发布视频

亮点

  • 🔗 介绍 st.page_link!现在,您可以为多页面应用程序构建自定义导航菜单。查看 我们的文档 了解如何操作。
  • 💦 宣布 st.write_stream 以便利地处理生成器和流式响应。查看 我们的文档 了解如何使聊天应用的开发变得更加简单。

显著变化

  • 📝 st.chat_input 可以内联使用,并放置在应用程序的任何位置。您还可以在一个页面上放置多个 st.chat_input 小部件 (#7896)。

其他变更

  • 🧹 内部重构和清理 (#7980)。感谢,whitphx
  • ❄️ Bug 修复:Snowpark 现在是 SnowflakeConnection 的可选依赖项 (#7919)。
  • 🕷️ Bug 修复:当 server.fileWatcherType 设置为 nonepoll 时,watchdog 建议被禁用 (#8024, #7999)。
  • 🐞 错误修复:当不使用st.data_editor与动态行时,必需的列可能会被隐藏 (#7996, #7991).
  • 🐝 错误修复:支持 pandas 2.2.0 的新周期类型 (#7988)。
  • 🐜 错误修复:自定义组件仅接收应用程序的来源和路径,以避免在查询参数更改时重新加载组件 (#7951, #7503)。感谢 eric-skydio
  • 🪲 错误修复:st.progress 在给定值大于1.0时不会由于浮点精度问题引发异常(#7953, #5517)。感谢,notiona
  • 📚 Streamlit 支持 importlib-metadata 版本 7 (#7925)。感谢 elgalu
  • 🐛 错误修复:AppTest 正确识别容器内的小部件 (#7923, #7711).
  • 💿 自定义组件在重新渲染时不再累积样式元素,以提高性能 (#7914)。感谢 Tom-Julux

发布日期:2024年1月11日

发布视频

亮点

  • 🔄 宣布 st.switch_page 以编程方式在多页面应用程序中切换页面!查看我们的 文档 了解这一备受期待的功能!
  • ❓介绍 st.query_params 用于处理通过应用程序URL传递的变量。查看我们的 文档 以了解此功能以及它如何从我们的实验版本中升级和改进!

显著变化

  • 📐 st.container 可以配置高度以创建网格或滚动容器 (#7697, #2169, #2447).
  • 🔗 对于数据框,LinkColumn 有一个简化的用户界面,并且可以配置显示文本,包括通过正则表达式以编程方式定义的文本 (#7784, #7741, #6787)。
  • 🧭 多页面应用的侧边栏导航可以通过配置隐藏(#7852)。
  • ⏩ 当与orjson结合使用时,Plotly图表可以加载得更快(#7860)。感谢,eric-skydio
  • ♻️ 行为变更:更改页面时移除查询参数 (#7817#6725#5505).

其他变更

  • 🛠️ showFooter 不再是一个嵌入选项,因为页脚不再存在 (#7902, #7785).
  • 🕵️ 所有安全问题应通过 HackerOne (#7783) 报告。
  • 🕷️ Bug 修复:当标签页过时时,标签页不会被禁用以防止闪烁 (#7905, #7820).
  • 🛡️ 错误修复:使用完整文件路径而不是前缀,以防止自定义组件访问超出其自身文件夹的范围 (#7901)。
  • 🪱 Bug 修复:如果小部件的值无法在 Python 中进行比较,则会引发异常 (#7840, #3714)。
  • 🐞 错误修复:扩展器上的向下箭头图标保持一致的尺寸 (#7596)。感谢,matiboux
  • 🐝 错误修复:在切换标签时不再闪烁 (#7904).
  • 🐜 错误修复:当关联的 st.form_submit_button 被禁用时,Enter-to-submit 会自动禁用 (#7827, #7822)。
  • 🪲 错误修复:无法通过列配置隐藏必填列 (#7888, #7559).
  • 🐛 错误修复:在 SelectboxColumn 中使用 nan 作为值将会引发错误,而不是静默失败 (#7887, #7558)。
  • 🌙 Bug 修复:自定义组件 iframe 支持暗黑模式 (#7821, #7813).
  • 🪰 Bug 修复:启动 Streamlit 的命令未发送到前端 (#7787)。
  • 💅 错误修复:增强了st.toggle的背景颜色以提高可见性 (#7788)。
  • 🪳 Bug 修复:内置图表可以处理有序分类列 (#7771, #7776).
forum

还有问题吗?

我们的 论坛 充满了有用的信息和Streamlit专家。