code: def test_experiment_from_data_provider_session_group_without_session_names(
      self,
  ):
      self._mock_tb_context.data_provider.list_tensors.side_effect = (
          None
      )
      self._hyperparameters = provider.ListHyperparametersResult(
          hyperparameters=[],
          session_groups=[
              provider.HyperparameterSessionGroup(
                  root=provider.HyperparameterSessionRun(
                      experiment_id="", run=""
                  ),
                  sessions=[
                      provider.HyperparameterSessionRun(
                          experiment_id="", run=""
                      ),
                  ],
                  hyperparameter_values=[],
              ),
          ],
      )
      actual_exp = self._experiment_from_metadata()
      # The result specifies a single session without explicit identifier. It
      # therefore represents a session that includes all run/tag combinations
      # as separate metric values.
      expected_exp = """
              metric_infos {
                name {
                  group: "exp/session_1"
                  tag: "accuracy"
                }
              }
              metric_infos {
                name {
                  group: "exp/session_2"
                  tag: "accuracy"
                }
              }
              metric_infos {
                name {
                  group: "exp/session_3"
                  tag: "accuracy"
                }
              }
              metric_infos {
                name {
                  group: "exp/session_1"
                  tag: "loss"
                }
              }
              metric_infos {
                name {
                  group: "exp/session_1/eval"
                  tag: "loss"
                }
              }
              metric_infos {
                name {
                  group: "exp/session_1/train"
                  tag: "loss"
                }
              }
              metric_infos {
                name {
                  group: "exp/session_2"
                  tag: "loss"
                }
              }
              metric_infos {
                name {
                  group: "exp/session_2/eval"
                  tag: "loss"
                }
              }
              metric_infos {
                name {
                  group: "exp/session_2/train"
                  tag: "loss"
                }
              }
              metric_infos {
                name {
                  group: "exp/session_3"
                  tag: "loss"
                }
              }
              metric_infos {
                name {
                  group: "exp/session_3/eval"
                  tag: "loss"
                }
              }
              metric_infos {
                name {
                  group: "exp/session_3xyz"
                  tag: "loss2"
                }
              }
          """
      self.assertProtoEquals(expected_exp, actual_exp)
  
imports: import operator
  from unittest import mock
  import tensorflow
  from google.protobuf import text_format
  from tensorboard import context
  from tensorboard.data import provider
  from tensorboard.plugins import base_plugin
  from tensorboard.plugins.hparams import api_pb2
  from tensorboard.plugins.hparams import backend_context
  from tensorboard.plugins.hparams import metadata
  from tensorboard.plugins.hparams import plugin_data_pb2
label_desc: Use image node_id 23 for calling the BackendContextTest obj's underlying member method code with example usage: obj.test_experiment_from_data_provider_session_group_without_session_names() without return types