def METHOD_NAME(
    self,
    metric_name: str,
    metric_type: MetricTypes = MetricTypes.COUNTER,
) -> CachingMetric:
    """
    Create a new metric and add into cache
    Parameters
    ----------
    metric_name str
        Name of metric
    metric_type MetricTypes
        Type of metric Counter, Gauge, Histogram
    Returns
    -------
    Metrics object or MetricsCacheKeyError if not found
    """
    self._check_type(metric_name, str, "`metric_name` must be a str")
    self._check_type(
        metric_type, MetricTypes, "`metric_type` must be a MetricTypes enum"
    )
    try:
        metric = self.cache[metric_type][metric_name]
    except KeyError:
        raise merrors.MetricsCacheKeyError(
            f"Metric of type '{metric_type}' and name '{metric_name}' doesn't exist"
        )
    else:
        return metric