A reactive notebook for Python — run reproducible experiments, execute as a script, deploy as an app, and version with git.
APACHE-2.0 License
Bot releases are visible (Hide)
Published by akshayka 5 months ago
A small fix for mo.ui.table
.
Full Changelog: https://github.com/marimo-team/marimo/compare/0.6.2...0.6.3
Published by akshayka 5 months ago
Small fixes.
Full Changelog: https://github.com/marimo-team/marimo/compare/0.6.1...0.6.2
Published by akshayka 5 months ago
This change includes many quality-of-life improvements to the marimo editor.
📝 Improved markdown editing. The markdown editor now includes basic keyboard shortcuts for bolding text, italicizing, inserting links and more. "Markdown cells", i.e. cells that have a single mo.md
expression, automatically render with the markdown editor. We've also added a "add markdown cell" button to the bottom of the cell array for convenience.
📑 Go-to definition. Use Ctrl/Cmd+Click
on a variable to automatically jump to its definition!
📣 Markdown admonitions. Admonitions in markdown are now supported! For example:
mo.md(
r"""
!!! {hint} "Here's a hint!"
You can now use admonitions in marimo.
"""
)
See the Python markdown docs for more info on syntax.
🤖 Generate with AI button. If you have AI completions enabled, at the bottom of the cell array you'll now see a "Generate with AI" button.
🗺 Routes. Use mo.routes
to create a list of routes that are switched based on the URL path. This is helpful if your working on a marimo notebook that will be deployed as an app -- you can use it in conjunction with mo.sidebar
to create multipage apps.
marimo env
Command by @Haleshot in https://github.com/marimo-team/marimo/pull/1410
Welcome to the marimo family!
Full Changelog: https://github.com/marimo-team/marimo/compare/0.6.0...0.6.1
Published by akshayka 5 months ago
Version 0.6.0 includes two big new features — first-class markdown support and token-authentication — and small quality of life improvements.
marimo ❤️ markdown: marimo edit nb.md
. marimo now supports markdown as a first-class file format. This means that if you're working on notebook that's heavy on text, you can write your notebook in markdown using an editor of your choice (VSCode, vim — anything you like!). Save it as nb.md
, then fire up the marimo editor to interact with it — marimo edit nb.md
— or run it as an app with marimo run nb.md
.
When working with markdown, create a notebook cell using a special fenced code block that starts with {python}
(note the braces!).
```{python}
import matplotlib.pyplot as plt
plt.plot([1, 2, 3, 4])
```
Here's a full example:
# Hello, world!
This is a markdown powered notebook.
```{python}
import random
random.randint(0, 1000)
```
```{python, hide_code=true}
import marimo as mo
```
The markdown file format is not meant as a replacement for the Python one, but it gives you the flexibility to choose the format that's best for your workflow. You can convert markdown notebooks to Python with
marimo convert nb.md > nb.py
and export Python to markdown with
marimo convert nb.py > nb.md
marimo export notebook.md > notebook.py
Check out our tutorial to learn more.
Huge shout out to @dmadisetti for contributing the markdown support! 💪🎉
Token-based authentication 🔑. marimo now runs with token-based authentication by default — this makes sure that only trusted parties can access the marimo server. Most users won't notice changes to their workflow. To learn more, check out the docs.
Export as ipynb
📝. Export marimo notebooks as Jupyter notebook files with marimo export ipynb nb.py -o nb.ipynb
.
Split cell hotkey ⌨️: Split cells with our new hotkey: Ctrl/Cmd-Shift-'
.
mo.hstack
and mo.vstack
now require you to use keyword args (except for the list of items).
Welcome to the marimo family!
Full Changelog: https://github.com/marimo-team/marimo/compare/0.5.2...0.6.0
Published by mscolnick 5 months ago
mo.sidebar
to portal any elements into a collapsible sidebar for your applicationmo.sidebar([
mo.md("# marimo"),
mo.nav_menu({
"#home": f"{mo.icon('lucide:home')} Home",
"#about": f"{mo.icon('lucide:user')} About",
"#contact": f"{mo.icon('lucide:phone')} Contact",
"Links": {
"https://twitter.com/marimo_io": "Twitter",
"https://github.com/marimo-team/marimo": "GitHub",
},
}, orientation="vertical",
),
])
Full Changelog: https://github.com/marimo-team/marimo/compare/0.5.1...0.5.2
Published by akshayka 5 months ago
🏝️ marimo islands: marimo islands are a way to embed marimo outputs and/or python code in your HTML that will become interactive when the page is loaded. This is useful for creating interactive blog posts, tutorials, and educational materials, all powered by marimo’s reactive runtime.
<marimo-island data-app-id="main" data-cell-id="MJUe" data-reactive="true">
<marimo-cell-output>
<span class="markdown">
<span class="paragraph">Hello, islands!</span>
</span>
</marimo-cell-output>
<marimo-cell-code hidden>mo.md('Hello islands 🏝️!')</marimo-cell-code>
</marimo-island>
Read more about islands: https://docs.marimo.io/guides/wasm.html#islands
Export as Markdown: Export your marimo app to markdown from the code editor.
mo.nav_menu: Navigate to different marimo notebooks, when running multiple notebooks at a time.
Full Changelog: https://github.com/marimo-team/marimo/compare/0.5.0...0.5.1
Published by akshayka 5 months ago
Version 0.5.0 introduces a brand new lazy runtime which makes working with expensive notebooks much more ergonomic, and it also makes it possible to export notebooks as markdown.
Lazy runtime. We've heard your feedback: you can now configure the marimo runtime to be lazy, giving you full control over when cells are run. When a cell is run, instead of automatically running affected cells, marimo's lazy runtime will mark them as stale. Cells are still always run with the latest inputs (stale parents of a cell are run if needed), and your notebook is still required to be a DAG, so you're still guaranteed that your code and outputs are consistent.
Learn more: https://docs.marimo.io/guides/runtime_configuration.html
Export as markdown. Export marimo notebooks as markdown with marimo export md notebook.py -o notebook.md
, or convert markdown to marimo with marimo convert notebook.md > notebook.py
.
Shout out to @dmadisetti for contributing this feature.
Future updates in the 0.5.x series will bring more improvements to both the runtime and using markdown -- stay tuned!
Thanks @Ubehebe for making your first contribution; welcome to the marimo fam!
Full Changelog: https://github.com/marimo-team/marimo/compare/0.4.11...0.5.0
Published by akshayka 6 months ago
This release includes a few major UX improvements to the marimo editor.
Improved DAG viewer. The built-in dependency graph viewer is now much more useful: view your cells in a top-down topological order. Click on an edge to see the variables that flow on it, or double click a cell to automatically bring it into focus.
This viewer can help you understand which cells when run when a given cell runs.
Hardware utilization meters. The editor footer shows total RAM and CPU usage on your machine.
Use mo.status.progress_bar
as a context manager:
with mo.status.progress_bar(total=10) as bar:
for i in range(10):
# do work
bar.update(increment=1, subtitle=f"finished iteration number {i]")
Shout out to @seantur for making their first contribution (thank you!), and @fuenfundachtzig for continuing to make marimo better.
Full Changelog: https://github.com/marimo-team/marimo/compare/0.4.10...0.4.11
Published by mscolnick 6 months ago
Full Changelog: https://github.com/marimo-team/marimo/compare/0.4.9...0.4.10
Published by akshayka 6 months ago
Fixes a bug in which some console outputs were not showing up.
Full Changelog: https://github.com/marimo-team/marimo/compare/0.4.8...0.4.9
Published by mscolnick 6 months ago
app_title
to display a different tab title than the filenamemo.ui.spinner
as a UI element, without using it as a context manager (with
)Full Changelog: https://github.com/marimo-team/marimo/compare/0.4.7...0.4.8
Published by akshayka 6 months ago
Improvements and bug fixes.
Full Changelog: https://github.com/marimo-team/marimo/compare/0.4.6...0.4.7
Published by akshayka 6 months ago
Improvements and fixes.
Full Changelog: https://github.com/marimo-team/marimo/compare/0.4.5...0.4.6
Published by akshayka 6 months ago
Small bug fixes.
Full Changelog: https://github.com/marimo-team/marimo/compare/0.4.4...0.4.5
Published by akshayka 6 months ago
🐍 marimo export script
: Export marimo notebooks as flat Python scripts:
marimo export script notebook.py -o flat_script.py
marimo notebooks are already executable as scripts (python notebook.py
), but we're providing this for convenience, in case you need to use your notebook as a script in an environment that doesn't have marimo
installed.
🔔 Better UX for undoing cell deletion. Many of you told us you didn't know how to undo cell deletions.
⌨ Tab to start completions. In addition to Ctrl+Space
.
🏁 Windows compatibility. Fixes for our Windows users. Thanks for your patience!
marimo export script
, to export notebook as a flat script by @mscolnick in https://github.com/marimo-team/marimo/pull/1199
Full Changelog: https://github.com/marimo-team/marimo/compare/0.4.3...0.4.4
Published by akshayka 6 months ago
This release adds mo.ui.range_slider
— thanks @wasimsandhu for your contribution! It also includes performance improvements
and bug fixes.
Full Changelog: https://github.com/marimo-team/marimo/compare/0.4.2...0.4.3
Published by akshayka 6 months ago
This version includes improvements to mo.ui.plotly
, the module autoreloader, mo.status.progress_bar
, as well as other bug fixes.
Full Changelog: https://github.com/marimo-team/marimo/compare/0.4.1...0.4.2
Published by akshayka 6 months ago
⚡️ Reactive module autoreloading. marimo now ships with the most advanced module autoreloader out of any interactive Python programming environment. When enabled (via the notebook settings menu), marimo automatically react to modifications made to packages and modules that your notebook imports. This lets you develop complex logic in Python modules, using an editor of your choice, and use the marimo notebook as a DAG or main script that orchestrates your logic.
Autoreloading comes in two flavors:
Thanks @MartinBernstorff, @astrowonk for the feature request!
⛓ Command-line arguments. Give arbitrary command-line arguments to your notebook, and read them with mo.cli_args()
: this works in edit
and run
modes, and also while running as a script.
marimo edit notebook.py -- -arg1=foo -arg2=bar
marimo run notebook.py -- -arg1=foo -arg2=bar
python notebook.py -arg1=foo -arg2=bar
Thanks @twrightsman for the feature request!
📄 Programmatic HTML export. Long requested, finally here: use marimo export html
at the command-line to export your notebooks as beautiful documents:
marimo export html notebook.py -o notebook.html
marimo export html notebook.py -o notebook.html -- -arg1=foo -arg2=bar
Thanks @egemenimre, @scls19fr, @bmeyers for the feature request!
🔎 Check if running in a notebook. Use mo.running_in_notebook()
to tell whether Python is executing inside a marimo notebook. Use this when developing library code that integrates with marimo, or to tell whether your notebook file is running via the notebook kernel or as a Python script.
P.S. Check out our new guide on integrating your objects with marimo.
Full Changelog: https://github.com/marimo-team/marimo/compare/0.4.0...0.4.1
Published by akshayka 6 months ago
🏠 Edit multiple notebooks with marimo edit!: marimo edit
now opens a notebook homepage that lets you create new notebooks, and start and stop exiting ones. That is, this homepage gives you a single marimo server to edit multiple notebooks.
You can still use marimo edit notebook.py
to edit a specific notebook. To create a new notebook without going through the notebook server, use marimo new
.
This feature is new and will evolve rapidly — please give us your feedback!
🗂️ File browser: Use mo.ui.file_browser
to add an interactive file browser to your notebooks! Thanks @wasimsandhu for the contribution!
Quality-of-life improvements: Version 0.4.0 includes accessibility updates to mo.ui.number
, lets you format notebooks with ruff
(in addition to Black), and other small improvements.
Full Changelog: https://github.com/marimo-team/marimo/compare/0.3.12...0.4.0
Published by akshayka 6 months ago
A small bug-fix for release 0.3.11, which has many interesting new features.
Full Changelog: https://github.com/marimo-team/marimo/compare/0.3.11...0.3.12