Skip to content

Commit

Permalink
Fixed another typing issue
Browse files Browse the repository at this point in the history
Make the relationship between different expression explicit.
Fixed handling of subclasses.

Change-Id: Ibcdec2335f36f27b1af3cadcec10300937ec12a3
  • Loading branch information
spt29 committed Oct 24, 2024
1 parent 2d2d8df commit 976e214
Showing 1 changed file with 16 additions and 15 deletions.
31 changes: 16 additions & 15 deletions cmk/gui/plugins/wato/utils/simple_levels.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
from typing import Literal

from cmk.gui.i18n import _
from cmk.gui.valuespec import Age, Alternative, FixedValue, Float, Integer, Percentage, Tuple
from cmk.gui.valuespec import Age, Alternative, FixedValue, Float, Integer, Tuple, ValueSpec


def _NoLevels() -> FixedValue:
Expand All @@ -16,30 +16,31 @@ def _NoLevels() -> FixedValue:
)


_Spec = type[Integer] | type[Float] | type[Percentage] | type[Age]
_Spec = type[Integer] | type[Float] | type[Age]


def _FixedLevels(
value_spec: _Spec,
spec: _Spec,
default_value: tuple[float | int, float | int],
unit: str,
direction: Literal["upper", "lower"],
) -> Tuple:
type_ = int if value_spec in (Integer, Age) else float
kw = {} if value_spec is Age else {"unit": unit}
def element(idx: Literal[0, 1], title_upper: str, title_lower: str) -> ValueSpec:
title = title_upper if direction == "upper" else title_lower
dv = default_value[idx]
if issubclass(spec, Integer):
return Integer(title=title, default_value=int(dv), unit=unit)
if issubclass(spec, Float):
return Float(title=title, default_value=float(dv), unit=unit)
if issubclass(spec, Age):
return Age(title=title, default_value=int(dv))
raise ValueError(f"illegal ValueSpec type {spec}, expected Integer or Float or Age")

return Tuple(
title=_("Fixed Levels"),
elements=[
value_spec(
title=_("Warning at") if direction == "upper" else _("Warning below"),
default_value=type_(default_value[0]),
**kw, # type: ignore[arg-type]
),
value_spec(
title=_("Critical at") if direction == "upper" else _("Critical below"),
default_value=type_(default_value[1]),
**kw, # type: ignore[arg-type]
),
element(0, _("Warning at"), _("Warning below")),
element(1, _("Critical at"), _("Critical below")),
],
)

Expand Down

0 comments on commit 976e214

Please sign in to comment.