docstr: Return attributes of the current Experiment that are necessary to properly record result.
  Specifically, `BaseRecorder` fetches the attrs via :class:`settings.G.Env.current_task`,
  which can also be regarded as :class:`environment.Environment.current_task`, but this is
  an implementation detail. It is simpler to use :class:`experiments.BaseExperiment`, and its
  appropriate descendants as a reference for acceptable values of `required_attributes`
docstr_tok: ["Return","attributes","of","the","current","Experiment","that","are","necessary","to","properly","record","result",".","Specifically",",","`","BaseRecorder","`","fetches","the","attrs","via",":","class",":","`","settings.G.Env.current_task","`",",","which","can","also","be","regarded","as",":","class",":","`","environment.Environment.current_task","`",",","but","this","is","an","implementation","detail",".","It","is","simpler","to","use",":","class",":","`","experiments.BaseExperiment","`",",","and","its","appropriate","descendants","as","a","reference","for","acceptable","values","of","`","required_attributes","`"]
code: def required_attributes(self) -> list:
      """Return attributes of the current Experiment that are necessary to properly record result.
      Specifically, `BaseRecorder` fetches the attrs via :class:`settings.G.Env.current_task`,
      which can also be regarded as :class:`environment.Environment.current_task`, but this is
      an implementation detail. It is simpler to use :class:`experiments.BaseExperiment`, and its
      appropriate descendants as a reference for acceptable values of `required_attributes`
      """
  
imports: from hyperparameter_hunter.data import OOFDataset, HoldoutDataset, TestDataset
  from hyperparameter_hunter.i_o.exceptions import EnvironmentInactiveError, EnvironmentInvalidError
  from hyperparameter_hunter.i_o.leaderboards import GlobalLeaderboard
  from hyperparameter_hunter.settings import G
  from hyperparameter_hunter.utils.file_utils import write_json, add_to_json, make_dirs, read_json
  from hyperparameter_hunter.utils.file_utils import RetryMakeDirs
  from hyperparameter_hunter.utils.general_utils import subdict
  from abc import ABCMeta, abstractmethod
  from collections import OrderedDict
  from platform import node
  import shutil
  from sys import exc_info
label_desc: Use image node_id 3 for calling the BaseRecorder obj's underlying member method code with example usage: obj.required_attributes() without return types