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

6 statements  

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

1"""Hyphenated string enumeration types for Lintro. 

2 

3This module provides the HyphenatedStrEnum class that automatically generates 

4lowercase hyphenated string values for enum members. Member names should be in 

5UPPER_CASE with underscores, and the enum value will be a lowercase string with 

6underscores replaced by hyphens. 

7""" 

8 

9from __future__ import annotations 

10 

11from enum import StrEnum 

12 

13 

14class HyphenatedStrEnum(StrEnum): 

15 """StrEnum that generates lowercase hyphenated string values. 

16 

17 When using auto(), member names are converted to lowercase strings 

18 with underscores replaced by hyphens. 

19 For example: REV_PARSE = auto() produces 'rev-parse'. 

20 

21 Example: 

22 from enum import auto 

23 

24 class GitCommand(HyphenatedStrEnum): 

25 DESCRIBE = auto() # value is 'describe' 

26 REV_PARSE = auto() # value is 'rev-parse' 

27 LOG = auto() # value is 'log' 

28 """ 

29 

30 @staticmethod 

31 def _generate_next_value_( 

32 name: str, 

33 start: int, 

34 count: int, 

35 last_values: list[str], 

36 ) -> str: 

37 """Generate lowercase hyphenated string value from enum member name. 

38 

39 Args: 

40 name: The enum member name. 

41 start: Starting value (unused). 

42 count: Number of members processed (unused). 

43 last_values: Previously generated values (unused). 

44 

45 Returns: 

46 str: Lowercase version of the member name with underscores 

47 replaced by hyphens. 

48 """ 

49 return name.lower().replace("_", "-")