Spaces:
Runtime error
Runtime error
File size: 2,901 Bytes
aaef24a 1a93371 aaef24a 40d4bdb aaef24a 40d4bdb aaef24a a7e66b2 aaef24a a7e66b2 aaef24a 77b9c0b aaef24a 930b7f4 1a93371 aaef24a 930b7f4 aaef24a 77b9c0b aaef24a 40d4bdb aaef24a 40d4bdb aaef24a | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 | ROOT := .
SITE := _site
TMP := ./tmp
BRANCH := main
LESSON_DATA := ${TMP}/lessons.json
TEMPLATES := $(wildcard templates/*.html)
NOTEBOOK_INDEX := $(wildcard */index.md)
NOTEBOOK_DIR := $(patsubst %/index.md,%,${NOTEBOOK_INDEX})
NOTEBOOK_SRC := $(foreach dir,$(NOTEBOOK_DIR),$(wildcard $(dir)/??_*.py))
NOTEBOOK_OUT := $(patsubst %.py,${SITE}/%.html,$(NOTEBOOK_SRC))
DATABASES := \
sql/public/lab.db \
sql/public/penguins.db \
sql/public/survey.db
MARIMO := uv run marimo
PYTHON := uv run python
# Default target
all: commands
## commands : show all commands
commands:
@grep -h -E '^##' ${MAKEFILE_LIST} | sed -e 's/## //g' | column -t -s ':'
## install: install required packages
install:
uv pip install -r requirements.txt
## check: run all simple checks
check:
-@make check_empty
-@make check_titles
-@make check_typos
-@make check_packages
## check_exec: run notebooks to check for runtime errors
check_exec:
@if [ -z "$(NOTEBOOKS)" ]; then \
bash bin/run_notebooks.sh $(NOTEBOOK_SRC); \
else \
bash bin/run_notebooks.sh $(NOTEBOOKS); \
fi
## build: build website
build: ${LESSON_DATA} ${TEMPLATES}
${PYTHON} bin/build.py --branch ${BRANCH} --root ${ROOT} --output ${SITE} --data ${LESSON_DATA}
## links: check links locally (while 'make serve')
links:
linkchecker -F text http://localhost:8000
## wasm: build all notebooks as WASM
wasm: ${NOTEBOOK_OUT}
## serve: run local web server without rebuilding
serve:
${PYTHON} -m http.server --directory ${SITE}
## databases: rebuild datasets for SQL lessons
databases: ${DATABASES}
## ---: ---
## clean: clean up stray files
clean:
@find . -name '*~' -exec rm {} +
@find . -name '.DS_Store' -exec rm {} +
@rm -rf ${TMP}
@rm -f log_data_filtered*.*
## check_empty: check for empty cells
check_empty:
@${PYTHON} bin/check_empty_cells.py
## check_titles: check for missing titles in notebooks
check_titles:
@${PYTHON} bin/check_missing_titles.py
## check_packages: check for inconsistent package versions across notebooks
check_packages:
@if [ -z "$(NOTEBOOKS)" ]; then \
${PYTHON} bin/check_notebook_packages.py $(NOTEBOOK_SRC); \
else \
${PYTHON} bin/check_notebook_packages.py $(NOTEBOOKS); \
fi
## check_typos: check for typos
check_typos:
@typos ${TEMPLATES} ${NOTEBOOK_INDEX} ${NOTEBOOK_SRC}
## extract: extract lesson data
extract: ${LESSON_DATA}
#
# subsidiary targets
#
tmp/lessons.json: $(NOTEBOOK_INDEX)
${PYTHON} bin/extract.py --root ${ROOT} --data ${LESSON_DATA}
${SITE}/%.html: %.py
${MARIMO} export html-wasm --force --mode edit $< -o $@ --sandbox
sql/public/lab.db: bin/create_sql_lab.sql
@rm -f $@
@mkdir -p sql/public
sqlite3 $@ < $<
sql/public/penguins.db: bin/create_sql_penguins.py data/penguins.csv
@rm -f $@
@mkdir -p sql/public
${PYTHON} $< data/penguins.csv $@
sql/public/survey.db: bin/create_sql_survey.py
@rm -f $@
@mkdir -p sql/public
${PYTHON} $< $@ 192837
|