Skip to content

feat: driver configurations #8

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Dec 17, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ repos:
- id: mixed-line-ending
- id: trailing-whitespace
- repo: https://github.com/charliermarsh/ruff-pre-commit
rev: "v0.7.3"
rev: "v0.8.3"
hooks:
- id: ruff
args: ["--fix"]
Expand Down
254 changes: 170 additions & 84 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,143 +1,229 @@
SHELL := /bin/bash

# =============================================================================
# Variables
# Configuration and Environment Variables
# =============================================================================

.DEFAULT_GOAL:=help
.DEFAULT_GOAL := help
.ONESHELL:
.EXPORT_ALL_VARIABLES:
MAKEFLAGS += --no-print-directory

# -----------------------------------------------------------------------------
# Display Formatting and Colors
# -----------------------------------------------------------------------------
BLUE := $(shell printf "\033[1;34m")
GREEN := $(shell printf "\033[1;32m")
RED := $(shell printf "\033[1;31m")
YELLOW := $(shell printf "\033[1;33m")
NC := $(shell printf "\033[0m")
INFO := $(shell printf "$(BLUE)ℹ$(NC)")
OK := $(shell printf "$(GREEN)✓$(NC)")
WARN := $(shell printf "$(YELLOW)⚠$(NC)")
ERROR := $(shell printf "$(RED)✖$(NC)")

# =============================================================================
# Help and Documentation
# =============================================================================

