You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
install: ## Install the virtual environment and install the pre-commit hooks
@echo "馃殌 Creating virtual environment using uv"
@uv sync
@uv run prek install
.PHONY: check
check: ## Run code quality tools.
@echo "馃殌 Checking lock file consistency with 'pyproject.toml'"
@uv lock --locked
@echo "馃殌 Linting code: Running prek"
@uv run prek run -a
@echo "馃殌 Static type checking: Running ty"
@uv run ty check
.PHONY: test
test: ## Test the code with pytest
@echo "馃殌 Testing code: Running pytest"
@uv run python -m pytest --doctest-modules
.PHONY: build
build: clean-build ## Build wheel file
@echo "馃殌 Creating wheel file"
@uvx --from build pyproject-build --installer uv
.PHONY: clean-build
clean-build: ## Clean build artifacts
@echo "馃殌 Removing build artifacts"
@uv run python -c "import shutil; import os; shutil.rmtree('dist') if os.path.exists('dist') else None"
.PHONY: docs-test
docs-test: ## Build the documentation with strict checks
@uv run --frozen --group docs zensical build --clean --strict
.PHONY: docs
docs: ## Serve the documentation locally
@uv run --frozen --group docs zensical serve
.PHONY: help
help:
@uv run python -c "import re; \
[[print(f'\033[36m{m[0]:<20}\033[0m {m[1]}') for m in re.findall(r'^([a-zA-Z_-]+):.*?## (.*)$$', open(makefile).read(), re.M)] for makefile in ('$(MAKEFILE_LIST)').strip().split()]"