Skip to content
Open
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
4 changes: 2 additions & 2 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ src/

#### Module Standards
- All modules start with descriptive docstrings explaining purpose
- Use `logger = logging.getLogger(__name__)` pattern for module logging
- Use `logger = get_logger(__name__)` from `log.py` for module logging
- Package `__init__.py` files contain brief package descriptions
- Central `constants.py` for shared constants with descriptive comments
- Type aliases defined at module level for clarity
Expand Down Expand Up @@ -89,7 +89,7 @@ src/
- Handle `APIConnectionError` from Llama Stack

#### Logging Standards
- Use `import logging` and module logger pattern: `logger = logging.getLogger(__name__)`
- Use `from log import get_logger` and module logger pattern: `logger = get_logger(__name__)`
- Standard log levels with clear purposes:
- `logger.debug()` - Detailed diagnostic information
- `logger.info()` - General information about program execution
Expand Down
2 changes: 1 addition & 1 deletion docs/a2a_protocol.md
Original file line number Diff line number Diff line change
Expand Up @@ -771,7 +771,7 @@ service:
color_log: true
```

Check logs for entries from `app.endpoints.handlers` logger.
Check logs for entries from `app.endpoints.health` logger.

## Protocol Version

Expand Down
4 changes: 2 additions & 2 deletions src/a2a_storage/in_memory_context_store.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
"""In-memory implementation of A2A context store."""

import asyncio
import logging
from typing import Optional

from a2a_storage.context_store import A2AContextStore
from log import get_logger

logger = logging.getLogger(__name__)
logger = get_logger(__name__)


class InMemoryA2AContextStore(A2AContextStore):
Expand Down
4 changes: 2 additions & 2 deletions src/a2a_storage/postgres_context_store.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
"""PostgreSQL implementation of A2A context store."""

import logging
from typing import Optional

from sqlalchemy import Column, String, Table, MetaData, select, delete
from sqlalchemy.dialects.postgresql import insert as pg_insert
from sqlalchemy.ext.asyncio import AsyncEngine, async_sessionmaker

from a2a_storage.context_store import A2AContextStore
from log import get_logger

logger = logging.getLogger(__name__)
logger = get_logger(__name__)

# Define the table metadata
metadata = MetaData()
Expand Down
4 changes: 2 additions & 2 deletions src/a2a_storage/sqlite_context_store.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
"""SQLite implementation of A2A context store."""

import logging
from typing import Optional

from sqlalchemy import Column, String, Table, MetaData, select, delete
from sqlalchemy.ext.asyncio import AsyncEngine, async_sessionmaker

from a2a_storage.context_store import A2AContextStore
from log import get_logger

logger = logging.getLogger(__name__)
logger = get_logger(__name__)

# Define the table metadata
metadata = MetaData()
Expand Down
4 changes: 2 additions & 2 deletions src/a2a_storage/storage_factory.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
"""Factory for creating A2A storage backends."""

import logging
from urllib.parse import quote_plus
from typing import Optional

Expand All @@ -13,8 +12,9 @@
from a2a_storage.sqlite_context_store import SQLiteA2AContextStore
from a2a_storage.postgres_context_store import PostgresA2AContextStore
from models.config import A2AStateConfiguration
from log import get_logger

logger = logging.getLogger(__name__)
logger = get_logger(__name__)


class A2AStorageFactory:
Expand Down
4 changes: 3 additions & 1 deletion src/app/database.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
"""Database engine management."""

import logging
from pathlib import Path
from typing import Any, Optional

from sqlalchemy import create_engine, text
from sqlalchemy.engine.base import Engine
from sqlalchemy.orm import sessionmaker, Session
from log import get_logger, logging

from log import get_logger
from configuration import configuration
from models.database.base import Base
from models.config import SQLiteDatabaseConfiguration, PostgreSQLDatabaseConfiguration
Expand Down
4 changes: 2 additions & 2 deletions src/app/endpoints/a2a.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import asyncio
import json
import logging
import uuid
from datetime import datetime, timezone
from typing import Annotated, Any, AsyncIterator, MutableMapping, Optional
Expand Down Expand Up @@ -52,8 +51,9 @@
)
from utils.suid import normalize_conversation_id
from version import __version__
from log import get_logger

logger = logging.getLogger("app.endpoints.handlers")
logger = get_logger(__name__)
router = APIRouter(tags=["a2a"])

auth_dependency = get_auth_dependency()
Expand Down
4 changes: 2 additions & 2 deletions src/app/endpoints/authorized.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
"""Handler for REST API call to authorized endpoint."""

import logging
from typing import Annotated, Any

from fastapi import APIRouter, Depends

from authentication import get_auth_dependency
from authentication.interface import AuthTuple
from models.responses import AuthorizedResponse, ForbiddenResponse, UnauthorizedResponse
from log import get_logger

logger = logging.getLogger(__name__)
logger = get_logger(__name__)
router = APIRouter(tags=["authorized"])

authorized_responses: dict[int | str, dict[str, Any]] = {
Expand Down
4 changes: 2 additions & 2 deletions src/app/endpoints/config.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
"""Handler for REST API call to retrieve service configuration."""

import logging
from typing import Annotated, Any

from fastapi import APIRouter, Depends, Request
Expand All @@ -17,8 +16,9 @@
UnauthorizedResponse,
)
from utils.endpoints import check_configuration_loaded
from log import get_logger

logger = logging.getLogger(__name__)
logger = get_logger(__name__)
router = APIRouter(tags=["config"])


Expand Down
4 changes: 2 additions & 2 deletions src/app/endpoints/conversations_v1.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
"""Handler for REST API calls to manage conversation history using Conversations API."""

import logging
from typing import Any

from fastapi import APIRouter, Depends, HTTPException, Request
Expand Down Expand Up @@ -47,8 +46,9 @@
to_llama_stack_conversation_id,
)
from utils.conversations import build_conversation_turns_from_items
from log import get_logger

logger = logging.getLogger("app.endpoints.handlers")
logger = get_logger(__name__)
router = APIRouter(tags=["conversations_v1"])

conversation_get_responses: dict[int | str, dict[str, Any]] = {
Expand Down
4 changes: 2 additions & 2 deletions src/app/endpoints/conversations_v2.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
"""Handler for REST API calls to manage conversation history."""

import logging
from typing import Any

from fastapi import APIRouter, Depends, HTTPException, Request
Expand All @@ -26,8 +25,9 @@
)
from utils.endpoints import check_configuration_loaded
from utils.suid import check_suid
from log import get_logger

logger = logging.getLogger("app.endpoints.handlers")
logger = get_logger(__name__)
router = APIRouter(tags=["conversations_v2"])


Expand Down
4 changes: 2 additions & 2 deletions src/app/endpoints/feedback.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
"""Handler for REST API endpoint for user feedback."""

import json
import logging
import threading
from datetime import UTC, datetime
from pathlib import Path
Expand All @@ -26,8 +25,9 @@
)
from utils.endpoints import check_configuration_loaded, retrieve_conversation
from utils.suid import get_suid
from log import get_logger

logger = logging.getLogger(__name__)
logger = get_logger(__name__)
router = APIRouter(prefix="/feedback", tags=["feedback"])
feedback_status_lock = threading.Lock()

Expand Down
4 changes: 2 additions & 2 deletions src/app/endpoints/health.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
methods. For HEAD HTTP method, just the HTTP response code is used.
"""

import logging
from enum import Enum
from typing import Annotated, Any

Expand All @@ -16,6 +15,7 @@
from authentication.interface import AuthTuple
from authorization.middleware import authorize
from client import AsyncLlamaStackClientHolder
from log import get_logger
from models.config import Action
from models.responses import (
ForbiddenResponse,
Expand All @@ -26,7 +26,7 @@
UnauthorizedResponse,
)

logger = logging.getLogger("app.endpoints.handlers")
logger = get_logger(__name__)
router = APIRouter(tags=["health"])


Expand Down
4 changes: 2 additions & 2 deletions src/app/endpoints/info.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
"""Handler for REST API call to provide info."""

import logging
from typing import Annotated, Any

from fastapi import APIRouter, Depends, HTTPException, Request
Expand All @@ -19,8 +18,9 @@
UnauthorizedResponse,
)
from version import __version__
from log import get_logger

logger = logging.getLogger("app.endpoints.handlers")
logger = get_logger(__name__)
router = APIRouter(tags=["info"])


Expand Down
4 changes: 2 additions & 2 deletions src/app/endpoints/mcp_auth.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
"""Handler for REST API calls related to MCP server authentication."""

import logging
from typing import Annotated, Any

from fastapi import APIRouter, Depends, Request
Expand All @@ -19,8 +18,9 @@
UnauthorizedResponse,
)
from utils.endpoints import check_configuration_loaded
from log import get_logger

logger = logging.getLogger(__name__)
logger = get_logger(__name__)
router = APIRouter(prefix="/mcp-auth", tags=["mcp-auth"])


Expand Down
4 changes: 2 additions & 2 deletions src/app/endpoints/models.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
"""Handler for REST API call to list available models."""

import logging
from typing import Annotated, Any

from fastapi import APIRouter, HTTPException, Request, Query
Expand All @@ -22,8 +21,9 @@
UnauthorizedResponse,
)
from utils.endpoints import check_configuration_loaded
from log import get_logger

logger = logging.getLogger(__name__)
logger = get_logger(__name__)
router = APIRouter(tags=["models"])


Expand Down
4 changes: 2 additions & 2 deletions src/app/endpoints/providers.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
"""Handler for REST API calls to list and retrieve available providers."""

import logging
from typing import Annotated, Any

from fastapi import APIRouter, HTTPException, Request
Expand All @@ -24,8 +23,9 @@
UnauthorizedResponse,
)
from utils.endpoints import check_configuration_loaded
from log import get_logger

logger = logging.getLogger(__name__)
logger = get_logger(__name__)
router = APIRouter(tags=["providers"])


Expand Down
4 changes: 2 additions & 2 deletions src/app/endpoints/query.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

"""Handler for REST API call to provide answer to query using Response API."""

import logging
from datetime import UTC, datetime
from typing import Annotated, Any, cast

Expand Down Expand Up @@ -64,8 +63,9 @@
)
from utils.suid import normalize_conversation_id
from utils.types import ResponsesApiParams, TurnSummary
from log import get_logger

logger = logging.getLogger("app.endpoints.handlers")
logger = get_logger(__name__)
router = APIRouter(tags=["query"])

query_response: dict[int | str, dict[str, Any]] = {
Expand Down
4 changes: 2 additions & 2 deletions src/app/endpoints/rags.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
"""Handler for REST API calls to list and retrieve available RAGs."""

import logging
from typing import Annotated, Any

from fastapi import APIRouter, HTTPException, Request
Expand All @@ -23,8 +22,9 @@
UnauthorizedResponse,
)
from utils.endpoints import check_configuration_loaded
from log import get_logger

logger = logging.getLogger(__name__)
logger = get_logger(__name__)
router = APIRouter(tags=["rags"])


Expand Down
4 changes: 2 additions & 2 deletions src/app/endpoints/rlsapi_v1.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
from the RHEL Lightspeed Command Line Assistant (CLA).
"""

import logging
import time
from typing import Annotated, Any, cast

Expand Down Expand Up @@ -34,8 +33,9 @@
from observability import InferenceEventData, build_inference_event, send_splunk_event
from utils.responses import extract_text_from_response_output_item, get_mcp_tools
from utils.suid import get_suid
from log import get_logger

logger = logging.getLogger(__name__)
logger = get_logger(__name__)
router = APIRouter(tags=["rlsapi-v1"])

# Default values when RH Identity auth is not configured
Expand Down
4 changes: 2 additions & 2 deletions src/app/endpoints/root.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
"""Handler for the / endpoint."""

import logging
from typing import Annotated, Any

from fastapi import APIRouter, Depends, Request
Expand All @@ -11,8 +10,9 @@
from authorization.middleware import authorize
from models.config import Action
from models.responses import ForbiddenResponse, UnauthorizedResponse
from log import get_logger

logger = logging.getLogger("app.endpoints.handlers")
logger = get_logger(__name__)
router = APIRouter(tags=["root"])


Expand Down
Loading
Loading