class_docstr: Logical object for tracking Hyperband bracket progress. Keeps track
  of proper parameters as designated by HyperBand.
  
  Also keeps track of progress to ensure good scheduling.
class_docstr_tok: ["Logical","object","for","tracking","Hyperband","bracket","progress",".","Keeps","track","of","proper","parameters","as","designated","by","HyperBand",".","Also","keeps","track","of","progress","to","ensure","good","scheduling","."]
code: def _calculate_total_work(self, n: int, r: float, s: int):
      work = 0
      cumulative_r = r
      for _ in range(s + 1):
          work += int(n) * int(r)
          n /= self._eta
          n = int(np.ceil(n))
          r *= self._eta
          r = int(min(r, self._max_t_attr - cumulative_r))
      return work
  
imports: import collections
  from typing import Dict, List, Optional, Tuple, TYPE_CHECKING
  import numpy
  import logging
  from ray.util.annotations import PublicAPI
  from ray.tune.result import DEFAULT_METRIC
  from ray.tune.schedulers.trial_scheduler import FIFOScheduler, TrialScheduler
  from ray.tune.experiment import Trial
  from ray.tune.error import TuneError
label_desc: Use image node_id 14 for calling the _Bracket obj's underlying member method code with example usage: obj._calculate_total_work(n, r, s) and returns: work