|
|
|
|
@ -375,11 +375,25 @@ def _process_sub_conditions(
|
|
|
|
|
for condition in sub_conditions:
|
|
|
|
|
key = FileAttribute(condition.key)
|
|
|
|
|
values = [file_manager.get_attr(file=file, attr=key) for file in files]
|
|
|
|
|
expected_value = condition.value
|
|
|
|
|
if key == FileAttribute.EXTENSION:
|
|
|
|
|
if not isinstance(expected_value, str):
|
|
|
|
|
raise TypeError("Expected value must be a string when key is FileAttribute.EXTENSION")
|
|
|
|
|
if expected_value and not expected_value.startswith("."):
|
|
|
|
|
expected_value = "." + expected_value
|
|
|
|
|
|
|
|
|
|
normalized_values = []
|
|
|
|
|
for value in values:
|
|
|
|
|
if value and isinstance(value, str):
|
|
|
|
|
if not value.startswith("."):
|
|
|
|
|
value = "." + value
|
|
|
|
|
normalized_values.append(value)
|
|
|
|
|
values = normalized_values
|
|
|
|
|
sub_group_results = [
|
|
|
|
|
_evaluate_condition(
|
|
|
|
|
value=value,
|
|
|
|
|
operator=condition.comparison_operator,
|
|
|
|
|
expected=condition.value,
|
|
|
|
|
expected=expected_value,
|
|
|
|
|
)
|
|
|
|
|
for value in values
|
|
|
|
|
]
|
|
|
|
|
|