OverviewFilesCommitsIssuesDocsReleasesPeers

P2P-Hiverelay / truenas-app / templates / library / base_v2_3_8 / labels.py

30 lines · python ref:
try:
    from .error import RenderError
    from .formatter import escape_dollar
    from .validations import valid_label_key_or_raise
except ImportError:
    from error import RenderError
    from formatter import escape_dollar
    from validations import valid_label_key_or_raise


class Labels:
    def __init__(self):
        self._labels: dict[str, str] = {}

    def add_label(self, key: str, value: str):
        key = valid_label_key_or_raise(key)

        if key in self._labels.keys():
            raise RenderError(f"Label [{key}] already added")

        self._labels[key] = escape_dollar(str(value))

    def has_labels(self) -> bool:
        return bool(self._labels)

    def render(self) -> dict[str, str]:
        if not self.has_labels():
            return {}
        return {label: value for label, value in sorted(self._labels.items())}