class_docstr: A scenario represents a (task, data distribution).
  It is usually based on some raw dataset and is converted into a list of `Instance`s.
  Override this class.
  
  Note: the constructor should be lightweight, `get_instances` should do all
  the heavy lifting.
code: def __post_init__(self) -> None:
      # Assume `/.../src/helm/benchmark/...`
      path = inspect.getfile(type(self))
      # Strip out prefix in absolute path and replace with GitHub link.
      self.definition_path = re.sub(
          r"^.*\/src/",
          "https://github.com/stanford-crfm/helm/blob/main/src/",
          path,
      )
  
imports: from abc import ABC, abstractmethod
  from dataclasses import dataclass, field, replace
  from typing import List, Optional, Tuple
  import re
  import inspect
  from helm.common.object_spec import ObjectSpec, create_object
  from helm.common.general import format_text, format_split, format_tags, indent_lines
  from helm.benchmark.augmentations.perturbation_description import PerturbationDescription
label_desc: Use image node_id 1 for calling the Scenario obj's underlying member method code with example usage: obj.__post_init__() without return types