code: def slice_constant(data, batch_size=32, name='constant_data', global_step=None):
    
    with tf.name_scope(name):
      all_data = tf.convert_to_tensor(data)
      global_step = global_step or bookkeeper.global_step()
  
      count = len(data) / batch_size
      extra = len(data) - count * batch_size
  
      if extra:
        offset = tf.mod(global_step, count)
        return tf.slice(all_data, offset * batch_size, batch_size)
      else:
        offset = tf.mod(global_step, count + 1)
        return tf.slice(all_data, offset * batch_size,
                        tf.where(tf.equal(offset, count), extra, batch_size))
docs: Provide a slice based on the global_step.
  
    This is useful when the entire data array can be stored in memory because it
    allows you to feed the data very efficiently.
  
    Args:
      data: A numpy array or tensor.
      batch_size: The batch size for the produced data.
      name: An optional name for this data.
      global_step: A global step variable that is used to read the data. If None
        then the default prettytensor global_step is used.
    Returns:
      A tensor that produces the given data.