code: def _get_meta(
      hists: Dict[int, List[Dict[str, Any]]],
      brackets: Iterable[int],
      SHAs: Dict[int, SuccessiveHalvingSearchCV],
      key: Callable[[int, int], str],
  ) -> Tuple[List[Dict[str, Any]], Dict[str, List[Dict[str, Any]]]]:
      meta_ = []
      history_ = {}
      for bracket in brackets:
          _hist = hists[bracket]
  
          info_hist = {key(bracket, h["model_id"]): [] for h in _hist}
          for h in _hist:
              info_hist[key(bracket, h["model_id"])] += [h]
          hist = info_hist
          history_.update(hist)
  
          calls = {
              k: max(hi["partial_fit_calls"] for hi in h)
              for k, h in hist.items()
          }
          decisions = {
              hi["partial_fit_calls"] for h in hist.values() for hi in h
          }
          if bracket != max(brackets):
              decisions.discard(1)
          meta_.append(
              {
                  "decisions": sorted(list(decisions)),
                  "n_models": len(hist),
                  "bracket": bracket,
                  "partial_fit_calls": sum(calls.values()),
                  "SuccessiveHalvingSearchCV params": _get_SHA_params(
                      SHAs[bracket]
                  ),
              }
          )
      meta_ = sorted(meta_, key=lambda x: x["bracket"])
      return meta_, history_
  
file_path: dask-ml/dask_ml/model_selection/_hyperband.py
imports: from __future__ import division
  import asyncio
  import logging
  import math
  from typing import Any, Callable, Dict, Iterable, List, Tuple, Union
  from warnings import warn
  import numpy
  from sklearn.utils import check_random_state
  from ._incremental import BaseIncrementalSearchCV
  from ._successive_halving import SuccessiveHalvingSearchCV
label_desc: Use image node_id 2 for calling a global function with example usage: _get_meta(hists, brackets, SHAs, key) and returns: meta_,  history_