• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

LeanderCS / flask-inputfilter / #479

30 Sep 2025 05:32PM UTC coverage: 92.193%. Remained the same
#479

push

coveralls-python

LeanderCS
Add clear script

2102 of 2280 relevant lines covered (92.19%)

0.92 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

95.45
/flask_inputfilter/filters/array_element_filter.py
1
from __future__ import annotations
1✔
2

3
from typing import Any, Union
1✔
4

5
from flask_inputfilter.models import BaseFilter
1✔
6

7

8
class ArrayElementFilter(BaseFilter):
1✔
9
    """
10
    Filters each element in an array by applying one or more `BaseFilter`
11

12
    **Parameters:**
13

14
    - **element_filter** (*BaseFilter* | *list[BaseFilter]*): A filter or a
15
      list of filters to apply to each element in the array.
16

17
    **Expected Behavior:**
18

19
    Validates that the input is a list and applies the specified filter(s) to
20
    each element. If any element does not conform to the expected structure,
21
    a `ValueError` is raised.
22

23
    **Example Usage:**
24

25
    .. code-block:: python
26

27
        class TagInputFilter(InputFilter):
28
            tags = field(filters=[
29
                ArrayElementFilter(element_filter=StringTrimFilter())
30
            ])
31
    """
32

33
    __slots__ = ("element_filter",)
1✔
34

35
    def __init__(
1✔
36
        self,
37
        element_filter: Union[BaseFilter, list[BaseFilter]],
38
    ) -> None:
39
        self.element_filter = element_filter
1✔
40

41
    def apply(self, value: Any) -> list[Any]:
1✔
42
        if not isinstance(value, list):
1✔
43
            return value
1✔
44

45
        result = []
1✔
46
        for element in value:
1✔
47
            if isinstance(self.element_filter, BaseFilter):
1✔
48
                result.append(self.element_filter.apply(element))
1✔
49
                continue
1✔
50

51
            if isinstance(self.element_filter, list) and all(
1✔
52
                isinstance(v, BaseFilter) for v in self.element_filter
53
            ):
54
                for filter_instance in self.element_filter:
1✔
55
                    element = filter_instance.apply(element)
1✔
56
                result.append(element)
1✔
57
                continue
1✔
58

59
            result.append(element)
×
60
        return result
1✔
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc