-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
118 lines (98 loc) · 3.1 KB
/
Makefile
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
.PHONY: install clean build dev lint format sync all add add-dev remove regen-lock list lab help
# Default Python version
PYTHON_VERSION ?= 3.13
# Detect platform
UNAME_M := $(shell uname -m)
UNAME_S := $(shell uname -s)
# Set JAX extras based on platform
ifeq ($(UNAME_S),Darwin)
ifeq ($(UNAME_M),arm64)
JAX_PLATFORM = metal
else
ifeq ($(UNAME_M),x86_64)
JAX_PLATFORM = cuda
else
$(error Unsupported architecture: $(UNAME_M))
endif
endif
else
JAX_PLATFORM = cuda
endif
print-platform:
@echo "JAX_PLATFORM: $(JAX_PLATFORM)"
# Install dependencies from lockfile with platform-specific JAX
install:
uv sync --extra $(JAX_PLATFORM)
# Install development dependencies
dev: install
uv sync --extra dev --extra $(JAX_PLATFORM)
uv run python -m ipykernel install --user --name=jaxpt --display-name "Python $(PYTHON_VERSION) (jaxpt)"
# Regenerate lockfile from scratch
regen-lock:
rm -f uv.lock
uv sync --extra $(JAX_PLATFORM) --extra dev
# Add a production dependency (usage: make add pkg=package_name)
add:
uv add $(pkg)
# Add a development dependency (usage: make add-dev pkg=package_name)
add-dev:
uv add --dev $(pkg)
# Remove a dependency (usage: make remove pkg=package_name)
remove:
uv remove $(pkg)
# Clean build artifacts and cache
clean:
rm -rf uv.lock
rm -rf build/
rm -rf dist/
rm -rf src/jaxpt.egg-info/
rm -rf .pytest_cache/
rm -rf src/jaxpt/__pycache__/
rm -rf src/jaxpt/**/__pycache__/
rm -rf .coverage
rm -rf .mypy_cache/
rm -rf .venv/
rm -rf notebooks/.ipynb_checkpoints/
rm -rf notebooks/**/.ipynb_checkpoints/
# Build package
build:
uv build .
# Run linting
lint:
uv run ruff check src/jaxpt/
# Format code
format:
uv run ruff format src/jaxpt/
# Create wheel
wheel:
uv build --wheel .
# Create source distribution
sdist:
uv build --sdist .
# Show installed packages
list:
uv pip list
jupyter-ssh-tunnel:
ssh -L 8888:localhost:8888 -i '${keyfile}' ubuntu@${host}
# Run Jupyter lab
lab:
cd notebooks && uv run jupyter lab --NotebookApp.iopub_data_rate_limit=1.0e10 --NotebookApp.rate_limit_window=10.0 --no-browser --port=8888
# Help command
help:
@echo "Available commands:"
@echo " make install - Install dependencies from lockfile"
@echo " make dev - Install all dependencies including dev from lockfile"
@echo " make regen-lock - Regenerate lockfile from scratch"
@echo " make add - Add a production dependency (make add pkg=package_name)"
@echo " make add-dev - Add a development dependency (make add-dev pkg=package_name)"
@echo " make remove - Remove a dependency (make remove pkg=package_name)"
@echo " make clean - Clean build artifacts and cache"
@echo " make build - Build package"
@echo " make lint - Run linting"
@echo " make format - Format code"
@echo " make wheel - Create wheel distribution"
@echo " make sdist - Create source distribution"
@echo " make list - Show installed packages"
@echo " make lab - Run Jupyter lab"
@echo " make jupyter-ssh-tunnel - SSH tunnel to Jupyter lab"
@echo " make help - Show this help message"