ScottzModelz/microsoft-graphcodebert-base
0
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 