code: def add_summary(self, summary, global_step=None):
          
          if isinstance(summary, bytes):
              summ = summary_pb2.Summary()
              summ.ParseFromString(summary)
              summary = summ
  
          # We strip metadata from values with tags that we have seen before in order
          # to save space - we just store the metadata on the first value with a
          # specific tag.
          for value in summary.value:
              if not value.metadata:
                  continue
  
              if value.tag in self._seen_summary_tags:
                  # This tag has been encountered before. Strip the metadata.
                  value.ClearField("metadata")
                  continue
  
              # We encounter a value with a tag we have not encountered previously. And
              # it has metadata. Remember to strip metadata from future values with this
              # tag string.
              self._seen_summary_tags.add(value.tag)
  
          event = event_pb2.Event(summary=summary)
          self._add_event(event, global_step)
docs: Adds a `Summary` protocol buffer to the event file.
          This method wraps the provided summary in an `Event` protocol buffer and adds it
          to the event file.
  
          Parameters
          ----------
            summary : A `Summary` protocol buffer
                Optionally serialized as a string.
            global_step: Number
                Optional global step value to record with the summary.