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

12 statements  

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

1"""Configuration format enum definitions. 

2 

3This module defines the supported configuration formats. 

4""" 

5 

6from __future__ import annotations 

7 

8from enum import StrEnum, auto 

9 

10 

11class ConfigFormat(StrEnum): 

12 """Supported configuration formats. 

13 

14 Values are lower-case string identifiers to align with CLI choices. 

15 """ 

16 

17 YAML = auto() 

18 JSON = auto() 

19 

20 

21def normalize_config_format(value: str | ConfigFormat) -> ConfigFormat: 

22 """Normalize a raw value to a ConfigFormat enum. 

23 

24 Args: 

25 value: str or ConfigFormat to normalize. 

26 

27 Returns: 

28 ConfigFormat: Normalized enum value. 

29 

30 Raises: 

31 ValueError: If the value is not a valid config format. 

32 """ 

33 if isinstance(value, ConfigFormat): 

34 return value 

35 try: 

36 return ConfigFormat[value.upper()] 

37 except KeyError as err: 

38 raise ValueError( 

39 f"Unknown config format: {value!r}. " 

40 f"Supported formats: {list(ConfigFormat)}", 

41 ) from err