class_docstr: Selects the right wrapper (based on the environment), runs, and saves the src.
code: def __init__(self, overwrite: bool = False) -> None:
      import smac
  
      self._version: str | None = None
      for version in ["__version__", "version"]:
          if hasattr(smac, version):
              version = getattr(smac, version)
              break
  
      if version is None:
          raise RuntimeError("Could not find version of SMAC.")
      else:
          version = version.replace("v", "")
  
      self._wrapper: Wrapper | None = None
      for wrapper in WRAPPERS:
          if version in wrapper.supported_versions:
              self._wrapper = wrapper
              break
  
      if self._wrapper is None:
          raise RuntimeError(
              f"Could not find a wrapper for version {version}."
          )
  
      print(f"Found wrapper for version {version}.")
  
      self._version: str = version
      self._computer: str = str(socket.gethostname())
      self._data: Any = {}
      self._overwrite: bool = overwrite
  
imports: from __future__ import annotations
  import sys
  import logging
  from typing import Any
  import numpy
  import json
  import socket
  from collections import defaultdict
  from pathlib import Path
  import pandas
  from src.tasks import TASKS
  from src.utils.exceptions import NotSupportedError
  from src.utils.styled_plot import plt
  from src.wrappers.v14 import Version14
  from src.wrappers.v20 import Version20
  from src.wrappers.wrapper import Wrapper
label_desc: Use image node_id 1 to create a new Benchmark object  with example: obj = Benchmark(overwrite)