class_docstr: Shuffling implements a shuffling algorithm. Items can be added to the shuffling buffer and removed in a
  different order as defined by the concrete shuffling algorithm. A shuffling buffer is intended to be used from
  a single thread, hence, not thread safe.
docstr: Call this method when no more :func:`add_many` calls will be made.
  
  This allows a user to deplete the buffer. Typically during last epoch. Otherwise, we would always have leftovers
  in the buffer at the end of the lifecycle.
  
  :return: number of elements currently present in the buffer
docstr_tok: ["Call","this","method","when","no","more",":","func",":","`","add_many","`","calls","will","be","made",".","This","allows","a","user","to","deplete","the","buffer",".","Typically","during","last","epoch",".","Otherwise",",","we","would","always","have","leftovers","in","the","buffer","at","the","end","of","the","lifecycle",".",":","return",":","number","of","elements","currently","present","in","the","buffer"]
code: def finish(self):
      """Call this method when no more :func:`add_many` calls will be made.
  
      This allows a user to deplete the buffer. Typically during last epoch. Otherwise, we would always have leftovers
      in the buffer at the end of the lifecycle.
  
      :return: number of elements currently present in the buffer
      """
  
imports: import abc
  from collections import deque
  import numpy
  import six
label_desc: Use image node_id 6 for calling the ShufflingBufferBase obj's underlying member method code with example usage: obj.finish() without return types