class_docstr: Context that represents a plugin and the Python objects it creates.
  
  Args:
      plugin_definition: the :class:`fiftyone.plugins.PluginDefinition` for
          the plugin
class_docstr_tok: ["Context","that","represents","a","plugin","and","the","Python","objects","it","creates",".","Args",":","plugin_definition",":","the",":","class",":","`","fiftyone.plugins.PluginDefinition","`","for","the","plugin"]
docstr: Registers the given operator on the plugin.
  
  .. note::
  
      Any errors are logged rather than being raised.
  
  Args:
      cls: an :class:`fiftyone.operators.operator.Operator` class
docstr_tok: ["Registers","the","given","operator","on","the","plugin",".","..","note",":",":","Any","errors","are","logged","rather","than","being","raised",".","Args",":","cls",":","an",":","class",":","`","fiftyone.operators.operator.Operator","`","class"]
code: def register(self, cls):
      """Registers the given operator on the plugin.
  
      .. note::
  
          Any errors are logged rather than being raised.
  
      Args:
          cls: an :class:`fiftyone.operators.operator.Operator` class
      """
      try:
          instance = cls()
          if self.can_register(instance):
              instance.plugin_name = self.name
              if self.secrets:
                  instance.add_secrets(self.secrets)
              self.instances.append(instance)
      except:
          logger.warning(
              f"Failed to register operator {cls.__name__} on plugin {self.name}"
          )
          self.errors.append(traceback.format_exc())
  
imports: import importlib
  import logging
  import os
  import sys
  import traceback
  import fiftyone
  import fiftyone.plugins
  from fiftyone.operators.decorators import plugins_cache
  from fiftyone.operators.operator import Operator
label_desc: Use image node_id 6 for calling the PluginContext obj's underlying member method code with example usage: obj.register(cls) without return types