Fix CI issues: sort imports and enable Jinja2 autoescape

Co-Authored-By: Joe Moura <joao@crewai.com>
This commit is contained in:
Devin AI
2025-04-20 14:40:08 +00:00
parent 15dd15fcab
commit 11386e69bf
6 changed files with 22 additions and 13 deletions

View File

@@ -533,9 +533,10 @@ class Task(BaseModel):
if var_name in inputs and isinstance(inputs[var_name], list): if var_name in inputs and isinstance(inputs[var_name], list):
try: try:
idx = int(index) idx = int(index)
if 0 <= idx < len(inputs[var_name]): list_value = inputs[var_name]
if isinstance(list_value, list) and 0 <= idx < len(list_value):
placeholder = f"{{{var_name}[{index}]}}" placeholder = f"{{{var_name}[{index}]}}"
value = str(inputs[var_name][idx]) value = str(list_value[idx])
result = result.replace(placeholder, value) result = result.replace(placeholder, value)
except (ValueError, IndexError): except (ValueError, IndexError):
pass pass
@@ -564,9 +565,10 @@ class Task(BaseModel):
if var_name in inputs and isinstance(inputs[var_name], list): if var_name in inputs and isinstance(inputs[var_name], list):
try: try:
idx = int(index) idx = int(index)
if 0 <= idx < len(inputs[var_name]): list_value = inputs[var_name]
if isinstance(list_value, list) and 0 <= idx < len(list_value):
placeholder = f"{{{var_name}[{index}]}}" placeholder = f"{{{var_name}[{index}]}}"
value = str(inputs[var_name][idx]) value = str(list_value[idx])
result = result.replace(placeholder, value) result = result.replace(placeholder, value)
except (ValueError, IndexError): except (ValueError, IndexError):
pass pass

View File

@@ -1,7 +1,8 @@
from typing import Any, Dict, List, Optional, Union
import jinja2
import re
from datetime import datetime from datetime import datetime
import re
from typing import Any, Dict, List, Optional, Union
import jinja2
def to_jinja_template(input_string: str) -> str: def to_jinja_template(input_string: str) -> str:
""" """
@@ -64,6 +65,7 @@ def render_template(
env = jinja2.Environment( env = jinja2.Environment(
undefined=jinja2.StrictUndefined, # Raise errors for undefined variables undefined=jinja2.StrictUndefined, # Raise errors for undefined variables
autoescape=True # Enable autoescaping for security
) )
env.filters['date'] = lambda d, format='%Y-%m-%d': d.strftime(format) if isinstance(d, datetime) else str(d) env.filters['date'] = lambda d, format='%Y-%m-%d': d.strftime(format) if isinstance(d, datetime) else str(d)

View File

@@ -1,6 +1,6 @@
import re import re
from typing import Any, Dict, List, Optional, Union
from datetime import datetime from datetime import datetime
from typing import Any, Dict, List, Optional, Union
from crewai.utilities.jinja_templating import render_template from crewai.utilities.jinja_templating import render_template

View File

@@ -1,6 +1,8 @@
import pytest
import datetime import datetime
import pytest
from typing import Dict, List from typing import Dict, List
from crewai.agent import Agent from crewai.agent import Agent
from crewai.task import Task from crewai.task import Task

View File

@@ -1,8 +1,10 @@
import pytest
import datetime import datetime
from typing import Any, Dict, List
import pytest
from pydantic import BaseModel from pydantic import BaseModel
from typing import List, Dict, Any
from crewai.utilities.jinja_templating import to_jinja_template, render_template from crewai.utilities.jinja_templating import render_template, to_jinja_template
class Person(BaseModel): class Person(BaseModel):
name: str name: str

View File

@@ -1,5 +1,6 @@
from typing import Any, Dict, List, Union
import datetime import datetime
from typing import Any, Dict, List, Union
import pytest import pytest
from pydantic import BaseModel from pydantic import BaseModel