- Project structure: solver/, freecad/, export/, configs/, scripts/, tests/, docs/ - pyproject.toml with dependency groups: core, train, freecad, dev - Hydra configs: dataset (synthetic, fusion360), model (baseline, gat), training (pretrain, finetune), export (production) - Dockerfile with CUDA+PyG GPU and CPU-only targets - docker-compose.yml for train, test, data-gen services - Makefile with targets: train, test, lint, format, type-check, data-gen, export, check - Pre-commit hooks: ruff, mypy, conventional commits - Gitea Actions CI: lint, type-check, test on push/PR - README with setup and usage instructions
49 lines
1.6 KiB
Makefile
49 lines
1.6 KiB
Makefile
.PHONY: train test lint data-gen export format type-check install dev clean help
|
|
|
|
PYTHON ?= python
|
|
PYTEST ?= pytest
|
|
RUFF ?= ruff
|
|
MYPY ?= mypy
|
|
|
|
help: ## Show this help
|
|
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | \
|
|
awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}'
|
|
|
|
install: ## Install core dependencies
|
|
pip install -e .
|
|
|
|
dev: ## Install all dependencies including dev tools
|
|
pip install -e ".[train,dev]"
|
|
pre-commit install
|
|
pre-commit install --hook-type commit-msg
|
|
|
|
train: ## Run training (pass CONFIG=path/to/config.yaml)
|
|
$(PYTHON) -m solver.training.train $(if $(CONFIG),--config-path $(CONFIG))
|
|
|
|
test: ## Run test suite
|
|
$(PYTEST) tests/ freecad/tests/ -v --tb=short
|
|
|
|
lint: ## Run ruff linter
|
|
$(RUFF) check solver/ freecad/ tests/ scripts/
|
|
|
|
format: ## Format code with ruff
|
|
$(RUFF) format solver/ freecad/ tests/ scripts/
|
|
$(RUFF) check --fix solver/ freecad/ tests/ scripts/
|
|
|
|
type-check: ## Run mypy type checker
|
|
$(MYPY) solver/ freecad/
|
|
|
|
data-gen: ## Generate synthetic dataset (pass CONFIG=path/to/config.yaml)
|
|
$(PYTHON) scripts/generate_synthetic.py $(if $(CONFIG),--config-path $(CONFIG))
|
|
|
|
export: ## Export trained model for deployment
|
|
$(PYTHON) export/package_model.py $(if $(MODEL),--model $(MODEL))
|
|
|
|
clean: ## Remove build artifacts and caches
|
|
rm -rf build/ dist/ *.egg-info/
|
|
rm -rf .mypy_cache/ .pytest_cache/ .ruff_cache/
|
|
find . -type d -name __pycache__ -exec rm -rf {} + 2>/dev/null || true
|
|
find . -type f -name "*.pyc" -delete 2>/dev/null || true
|
|
|
|
check: lint type-check test ## Run all checks (lint, type-check, test)
|