Spaces:
Sleeping
Sleeping
| # Lessons | |
| ## Table of Contents | |
| 1. [📦 Git LFS (Large File Storage)](#1-git-lfs-large-file-storage) | |
| 2. [🌊 Marimo: Code Display Behavior](#2-marimo-code-display-behavior) | |
| ## 1. 📦 Git LFS (Large File Storage) | |
| Git LFS (Large File Storage) is an extension for Git that allows you to track and version large files (e.g. `.db`, `.csv`, `.model`) without bloating your repository. Instead of storing the actual file content in Git, it stores a lightweight pointer and pushes the real content to a separate LFS server. | |
| --- | |
| ### How to Install | |
| ```bash | |
| sudo apt install git-lfs | |
| ``` | |
| After installation, initialize LFS: | |
| ```bash | |
| git lfs install | |
| ``` | |
| --- | |
| ### How to Use (Basic Example) | |
| 1. **Track the file type or name:** | |
| ```bash | |
| git lfs track "olist.db" | |
| git lfs track "*.png" | |
| git lfs track "*.jpg" | |
| git lfs track "*.csv" | |
| # This adds patterns to a .gitattributes file. For exampple : | |
| # *.png filter=lfs diff=lfs merge=lfs -text | |
| ``` | |
| 2. **Edit `.gitignore` ** | |
| ```bash | |
| # Ignore all database files | |
| *.db | |
| # But include this one (make sure it's tracked with git LFS) | |
| !olist.db | |
| ``` | |
| 3. **Stage the tracking file (`.gitattributes`) and your large file:** | |
| ```bash | |
| git add .gitattributes | |
| git add olist.db | |
| git commit -m "Track olist.db with Git LFS" | |
| ``` | |
| 4. **Push to your remote repo:** | |
| ```bash | |
| git push origin main | |
| ``` | |
| 5. **(Optional) Fix Mistakes If You Added a Binary File the Wrong Way** | |
| If you accidentally committed a binary file without LFS, you’ll need to: | |
| ```bash | |
| # Remove the file from Git history | |
| git lfs track "*.png" # if not already | |
| git rm --cached public/erd-schema.png # remove from Git index | |
| git add public/erd-schema.png # re-add to index, now tracked via LFS | |
| git commit -m "Re-add image using Git LFS" | |
| # Rewrite history to remove the original large file | |
| git filter-repo --path public/erd-schema.png --invert-paths | |
| git push --force origin main | |
| ``` | |
| ## 2. 🌊 Marimo: Code Display Behavior | |
| By default, **Marimo hides the code cells** in the deployed (read-only) version of your app, especially when running as a Hugging Face Space or a `.py` script. | |
| This behavior is intentional and aligns with Marimo’s goal of turning Python notebooks into polished, interactive **data apps** — focusing on the results and UI rather than code. | |
| | Environment | Notes | | |
| | ------------------------------------ | ---------------------------------- | | |
| | Local Dev Mode (`marimo run app.py`) | Full interactivity + visible code | | |
| | Deployed App (e.g., HF Spaces) | Only outputs / UI components shown | | |
| **If you want to show the code:** | |
| You can **explicitly render code** using `mo.ui.code()` or `mo.md()` with fenced code blocks: | |
| ```python | |
| code = ''' | |
| revenue_by_month_year = query_results[QueryEnum.REVENUE_BY_MONTH_YEAR.value] | |
| revenue_by_month_year | |
| ''' | |
| mo.ui.code(code, language="python") | |
| ``` | |
| Or in Markdown: | |
| ````python | |
| mo.md("""```python | |
| revenue_by_month_year = ... | |
| revenue_by_month_year | |
| ```""") | |
| ```` | |
| Or set a global config int hte app header | |
| ```py | |
| __marimo__ = { | |
| "hide_code": False # or True to hide all | |
| } | |
| ``` | |
| ### 💡 Tip: | |
| If your app is intended as a tutorial or learning resource, you can: | |
| - Create a separate `notebook.md` or `.ipynb` with all code visible | |
| - Link to that from the main app using `mo.md("[View full notebook](./notebook.md)")` | |
| - Use Marimo's UI components to conditionally show/hide code with toggles | |
| ```python | |
| show_code = mo.ui.checkbox(value=False, label="Show Code") | |
| if show_code.value: | |
| mo.ui.code(code) | |
| ``` | |
| ### Set Dark Theme | |
| Review the [documentation](https://docs.marimo.io/guides/configuration/theming/#forcing-dark-mode). In short, add the following snippet at the top of your main app file: | |
| ```py | |
| # /// script | |
| # [tool.marimo.display] | |
| # theme = "dark" | |
| # /// | |
| ``` | |