def METHOD_NAME(
    self, name: str, description: Optional[str] = None, default_value: Optional[float] = None
) -> GaugeMetric:
    if name in self.metrics:
        raise ValueError(f"Redefinition of {name} metric")
    self.metrics[name] = [f"# TYPE {self.METRIC_PREFIX}{name} gauge"]
    if description is not None:
        self.metrics[name].append(f"# HELP {self.METRIC_PREFIX}{name} {description}")
    def inner(value: float, labels: Optional[Mapping[str, str]] = None) -> None:
        label_str = ""
        if labels:
            label_str = "{" + ",".join([f'{k}="{v}"' for k, v in labels.items()]) + "}"
        self.metric_values[name][label_str] = f"{self.METRIC_PREFIX}{name}{label_str} {value}"
    if default_value is not None:
        inner(default_value)
    return inner