code: def _fit(original_fn, obj, *args, **kwargs):
      if not PatchCatBoostModelIO._current_task:
          return original_fn(obj, *args, **kwargs)
      callbacks = kwargs.get("callbacks") or []
      kwargs["callbacks"] = callbacks + [
          PatchCatBoostModelIO.__callback_cls(
              task=PatchCatBoostModelIO._current_task
          )
      ]
      # noinspection PyBroadException
      try:
          return original_fn(obj, *args, **kwargs)
      except Exception:
          logger = PatchCatBoostModelIO._current_task.get_logger()
          logger.report_text(
              "Catboost metrics logging is not supported for GPU. "
              "See https://github.com/catboost/catboost/issues/1792"
          )
          del kwargs["callbacks"]
          return original_fn(obj, *args, **kwargs)
  
file_path: clearml/clearml/binding/frameworks/catboost_bind.py
imports: import sys
  from pathlib2 import Path
  import six
  from ..frameworks import WeightsFileHandler, _Empty, _patched_call
  from ..frameworks.base_bind import PatchBaseModelIO
  from ..import_bind import PostImportHookPatching
  from ...model import Framework
label_desc: Use image node_id 5 for calling the PatchCatBoostModelIO obj's underlying member method code with example usage: obj._fit(original_fn, obj) and returns: original_fn, original_fn, original_fn