content: """
  This script aims at quickly initialize a sketch for HumanEvalPlus. It's not going to be
  perfect, but we will either manually or automatically fix/complete it later.
  + CHANGE 1: Adds "contract", "base_input", "atol" in addition to HumanEval.
  """
  
  import json
  import os
  import pathlib
  from importlib import import_module
  from inspect import getsource
  from typing import Tuple
  
  from tempdir import TempDir
  
  from evalplus.data.humaneval import get_human_eval
  
  HUMANEVAL_PLUS_PATH = (
      pathlib.Path(__file__).parent.parent.parent / "HumanEvalPlus.jsonl"
  )
  
  
  def _ret(entry_point) -> str:
      """This is a hacky function to return some garbages so that we can
      successfully run the function .
      """
      if entry_point == "sort_third" or entry_point == "sort_even":
          return [1, 2, 3]
      elif entry_point == "bf":
          return ()
      return "1"
  
  
  def instrument_inputs(entry_point, prompt, test) -> str:
      globals()["_inputs"] = []
      fn_text = f"""{prompt.split(f"def {entry_point}")[0]}
  
  def {entry_point}(*args):
      _inputs.append(args)
      return {_ret(entry_point)}
  """
      exec(fn_text, globals())
      exec(test.replace("assert ", ""), globals())
      exec(f"check({entry_point})", globals())
      exec(fn_text, globals())
      return globals()["_inputs"]
  
  
  def get_contract_and_ref(task_id: int, entry_point) -> Tuple[str, str]:
      mod = import_module(f"groundtruth.humaneval.{str(task_id).zfill(3)}_{entry_point}")
      fn = getattr(mod, entry_point)
  
      doc = fn.__doc__
      if task_id == 51:
          doc = doc.replace("bcdf\nghjklm", r"bcdf\nghjklm").replace(
              "abcdef\nghijklm", r"abcdef\nghijklm"
          )
  
      code = (
          getsource(fn).replace(doc, "").replace("''''''", '""""""').split('""""""\n')[-1]
      )
  
      assert code, f"Something wrong with {task_id}!"
      assert code[:3] != "def", f"Something wrong with the {task_id}!"
  
      # split code to contract and impl
      contract = ""
      impl = ""
  
      reading_contract = True
      for line in code.strip("\n").split("\n"):
          if reading_contract and "$_CONTRACT_$" in line:
              contract += line + "\n"
          else:
              reading_contract = False
              impl += line + "\n"
  
      if contract:
          contract = "\n" + contract
  
      return contract, "\n" + impl + "\n"
  
  
  def get_atol(task_id: int) -> float:
      if task_id == 2 or task_id == 4:
          return 1e-6
      elif task_id == 32:
          return 1e-4
      return 0
  
  
  if __name__ == "__main__":
      assert not HUMANEVAL_PLUS_PATH.exists(), f"{HUMANEVAL_PLUS_PATH} already exists!"
  
      human_eval = get_human_eval()
      with TempDir() as temp_dir:
          tmp_file = os.path.join(temp_dir, HUMANEVAL_PLUS_PATH)
          with open(tmp_file, "w") as writer:
              for task in human_eval:
                  task_id = int(task["task_id"].split("/")[-1])
                  task["contract"], task["canonical_solution"] = get_contract_and_ref(
                      task_id, task["entry_point"]
                  )
                  task["base_input"] = instrument_inputs(
                      task["entry_point"], task["prompt"], task["test"]
                  )
                  task["atol"] = get_atol(task_id)
                  task["task_id"] = task["task_id"]
  
                  writer.write(json.dumps(task) + "\n")
          # move tmp_file to HUMANEVAL_PLUS_PATH
          os.rename(tmp_file, HUMANEVAL_PLUS_PATH)
  