code: def validate(cls, mapper_spec):
      
      if mapper_spec.input_reader_class() != cls:
        raise BadReaderParamsError("Mapper input reader class mismatch")
      params = _get_params(mapper_spec)
      if cls.BLOB_KEYS_PARAM not in params:
        raise BadReaderParamsError("Must specify 'blob_keys' for mapper input")
      blob_keys = params[cls.BLOB_KEYS_PARAM]
      if isinstance(blob_keys, basestring):
        # This is a mechanism to allow multiple blob keys (which do not contain
        # commas) in a single string. It may go away.
        blob_keys = blob_keys.split(",")
      if len(blob_keys) > cls._MAX_BLOB_KEYS_COUNT:
        raise BadReaderParamsError("Too many 'blob_keys' for mapper input")
      if not blob_keys:
        raise BadReaderParamsError("No 'blob_keys' specified for mapper input")
      for blob_key in blob_keys:
        blob_info = blobstore.BlobInfo.get(blobstore.BlobKey(blob_key))
        if not blob_info:
          raise BadReaderParamsError("Could not find blobinfo for key %s" %
                                     blob_key)
docs: Validates mapper spec and all mapper parameters.
  
      Args:
        mapper_spec: The MapperSpec for this InputReader.
  
      Raises:
        BadReaderParamsError: required parameters are missing or invalid.