-
Notifications
You must be signed in to change notification settings - Fork 175
Expand file tree
/
Copy pathMakefile
More file actions
90 lines (76 loc) · 2.89 KB
/
Copy pathMakefile
File metadata and controls
90 lines (76 loc) · 2.89 KB
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
PROJECT_NAME = ThinkStats
PYTHON_VERSION = 3.12
.PHONY: help create_environment create_environment_dev delete_environment \
update_environment update_environment_dev clean lint format tests \
update-chapter md-from-ipynb
CHAPTER ?= chap07
help:
@echo "Available targets:"
@echo " create_environment - Create conda environment from environment.yml"
@echo " create_environment_dev - Create dev environment (base + dev packages)"
@echo " delete_environment - Remove conda environment"
@echo " update_environment - Update environment from environment.yml (with --prune)"
@echo " update_environment_dev - Update dev environment"
@echo " clean - Remove temporary files and caches"
@echo " lint - Run linters (flake8, black --check)"
@echo " format - Format code with black"
@echo " tests - Run tests with pytest"
@echo " update-chapter - Rebuild one chapter from markdown (CHAPTER=chap07)"
@echo " md-from-ipynb - Export missing soln/*.md from existing notebooks"
create_environment:
mamba env create -f environment.yml
@echo ""
@echo ">>> Environment created successfully!"
@echo ">>> Activate with: conda activate $(PROJECT_NAME)"
create_environment_dev: create_environment
mamba env update -f environment-dev.yml --name $(PROJECT_NAME)
@echo ""
@echo ">>> Dev environment created successfully!"
@echo ">>> Activate with: conda activate $(PROJECT_NAME)"
delete_environment:
mamba env remove --name $(PROJECT_NAME)
@echo ">>> Environment $(PROJECT_NAME) removed"
update_environment:
mamba env update -f environment.yml --prune
@echo ">>> Environment updated successfully!"
update_environment_dev: update_environment
mamba env update -f environment-dev.yml --name $(PROJECT_NAME) --prune
@echo ">>> Dev environment updated successfully!"
clean:
@echo "Cleaning temporary files and caches..."
-find . -type f -name "*.py[co]" -delete
-find . -type d -name "__pycache__" -delete
-find . -type d -name ".pytest_cache" -delete
-find . -type d -name ".ipynb_checkpoints" -delete
-rm -rf .ruff_cache/
-rm -rf .mypy_cache/
-rm -rf build/
-rm -rf dist/
-rm -rf *.egg-info
@echo ">>> Cleanup complete!"
lint:
@echo "Running linters..."
flake8 . --config pyproject.toml || true
black --check --config pyproject.toml . || true
@echo ">>> Linting complete!"
format:
@echo "Formatting code..."
black --config pyproject.toml .
@echo ">>> Formatting complete!"
tests:
@echo "Running tests..."
cd soln; pytest --nbmake chap*.ipynb
@echo ">>> Tests complete!"
update-chapter:
@echo "Updating $(CHAPTER) from markdown..."
python scripts/book_pipeline.py $(CHAPTER)
@echo ">>> $(CHAPTER) updated (soln + nb)"
md-from-ipynb:
@for f in soln/chap*.ipynb; do \
md="$${f%.ipynb}.md"; \
if [ ! -f "$$md" ]; then \
echo "Exporting $$md"; \
jupytext --to md "$$f"; \
fi; \
done
@echo ">>> md-from-ipynb complete"