- Move existing OndselSolver, GNN ML layer, and tooling into GNN/ directory for integration in later phases - Add Create addon scaffold: package.xml, Init.py - Add expression DAG with eval, symbolic diff, simplification - Add parameter table with fixed/free variable tracking - Add quaternion rotation as polynomial Expr trees - Add RigidBody entity (7 DOF: position + unit quaternion) - Add constraint classes: Coincident, DistancePointPoint, Fixed - Add Newton-Raphson solver with symbolic Jacobian + numpy lstsq - Add pre-solve passes: substitution + single-equation - Add DOF counting via Jacobian SVD rank - Add KindredSolver IKCSolver bridge for kcsolve integration - Add 82 unit tests covering all modules Registers as 'kindred' solver via kcsolve.register_solver() when loaded by Create's addon_loader.
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)
|