CoolFace
Apppublic

ScottzModelz/microsoft-graphcodebert-base

sourceHugging Facemitupdated 1y agoView on Hugging Face
0likes
app.py471 linesDownload Raw Back to root
1import marimo2 3__generated_with = "0.9.2"4app = marimo.App()5 6 7@app.cell8def __():9    import marimo as mo10 11    mo.md("# Welcome to marimo! ๐ŸŒŠ๐Ÿƒ")12    return (mo,)13 14 15@app.cell16def __(mo):17    slider = mo.ui.slider(1, 22)18    return (slider,)19 20 21@app.cell22def __(mo, slider):23    mo.md(24        f"""25        marimo is a **reactive** Python notebook.26 27        This means that unlike traditional notebooks, marimo notebooks **run28        automatically** when you modify them or29        interact with UI elements, like this slider: {slider}.30 31        {"##" + "๐Ÿƒ" * slider.value}32        """33    )34    return35 36 37@app.cell(hide_code=True)38def __(mo):39    mo.accordion(40        {41            "Tip: disabling automatic execution": mo.md(42                rf"""43            marimo lets you disable automatic execution: just go into the44            notebook settings and set45 46            "Runtime > On Cell Change" to "lazy".47 48            When the runtime is lazy, after running a cell, marimo marks its49            descendants as stale instead of automatically running them. The50            lazy runtime puts you in control over when cells are run, while51            still giving guarantees about the notebook state.52            """53            )54        }55    )56    return57 58 59@app.cell(hide_code=True)60def __(mo):61    mo.md(62        """63        Tip: This is a tutorial notebook. You can create your own notebooks64        by entering `marimo edit` at the command line.65        """66    ).callout()67    return68 69 70@app.cell(hide_code=True)71def __(mo):72    mo.md(73        """74        ## 1. Reactive execution75 76        A marimo notebook is made up of small blocks of Python code called77        cells.78 79        marimo reads your cells and models the dependencies among them: whenever80        a cell that defines a global variable  is run, marimo81        **automatically runs** all cells that reference that variable.82 83        Reactivity keeps your program state and outputs in sync with your code,84        making for a dynamic programming environment that prevents bugs before they85        happen.86        """87    )88    return89 90 91@app.cell(hide_code=True)92def __(changed, mo):93    (94        mo.md(95            f"""96            **โœจ Nice!** The value of `changed` is now {changed}.97 98            When you updated the value of the variable `changed`, marimo99            **reacted** by running this cell automatically, because this cell100            references the global variable `changed`.101 102            Reactivity ensures that your notebook state is always103            consistent, which is crucial for doing good science; it's also what104            enables marimo notebooks to double as tools and  apps.105            """106        )107        if changed108        else mo.md(109            """110            **๐ŸŒŠ See it in action.** In the next cell, change the value of the111            variable  `changed` to `True`, then click the run button.112            """113        )114    )115    return116 117 118@app.cell119def __():120    changed = False121    return (changed,)122 123 124@app.cell(hide_code=True)125def __(mo):126    mo.accordion(127        {128            "Tip: execution order": (129                """130                The order of cells on the page has no bearing on131                the order in which cells are executed: marimo knows that a cell132                reading a variable must run after the cell that  defines it. This133                frees you to organize your code in the way that makes the most134                sense for you.135                """136            )137        }138    )139    return140 141 142@app.cell(hide_code=True)143def __(mo):144    mo.md(145        """146        **Global names must be unique.** To enable reactivity, marimo imposes a147        constraint on how names appear in cells: no two cells may define the same148        variable.149        """150    )151    return152 153 154@app.cell(hide_code=True)155def __(mo):156    mo.accordion(157        {158            "Tip: encapsulation": (159                """160                By encapsulating logic in functions, classes, or Python modules,161                you can minimize the number of global variables in your notebook.162                """163            )164        }165    )166    return167 168 169@app.cell(hide_code=True)170def __(mo):171    mo.accordion(172        {173            "Tip: private variables": (174                """175                Variables prefixed with an underscore are "private" to a cell, so176                they can be defined by multiple cells.177                """178            )179        }180    )181    return182 183 184@app.cell(hide_code=True)185def __(mo):186    mo.md(187        """188        ## 2. UI elements189 190        Cells can output interactive UI elements. Interacting with a UI191        element **automatically triggers notebook execution**: when192        you interact with a UI element, its value is sent back to Python, and193        every cell that references that element is re-run.194 195        marimo provides a library of UI elements to choose from under196        `marimo.ui`.197        """198    )199    return200 201 202@app.cell203def __(mo):204    mo.md("""**๐ŸŒŠ Some UI elements.** Try interacting with the below elements.""")205    return206 207 208@app.cell209def __(mo):210    icon = mo.ui.dropdown(["๐Ÿƒ", "๐ŸŒŠ", "โœจ"], value="๐Ÿƒ")211    return (icon,)212 213 214@app.cell215def __(icon, mo):216    repetitions = mo.ui.slider(1, 16, label=f"number of {icon.value}: ")217    return (repetitions,)218 219 220@app.cell221def __(icon, repetitions):222    icon, repetitions223    return224 225 226@app.cell227def __(icon, mo, repetitions):228    mo.md("# " + icon.value * repetitions.value)229    return230 231 232@app.cell(hide_code=True)233def __(mo):234    mo.md(235        """236        ## 3. marimo is just Python237 238        marimo cells parse Python (and only Python), and marimo notebooks are239        stored as pure Python files โ€” outputs are _not_ included. There's no240        magical syntax.241 242        The Python files generated by marimo are:243 244        - easily versioned with git, yielding minimal diffs245        - legible for both humans and machines246        - formattable using your tool of choice,247        - usable as Python  scripts, with UI  elements taking their default248        values, and249        - importable by other modules (more on that in the future).250        """251    )252    return253 254 255@app.cell(hide_code=True)256def __(mo):257    mo.md(258        """259        ## 4. Running notebooks as apps260 261        marimo notebooks can double as apps. Click the app window icon in the262        bottom-right to see this notebook in "app view."263 264        Serve a notebook as an app with `marimo run` at the command-line.265        Of course, you can use marimo just to level-up your266        notebooking, without ever making apps.267        """268    )269    return270 271 272@app.cell(hide_code=True)273def __(mo):274    mo.md(275        """276        ## 5. The `marimo` command-line tool277 278        **Creating and editing notebooks.** Use279 280        ```281        marimo edit282        ```283 284        in a terminal to start the marimo notebook server. From here285        you can create a new notebook or edit existing ones.286 287 288        **Running as apps.** Use289 290        ```291        marimo run notebook.py292        ```293 294        to start a webserver that serves your notebook as an app in read-only mode,295        with code cells hidden.296 297        **Convert a Jupyter notebook.** Convert a Jupyter notebook to a marimo298        notebook using `marimo convert`:299 300        ```301        marimo convert your_notebook.ipynb > your_app.py302        ```303 304        **Tutorials.** marimo comes packaged with tutorials:305 306        - `dataflow`: more on marimo's automatic execution307        - `ui`: how to use UI elements308        - `markdown`: how to write markdown, with interpolated values and309           LaTeX310        - `plots`: how plotting works in marimo311        - `sql`: how to use SQL312        - `layout`: layout elements in marimo313        - `fileformat`: how marimo's file format works314        - `markdown-format`: for using `.md` files in marimo315        - `for-jupyter-users`: if you are coming from Jupyter316 317        Start a tutorial with `marimo tutorial`; for example,318 319        ```320        marimo tutorial dataflow321        ```322 323        In addition to tutorials, we have examples in our324        [our GitHub repo](https://www.github.com/marimo-team/marimo/tree/main/examples).325        """326    )327    return328 329 330@app.cell(hide_code=True)331def __(mo):332    mo.md(333        """334        ## 6. The marimo editor335 336        Here are some tips to help you get started with the marimo editor.337        """338    )339    return340 341 342@app.cell343def __(mo, tips):344    mo.accordion(tips)345    return346 347 348@app.cell(hide_code=True)349def __(mo):350    mo.md("""## Finally, a fun fact""")351    return352 353 354@app.cell(hide_code=True)355def __(mo):356    mo.md(357        """358        The name "marimo" is a reference to a type of algae that, under359        the right conditions, clumps together to form a small sphere360        called a "marimo moss ball". Made of just strands of algae, these361        beloved assemblages are greater than the sum of their parts.362        """363    )364    return365 366 367@app.cell(hide_code=True)368def __():369    tips = {370        "Saving": (371            """372            **Saving**373 374            - _Name_ your app using the box at the top of the screen, or375              with `Ctrl/Cmd+s`. You can also create a named app at the376              command line, e.g., `marimo edit app_name.py`.377 378            - _Save_ by clicking the save icon on the bottom right, or by379              inputting `Ctrl/Cmd+s`. By default marimo is configured380              to autosave.381            """382        ),383        "Running": (384            """385            1. _Run a cell_ by clicking the play ( โ–ท ) button on the top386            right of a cell, or by inputting `Ctrl/Cmd+Enter`.387 388            2. _Run a stale cell_  by clicking the yellow run button on the389            right of the cell, or by inputting `Ctrl/Cmd+Enter`. A cell is390            stale when its code has been modified but not run.391 392            3. _Run all stale cells_ by clicking the play ( โ–ท ) button on393            the bottom right of the screen, or input `Ctrl/Cmd+Shift+r`.394            """395        ),396        "Console Output": (397            """398            Console output (e.g., `print()` statements) is shown below a399            cell.400            """401        ),402        "Creating, Moving, and Deleting Cells": (403            """404            1. _Create_ a new cell above or below a given one by clicking405                the plus button to the left of the cell, which appears on406                mouse hover.407 408            2. _Move_ a cell up or down by dragging on the handle to the 409                right of the cell, which appears on mouse hover.410 411            3. _Delete_ a cell by clicking the trash bin icon. Bring it412                back by clicking the undo button on the bottom right of the413                screen, or with `Ctrl/Cmd+Shift+z`.414            """415        ),416        "Disabling Automatic Execution": (417            """418            Via the notebook settings (gear icon) or footer panel, you419            can disable automatic execution. This is helpful when420            working with expensive notebooks or notebooks that have421            side-effects like database transactions.422            """423        ),424        "Disabling Cells": (425            """426            You can disable a cell via the cell context menu.427            marimo will never run a disabled cell or any cells that depend on it.428            This can help prevent accidental execution of expensive computations429            when editing a notebook.430            """431        ),432        "Code Folding": (433            """434            You can collapse or fold the code in a cell by clicking the arrow435            icons in the line number column to the left, or by using keyboard436            shortcuts.437 438            Use the command palette (`Ctrl/Cmd+k`) or a keyboard shortcut to439            quickly fold or unfold all cells.440            """441        ),442        "Code Formatting": (443            """444            If you have [ruff](https://github.com/astral-sh/ruff) installed,445            you can format a cell with the keyboard shortcut `Ctrl/Cmd+b`.446            """447        ),448        "Command Palette": (449            """450            Use `Ctrl/Cmd+k` to open the command palette.451            """452        ),453        "Keyboard Shortcuts": (454            """455            Open the notebook menu (top-right) or input `Ctrl/Cmd+Shift+h` to456            view a list of all keyboard shortcuts.457            """458        ),459        "Configuration": (460            """461           Configure the editor by clicking the gears icon near the top-right462           of the screen.463           """464        ),465    }466    return (tips,)467 468 469if __name__ == "__main__":470    app.run()471