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
« prev ^ index » next coverage.py v7.13.0, created at 2026-04-03 18:53 +0000
1"""Hyphenated string enumeration types for Lintro.
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"""
9from __future__ import annotations
11from enum import StrEnum
14class HyphenatedStrEnum(StrEnum):
15 """StrEnum that generates lowercase hyphenated string values.
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'.
21 Example:
22 from enum import auto
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 """
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.
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).
45 Returns:
46 str: Lowercase version of the member name with underscores
47 replaced by hyphens.
48 """
49 return name.lower().replace("_", "-")