code: def __init__(
      self,
      name: str,
      description: str = "",
      tag_keys: Optional[Tuple[str, ...]] = None,
      metric_type: str = "Counter",
  ):
      self._name = name
      self._description = description
      self._tag_keys = tag_keys or tuple()
      self._type = metric_type
      self._metric = None
      self._log_not_init_error = False
  
imports: import logging
  import time
  import weakref
  from contextlib import contextmanager
  from enum import Enum
  from queue import PriorityQueue
  from typing import Any, Callable, Dict, List, NamedTuple, Optional, Tuple
  from .backends.console import console_metric
  from .backends.metric import AbstractMetric
  from .backends.prometheus import prometheus_metric
  from .backends.ray import ray_metric
label_desc: Use image node_id 1 to create a new _MetricWrapper object from inherited base classes: AbstractMetric with example: obj = _MetricWrapper(name, description, tag_keys, metric_type)