code: def _patch_absl(cls):
      if cls._original_DEFINE_flag:
          return
      # noinspection PyBroadException
      try:
          from absl.flags import _defines
  
          if six.PY2:
              cls._original_DEFINE_flag = staticmethod(
                  _defines.DEFINE_flag
              )
          else:
              cls._original_DEFINE_flag = _defines.DEFINE_flag
          _defines.DEFINE_flag = cls._patched_define_flag
      except Exception:
          # there is no absl
          pass
  
      try:
          from absl.flags._flagvalues import FlagValues
  
          if six.PY2:
              cls._original_FLAGS_parse_call = staticmethod(
                  FlagValues.__call__
              )
          else:
              cls._original_FLAGS_parse_call = FlagValues.__call__
          FlagValues.__call__ = cls._patched_FLAGS_parse_call
      except Exception:
          # there is no absl
          pass
  
      if cls._original_DEFINE_flag:
          try:
              # if absl was already set, let's update our task params
              from absl import flags
  
              cls._update_current_flags(flags.FLAGS)
          except Exception:
              # there is no absl
              pass
  
file_path: clearml/clearml/binding/absl_bind.py
imports: import six
  from ..backend_interface.task.args import _Arguments
  from ..config import running_remotely
label_desc: Use image node_id 2 for calling the PatchAbsl obj's underlying member method code with example usage: obj._patch_absl(cls) without return types