code: def test_timing_new_metric_with_tags(self, name):
      tags = {"hello": "world"}
      key = _generate_key_name(full_name(name), tags)
  
      self.stats.timing(name, dt=1, tags=tags)
  
      self.meter.get_meter().create_observable_gauge.assert_called_once_with(
          name=full_name(name), callbacks=ANY
      )
      self.map[key].attributes == tags
  
imports: from __future__ import annotations
  import logging
  import time
  from unittest import mock
  from unittest.mock import ANY
  import pytest
  from opentelemetry.metrics import MeterProvider
  from airflow.exceptions import InvalidStatsNameException
  from airflow.metrics.otel_logger import OTEL_NAME_MAX_LENGTH, UP_DOWN_COUNTERS, MetricsMap, SafeOtelLogger, _generate_key_name, _is_up_down_counter, full_name
  from airflow.metrics.validators import BACK_COMPAT_METRIC_NAMES, MetricNameLengthExemptionWarning
label_desc: Use image node_id 20 for calling the TestOtelMetrics obj's underlying member method code with example usage: obj.test_timing_new_metric_with_tags(name) without return types