content: import json
  import os
  
  from evalplus.data import get_human_eval_plus
  from evalplus.gen.util import trusted_exec
  
  
  def execute(code, input_list) -> bool:
      try:
          trusted_exec(code, [input_list], entry_point)
      except Exception as e:
          assert str(e) == "invalid inputs"
          return False
      return True
  
  
  def write(new_input_dict):
      with open(new_input_path, "a") as f:
          f.write(json.dumps(new_input_dict) + "\n")
  
  
  if __name__ == "__main__":
      import argparse
  
      parser = argparse.ArgumentParser()
      parser.add_argument("--input", type=str, default="HumanEvalPlusInputs.jsonl")
      args = parser.parse_args()
  
      new_input_path = args.input.replace(".jsonl", "_sanitized.jsonl")
      assert not os.path.exists(new_input_path)
  
      task_inputs = {}
      for line in open(args.input, "r").read().split("\n"):
          if not line:
              continue
          plus = json.loads(line)
          task_inputs[plus["task_id"]] = plus["inputs"]
  
      for p in get_human_eval_plus().values():
          entry_point = p["entry_point"]
          code = p["prompt"] + p["canonical_solution"]
          task_id = p["task_id"]
          new_inputs = task_inputs[task_id]
          count = 0
          new_input_dict = {"task_id": task_id, "inputs": []}
          for input_list in new_inputs:
              res = execute(code, input_list)
              if res:
                  new_input_dict["inputs"].append(input_list)
              else:
                  count += 1
          write(new_input_dict)
          if count != 0:
              print(f"Task {task_id}: {count}/{len(new_inputs)} tests filtered")
  