Skip to content

Commit cb97cab

Browse files
Merge pull request #16 from tarun-etikala/feat/ruff-linting
Feat/ruff linting
2 parents 3893a2b + 7465b97 commit cb97cab

93 files changed

Lines changed: 909 additions & 530 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/ruff.yml

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
name: Ruff
2+
3+
on:
4+
push:
5+
branches: [main]
6+
pull_request:
7+
branches: [main]
8+
workflow_dispatch:
9+
10+
permissions: {}
11+
12+
concurrency:
13+
group: ruff-${{ github.ref }}
14+
cancel-in-progress: true
15+
16+
jobs:
17+
lint:
18+
runs-on: ubuntu-latest
19+
permissions:
20+
contents: read
21+
timeout-minutes: 10
22+
steps:
23+
- name: Checkout
24+
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
25+
26+
- name: Setup Python
27+
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
28+
with:
29+
python-version: "3.12"
30+
31+
- name: Install ruff
32+
run: pip install ruff==0.15.11
33+
34+
- name: Ruff lint
35+
run: ruff check . --output-format=github
36+
37+
- name: Ruff format check
38+
run: ruff format --check .

CONTRIBUTING.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,21 @@ Thank you for your interest in contributing. This document gives a short overvie
1414

1515
Before submitting, please read our [Code of Conduct](CODE_OF_CONDUCT.md). By participating, you agree to uphold it.
1616

