Coverage for lintro / enums / semgrep_enums.py: 100%

14 statements  

« prev     ^ index     » next       coverage.py v7.13.0, created at 2026-04-03 18:53 +0000

1"""Semgrep enums for severity levels.""" 

2 

3from __future__ import annotations 

4 

5from enum import StrEnum, auto 

6 

7 

8class SemgrepSeverity(StrEnum): 

9 """Supported severity levels for Semgrep filtering.""" 

10 

11 INFO = auto() 

12 WARNING = auto() 

13 ERROR = auto() 

14 

15 

16def normalize_semgrep_severity(value: str | SemgrepSeverity) -> SemgrepSeverity: 

17 """Normalize user input to a SemgrepSeverity. 

18 

19 Args: 

20 value: Existing enum member or string name of the severity. 

21 

22 Returns: 

23 SemgrepSeverity: Canonical enum value. 

24 

25 Raises: 

26 ValueError: If the value is not a valid severity level. 

27 """ 

28 if isinstance(value, SemgrepSeverity): 

29 return value 

30 try: 

31 return SemgrepSeverity[value.upper()] 

32 except (KeyError, AttributeError) as e: 

33 valid = ", ".join(s.name for s in SemgrepSeverity) 

34 raise ValueError( 

35 f"Invalid Semgrep severity '{value}'. Valid values: {valid}", 

36 ) from e