code: def log_learner_time(
      learner: UncurriedLearnerFnType, learner_name: str
  ) -> UncurriedLearnerFnType:
      @wraps(learner)
      def timed_learner(*args: Any, **kwargs: Any) -> LearnerReturnType:
          t0 = time()
          (p, d, l) = learner(*args, **kwargs)
          return (
              p,
              d,
              fp.assoc_in(
                  l,
                  [learner_name, "running_time"],
                  "%2.3f s" % (time() - t0),
              ),
          )
  
      return timed_learner
  
file_path: fklearn/src/fklearn/training/utils.py
imports: from functools import reduce, wraps
  from time import time
  import re
  from typing import Any, List
  import pandas
  from toolz import curry
  import toolz
  from fklearn.types import LearnerReturnType, UncurriedLearnerFnType
label_desc: Use image node_id 1 for calling a global function with example usage: log_learner_time(learner, learner_name) and returns: timed_learner, p,  d,  fp