.PHONY: help
help: ## Display this help text for Makefile
help: ## Display this help text for Makefile
@awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m<target>\033[0m\n"} /^[a-zA-Z0-9_-]+:.*?##/ { printf " \033[36m%-15s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST)

.PHONY: upgrade
upgrade: ## Upgrade all dependencies to the latest stable versions
@echo "=> Updating all dependencies"
@uv lock --upgrade
@echo "=> Dependencies Updated"
@uv run pre-commit autoupdate
@echo "=> Updated Pre-commit"

# =============================================================================
# Developer Utils
# Installation and Environment Setup
# =============================================================================

.PHONY: install-uv
install-uv: ## Install latest version of uv
@curl -LsSf https://astral.sh/uv/install.sh | sh
install-uv: ## Install latest version of uv
@echo "${INFO} Installing uv..."
@curl -LsSf https://astral.sh/uv/install.sh | sh >/dev/null 2>&1
@echo "${OK} UV installed successfully"

.PHONY: install
install: clean ## Install the project, dependencies, and pre-commit for local development
install: destroy clean ## Install the project, dependencies, and pre-commit
@echo "${INFO} Starting fresh installation..."
@uv python pin 3.12 >/dev/null 2>&1
@uv venv >/dev/null 2>&1
@uv sync --all-extras --dev
@echo "=> Install complete!"

.PHONY: clean
clean: ## Cleanup temporary build artifacts
@echo "=> Cleaning working directory"
@rm -rf .pytest_cache .ruff_cache .hypothesis build/ -rf dist/ .eggs/
@find . -name '*.egg-info' -exec rm -rf {} +
@find . -type f -name '*.egg' -exec rm -f {} +
@find . -name '*.pyc' -exec rm -f {} +
@find . -name '*.pyo' -exec rm -f {} +
@find . -name '*~' -exec rm -f {} +
@find . -name '__pycache__' -exec rm -rf {} +
@find . -name '.ipynb_checkpoints' -exec rm -rf {} +
@rm -rf .coverage coverage.xml coverage.json htmlcov/ .pytest_cache tests/.pytest_cache tests/**/.pytest_cache .mypy_cache
$(MAKE) docs-clean
@echo "${OK} Installation complete! 🎉"

.PHONY: destroy
destroy: ## Destroy the virtual environment
destroy: ## Destroy the virtual environment
@echo "${INFO} Destroying virtual environment... 🗑️"
@uv run pre-commit clean >/dev/null 2>&1
@rm -rf .venv
@echo "${OK} Virtual environment destroyed 🗑️"

.PHONY: lock
lock: ## Rebuild lockfiles from scratch, updating all dependencies
# =============================================================================
# Dependency Management
# =============================================================================

.PHONY: upgrade
upgrade: ## Upgrade all dependencies to latest stable versions
@echo "${INFO} Updating all dependencies... 🔄"
@uv lock --upgrade
@echo "${OK} Dependencies updated 🔄"
@uv run pre-commit autoupdate
@echo "${OK} Updated Pre-commit hooks 🔄"

.PHONY: lock
lock: ## Rebuild lockfiles from scratch
@echo "${INFO} Rebuilding lockfiles... 🔄"
@uv lock --upgrade >/dev/null 2>&1
@echo "${OK} Lockfiles updated"

# =============================================================================
# Build and Release
# =============================================================================

.PHONY: build
build: ## Build the package
@echo "${INFO} Building package... 📦"
@uv build >/dev/null 2>&1
@echo "${OK} Package build complete"

.PHONY: release
release: ## Bump version and create release tag
@echo "${INFO} Preparing for release... 📦"
@make docs
@make clean
@make build
@uv lock --upgrade-package litestar-vite >/dev/null 2>&1
@uv run bump-my-version bump $(bump)
@echo "${OK} Release complete 🎉"

# =============================================================================
# Cleaning and Maintenance
# =============================================================================

.PHONY: clean
clean: ## Cleanup temporary build artifacts
@echo "${INFO} Cleaning working directory... 🧹"
@rm -rf .pytest_cache .ruff_cache .hypothesis build/ -rf dist/ .eggs/ .coverage coverage.xml coverage.json htmlcov/ .pytest_cache tests/.pytest_cache tests/**/.pytest_cache .mypy_cache .unasyncd_cache/ .auto_pytabs_cache >/dev/null 2>&1
@find . -name '*.egg-info' -exec rm -rf {} + >/dev/null 2>&1
@find . -type f -name '*.egg' -exec rm -f {} + >/dev/null 2>&1
@find . -name '*.pyc' -exec rm -f {} + >/dev/null 2>&1
@find . -name '*.pyo' -exec rm -f {} + >/dev/null 2>&1
@find . -name '*~' -exec rm -f {} + >/dev/null 2>&1
@find . -name '__pycache__' -exec rm -rf {} + >/dev/null 2>&1
@find . -name '.ipynb_checkpoints' -exec rm -rf {} + >/dev/null 2>&1
@echo "${OK} Working directory cleaned"
$(MAKE) docs-clean

# =============================================================================
# Tests, Linting, Coverage
# Testing and Quality Checks
# =============================================================================

.PHONY: test
test: ## Run the tests
@echo "${INFO} Running test cases... 🧪"
@uv run pytest tests
@echo "${OK} Tests complete ✨"

.PHONY: test-examples
test-examples: ## Run the examples tests
@echo "${INFO} Running example tests... 🧪"
@uv run pytest docs/examples
@echo "${OK} Example tests complete ✨"

.PHONY: test-all
test-all: test test-examples ## Run all tests
@echo "${INFO} All tests executed successfully ✨"

.PHONY: coverage
coverage: ## Run tests with coverage report
@echo "${INFO} Running tests with coverage... 📊"
@uv run pytest tests --cov -n auto --quiet
@uv run coverage html >/dev/null 2>&1
@uv run coverage xml >/dev/null 2>&1
@echo "${OK} Coverage report generated ✨"

.PHONY: mypy
mypy: ## Run mypy
@echo "=> Running mypy"
@echo "${INFO} Running mypy... 🔍"
@uv run dmypy run
@echo "=> mypy complete"
@echo "${OK} mypy complete"

.PHONY: mypy-nocache
mypy-nocache: ## Run Mypy without cache
@echo "=> Running mypy without a cache"
@echo "${INFO} Running mypy without cache... 🔍"
@uv run mypy
@echo "=> mypy complete"
@echo "${OK} mypy complete"

.PHONY: pyright
pyright: ## Run pyright
@echo "=> Running pyright"
@echo "${INFO} Running pyright... 🔍"
@uv run pyright
@echo "=> pyright complete"
@echo "${OK} pyright complete"

.PHONY: type-check
type-check: mypy pyright ## Run all type checking
@echo "${OK} All type checks passed ✨"

# -----------------------------------------------------------------------------
# Linting and Formatting
# -----------------------------------------------------------------------------

.PHONY: pre-commit
pre-commit: ## Runs pre-commit hooks; includes ruff formatting and linting, codespell
@echo "=> Running pre-commit process"
@uv run pre-commit run --all-files
@echo "=> Pre-commit complete"
pre-commit: ## Run pre-commit hooks
@echo "${INFO} Running pre-commit checks... 🔎"
@uv run pre-commit run --color=always --all-files
@echo "${OK} Pre-commit checks passed ✨"

.PHONY: slotscheck
slotscheck: ## Run slotscheck
@echo "=> Running slotscheck"
slotscheck: ## Run slotscheck
@echo "${INFO} Running slotscheck... 🔍"
@uv run slotscheck sqlspec/
@echo "=> slotscheck complete"

.PHONY: lint
lint: pre-commit type-check slotscheck ## Run all linting
@echo "${OK} Slotscheck complete ✨"

.PHONY: coverage
coverage: ## Run the tests and generate coverage report
@echo "=> Running tests with coverage"
@uv run pytest tests --cov -n auto
@uv run coverage html
@uv run coverage xml
@echo "=> Coverage report generated"

.PHONY: test
test: ## Run the tests
@echo "=> Running test cases"
@uv run pytest tests
@echo "=> Tests complete"

.PHONY: test-examples
test-examples: ## Run the examples tests
@uv run pytest docs/examples
.PHONY: fix
fix: ## Run code formatters
@echo "${INFO} Running code formatters... 🔧"
@uv run ruff check --fix --unsafe-fixes
@echo "${OK} Code formatting complete ✨"

.PHONY: test-all
test-all: test test-examples ## Run all tests
.PHONY: lint
lint: fix pre-commit type-check slotscheck ## Run all linting checks
@echo "${OK} All linting checks passed ✨"

.PHONY: check-all
check-all: lint test-all coverage ## Run all linting, tests, and coverage checks

check-all: lint test-all coverage ## Run all checks (lint, test, coverage)
@echo "${OK} All checks passed successfully ✨"

# =============================================================================
# Docs
# Documentation
# =============================================================================
docs-clean: ## Dump the existing built docs
@echo "=> Cleaning documentation build assets"
@rm -rf docs/_build
@echo "=> Removed existing documentation build assets"

docs-serve: docs-clean ## Serve the docs locally
@echo "=> Serving documentation"
uv run sphinx-autobuild docs docs/_build/ -j auto --watch sqlspec --watch docs --watch tests --watch CONTRIBUTING.rst --port 8002
.PHONY: docs-clean
docs-clean: ## Clean documentation build
@echo "${INFO} Cleaning documentation build assets... 🧹"
@rm -rf docs/_build >/dev/null 2>&1
@echo "${OK} Documentation assets cleaned"

.PHONY: docs-serve
docs-serve: docs-clean ## Serve documentation locally
@echo "${INFO} Starting documentation server... 📚"
@uv run sphinx-autobuild docs docs/_build/ -j auto --watch sqlspec --watch docs --watch tests --watch CONTRIBUTING.rst --port 8002

docs: docs-clean ## Dump the existing built docs and rebuild them
@echo "=> Building documentation"
@uv run sphinx-build -M html docs docs/_build/ -E -a -j auto -W --keep-going
.PHONY: docs
docs: docs-clean ## Build documentation
@echo "${INFO} Building documentation... 📝"
@uv run sphinx-build -M html docs docs/_build/ -E -a -j auto -W --keep-going >/dev/null 2>&1
@echo "${OK} Documentation built successfully"

.PHONY: docs-linkcheck
docs-linkcheck: ## Run the link check on the docs
docs-linkcheck: ## Check documentation links
@echo "${INFO} Checking documentation links... 🔗"
@uv run sphinx-build -b linkcheck ./docs ./docs/_build -D linkcheck_ignore='http://.*','https://.*'
@echo "${OK} Link check complete"

.PHONY: docs-linkcheck-full
docs-linkcheck-full: ## Run the full link check on the docs
docs-linkcheck-full: ## Run full documentation link check
@echo "${INFO} Running full link check... 🔗"
@uv run sphinx-build -b linkcheck ./docs ./docs/_build -D linkcheck_anchors=0
@echo "${OK} Full link check complete"

# =============================================================================
# End of Makefile
# =============================================================================
Loading
Loading