class_docstr: TaskNTalk basic teacher, it picks a random image and associates a random task with
  it.
  
  Metric updates and observation are to be implemented.
docstr: Read the json file and store images and task definitions.
docstr_tok: ["Read","the","json","file","and","store","images","and","task","definitions","."]
code: def _setup_data(self, data_path):
      """
      Read the json file and store images and task definitions.
      """
      print("loading: " + data_path)
      with PathManager.open(data_path) as data_file:
          json_data = json.load(data_file)
          self.data = json_data["data"]
          self.task_defn = json_data["task_defn"]
      # images are [color, shape, style] lists (example: ['red', 'square', 'dotted'])
      self.task_index = {"color": 0, "shape": 1, "style": 2}
      random.shuffle(self.data)
  
imports: from parlai.core.teachers import Teacher
  from parlai.utils.io import PathManager
  from .build import build
  import json
  import os
  import random
label_desc: Use image node_id 2 for calling the AbstractTaskNTalk obj's underlying member method code with example usage: obj._setup_data(data_path) without return types