class_docstr: A plugin definition.
  
  Args:
      directory: the directory containing the plugin
      metadata: a plugin metadata dict
class_docstr_tok: ["A","plugin","definition",".","Args",":","directory",":","the","directory","containing","the","plugin","metadata",":","a","plugin","metadata","dict"]
docstr: Returns a JSON dict representation of the plugin metadata.
  
  Returns:
      a JSON dict
docstr_tok: ["Returns","a","JSON","dict","representation","of","the","plugin","metadata",".","Returns",":","a","JSON","dict"]
code: def to_dict(self):
      """Returns a JSON dict representation of the plugin metadata.
  
      Returns:
          a JSON dict
      """
      return {
          "name": self.name,
          "author": self.author,
          "version": self.version,
          "url": self.url,
          "license": self.license,
          "description": self.description,
          "fiftyone_compatibility": self.fiftyone_compatibility,
          "operators": self.operators,
          "js_bundle": self.js_bundle,
          "py_entry": self.py_entry,
          "js_bundle_exists": self.has_js,
          "js_bundle_server_path": self.js_bundle_server_path,
          "has_py": self.has_py,
          "has_js": self.has_js,
          "server_path": self.server_path,
          "secrets": self.secrets,
      }
  
imports: import os
  import yaml
  import eta.core.serial
  import fiftyone
label_desc: Use image node_id 24 for calling the PluginDefinition obj's underlying member method code with example usage: obj.to_dict() and returns: dict