code: def split_input(cls, mapper_spec):
      
      params = _get_params(mapper_spec)
      shard_count = mapper_spec.shard_count
  
      # Pick out the overall start and end times and time step per shard.
      start_time = params[cls.START_TIME_PARAM]
      end_time = params[cls.END_TIME_PARAM]
      seconds_per_shard = (end_time - start_time) / shard_count
  
      # Create a LogInputReader for each shard, modulating the params as we go.
      shards = []
      for _ in xrange(shard_count - 1):
        params[cls.END_TIME_PARAM] = (params[cls.START_TIME_PARAM] +
                                      seconds_per_shard)
        shards.append(LogInputReader(**params))
        params[cls.START_TIME_PARAM] = params[cls.END_TIME_PARAM]
  
      # Create a final shard to complete the time range.
      params[cls.END_TIME_PARAM] = end_time
      return shards + [LogInputReader(**params)]
docs: Returns a list of input readers for the given input specification.
  
      Args:
        mapper_spec: The MapperSpec for this InputReader.
  
      Returns:
        A list of InputReaders.