Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions src/wled/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -294,6 +294,28 @@ class Segment(BaseModel):
255 indicates the coldest temperature
"""

name: str | None = field(default=None, metadata=field_options(alias="n"))
"""User-defined segment name (alias: "n").

Not present by default. If None or empty, callers may fall back to a UI-like
default, e.g., "Segment {segment_id}".
"""

@property
def effective_name(self) -> str:
if self.name:
return self.name
if self.segment_id is not None:
return f"Segment {self.segment_id}"
return "Segment"

@classmethod
def __post_deserialize__(cls, obj: "Segment") -> "Segment":
# Normalize empty string to None for consistency
if obj.name == "":
obj.name = None
return obj


@dataclass(kw_only=True)
class Leds:
Expand Down