Coverage for lintro / enums / group_by.py: 100%
16 statements
« prev ^ index » next coverage.py v7.13.0, created at 2026-04-03 18:53 +0000
« prev ^ index » next coverage.py v7.13.0, created at 2026-04-03 18:53 +0000
1"""Grouping strategy enum definitions."""
3from __future__ import annotations
5from enum import StrEnum, auto
7from loguru import logger
10class GroupBy(StrEnum):
11 """Supported grouping strategies for presenting issues."""
13 FILE = auto()
14 CODE = auto()
15 NONE = auto()
16 AUTO = auto()
19def normalize_group_by(value: str | GroupBy) -> GroupBy:
20 """Normalize a raw value to GroupBy enum.
22 Args:
23 value: str or GroupBy to normalize.
25 Returns:
26 GroupBy: Normalized enum value.
27 """
28 if isinstance(value, GroupBy):
29 return value
30 try:
31 return GroupBy[value.upper()]
32 except (KeyError, AttributeError) as e:
33 logger.debug(f"Invalid GroupBy value '{value}': {e}. Defaulting to FILE.")
34 return GroupBy.FILE