class_docstr: Statistics of uploading.
class_docstr_tok: ["Statistics","of","uploading","."]
docstr: Get a summary string for actually-uploaded and skipped data.
  
  Calling this property also marks the "last_summarized" timestamp, so that
  the has_new_data_since_last_summarize() will be able to report the correct value
  later.
  
  Returns:
    A tuple with two items:
    - A string summarizing all data uploaded so far.
    - If any data was skipped, a string for all skipped data. Else, `None`.
code: def summarize(self):
      """Get a summary string for actually-uploaded and skipped data.
  
      Calling this property also marks the "last_summarized" timestamp, so that
      the has_new_data_since_last_summarize() will be able to report the correct value
      later.
  
      Returns:
        A tuple with two items:
        - A string summarizing all data uploaded so far.
        - If any data was skipped, a string for all skipped data. Else, `None`.
      """
      self._last_summarized_timestamp = time.time()
      string_pieces = []
      string_pieces.append("%d scalars" % self._num_scalars)
      uploaded_tensor_count = (
          self._num_tensors - self._num_tensors_skipped
      )
      uploaded_tensor_bytes = (
          self._tensor_bytes - self._tensor_bytes_skipped
      )
      string_pieces.append(
          "0 tensors"
          if not uploaded_tensor_count
          else (
              "%d tensors (%s)"
              % (
                  uploaded_tensor_count,
                  readable_bytes_string(uploaded_tensor_bytes),
              )
          )
      )
      uploaded_blob_count = self._num_blobs - self._num_blobs_skipped
      uploaded_blob_bytes = self._blob_bytes - self._blob_bytes_skipped
      string_pieces.append(
          "0 binary objects"
          if not uploaded_blob_count
          else (
              "%d binary objects (%s)"
              % (
                  uploaded_blob_count,
                  readable_bytes_string(uploaded_blob_bytes),
              )
          )
      )
      skipped_string = (
          self._skipped_summary() if self._skipped_any() else None
      )
      return ", ".join(string_pieces), skipped_string
  
imports: import contextlib
  from datetime import datetime
  import sys
  import time
label_desc: Use image node_id 17 for calling the UploadStats obj's underlying member method code with example usage: obj.summarize() and returns: str,  skipped_string