14 pontos por GN⁺ 2024-01-14 | 1 comentários | Compartilhar no WhatsApp
  • 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 marimo ou conda install -c conda-forge marimo no terminal.
  • Criar notebook: crie um notebook vazio com marimo editor e edite um notebook específico com marimo edit your_notebook.py.
  • Executar app: execute marimo run your_notebook.py para rodar o notebook como um aplicativo web. Esse app pode ser implantado na nuvem do marimo.
  • Executar como script: execute python your_notebook.py para 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 --help para listar todos os tutoriais.
Publicidade

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

 
GN⁺ 2024-01-14
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.

    • Um usuário de notebooks Jupyter e Observable reage de forma positiva ao Marimo, dizendo que ele resolve bem o problema de reatividade entre células, e elogia o formato de arquivo em Python, a licença Apache 2 e o 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.

    • O comentário aponta os problemas de configuração de ambiente e estado oculto no Jupyter Notebook, dizendo que este projeto tenta resolver o segundo, embora com possível perda de flexibilidade. Também considera o uso de requirements.txt incô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.

    • Expressa expectativa e frustração em relação à extensão do Vscode, ao mesmo tempo em que destaca a importância do gerenciamento de pacotes e da implantação de código. Também manifesta intenção de contribuir com o projeto.
  • Tenho algumas perguntas sobre a plataforma: peço explicações sobre widgets interativos, dependências e interação com o ecossistema Jupyter.

    • Demonstra curiosidade sobre o suporte a widgets interativos e a relação com o ecossistema Jupyter, além de mostrar interesse em portar seus próprios widgets para a plataforma.
  • 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.

    • Destaca a utilidade da extensão Jupytext e espera que as atualizações reativas do novo projeto ajudem iniciantes em programação e também 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.

    • Avalia que a lista de dependências do projeto é enxuta e que, tirando o tornado, não há grande peso extra. Elogia a utilidade e a qualidade do projeto.
  • Acho o Marimo excelente. Gostaria de saber se há planos para adicionar suporte a mermaid.js em markdown.

    • Reage positivamente ao Marimo e pergunta sobre a possibilidade de 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.

    • Apoia o Marimo e seus criadores, esperando que essa concorrência traga mudanças positivas para o 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.

    • Afirma que o Quarto pode resolver vários problemas do Jupyter e compartilha que o NIH recomenda seu uso 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.

    • Aponta que redefinir variáveis é um erro, mas sugere que, sob certas condições, deveria ser possível reutilizar nomes de variáveis.