mirror of
https://github.com/katanemo/plano.git
synced 2026-07-23 16:51:04 +02:00
Improve config validation error messages (#825)
* improve config validation error messages and update getting started demo * fix black formatting
This commit is contained in:
parent
bc059aed4d
commit
5d85829bc2
2 changed files with 19 additions and 8 deletions
|
|
@ -3,7 +3,7 @@ import os
|
||||||
from planoai.utils import convert_legacy_listeners
|
from planoai.utils import convert_legacy_listeners
|
||||||
from jinja2 import Environment, FileSystemLoader
|
from jinja2 import Environment, FileSystemLoader
|
||||||
import yaml
|
import yaml
|
||||||
from jsonschema import validate
|
from jsonschema import validate, ValidationError
|
||||||
from urllib.parse import urlparse
|
from urllib.parse import urlparse
|
||||||
from copy import deepcopy
|
from copy import deepcopy
|
||||||
from planoai.consts import DEFAULT_OTEL_TRACING_GRPC_ENDPOINT
|
from planoai.consts import DEFAULT_OTEL_TRACING_GRPC_ENDPOINT
|
||||||
|
|
@ -507,11 +507,15 @@ def validate_prompt_config(plano_config_file, plano_config_schema_file):
|
||||||
|
|
||||||
try:
|
try:
|
||||||
validate(config_yaml, config_schema_yaml)
|
validate(config_yaml, config_schema_yaml)
|
||||||
except Exception as e:
|
except ValidationError as e:
|
||||||
print(
|
path = (
|
||||||
f"Error validating plano_config file: {plano_config_file}, schema file: {plano_config_schema_file}, error: {e}"
|
" → ".join(str(p) for p in e.absolute_path) if e.absolute_path else "root"
|
||||||
)
|
)
|
||||||
raise e
|
raise ValidationError(
|
||||||
|
f"{e.message}\n Location: {path}\n Value: {e.instance}"
|
||||||
|
) from None
|
||||||
|
except Exception as e:
|
||||||
|
raise
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|
|
||||||
|
|
@ -420,9 +420,16 @@ def native_validate_config(plano_config_file):
|
||||||
with _temporary_env(overrides):
|
with _temporary_env(overrides):
|
||||||
from planoai.config_generator import validate_and_render_schema
|
from planoai.config_generator import validate_and_render_schema
|
||||||
|
|
||||||
# Suppress verbose print output from config_generator
|
# Suppress verbose print output from config_generator but capture errors
|
||||||
with contextlib.redirect_stdout(io.StringIO()):
|
captured = io.StringIO()
|
||||||
validate_and_render_schema()
|
try:
|
||||||
|
with contextlib.redirect_stdout(captured):
|
||||||
|
validate_and_render_schema()
|
||||||
|
except SystemExit:
|
||||||
|
# validate_and_render_schema calls exit(1) on failure after
|
||||||
|
# printing to stdout; re-raise so the caller gets a useful message.
|
||||||
|
output = captured.getvalue().strip()
|
||||||
|
raise Exception(output) if output else Exception("Config validation failed")
|
||||||
|
|
||||||
|
|
||||||
def native_logs(debug=False, follow=False):
|
def native_logs(debug=False, follow=False):
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue