Marimo - Notebook reativo open source para Python
(github.com/marimo-team)- Um notebook para experimentar rapidamente com dados e modelos
- Execução por célula, cálculo automático e atualizações
- Sempre reexecutável, sem estado oculto
- Salvo como arquivo Python, compatível com Git
- Pode transformar notebooks em pipelines ou publicá-los como aplicativos web interativos
Ambiente de programação reativa
- O marimo garante a consistência entre o código do notebook, as saídas e o estado do programa.
- Quando uma célula é executada, o marimo atualiza automaticamente as células que fazem referência às variáveis correspondentes, evitando erros causados por reexecução manual.
- Quando uma célula é excluída, o marimo remove essas variáveis da memória do programa, eliminando estados ocultos.
- Os notebooks são executados em uma ordem determinística com base nas referências de variáveis, sem depender da posição das células na página.
- Ao interagir com elementos de UI como sliders, menus suspensos e transformadores de DataFrame, as células que usam esses valores são reexecutadas automaticamente com os valores mais recentes.
- O marimo analisa o código estaticamente e executa apenas as células necessárias, melhorando o desempenho.
- O marimo inclui várias conveniências, como GitHub Copilot, formatação de código com Black, exportação em HTML, autocompletar rápido e extensão para VS Code.
Início rápido
- Instalação: instale o marimo executando
pip install marimoouconda install -c conda-forge marimono terminal. - Criar notebook: crie um notebook vazio com
marimo editore edite um notebook específico commarimo edit your_notebook.py. - Executar app: execute
marimo run your_notebook.pypara rodar o notebook como um aplicativo web. Esse app pode ser implantado na nuvem do marimo. - Executar como script: execute
python your_notebook.pypara rodar o notebook do marimo como script. - Conversão automática de notebooks Jupyter: use a CLI para converter automaticamente notebooks Jupyter em notebooks do marimo.
- Tutoriais: execute
marimo tutorial --helppara listar todos os tutoriais.
Saiba mais
- O marimo é fácil de usar até para iniciantes e oferece vários recursos para usuários avançados.
- Por exemplo, é possível conferir a ferramenta de visualização de embeddings criada com marimo (vídeo).
- Você pode obter mais informações na documentação, na pasta
examples/e na galeria.
Inspiração
- O marimo reinventa notebooks Python como programas Python reproduzíveis, interativos e compartilháveis.
- Com a crença de que as ferramentas que usamos moldam nossa forma de pensar, o projeto espera oferecer um ambiente de programação melhor para a comunidade Python.
- Recebe inspiração de muitos lugares e projetos, como Pluto.jl, ObservableHQ e os ensaios de Bret Victor.
- O marimo faz parte de um movimento mais amplo de programação reativa de fluxo de dados, no qual ideias de programação funcional, declarativa e reativa de ferramentas como IPyflow, streamlit, TensorFlow, PyTorch, JAX e React melhoram diversas ferramentas.
Opinião do GN⁺
- O marimo é um notebook Python reativo inovador que busca superar as limitações de ferramentas existentes como o Jupyter Notebook, permitindo experimentação com dados e modelos, maior confiança na precisão do notebook e a transformação do notebook em pipeline ou aplicativo web interativo.
- A ferramenta valoriza a consistência e a reprodutibilidade do código, além de simplificar a interação com elementos de interface do usuário para melhorar a experiência de programação.
- O marimo facilita colaboração e compartilhamento nas áreas de ciência de dados, pesquisa e educação, além de oferecer uma plataforma que promove interação entre usuários e compartilhamento de conhecimento por meio da construção de comunidade.
1 comentários
Comentários do Hacker News
Como usuário de notebooks Jupyter e Observable, eu sentia falta da reatividade entre células no Observable, e acho que isso foi resolvido muito bem. Gosto do fato de o formato de arquivo do Marimo ser em Python, e também curto a licença Apache 2. Fiquei impressionado com a descoberta do recurso do GitHub Copilot.
Ao trabalhar com colaboradores que usam Jupyter Notebook, a configuração de ambiente e o estado oculto do Jupyter eram problemas. Este projeto tenta resolver o segundo, mas sacrifica flexibilidade. Se o foco for reprodutibilidade, isso pode ser um compromisso aceitável.
requirements.txté a solução padrão para outro problema, mas é incômodo de usar.requirements.txtincômodo e espera uma solução melhor.Fico feliz que finalmente alguém esteja fazendo isso. Existe uma extensão para Vscode, mas é uma pena que ela abra uma visualização completa no navegador em vez de usar a interface de notebook já existente no Vscode. Também compartilha opiniões sobre gerenciamento de pacotes e implantação de código em produção.
Tenho algumas perguntas sobre a plataforma: peço explicações sobre widgets interativos, dependências e interação com o ecossistema Jupyter.
Acho que a extensão Jupytext é subestimada. Ela resolve os problemas de interação do Jupyter com git e práticas de programação que dificultam escrever arquivos de biblioteca. Espero que as atualizações reativas do novo projeto sejam úteis para iniciantes em programação ou para projetos complexos.
A lista de dependências é curta e, fora o tornado, não puxa muitas dependências adicionais pesadas. Parece um projeto muito útil e muito legal.
Acho o Marimo excelente. Gostaria de saber se há planos para adicionar suporte a mermaid.js em markdown.
Sou fã de Akshay e Myles, criadores do Marimo, e espero que o surgimento de um concorrente para o Jupyter tenha um bom impacto no ecossistema de ferramentas científicas.
Acho que o Quarto resolve muitos dos problemas do Jupyter mencionados nesta discussão. Até o NIH recomenda o uso do Quarto e oferece treinamento.
Definir a mesma variável várias vezes é um erro. O motivo é óbvio. Mas, se a variável só for usada na célula em que aparece pela primeira vez, então deveria ser possível reutilizar o nome da variável.