-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
90 lines (72 loc) · 2.77 KB
/
Makefile
File metadata and controls
90 lines (72 loc) · 2.77 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
# System detection
UNAME := "$(shell uname)"
PYTHON_VENV_NAME := ".venv"
# Python virtual environment settings
VENV_NAME := .venv
PYTHON := python
# Check if we're on Windows
ifeq ($(OS),Windows_NT)
PYTHON_CMD := $(CURDIR)/$(VENV_NAME)/Scripts/python
SQLMESH_CMD := $(CURDIR)/$(VENV_NAME)/Scripts/sqlmesh
UV_CMD := "$(subst \,/,$(USERPROFILE))/.local/bin/uv.exe"
ACTIVATE := source $(CURDIR)/$(VENV_NAME)/Scripts/activate
DEACTIVATE := source $(CURDIR)/$(VENV_NAME)/Scripts/deactivate
else
PYTHON_CMD := $(CURDIR)/$(VENV_NAME)/bin/python
SQLMESH_CMD := $(CURDIR)/$(VENV_NAME)/bin/sqlmesh
UV_CMD := uv
ACTIVATE := source $(CURDIR)/$(VENV_NAME)/bin/activate
DEACTIVATE := deactivate
endif
# Python setup commands
install-python:
ifeq ($(UNAME),"Darwin")
brew install python@3.12
else
@echo "Please install Python 3.12 manually for your operating system"
@echo "Visit: https://www.python.org/downloads/"
@exit 1
endif
check-uv:
@if [ "$(shell uname)" = "Darwin" ]; then \
which uv > /dev/null || (echo "Installing uv via Homebrew..." && brew install uv); \
else \
which uv > /dev/null || (echo "Installing uv via curl..." && curl -LsSf https://astral.sh/uv/install.sh | sh); \
fi
init-python:
@if [ ! -d "$(PYTHON_VENV_NAME)" ]; then \
echo "Creating virtual environment with Python 3.12..."; \
uv venv --python 3.12 $(PYTHON_VENV_NAME); \
fi
install-python-deps:
uv pip install -e ".[dev]"
upgrade-python-deps:
uv lock --upgrade
make install-python-deps
# Base commands
init: check-uv init-python install-python-deps
clean:
find . \( -type d -name "__pycache__" -o -type f -name "*.pyc" -o -type d -name ".pytest_cache" -o -type d -name "*.egg-info" \) -print0 | xargs -0 rm -rf
# Testing commands
test:
$(PYTHON_CMD) -m pytest -vv --log-cli-level=INFO $(filter-out $@,$(MAKECMDGOALS))
mypy:
$(PYTHON_CMD) -m mypy src/
# Data pipeline commands
dlt:
$(PYTHON_CMD) src/loader/main.py
@echo "\nVerifying data in DuckDB:"
@$(PYTHON_CMD) -c "import duckdb; conn = duckdb.connect('database/shell_corp.duckdb'); print(conn.sql('SELECT * FROM raw.transfer_listings').df())"
sqlmesh-plan:
cd src/sqlmesh && $(SQLMESH_CMD) plan
@echo "\nShowing transfer analysis results:"
-@$(PYTHON_CMD) -c "import duckdb; conn = duckdb.connect('database/shell_corp.duckdb'); print(conn.sql('SELECT * FROM staging.transfer_analysis').df())"
sqlmesh-restate:
cd src/sqlmesh && $(SQLMESH_CMD) plan --restate-model staging.transfer_analysis
sqlmesh-test:
cd src/sqlmesh && $(SQLMESH_CMD) test
sqlmesh-audit:
cd src/sqlmesh && $(SQLMESH_CMD) audit
sqlmesh-run:
cd src/sqlmesh && $(SQLMESH_CMD) run
.PHONY: init init-python install-python check-uv install-python-deps upgrade-python-deps clean test mypy dlt sqlmesh-plan sqlmesh-restate sqlmesh-test sqlmesh-audit sqlmesh-run