code: def _get_params(mapper_spec, allowed_keys=None, allow_old=True):
    
    if "input_reader" not in mapper_spec.params:
      message = ("Input reader's parameters should be specified in "
                 "input_reader subdictionary.")
      if not allow_old or allowed_keys:
        raise errors.BadReaderParamsError(message)
      params = mapper_spec.params
      params = dict((str(n), v) for n, v in params.iteritems())
    else:
      if not isinstance(mapper_spec.params.get("input_reader"), dict):
        raise errors.BadReaderParamsError(
            "Input reader parameters should be a dictionary")
      params = mapper_spec.params.get("input_reader")
      params = dict((str(n), v) for n, v in params.iteritems())
      if allowed_keys:
        params_diff = set(params.keys()) - allowed_keys
        if params_diff:
          raise errors.BadReaderParamsError(
              "Invalid input_reader parameters: %s" % ",".join(params_diff))
    return params
docs: Obtain input reader parameters.
  
    Utility function for input readers implementation. Fetches parameters
    from mapreduce specification giving appropriate usage warnings.
  
    Args:
      mapper_spec: The MapperSpec for the job
      allowed_keys: set of all allowed keys in parameters as strings. If it is not
        None, then parameters are expected to be in a separate "input_reader"
        subdictionary of mapper_spec parameters.
      allow_old: Allow parameters to exist outside of the input_reader
        subdictionary for compatability.
  
    Returns:
      mapper parameters as dict
  
    Raises:
      BadReaderParamsError: if parameters are invalid/missing or not allowed.