This project uses uv for Python package management, Jupyter notebooks for interactive development, and Quarto for rendering.
# Clone the repository
git clone
cd
# Create virtual environment and install dependencies
uv sync
# Register the Jupyter kernel (makes this environment available in notebooks)
uv run python -m ipykernel install --user --name=-
Install extensions:
-
Select the interpreter:
- Open Command Palette (
Ctrl+Shift+P/Cmd+Shift+P) - Run
Python: Select Interpreter - Choose the
.venvfolder created by uv (usually./.venv/bin/python)
- Open Command Palette (
-
Select kernel in notebooks:
- Open any
.ipynbfile - Click the kernel picker in the top-right
- Select the
.venvenvironment
- Open any
Tip: VS Code automatically detects the
.venvfolder created byuv sync. If it doesn't appear, reload the window.
Add to .vscode/settings.json:
{
"python.defaultInterpreterPath": "${workspaceFolder}/.venv/bin/python",
"jupyter.notebookFileRoot": "${workspaceFolder}",
"[python]": {
"editor.defaultFormatter": "charliermarsh.ruff"
}
}Running Jupyter Lab:
uv run jupyter labRunning a single notebook:
uv run jupyter execute notebook.ipynbRendering with Quarto:
# Preview (live reload)
quarto preview notebook.qmd
# Render to output format
quarto render notebook.qmd
# Redner entire project
uv run quarto preview --port 4444Note: Quarto automatically uses the virtual environment when you run
quarto renderfrom within the project directory, or you can specify the kernel in YAML front matter.
# Add a runtime dependency
uv add pandas
# Add a development dependency
uv add --dev pytest
# Sync after pulling changes
uv sync-
Select the correct kernel — In Jupyter, select the
<project-name>kernel registered during setup -
Clear outputs before committing — Keeps diffs clean and repo size small:
uv run jupyter nbconvert --clear-output --inplace *.ipynb -
Use Quarto's freeze — For reproducible renders without re-execution:
# In _quarto.yml or notebook front matter execute: freeze: auto
├── pyproject.toml # Project metadata and dependencies
├── uv.lock # Locked dependencies (commit this)
├── _quarto.yml # Quarto project config (if applicable)
├── notebooks/ # Jupyter notebooks
└── src/ # Python source codeThe website is pubished to GitHub Pages when you commit to the main branch.