17+
## Linting and formatting
18+
19+
This project uses [ruff](https://docs.astral.sh/ruff/) for Python linting and formatting. CI runs ruff as a blocking check on all pull requests.
20+
21+
Run locally before pushing:
22+
23+
```bash
24+
pip install ruff
25+
ruff check . # lint
26+
ruff format --check . # format check
27+
ruff format . # auto-format
28+
```
29+
30+
Configuration is in [`ruff.toml`](ruff.toml) at the repo root.
31+
1732
## Commit message conventions
1833

1934
We encourage [Conventional Commits](https://www.conventionalcommits.org/) so that history and release notes stay clear.

agents/a2a/langgraph_crewai_agent/src/a2a_langgraph_crewai/a2a_reply.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
from uuid import uuid4
1010

1111
import httpx
12-
1312
from a2a.client import A2ACardResolver, A2AClient
1413
from a2a.types import (
1514
JSONRPCErrorResponse,

agents/a2a/langgraph_crewai_agent/src/a2a_langgraph_crewai/crew_a2a_server.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,15 @@
1212
from os import getenv
1313

1414
import uvicorn
15-
from crewai import Agent, Crew, LLM, Task
16-
from dotenv import load_dotenv
17-
1815
from a2a.server.agent_execution import AgentExecutor, RequestContext
1916
from a2a.server.apps import A2AStarletteApplication
2017
from a2a.server.events import EventQueue
2118
from a2a.server.request_handlers import DefaultRequestHandler
2219
from a2a.server.tasks import InMemoryTaskStore
2320
from a2a.types import AgentCapabilities, AgentCard, AgentSkill
2421
from a2a.utils import new_agent_text_message
22+
from crewai import LLM, Agent, Crew, Task
23+
from dotenv import load_dotenv
2524

2625
from .custom_tool import DummyWebSearchTool
2726

agents/a2a/langgraph_crewai_agent/src/a2a_langgraph_crewai/langgraph_a2a_server.py

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -13,24 +13,13 @@
1313
import json
1414
import logging
1515
import time
16+
from collections.abc import AsyncIterator
1617
from os import getenv
1718
from pathlib import Path
18-
from collections.abc import AsyncIterator
1919
from typing import Any
2020
from uuid import uuid4
2121

2222
import uvicorn
23-
from dotenv import load_dotenv
24-
from langchain.agents import create_agent
25-
from langchain_core.messages import AIMessage, HumanMessage
26-
from langchain_core.tools import tool
27-
from langchain_openai import ChatOpenAI
28-
from starlette.applications import Starlette
29-
from starlette.exceptions import HTTPException
30-
from starlette.requests import Request
31-
from starlette.responses import FileResponse, JSONResponse, StreamingResponse
32-
from starlette.routing import Route
33-
3423
from a2a.server.agent_execution import AgentExecutor, RequestContext
3524
from a2a.server.apps import A2AStarletteApplication
3625
from a2a.server.events import EventQueue
@@ -44,6 +33,16 @@
4433
SendMessageRequest,
4534
)
4635
from a2a.utils import new_agent_text_message
36+
from dotenv import load_dotenv
37+
from langchain.agents import create_agent
38+
from langchain_core.messages import AIMessage, HumanMessage
39+
from langchain_core.tools import tool
40+
from langchain_openai import ChatOpenAI
41+
from starlette.applications import Starlette
42+
from starlette.exceptions import HTTPException
43+
from starlette.requests import Request
44+
from starlette.responses import FileResponse, JSONResponse, StreamingResponse
45+
from starlette.routing import Route
4746

4847
from .a2a_reply import send_a2a_text_message
4948

@@ -278,7 +277,8 @@ async def _stream_orchestrator_sse(
278277
tool_calls = getattr(message, "tool_calls", None) or []
279278
if tool_calls:
280279
tool_calls_delta = [
281-
_tool_call_to_delta(tc, i) for i, tc in enumerate(tool_calls)
280+
_tool_call_to_delta(tc, i)
281+
for i, tc in enumerate(tool_calls)
282282
]
283283
data = {
284284
"id": completion_id,

agents/autogen/mcp_agent/main.py

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
from os import getenv
99
from pathlib import Path
1010

11+
from autogen_agent_base.agent import get_agent_chat
12+
from autogen_agent_base.tracing import enable_tracing
1113
from autogen_agentchat.base._task import TaskResult
1214
from autogen_agentchat.messages import (
1315
ModelClientStreamingChunkEvent,
@@ -24,12 +26,14 @@
2426
)
2527
from dotenv import load_dotenv
2628
from fastapi import FastAPI, HTTPException
27-
from fastapi.responses import FileResponse, HTMLResponse, JSONResponse, StreamingResponse
29+
from fastapi.responses import (
30+
FileResponse,
31+
HTMLResponse,
32+
JSONResponse,
33+
StreamingResponse,
34+
)
2835
from pydantic import BaseModel, Field, model_validator
2936

30-
from autogen_agent_base.agent import get_agent_chat
31-
from autogen_agent_base.tracing import enable_tracing
32-
3337
load_dotenv()
3438

3539

@@ -227,9 +231,7 @@ def _invocation_row(call, res) -> dict:
227231
"""Pair FunctionCall + FunctionExecutionResult for API / playground."""
228232
args_raw = getattr(call, "arguments", "") or ""
229233
try:
230-
args_out: str | dict | list = (
231-
json.loads(args_raw) if args_raw.strip() else {}
232-
)
234+
args_out: str | dict | list = json.loads(args_raw) if args_raw.strip() else {}
233235
except json.JSONDecodeError:
234236
args_out = args_raw
235237
content = (getattr(res, "content", None) or "") or ""

agents/autogen/mcp_agent/mcp_automl_template/interact_with_mcp.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import asyncio
22
import textwrap
33
from os import getenv
4-
from utils import get_chat_from_env
5-
from mcp import ClientSession
6-
from mcp.client.sse import sse_client
74

85
from langchain_mcp_adapters.tools import load_mcp_tools
96
from langgraph.prebuilt import create_react_agent
7+
from mcp import ClientSession
8+
from mcp.client.sse import sse_client
9+
from utils import get_chat_from_env
1010

1111
# LLM from .env: BASE_URL, MODEL_ID, API_KEY (see repo template.env; Ollama example there)
1212
chat_openai = get_chat_from_env()

agents/autogen/mcp_agent/mcp_automl_template/mcp_server.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,9 @@
44
from dotenv import load_dotenv
55
from mcp.server.fastmcp import FastMCP
66
from mcp.server.transport_security import TransportSecuritySettings
7-
87
from register_tools import register_tools_from_config
8+
from starlette.requests import Request
9+
from starlette.responses import JSONResponse
910

1011
load_dotenv()
1112

@@ -26,9 +27,6 @@
2627
transport_security=_transport_security,
2728
)
2829

29-
from starlette.requests import Request
30-
from starlette.responses import JSONResponse
31-
3230

3331
@mcp.custom_route("/health", methods=["GET"])
3432
async def health(request: Request) -> JSONResponse:

agents/autogen/mcp_agent/mcp_automl_template/register_tools.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313

1414
import httpx
1515
import yaml
16-
1716
from utils import json_schema_to_pydantic_model
1817

1918

agents/autogen/mcp_agent/mcp_automl_template/utils.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
from typing import Literal
2-
from pydantic import BaseModel, create_model
31
import json
42
from os import getenv
5-
import pandas as pd
3+
from typing import Literal
64

5+
import pandas as pd
76
from dotenv import load_dotenv
7+
from pydantic import BaseModel, create_model
88

99
load_dotenv()
1010

0 commit comments

Comments
 (0)