From 1a066c7e5f792a6f9bf21559725f9c34a9064ff4 Mon Sep 17 00:00:00 2001 From: Rajat Ahuja Date: Mon, 3 Nov 2025 15:48:16 -0500 Subject: [PATCH] fix: add jinja error handling --- src/utils/templates.py | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/src/utils/templates.py b/src/utils/templates.py index 991d514f..e42604a1 100644 --- a/src/utils/templates.py +++ b/src/utils/templates.py @@ -5,10 +5,14 @@ This module provides a centralized template manager for rendering prompt templat used across the application (deriver, dreamer, dialectic). """ +import logging from functools import lru_cache from typing import Any from jinja2 import Environment, PackageLoader, select_autoescape +from jinja2.exceptions import TemplateNotFound, TemplateSyntaxError + +logger = logging.getLogger(__name__) class TemplateManager: @@ -49,10 +53,20 @@ class TemplateManager: Returns: Rendered template string with leading/trailing whitespace stripped """ - template = self.env.get_template(template_name) - rendered = template.render(**context) - # Strip leading/trailing whitespace to match cleandoc behavior - return rendered.strip() + try: + template = self.env.get_template(template_name) + rendered = template.render(**context) + # Strip leading/trailing whitespace to match cleandoc behavior + return rendered.strip() + except TemplateNotFound as e: + logger.exception(f"Template {template_name} not found") + raise e + except TemplateSyntaxError as e: + logger.exception(f"Template syntax error in {template_name}") + raise e + except Exception as e: + logger.exception(f"Error rendering template {template_name}") + raise e @lru_cache(maxsize=1)