diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 00000000..ad34725e --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,25 @@ +# Pre-commit hooks for fast linting checks +# Type checking is intentionally excluded as it's slow +# Install: pre-commit install +# Run manually: pre-commit run --all-files + +repos: + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v5.0.0 + hooks: + - id: trailing-whitespace + - id: end-of-file-fixer + - id: check-yaml + - id: check-toml + - id: check-json + - id: check-added-large-files + - id: check-merge-conflict + + - repo: https://github.com/astral-sh/ruff-pre-commit + rev: v0.9.2 + hooks: + # Run the linter + - id: ruff + args: [--fix, --exit-non-zero-on-fix] + # Run the formatter + - id: ruff-format diff --git a/pyproject.toml b/pyproject.toml index 8797415c..832cb971 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -92,6 +92,7 @@ dev-dependencies = [ "nest_asyncio==1.6.0", "pytest-xdist>=3.6.1", "debugpy>=1.8.15", + "pre-commit>=4.0.0", ] [tool.rye.scripts] diff --git a/requirements-dev.lock b/requirements-dev.lock index a282ef7f..5722fc78 100644 --- a/requirements-dev.lock +++ b/requirements-dev.lock @@ -49,6 +49,8 @@ certifi==2023.7.22 # via httpx # via kubernetes # via requests +cfgv==3.4.0 + # via pre-commit charset-normalizer==3.4.3 # via requests click==8.2.1 @@ -113,14 +115,16 @@ httpx==0.27.2 # via mcp # via openai # via respx -httpx-aiohttp==0.1.9 # via scale-gp # via scale-gp-beta +httpx-aiohttp==0.1.9 # via agentex-sdk httpx-sse==0.4.1 # via mcp huggingface-hub==0.34.4 # via tokenizers +identify==2.6.15 + # via pre-commit idna==3.4 # via anyio # via httpx @@ -186,6 +190,7 @@ nest-asyncio==1.6.0 nexus-rpc==1.1.0 # via temporalio nodeenv==1.8.0 + # via pre-commit # via pyright nox==2023.4.22 oauthlib==3.3.1 @@ -213,26 +218,13 @@ platformdirs==3.11.0 # via virtualenv pluggy==1.5.0 # via pytest +pre-commit==4.3.0 prompt-toolkit==3.0.51 # via ipython # via questionary propcache==0.3.1 # via aiohttp # via yarl -pydantic==2.11.9 - # via agentex-sdk - # via agentex-sdk - # via fastapi - # via litellm - # via mcp - # via openai - # via openai-agents - # via pydantic-settings - # via python-on-whales - # via scale-gp - # via scale-gp-beta -pydantic-core==2.33.2 - # via pydantic protobuf==5.29.5 # via ddtrace # via temporalio @@ -247,6 +239,19 @@ pyasn1==0.6.1 # via rsa pyasn1-modules==0.4.2 # via google-auth +pydantic==2.11.9 + # via agentex-sdk + # via fastapi + # via litellm + # via mcp + # via openai + # via openai-agents + # via pydantic-settings + # via python-on-whales + # via scale-gp + # via scale-gp-beta +pydantic-core==2.33.2 + # via pydantic pydantic-settings==2.10.1 # via mcp pygments==2.18.0 @@ -282,6 +287,7 @@ pyyaml==6.0.2 # via agentex-sdk # via huggingface-hub # via kubernetes + # via pre-commit pyzmq==27.0.1 # via ipykernel # via jupyter-client @@ -383,9 +389,6 @@ typing-extensions==4.12.2 # via pydantic # via pydantic-core # via pyright - # via typing-inspection -typing-inspection==0.4.1 - # via pydantic # via python-on-whales # via referencing # via scale-gp @@ -393,6 +396,8 @@ typing-inspection==0.4.1 # via temporalio # via typer # via typing-inspection +typing-inspection==0.4.1 + # via pydantic # via pydantic-settings tzdata==2025.2 # via agentex-sdk @@ -406,6 +411,7 @@ uvicorn==0.35.0 # via mcp virtualenv==20.24.5 # via nox + # via pre-commit watchfiles==0.24.0 # via agentex-sdk wcwidth==0.2.13 diff --git a/requirements.lock b/requirements.lock index 81d91576..e5070bc3 100644 --- a/requirements.lock +++ b/requirements.lock @@ -99,12 +99,12 @@ httpcore==1.0.9 httpx==0.27.2 # via agentex-sdk # via httpx-aiohttp -httpx-aiohttp==0.1.9 # via litellm # via mcp # via openai # via scale-gp # via scale-gp-beta +httpx-aiohttp==0.1.9 # via agentex-sdk httpx-sse==0.4.1 # via mcp @@ -200,19 +200,6 @@ prompt-toolkit==3.0.51 propcache==0.3.1 # via aiohttp # via yarl -pydantic==2.11.9 - # via agentex-sdk - # via fastapi - # via litellm - # via mcp - # via openai - # via openai-agents - # via pydantic-settings - # via python-on-whales - # via scale-gp - # via scale-gp-beta -pydantic-core==2.33.2 - # via pydantic protobuf==5.29.5 # via ddtrace # via temporalio @@ -227,6 +214,19 @@ pyasn1==0.6.1 # via rsa pyasn1-modules==0.4.2 # via google-auth +pydantic==2.11.9 + # via agentex-sdk + # via fastapi + # via litellm + # via mcp + # via openai + # via openai-agents + # via pydantic-settings + # via python-on-whales + # via scale-gp + # via scale-gp-beta +pydantic-core==2.33.2 + # via pydantic pydantic-settings==2.10.1 # via mcp pygments==2.19.2 @@ -351,9 +351,6 @@ typing-extensions==4.12.2 # via opentelemetry-api # via pydantic # via pydantic-core - # via typing-inspection -typing-inspection==0.4.1 - # via pydantic # via python-on-whales # via referencing # via scale-gp @@ -361,6 +358,8 @@ typing-inspection==0.4.1 # via temporalio # via typer # via typing-inspection +typing-inspection==0.4.1 + # via pydantic # via pydantic-settings tzdata==2025.2 # via agentex-sdk