.DEFAULT_GOAL := help SHELL := /bin/bash .PHONY: black black: ## Run black formatter @poetry run black src tests; .PHONY: black-check black-check: ## Run black formatter @poetry run black src tests --check; .PHONY: format format: isort black ## Format to match linting requirements .PHONY: help help: ## Show all available commands @awk 'BEGIN {FS = ":.*##"; printf "Usage: make \033[36m\033[0m\n"} /^[a-zA-Z_-]+:.*?##/ { printf " \033[36m%-13s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST); .PHONY: isort isort: ## Run isort formatter @poetry run isort src tests; .PHONY: isort-check isort-check: ## Run isort formatter @poetry run isort src tests --check-only; .PHONY: mypy mypy: ## Run mypy type checking @poetry run mypy src tests; .PHONY: pydocstyle pydocstyle: ## Run docstring linting @poetry run pydocstyle src tests; .PHONY: quality quality: ruff mypy isort-check black-check pydocstyle ## Run linting checks .PHONY: ruff ruff: ## Run ruff linter @poetry run ruff check src tests; .PHONY: test test: ## Run test pipeline @poetry run pytest -x