pre-commit ruff mypy detect-secrets gradio[oauth]