code: def cleanup(self):
          
  
          for instance in self.context:
              del(instance)
  
          for plugin in self.plugins:
              del(plugin)
docs: Forcefully delete objects from memory
  
          In an ideal world, this shouldn't be necessary. Garbage
          collection guarantees that anything without reference
          is automatically removed.
  
          However, because this application is designed to be run
          multiple times from the same interpreter process, extra
          case must be taken to ensure there are no memory leaks.
  
          Explicitly deleting objects shines a light on where objects
          may still be referenced in the form of an error. No errors
          means this was uneccesary, but that's ok.