docstr: By default, assume CompoundReporter with the same
  number of reporters as trainers
docstr_tok: ["By","default",",","assume","CompoundReporter","with","the","same","number","of","reporters","as","trainers"]
code: def _flush_reporter(self, reporter, epoch) -> None:
      """
      By default, assume CompoundReporter with the same
      number of reporters as trainers
      """
      if not self._in_testing_loop:
          epoch_trainer_idx = self._get_trainer_idx_from_epoch()
          reporter._reporters[epoch_trainer_idx].flush(epoch)
      else:
          for r in reporter._reporters:
              r.flush(epoch)
  
imports: import bisect
  import functools
  import itertools
  from collections import OrderedDict
  from typing import Dict, List, Tuple
  import torch.nn
  from pytorch_lightning.loops.optimization.optimizer_loop import ClosureResult
  from reagent.core.utils import lazy_property
  from .reagent_lightning_module import ReAgentLightningModule
label_desc: Use image node_id 5 for calling the MultiStageTrainer obj's underlying member method code with example usage: obj._flush_reporter(reporter, epoch) without return types