code: def spec(self):
          
          pspec = {}
          pspec['name'] = self.NAME
          pspec['version'] = self.VERSION
          pspec['description'] = self.DESCRIPTION
          #if hasattr(self, 'run') and callable(self.run):
          components = [sys.argv[0], self.NAME]
          if self.USE_ARGUMENTS: components.append('$(arguments)')
          pspec['exe_command'] = self.COMMAND or ' '.join(components)
  
          pspec['inputs'] = [ inp.spec for inp in self.INPUTS ]
          pspec['outputs'] = [ out.spec for out in self.OUTPUTS ]
          pspec['parameters'] = [ param.spec for param in self.PARAMETERS ]
          if hasattr(self, 'test') and callable(self.test):
              pspec['has_test'] = True
  
          return pspec
docs: Generate spec for the processor as a Python dictionary.
  
          A spec is a standard way to describe a MountainLab processor in a way
          that is easy to process, yet still understandable by humans.
          This method generates a Python dictionary that complies with a spec
          definition.