mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-01-08 23:58:34 +00:00
* Update config typecheck to accept agents * Clean up prints * Adding agents to crew evaluator output table * Properly generating table now * Update tests
40 lines
1.2 KiB
Python
40 lines
1.2 KiB
Python
from typing import Any, Dict, Type
|
|
|
|
from pydantic import BaseModel
|
|
|
|
|
|
def process_config(
|
|
values: Dict[str, Any], model_class: Type[BaseModel]
|
|
) -> Dict[str, Any]:
|
|
"""
|
|
Process the config dictionary and update the values accordingly.
|
|
|
|
Args:
|
|
values (Dict[str, Any]): The dictionary of values to update.
|
|
model_class (Type[BaseModel]): The Pydantic model class to reference for field validation.
|
|
|
|
Returns:
|
|
Dict[str, Any]: The updated values dictionary.
|
|
"""
|
|
config = values.get("config", {})
|
|
if not config:
|
|
return values
|
|
|
|
# Copy values from config (originally from YAML) to the model's attributes.
|
|
# Only copy if the attribute isn't already set, preserving any explicitly defined values.
|
|
for key, value in config.items():
|
|
if key not in model_class.model_fields or values.get(key) is not None:
|
|
continue
|
|
|
|
if isinstance(value, dict):
|
|
if isinstance(values.get(key), dict):
|
|
values[key].update(value)
|
|
else:
|
|
values[key] = value
|
|
else:
|
|
values[key] = value
|
|
|
|
# Remove the config from values to avoid duplicate processing
|
|
values.pop("config", None)
|
|
return values
|