diff --git a/src/crewai/project/crew_base.py b/src/crewai/project/crew_base.py index a38dbe1a0..93dfbc6c2 100644 --- a/src/crewai/project/crew_base.py +++ b/src/crewai/project/crew_base.py @@ -1,6 +1,7 @@ import inspect import os from pathlib import Path +from crewai.utilities.parser import YamlParser import yaml from dotenv import load_dotenv @@ -40,6 +41,7 @@ def CrewBase(cls): @staticmethod def load_yaml(config_path: str): with open(config_path, "r") as file: - return yaml.safe_load(file) + parsedContent = YamlParser.parse(file) + return yaml.safe_load(parsedContent) return WrappedClass diff --git a/src/crewai/utilities/__init__.py b/src/crewai/utilities/__init__.py index 92bd9cd69..e21c4815b 100644 --- a/src/crewai/utilities/__init__.py +++ b/src/crewai/utilities/__init__.py @@ -6,3 +6,4 @@ from .printer import Printer from .prompts import Prompts from .rpm_controller import RPMController from .fileHandler import FileHandler +from .parser import YamlParser diff --git a/src/crewai/utilities/parser.py b/src/crewai/utilities/parser.py new file mode 100644 index 000000000..1e100c77f --- /dev/null +++ b/src/crewai/utilities/parser.py @@ -0,0 +1,17 @@ +import re + + +class YamlParser: + def parse(file): + content = file.read() + # Replace single { and } with doubled ones, while leaving already doubled ones intact and the other special characters {# and {% + modified_content = re.sub(r"(?