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: Whether the plugin has a Python entry file.
docstr_tok: ["Whether","the","plugin","has","a","Python","entry","file","."]
code: def has_py(self):
      """Whether the plugin has a Python entry file."""
      return os.path.isfile(self.py_entry_path)
  
imports: import os
  import yaml
  import eta.core.serial
  import fiftyone
label_desc: Use image node_id 21 for calling the PluginDefinition obj's underlying member method code with example usage: obj.has_py() and returns: os