From 201824946ec662d17c030b47eb3046ee2ff2da88 Mon Sep 17 00:00:00 2001 From: Wen Zhou Date: Tue, 15 Jul 2025 13:29:25 +0200 Subject: [PATCH] update: code review - format for error message - wrapper into a handler for httpurl validation Signed-off-by: Wen Zhou --- llama_stack/apis/providers/providers.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/llama_stack/apis/providers/providers.py b/llama_stack/apis/providers/providers.py index 8c1a8d73e..34b3e6e44 100644 --- a/llama_stack/apis/providers/providers.py +++ b/llama_stack/apis/providers/providers.py @@ -7,6 +7,7 @@ from typing import Any, Protocol, runtime_checkable from pydantic import BaseModel, Field, HttpUrl, field_validator +from pydantic_core import PydanticCustomError from llama_stack.providers.datatypes import HealthResponse from llama_stack.schema_utils import json_schema_type, webmethod @@ -20,7 +21,7 @@ class ProviderInfo(BaseModel): config: dict[str, Any] health: HealthResponse metrics: str | None = Field( - default=None, description="endpoint for metrics from providers. Must be a valid HTTP URL if provided." + default=None, description="Endpoint for metrics from providers. Must be a valid HTTP URL if provided." ) @field_validator("metrics") @@ -29,9 +30,12 @@ class ProviderInfo(BaseModel): if v is None: return None if not isinstance(v, str): - raise ValueError("metrics must be a string URL or None") - HttpUrl(v) - return v + raise ValueError("'metrics' must be a string URL or None") + try: + HttpUrl(v) # Validate the URL + return v + except (PydanticCustomError, ValueError) as e: + raise ValueError(f"'metrics' must be a valid HTTP or HTTPS URL: {str(e)}") from e class ListProvidersResponse(BaseModel):