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

1"""Grouping strategy enum definitions.""" 

2 

3from __future__ import annotations 

4 

5from enum import StrEnum, auto 

6 

7from loguru import logger 

8 

9 

10class GroupBy(StrEnum): 

11 """Supported grouping strategies for presenting issues.""" 

12 

13 FILE = auto() 

14 CODE = auto() 

15 NONE = auto() 

16 AUTO = auto() 

17 

18 

19def normalize_group_by(value: str | GroupBy) -> GroupBy: 

20 """Normalize a raw value to GroupBy enum. 

21 

22 Args: 

23 value: str or GroupBy to normalize. 

24 

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