code: def _print_elapsed_time(source, message=None):
      """Log elapsed time to stdout when the context is exited.
      Parameters
      ----------
      source : str
          String indicating the source or the reference of the message.
      message : str, default=None
          Short message. If None, nothing will be printed.
      Returns
      -------
      context_manager
          Prints elapsed time upon exit if verbose.
      """
      if message is None:
          yield
      else:
          start = timeit.default_timer()
          yield
          print(
              _message_with_time(
                  source, message, timeit.default_timer() - start
              )
          )
  
imports: from ..preprocessing import FunctionTransformer
  from ....thirdparty_adapters import check_array
  from ..utils.validation import check_is_fitted
  from ..utils.skl_dependencies import TransformerMixin, BaseComposition, BaseEstimator
  from cuml.internals import _deprecate_pos_args
  from cuml.internals.array_sparse import SparseCumlArray
  from cuml.internals.global_settings import _global_settings_data
  import cuml
  from itertools import chain
  from itertools import compress
  from joblib import Parallel
  import functools
  import timeit
  import numbers
  from cuml.internals.import_utils import has_sklearn
  from contextlib import contextmanager
  from collections import defaultdict
  import warnings
  from cuml.internals.safe_imports import cpu_only_import_from
  from cuml.internals.safe_imports import gpu_only_import_from
  from cuml.internals.safe_imports import cpu_only_import
  from cuml.internals.safe_imports import gpu_only_import
label_desc: Use image node_id 12 for calling a global function with example usage: _print_elapsed_time(source, message) without return types