code: def replace_dict_values(
      obj: dict, replace_fn: callable, *args
  ) -> dict:
      """
      Recursively iterates over all values of obj and changes its values using the replace_fn
  
      Parameters
      ----------
      obj : dict
      replace_fn : callable
  
      Returns
      -------
      dict
      """
      for k, v in obj.items():
          if isinstance(v, dict):
              obj[k] = replace_dict_values(v, replace_fn)
          elif isinstance(v, Number):
              obj[k] = replace_fn(v, *args)
      return obj
  
file_path: shapash/shapash/report/common.py
imports: from typing import Union, Optional
  from enum import Enum
  from numbers import Number
  import pandas
  import os
  from pandas.api.types import is_string_dtype, is_numeric_dtype, is_bool_dtype
label_desc: Use image node_id 7 for calling a global function with example usage: replace_dict_values(obj, replace_fn) and returns: obj