pypi marimo 0.25.2

2 hours ago

This release focuses on bug fixes and adds support for Python 3.15 as well as GeoJSON and GeoParquet downloads for geographic data.

⭐️ Highlights

Python 3.15 support

marimo now supports Python 3.15! Create and run reactive notebooks with the latest Python release. #11128

image

Export geographic data

Geospatial dataframes (GeoPandas, Arrow, and DuckDB geometry) can now be downloaded as GeoJSON or GeoParquet, alongside the existing CSV, JSON, and Parquet options. Also works with mo.ui.table and mo.ui.dataframe.

image

🚨 Breaking changes

marimo previously attempted to switch matplotlib, Plotly, Bokeh, and HoloViews to a dark theme when the notebook was dark, but the results were often unexpected, especially in saved figures. Plots now use the plotting library’s own settings. If you want dark plots, please set the theme explicitly in your notebook. (#11147)

✨ Enhancements

  • Add support for Python 3.15. #11128
  • Add Expand all outputs and Clamp all outputs actions. (#11045)
  • Navigate directories with breadcrumbs in mo.ui.file_browser. (#11044)
  • Show consistent startup progress for regular notebooks and sandboxes. (#11085)
  • Build offline WebAssembly exports using Pyodide and PyPI package mirrors. (#11017)
  • Add GeoJSON and GeoParquet exports for geographic tables and dataframes. (#11063, #11116, #11129, #11169)
  • Improve Python highlighting inside Markdown LaTeX. (#11281)
  • Update the LLM model catalog. (#11100, #11183)

🐛 Bug fixes

  • Keep exact mo.ui.number values instead of rounding them to the step size. (#11287)
  • Accept datetime inputs in date widgets. (#11289)
  • Select the first dropdown option when allow_select_none=False and no value is supplied. (#11238)
  • Preserve all rows when sorting tables with unequal-length columns. (#11197)
  • Preserve dates when grouping table charts by hour. (#11078)
  • Export complete geometry text. (#11012)
  • Restore Polars text-to-date/time conversion and preserve empty rows when exploding columns. (#11135, #11158)
  • Retry SQLAlchemy schema inference when Polars conversion fails. (#11282)
  • Correct SQL error locations around Unicode and multiline interpolations, and preserve definitions around comments. (#11151, #11159, #11187, #11224, #11137)
  • Use current, unexecuted editor text for language-server completion and diagnostics. (#11186)
  • Improve inline completion responsiveness. (#11288)
  • Run pending dependencies when an agent edits and runs cells, and preserve edited source on subsequent runs. (#11115, #11121)
  • Attach screenshots to the active notebook session and preserve child-cell traceback context. (#11049, #11035)
  • Allow deletion of old chat history and require pydantic-ai 2.34.0 for reasoning history. (#11249, #11153)
  • Let AI chat inspect captured screenshots as images. (#11107)
  • Preserve optional chat and plugin fields after the Zod upgrade. (#11114)
  • Keep version constraints when installing WebAssembly notebook dependencies and skip lockfile pins for offline exports. (#10871, #11104)
  • Load Loro's WebAssembly module asynchronously in production builds. (#11117)
  • Avoid marking cells stale again after they reran during a module reload. (#10912)
  • Fix persistent-cache hashing for PyArrow values with non-numeric columns. (#11084)
  • Accept pathlib.Path in mo.audio and mo.video; avoid division by zero for silent audio. (#11262, #11101)
  • Improve accessible labels for text inputs, sliders, date widgets, and table pagination. (#11149, #11231, #11067, #11134)
  • Preserve stylesheet base URLs in shadow roots and underscores in docstring code spans. (#10746, #11285)
  • Fix marimo check --strict --format json and CLI output with non-encodable characters. (#11076, #11079)
  • Preserve typed console input when pressing Enter. (#11047)
  • Fix schema generation losing branded identifiers inside lists on Python 3.10. #11320

📚 Documentation

  • Sync the Simplified Chinese, Japanese, and Spanish READMEs with English. (#11230)
  • Refresh documentation screenshots and recordings. (#11284)
  • Remove an unused parameter from the completion docstring. (#10896)

🔬 Preview features

  • Keep marimo pair connected to notebook across browser reloads. (#11013)
  • Gate host integration behind MARIMO_ENABLE_HOST (#11302)
  • Add version to documents and cells (#11317)
  • Make the document a value and the notebook its owner (#11293)
  • Remove execution policy from host document state (#11292)
  • Save notebook documents through the host (#11265)
  • Edit notebook documents through the host (#11264)
  • Apply conditional edits to notebook documents (#11263)
  • Derive whether a result is current from the host stream (#11277)
  • Publish a document's analysis as it becomes available (#11256)
  • Name a document's notebook with notebook_id (#11255)
  • Keep execution policy out of document state (#11252)
  • Serve a notebook's document from marimo edit without a kernel (#11217)
  • Give notebooks a sink instead of a private stream (#11243)
  • Keep current results on the notebook and run history on the host (#11235)
  • Misc host protocol fixes (#11222)
  • Identify host attachments and emit unstable events (#11213)
  • Apply runtime reports only to the runtime they name (#11206)
  • Define custom notebook events in the host protocol (#11215)
  • Model client identity on host attachments (#11214)
  • Deliver a command's events after its backend call (#11205)
  • Expire completed host request receipts (#11189)
  • Retain host results by execution lifetime (#11188)
  • Serve the host protocol from marimo edit (#11180)
  • Add marimo._core, a model of a host's notebooks and runtimes (#11179)
  • Allow secondary consumers during session startup (#11178)

📝 Other changes

  • Update frontend dependencies, including React Aria, Radix, CodeMirror, and DOMPurify. (#11047, #10549, #10325, #11133, #11061)
  • Remove matplotlib and NumPy version pins from the plots tutorial. (#11156)

Contributors

Thanks to all our community and contributors who made this release possible: @akshayka, @almazafa, @cdeil, @darshjoshi, @DG47, @dmadisetti, @kirangadhave, @lcnbr, @Light2Dark, @ljchang, @manzt, @marthacryan, @mohansree14, @mscolnick, @namupta-max, @NiklasvonM, @peter-gy, @rajveer3x, @Sealdot, @tkuhemiya, @Yaqoubj, @yuee3, @Ziwen-Lii

Special thanks to our first time contributors!

Full Changelog: 0.25.1...0.25.2

Don't miss a new marimo release

NewReleases is sending notifications on new releases.