code: def _patch_model_io():
      if PatchCatBoostModelIO.__patched:
          return
      if "catboost" not in sys.modules:
          return
      PatchCatBoostModelIO.__patched = True
      # noinspection PyBroadException
      try:
          from catboost import (
              CatBoost,
              CatBoostClassifier,
              CatBoostRegressor,
              CatBoostRanker,
          )
  
          CatBoost.save_model = _patched_call(
              CatBoost.save_model, PatchCatBoostModelIO._save
          )
          CatBoost.load_model = _patched_call(
              CatBoost.load_model, PatchCatBoostModelIO._load
          )
          PatchCatBoostModelIO.__callback_cls = (
              PatchCatBoostModelIO._generate_training_callback_class()
          )
          CatBoost.fit = _patched_call(
              CatBoost.fit, PatchCatBoostModelIO._fit
          )
          CatBoostClassifier.fit = _patched_call(
              CatBoostClassifier.fit, PatchCatBoostModelIO._fit
          )
          CatBoostRegressor.fit = _patched_call(
              CatBoostRegressor.fit, PatchCatBoostModelIO._fit
          )
          CatBoostRanker.fit = _patched_call(
              CatBoostRanker.fit, PatchCatBoostModelIO._fit
          )
      except Exception as e:
          logger = PatchCatBoostModelIO._current_task.get_logger()
          logger.report_text(
              "Failed patching Catboost. Exception is: '" + str(e) + "'"
          )
  
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 2 for calling the PatchCatBoostModelIO obj's underlying member method code with example usage: obj._patch_model_io() without return types