Files
python-sdk/pkg/hanzo-aci/Makefile
T
2025-07-27 03:02:44 -05:00

61 lines
2.2 KiB
Makefile

SHELL = /usr/bin/env bash
# Variables
PYTHON_VERSION = 3.12
VENV_DIR = .venv
PRE_COMMIT_CONFIG = "./dev_config/python/.pre-commit-config.yaml"
# ANSI Color Codes
GREEN := $(shell tput setaf 2)
YELLOW := $(shell tput setaf 3)
RED := $(shell tput setaf 1)
BLUE := $(shell tput setaf 6)
RESET := $(shell tput sgr0)
# Setup: Install Python (if needed), create virtualenv, and install project in editable mode.
setup:
@echo "$(YELLOW)Setting up environment...$(RESET)"
@if ! command -v python$(PYTHON_VERSION) &>/dev/null; then \
echo "$(BLUE)Installing Python $(PYTHON_VERSION) with uv...$(RESET)"; \
uv python install $(PYTHON_VERSION); \
fi
@if [ ! -d "$(VENV_DIR)" ]; then \
echo "$(BLUE)Creating virtual environment...$(RESET)"; \
uv venv $(VENV_DIR) --python=$(PYTHON_VERSION); \
fi
@echo "$(BLUE)Installing project dependencies...$(RESET)"
@. $(VENV_DIR)/bin/activate && uv pip install -e .
@echo "$(GREEN)Setup complete.$(RESET)"
# Install pre-commit hooks
install-pre-commit-hooks:
@echo "$(YELLOW)Installing pre-commit hooks...$(RESET)"
@git config --unset-all core.hooksPath || true
@. $(VENV_DIR)/bin/activate && uv pip install pre-commit && pre-commit install --config $(PRE_COMMIT_CONFIG)
@echo "$(GREEN)Pre-commit hooks installed successfully.$(RESET)"
# Lint Python code using pre-commit hooks
lint-python:
@echo "$(YELLOW)Running linters...$(RESET)"
@. $(VENV_DIR)/bin/activate && pre-commit run --files dev_aci/**/* tests/**/* --show-diff-on-failure --config $(PRE_COMMIT_CONFIG)
lint: lint-python
# Build distribution packages using build (requires the 'build' package)
build:
@echo "$(YELLOW)Building distribution packages...$(RESET)"
@. $(VENV_DIR)/bin/activate && uv pip install build && python -m build
@echo "$(GREEN)Build complete. Distributions available in ./dist.$(RESET)"
# Publish packages to PyPI using twine
publish: build
@echo "$(YELLOW)Publishing packages to PyPI...$(RESET)"
@. $(VENV_DIR)/bin/activate && uv pip install twine && python -m twine upload dist/*
@echo "$(GREEN)Publish complete.$(RESET)"
# Clean build artifacts
clean:
@echo "$(YELLOW)Cleaning build artifacts...$(RESET)"
@rm -rf build dist *.egg-info
@echo "$(GREEN)Clean complete.$(RESET)"