from jinja2 import Environment, BaseLoader, TemplateError


class TemplateRenderer:
    """Jinja2-based template renderer with safe filters"""
    
    def __init__(self):
        self.env = Environment(
            loader=BaseLoader(),
            autoescape=True,
            trim_blocks=True,
            lstrip_blocks=True
        )
    
    def render(self, template_content: str, variables: dict) -> str:
        """
        Render template with provided variables
        
        Args:
            template_content: Jinja2 template string (e.g., "Hello {{customer_name}}")
            variables: dict of values to substitute (e.g., {"customer_name": "John"})
        
        Returns:
            Rendered string
        
        Raises:
            TemplateError: if template syntax is invalid or variable missing
        """
        try:
            template = self.env.from_string(template_content)
            return template.render(**variables)
        except TemplateError as e:
            raise ValueError(f"Template rendering failed: {str(e)}")





























