code: def display_budgets(
      budgets_tab: dict[int, list[BudgetTuple]],
      max_resources: Any,
      reduction_factor: Any,
  ) -> None:
      """Display hyperband budget as a table in debug log"""
      num_brackets = len(budgets_tab[0])
      table_str = "Display Budgets:\n"
      col_format_str = "{:<4}" + " {:<12}" * num_brackets + "\n"
      col_title_list = ["i  "] + ["n_i  r_i"] * num_brackets
      col_sub_list = ["---"] + ["---------"] * num_brackets
      table_str += col_format_str.format(*col_sub_list)
      table_str += col_format_str.format(*col_title_list)
      table_str += col_format_str.format(*col_sub_list)
  
      total_trials = 0
      for key, values in sorted(budgets_tab.items()):
          table_row = f"{key:<4} "
          for value in values:
              n_i, r_i = value
              total_trials += n_i
              st = f"{n_i:<5} {r_i:<7}"
              table_row += st
          table_str += table_row + "\n"
      table_str += col_format_str.format(*col_sub_list)
      table_str += (
          f"max resource={max_resources}, eta={reduction_factor}, "
          f"trials number of one execution={total_trials}\n"
      )
      logger.info(table_str)
  
imports: from __future__ import annotations
  import copy
  import logging
  from collections import OrderedDict
  from typing import Any, Generic, NamedTuple, Sequence, TypeVar
  import numpy
  from tabulate import tabulate
  from orion.algo.base import BaseAlgorithm
  from orion.algo.space import Fidelity, Space
  from orion.core.utils.flatten import flatten
  from orion.core.worker.trial import Trial
label_desc: Use image node_id 3 for calling a global function with example usage: display_budgets(budgets_tab, max_resources, reduction_factor) without return types