code: def put_summary(self, summary):
          
          if isinstance(summary, six.binary_type):
              summary = tf.Summary.FromString(summary)
          assert isinstance(summary, tf.Summary), type(summary)
  
          # TODO other types
          for val in summary.value:
              if val.WhichOneof('value') == 'simple_value':
                  val.tag = re.sub('tower[0-9]+/', '', val.tag)   # TODO move to subclasses
  
                  # TODO This hack is still needed, seem to disappear only when
                  # compiled from source.
                  suffix = '-summary'  # tensorflow#6150, tensorboard#59
                  if val.tag.endswith(suffix):
                      val.tag = val.tag[:-len(suffix)]
  
                  self._dispatch(lambda m: m.process_scalar(val.tag, val.simple_value))
  
          self._dispatch(lambda m: m.process_summary(summary))
docs: Put a `tf.Summary`.