text: # Project libraries
  from . import BaseResource
  from .release import Release
  
  
  class RestartRunException(Exception):
      pass
  
  
  class Dyno(BaseResource):
      _strs = ["id", "attach_url", "size", "command", "name", "state", "type"]
      _bools = ["attach"]
      _ints = ["repo_size"]
      _dates = ["created_at", "updated_at"]
      _map = {"release": Release}
      _pks = ["id"]
  
      def __init__(self):
          self.app = None
          super(Dyno, self).__init__()
  
      def __repr__(self):
          return "<Dyno '{0} - {1}'>".format(self.name, self.command)
  
      def kill(self):
          r = self._h._http_resource(method="DELETE", resource=("apps", self.app.id, "dynos", self.name))
  
          r.raise_for_status()
  
          return r.ok
  
      def stop_dyno(self):
          data = {"ps": self.process}
  
          r = self._h._http_resource(method="POST", resource=("apps", self.app.name, "ps", "stop"))
          r.raise_for_status()
  
      def restart(self):
          if self.type == "run":
              raise RestartRunException(
                  "Unable to restart a Process of type 'run' as it will not be respawned by Heroku"
              )
          else:
              return self.kill()
  