Marimo - Python के लिए open source Reactive Notebook
(github.com/marimo-team)- डेटा और मॉडल के साथ तेज़ी से प्रयोग किए जा सकने वाला notebook
- cell-स्तर पर execution, automatic calculation और update
- hidden state के बिना, हमेशा दोबारा execute किया जा सकने वाला
- Python file के रूप में save होता है, इसलिए Git-friendly
- notebook को pipeline में बदला जा सकता है या interactive web app के रूप में deploy किया जा सकता है
Reactive programming environment
- marimo notebook code, output और program state की consistency सुनिश्चित करता है।
- जब कोई cell execute होता है, तो marimo अपने-आप उन cells को update करता है जो उस variable को refer करते हैं, जिससे cells को manually दोबारा execute करने वाली गलतियाँ नहीं होतीं।
- जब कोई cell delete किया जाता है, तो marimo program memory से उस variable को हटा देता है, जिससे hidden state समाप्त हो जाती है।
- notebook variable references के आधार पर एक deterministic order में execute होता है, इसलिए यह page पर cell की position पर निर्भर नहीं करता।
- slider, dropdown और dataframe transformer जैसे UI elements के साथ interaction करने पर, उन values का उपयोग करने वाले cells अपने-आप latest value के साथ दोबारा execute होते हैं।
- marimo code का static analysis करता है और performance बेहतर करने के लिए केवल उन्हीं cells को execute करता है जिन्हें चलाना ज़रूरी है।
- marimo में GitHub Copilot, Black code formatting, HTML export, fast code completion, VS Code extension जैसे कई convenience features शामिल हैं।
Quick start
- install: terminal में
pip install marimoयाconda install -c conda-forge marimoचलाकर marimo install करें। - notebook बनाना:
marimo editorसे खाली notebook बनाएं औरmarimo edit your_notebook.pyसे किसी खास नाम वाली notebook edit करें। - app चलाना:
marimo run your_notebook.pyचलाकर notebook को web app के रूप में चलाएं। यह app marimo cloud पर deploy किया जा सकता है। - script के रूप में चलाना:
python your_notebook.pyचलाकर marimo notebook को script की तरह execute करें। - Jupyter notebook auto-conversion: CLI का उपयोग करके Jupyter notebook को अपने-आप marimo notebook में convert करें।
- tutorial:
marimo tutorial --helpचलाकर सभी tutorials की सूची देखें।
और जानें
- marimo में शुरुआती उपयोगकर्ता भी आसानी से शुरुआत कर सकते हैं, और यह advanced users के लिए भी कई सुविधाएँ देता है।
- उदाहरण के लिए, marimo से बनाया गया embedding visualization tool (video) देखा जा सकता है।
- documentation,
examples/folder और gallery के माध्यम से अधिक जानकारी प्राप्त की जा सकती है।
प्रेरणा
- marimo Python notebooks को reproducible, interactive और shareable Python programs के रूप में फिर से कल्पित करता है।
- इस विश्वास के साथ कि हम जिन tools का उपयोग करते हैं वे हमारी सोच को आकार देते हैं, यह Python community को एक बेहतर programming environment देने की आशा करता है।
- इसे Pluto.jl, ObservableHQ, Bret Victor के essays और कई अन्य स्रोतों व projects से प्रेरणा मिली है।
- marimo IPyflow, streamlit, TensorFlow, PyTorch, JAX, React आदि में मौजूद functional, declarative और reactive programming ideas से प्रेरित बड़े reactive dataflow programming आंदोलन का हिस्सा है, जो विभिन्न tools को बेहतर बनाता है।
GN⁺ की राय
- marimo एक अभिनव reactive Python notebook है जो Jupyter notebook जैसे मौजूदा tools की सीमाओं को पार करने की कोशिश करता है, और डेटा व मॉडल प्रयोग, notebook की correctness पर भरोसा, तथा notebook को pipeline या interactive web app के रूप में production में ले जाने की क्षमता देता है।
- यह tool code consistency और reproducibility पर ज़ोर देता है, और user interface elements के साथ interaction को सरल बनाकर programming experience को बेहतर करता है।
- marimo data science, research और education में collaboration और sharing को आसान बनाता है, और community building के माध्यम से users के बीच interaction और knowledge sharing को बढ़ावा देने वाला platform प्रदान करता है।
1 टिप्पणियां
Hacker News राय
Jupyter और Observable notebook के यूज़र के तौर पर, मुझे Observable में cell reactivity की कमी महसूस हुई थी, और लगता है कि इसने उस समस्या को अच्छी तरह हल किया है। अच्छा लगा कि Marimo का file format Python में है, और Apache 2 license भी पसंद आया। GitHub Copilot feature discovery से प्रभावित हूँ।
Jupyter Notebook इस्तेमाल करने वाले सहयोगियों के साथ काम करते समय environment setup और Jupyter की hidden state समस्या रही है। यह प्रोजेक्ट दूसरी समस्या को हल करने की कोशिश करता है, लेकिन इसके बदले flexibility कम हो जाती है। अगर reproducibility पर ज़ोर हो, तो यह एक स्वीकार्य trade-off हो सकता है।
requirements.txtदूसरी समस्या का standard समाधान है, लेकिन इसका उपयोग झंझटभरा है।requirements.txtका इस्तेमाल असुविधाजनक लगता है, और इससे बेहतर समाधान की उम्मीद जताई गई।आख़िरकार कोई यह काम कर रहा है, यह देखकर खुशी हुई। Vscode extension है, लेकिन अफ़सोस है कि यह Vscode के मौजूदा notebook interface की बजाय पूरा browser view खोलता है। package management और production code deployment पर भी अपने विचार साझा किए।
प्लेटफ़ॉर्म को लेकर कुछ सवाल हैं: interactive widgets, और Jupyter ecosystem पर dependency व उसके साथ interaction के बारे में स्पष्टीकरण चाहिए।
मुझे लगता है Jupytext extension को जितना श्रेय मिलना चाहिए, उतना नहीं मिला। यह Jupyter की git interaction समस्याओं और ऐसी programming practices की समस्या को हल करता है जो library files लिखने में बाधा बनती हैं। उम्मीद है कि नए प्रोजेक्ट का reactive update शुरुआती प्रोग्रामरों या जटिल प्रोजेक्ट्स में उपयोगी होगा।
dependency list छोटी है, और tornado को छोड़कर ऐसी बहुत-सी dependencies नहीं खींचता जो अतिरिक्त बोझ बनें। यह बहुत उपयोगी और शानदार प्रोजेक्ट लगता है।
Marimo शानदार लगता है। क्या markdown में mermaid.js support जोड़ने पर विचार हो रहा है?
Marimo के संस्थापक Akshay और Myles का प्रशंसक हूँ, और उम्मीद है कि Jupyter को एक competitor मिलने से scientific tools ecosystem पर अच्छा असर पड़ेगा।
मुझे लगता है Quarto इस thread में बताए गए Jupyter के कई मुद्दों को हल करता है। NIH में भी Quarto के उपयोग की सिफारिश की जाती है और training दी जाती है।
एक ही variable को कई बार define करना error है। वजह साफ़ है। लेकिन अगर variable केवल उसी cell में इस्तेमाल हो जहाँ वह पहली बार लिखा गया है, तो variable name का reuse संभव होना चाहिए।