class_docstr: Engine class of Text Robustness.
  
  Support run entrance which automatically finish data loading,
  transformation/subpopulation/attack generation and robustness
  report generation.
  
  Also provide interfaces of each layer to practitioners.
docstr: Engine start entrance, load data and apply transformations,
  finally generate robustness report if needed.
  
  :param dict|list|string data_input: json object or json/csv file
  :param string|textflint.Config config: json file or Config object
  :param str task: task name which will be helpful without config input.
  :param textflint.FlintModel model: model wrapper which implements
      FlintModel abstract methods, not a necessary input.
  :return: save generated data to out dir
      and provide report in html format.
docstr_tok: ["Engine","start","entrance",",","load","data","and","apply","transformations",",","finally","generate","robustness","report","if","needed",".",":","param","dict|list|string","data_input",":","json","object","or","json\/csv","file",":","param","string|textflint.Config","config",":","json","file","or","Config","object",":","param","str","task",":","task","name","which","will","be","helpful","without","config","input",".",":","param","textflint.FlintModel","model",":","model","wrapper","which","implements","FlintModel","abstract","methods",",","not","a","necessary","input",".",":","return",":","save","generated","data","to","out","dir","and","provide","report","in","html","format","."]
code: def run(self, data_input, config=None, task=None, model=None):
      r"""
      Engine start entrance, load data and apply transformations,
      finally generate robustness report if needed.
  
      :param dict|list|string data_input: json object or json/csv file
      :param string|textflint.Config config: json file or Config object
      :param str task: task name which will be helpful without config input.
      :param textflint.FlintModel model: model wrapper which implements
          FlintModel abstract methods, not a necessary input.
      :return: save generated data to out dir
          and provide report in html format.
  
      """
      dataset, config, model = self.load(
          data_input, config, task, model
      )
  
      if len(dataset) == 0:
          raise ValueError(
              "Empty dataset, please check your data format!"
          )
  
      evaluate_result = self.generate(dataset, config, model)
  
      if evaluate_result:
          self.report(evaluate_result)
  
imports: import os
  from .common import logger
  from .adapter import *
label_desc: Use image node_id 1 for calling the Engine obj's underlying member method code with example usage: obj.run(data_input, config, task, model) without return types