class_docstr: Data provider that talks over gRPC.
class_docstr_tok: ["Data","provider","that","talks","over","gRPC","."]
code: def list_scalars(
      self, ctx, *, experiment_id, plugin_name, run_tag_filter=None
  ):
      with timing.log_latency("build request"):
          req = data_provider_pb2.ListScalarsRequest()
          req.experiment_id = experiment_id
          req.plugin_filter.plugin_name = plugin_name
          _populate_rtf(run_tag_filter, req.run_tag_filter)
      with timing.log_latency("_stub.ListScalars"):
          with _translate_grpc_error():
              res = self._stub.ListScalars(req)
      with timing.log_latency("build result"):
          result = {}
          for run_entry in res.runs:
              tags = {}
              result[run_entry.run_name] = tags
              for tag_entry in run_entry.tags:
                  time_series = tag_entry.metadata
                  tags[tag_entry.tag_name] = provider.ScalarTimeSeries(
                      max_step=time_series.max_step,
                      max_wall_time=time_series.max_wall_time,
                      plugin_content=time_series.summary_metadata.plugin_data.content,
                      description=time_series.summary_metadata.summary_description,
                      display_name=time_series.summary_metadata.display_name,
                  )
          return result
  
imports: import collections
  import contextlib
  import grpc
  from tensorboard.util import tensor_util
  from tensorboard.util import timing
  from tensorboard import errors
  from tensorboard.data import provider
  from tensorboard.data.proto import data_provider_pb2
  from tensorboard.data.proto import data_provider_pb2_grpc
label_desc: Use image node_id 6 for calling the GrpcDataProvider obj's underlying member method code with example usage: obj.list_scalars(ctx) and returns: result