Strip the enum name prefix from an enum value name. For protobuf-style enums where values are prefixed with the enum name in UPPER_SNAKE_CASE, strip the prefix to get cleaner scoped enum values. Example: enum_name="DeviceTier", value_name="DEVICE_TIER_UNKNOWN" -
(self, enum_name: str, value_name: str)
| 253 | return schemas |
| 254 | |
| 255 | def strip_enum_prefix(self, enum_name: str, value_name: str) -> str: |
| 256 | """Strip the enum name prefix from an enum value name. |
| 257 | |
| 258 | For protobuf-style enums where values are prefixed with the enum name |
| 259 | in UPPER_SNAKE_CASE, strip the prefix to get cleaner scoped enum values. |
| 260 | |
| 261 | Example: |
| 262 | enum_name="DeviceTier", value_name="DEVICE_TIER_UNKNOWN" -> "UNKNOWN" |
| 263 | enum_name="DeviceTier", value_name="DEVICE_TIER_TIER1" -> "TIER1" |
| 264 | enum_name="DeviceTier", value_name="DEVICE_TIER_1" -> "DEVICE_TIER_1" (keeps original, "1" is invalid) |
| 265 | |
| 266 | The prefix is only stripped if the remainder is a valid identifier |
| 267 | (starts with a letter). |
| 268 | |
| 269 | Args: |
| 270 | enum_name: The enum type name (e.g., "DeviceTier") |
| 271 | value_name: The enum value name (e.g., "DEVICE_TIER_UNKNOWN") |
| 272 | |
| 273 | Returns: |
| 274 | The stripped value name, or original if stripping would yield an invalid name |
| 275 | """ |
| 276 | # Convert enum name to UPPER_SNAKE_CASE prefix |
| 277 | prefix = self.to_upper_snake_case(enum_name) + "_" |
| 278 | |
| 279 | # Check if value_name starts with the prefix |
| 280 | if not value_name.startswith(prefix): |
| 281 | return value_name |
| 282 | |
| 283 | # Get the remainder after stripping prefix |
| 284 | remainder = value_name[len(prefix) :] |
| 285 | |
| 286 | # Check if remainder is a valid identifier (starts with letter) |
| 287 | if not remainder or not remainder[0].isalpha(): |
| 288 | return value_name |
| 289 | |
| 290 | return remainder |
| 291 | |
| 292 | def format_type_id_comment(self, type_def, comment_prefix: str) -> Optional[str]: |
| 293 | """Format a type id comment for a message/union.""" |
no test coverage detected