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

LeanderCS / flask-inputfilter / #419

02 Jul 2025 08:04PM UTC coverage: 94.487% (-1.3%) from 95.792%
#419

Pull #60

coveralls-python

LeanderCS
Move complex logic outside of base InputFilter class
Pull Request #60: Optimize

292 of 328 new or added lines in 108 files covered. (89.02%)

10 existing lines in 2 files now uncovered.

1868 of 1977 relevant lines covered (94.49%)

0.94 hits per line

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

92.86
/flask_inputfilter/validators/in_enum_validator.py
1
from __future__ import annotations
1✔
2

3
from typing import TYPE_CHECKING, Any, Optional, Type
1✔
4

5
from flask_inputfilter.exceptions import ValidationError
1✔
6
from flask_inputfilter.models import BaseValidator
1✔
7

8
if TYPE_CHECKING:
1✔
NEW
9
    from enum import Enum
×
10

11

12
class InEnumValidator(BaseValidator):
1✔
13
    """
14
    Verifies that a given value is a valid member of a specified Enum class.
15

16
    **Parameters:**
17

18
    - **enumClass** (*Type[Enum]*): The Enum to validate against.
19
    - **error_message** (*Optional[str]*): Custom error message if
20
      validation fails.
21

22
    **Expected Behavior:**
23

24
    Performs a case-insensitive comparison to ensure that the value matches
25
    one of the Enum's member names. Raises a ``ValidationError`` if the value
26
    is not a valid Enum member.
27

28
    **Example Usage:**
29

30
    .. code-block:: python
31

32
        from enum import Enum
33

34
        class ColorEnum(Enum):
35
            RED = "red"
36
            GREEN = "green"
37
            BLUE = "blue"
38

39
        class ColorInputFilter(InputFilter):
40
            def __init__(self):
41
                super().__init__()
42

43
                self.add('color', validators=[
44
                    InEnumValidator(enum_class=ColorEnum)
45
                ])
46
    """
47

48
    __slots__ = ("enum_class", "error_message")
1✔
49

50
    def __init__(
1✔
51
        self,
52
        enum_class: Type[Enum],
53
        error_message: Optional[str] = None,
54
    ) -> None:
55
        self.enum_class = enum_class
1✔
56
        self.error_message = error_message
1✔
57

58
    def validate(self, value: Any) -> None:
1✔
59
        if not any(
1✔
60
            value.lower() == item.name.lower() for item in self.enum_class
61
        ):
62
            raise ValidationError(
1✔
63
                self.error_message
64
                or f"Value '{value}' is not an value of '{self.enum_class}'"
65
            )
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

© 2025 Coveralls, Inc