What are common issues with using notebooks for Python development? How do you know the current state, share reproducible results, or create interactive applications? This week on the show, we speak with Akshay Agrawal about the open-source reactive marimo notebook for Python.

Before writing any code, Akshay wrote a 2,500-word design document. He wanted to create a maintainable and reproducible tool that avoided the hidden state of traditional notebooks. We discuss solving the hidden state problem by building the notebook as a directed acyclic graph (DAG).

Akshay shares how marimo notebooks are stored as pure Python files, which makes them easy to read, importable, and git-friendly. We discuss serializing package requirements using PEP 723 inline metadata to create standalone reproducible notebooks. We also cover how marimo notebooks can be deployed as a web app or dashboard using Pyodide.

Course Spotlight: Navigating Namespaces and Scope in Python

In this course, you’ll learn about Python namespaces, the structures used to store and organize the symbolic names created during execution of a Python program. You’ll learn when namespaces are created, how they are implemented, and how they define variable scope.

Topics:

00:00:00 – Introduction 00:02:06 – Akshay’s background and studies 00:04:14 – Work at Google and PhD program 00:06:29 – Sharing notebooks 00:08:18 – Starting work on marimo 2 years ago 00:12:48 – Avoiding notebook issues and building a DAG 00:18:39 – The difference of reactivity 00:20:39 – What is a marimo notebook? 00:23:39 – Video Course Spotlight 00:24:50 – Reproducibility and managing package requirements 00:27:49 – Using decorators for cells 00:30:23 – Writing a design document before any coding 00:34:08 – Interactivity and UI widgets 00:38:20 – Design decisions and built-in widgets 00:42:05 – Creating a deployable web application 00:44:34 – Exploring examples and tutorials 00:46:13 – Supporting DataFrame libraries with narwhals 00:48:00 – Migrating from a Jupyter notebook 00:52:02 – Working with cells and not running code 00:54:30 – A couple favorite tutorials 00:56:17 – What are you excited about in the world of Python? 00:57:39 – What do you want to learn next? 00:59:34 – How can people follow the project and yourself? 01:00:12 – Thanks and goodbye

Show Links:

marimo - a next-generation Python notebook marimo: an open-source reactive notebook for Python - Akshay Agrawal (Nbpy2024) - YouTube TensorFlow Made with marimo - marimo FAQ - marimo Pluto.jl — interactive Julia programming environment Observable: Build expressive charts and dashboards with code We Downloaded 10,000,000 Jupyter Notebooks From Github – This Is What We Learned - The Datalore Blog A Large-scale Study about Quality and Reproducibility of Jupyter Notebooks Lessons learned reinventing the Python notebook - marimo Episode #226: PySheets: Spreadsheets in the Browser Using PyScript PEP 723 – Inline script metadata Inline script metadata - Python Packaging User Guide Serializing package requirements in marimo notebooks - marimo uv: Unified Python packaging marimo Newsletter 7 - Jupyter to marimo Custom UI elements - marimo anywidget - anywidget Interactive elements - marimo Episode #224: Narwhals: Expanding DataFrame Compatibility Between Libraries Calmcode - marimo: Introduction Join the marimo Discord marimo newsletter marimo on Twitter marimo on LinkedIn Akshay Agrawal’s website Aksahy on Twitter

Level up your Python skills with our expert-led courses:

Navigating Namespaces and Scope in Python Python Decorators 101 Using Jupyter Notebooks

Support the podcast & join our community of Pythonistas

Podden och tillhörande omslagsbild på den här sidan tillhör Real Python. Innehållet i podden är skapat av Real Python och inte av, eller tillsammans med, Poddtoppen.