mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-01-09 08:08:32 +00:00
Address lint failure and code review feedback
- Fix unused excinfo variable in test_empty_inputs_dictionary - Extract nested validate_type function to module-level _validate_input_type - Add constants for supported types (SUPPORTED_PRIMITIVE_TYPES, SUPPORTED_CONTAINER_TYPES) - Improve type hints for interpolate_only function - Remove unused imports (List, Union) All tests pass and lint checks are clean. Co-Authored-By: João <joao@crewai.com>
This commit is contained in:
@@ -1,10 +1,38 @@
|
|||||||
import re
|
import re
|
||||||
from typing import Any, Dict, List, Optional, Union
|
from typing import Any, Dict, Optional
|
||||||
|
|
||||||
|
SUPPORTED_PRIMITIVE_TYPES = (str, int, float, bool)
|
||||||
|
SUPPORTED_CONTAINER_TYPES = (dict, list)
|
||||||
|
SUPPORTED_TYPES = SUPPORTED_PRIMITIVE_TYPES + SUPPORTED_CONTAINER_TYPES
|
||||||
|
|
||||||
|
|
||||||
|
def _validate_input_type(val: Any) -> None:
|
||||||
|
"""Validates input types recursively (str, int, float, bool, dict, list).
|
||||||
|
|
||||||
|
Args:
|
||||||
|
val: The value to validate
|
||||||
|
|
||||||
|
Raises:
|
||||||
|
ValueError: If the value contains unsupported types
|
||||||
|
"""
|
||||||
|
if val is None:
|
||||||
|
return
|
||||||
|
if isinstance(val, SUPPORTED_PRIMITIVE_TYPES):
|
||||||
|
return
|
||||||
|
if isinstance(val, SUPPORTED_CONTAINER_TYPES):
|
||||||
|
for item in val.values() if isinstance(val, dict) else val:
|
||||||
|
_validate_input_type(item)
|
||||||
|
return
|
||||||
|
raise ValueError(
|
||||||
|
f"Unsupported type {type(val).__name__} in inputs. "
|
||||||
|
"Only str, int, float, bool, dict, and list are allowed."
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def interpolate_only(
|
def interpolate_only(
|
||||||
input_string: Optional[str],
|
input_string: Optional[str],
|
||||||
inputs: Dict[str, Union[str, int, float, Dict[str, Any], List[Any]]],
|
inputs: Dict[str, Any],
|
||||||
|
raise_on_missing: bool = True,
|
||||||
) -> str:
|
) -> str:
|
||||||
"""Interpolate placeholders (e.g., {key}) in a string while leaving JSON untouched.
|
"""Interpolate placeholders (e.g., {key}) in a string while leaving JSON untouched.
|
||||||
Only interpolates placeholders that follow the pattern {variable_name} where
|
Only interpolates placeholders that follow the pattern {variable_name} where
|
||||||
@@ -28,26 +56,11 @@ def interpolate_only(
|
|||||||
from crewai.utilities.serialization import to_serializable
|
from crewai.utilities.serialization import to_serializable
|
||||||
|
|
||||||
processed_inputs = {}
|
processed_inputs = {}
|
||||||
supported_types = (str, int, float, bool, dict, list)
|
|
||||||
|
|
||||||
for key, value in inputs.items():
|
for key, value in inputs.items():
|
||||||
if value is None or isinstance(value, supported_types):
|
if value is None or isinstance(value, SUPPORTED_TYPES):
|
||||||
def validate_type(val: Any) -> None:
|
|
||||||
if val is None:
|
|
||||||
return
|
|
||||||
if isinstance(val, (str, int, float, bool)):
|
|
||||||
return
|
|
||||||
if isinstance(val, (dict, list)):
|
|
||||||
for item in val.values() if isinstance(val, dict) else val:
|
|
||||||
validate_type(item)
|
|
||||||
return
|
|
||||||
raise ValueError(
|
|
||||||
f"Unsupported type {type(val).__name__} in inputs. "
|
|
||||||
"Only str, int, float, bool, dict, and list are allowed."
|
|
||||||
)
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
validate_type(value)
|
_validate_input_type(value)
|
||||||
processed_inputs[key] = value
|
processed_inputs[key] = value
|
||||||
except ValueError as e:
|
except ValueError as e:
|
||||||
raise ValueError(f"Invalid value for key '{key}': {str(e)}") from e
|
raise ValueError(f"Invalid value for key '{key}': {str(e)}") from e
|
||||||
|
|||||||
@@ -182,7 +182,7 @@ class TestInterpolateOnly:
|
|||||||
template = "Hello, {name}!"
|
template = "Hello, {name}!"
|
||||||
inputs: Dict[str, Any] = {}
|
inputs: Dict[str, Any] = {}
|
||||||
|
|
||||||
with pytest.raises(ValueError) as excinfo:
|
with pytest.raises(ValueError):
|
||||||
interpolate_only(template, inputs)
|
interpolate_only(template, inputs)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user