old_contents: """A basic in process kernel monitor with autorestarting.
  
  This watches a kernel's state using KernelManager.is_alive and auto
  restarts the kernel if it dies.
  """
  
  #-----------------------------------------------------------------------------
  #  Copyright (C) 2013  The IPython Development Team
  #
  #  Distributed under the terms of the BSD License.  The full license is in
  #  the file COPYING, distributed as part of this software.
  #-----------------------------------------------------------------------------
  
  #-----------------------------------------------------------------------------
  # Imports
  #-----------------------------------------------------------------------------
  
  from __future__ import absolute_import
  
  import zmq
  from zmq.eventloop import ioloop
  
  
  from IPython.kernel.restarter import KernelRestarter
  from IPython.utils.traitlets import (
      Instance, Float, List,
  )
  
  #-----------------------------------------------------------------------------
  # Code
  #-----------------------------------------------------------------------------
  
  class IOLoopKernelRestarter(KernelRestarter):
      """Monitor and autorestart a kernel."""
  
      loop = Instance('zmq.eventloop.ioloop.IOLoop', allow_none=False)
      def _loop_default(self):
          return ioloop.IOLoop.instance()
  
      time_to_dead = Float(3.0, config=True,
          help="""Kernel heartbeat interval in seconds."""
      )
  
      _pcallback = None
  
      def start(self):
          """Start the polling of the kernel."""
          if self._pcallback is None:
              self._pcallback = ioloop.PeriodicCallback(
                  self.poll, 1000*self.time_to_dead, self.loop
              )
              self._pcallback.start()
  
      def stop(self):
          """Stop the kernel polling."""
          if self._pcallback is not None:
              self._pcallback.stop()
              self._pcallback = None
  
  
new_contents: """A basic in process kernel monitor with autorestarting.
  
  This watches a kernel's state using KernelManager.is_alive and auto
  restarts the kernel if it dies.
  """
  
  #-----------------------------------------------------------------------------
  #  Copyright (C) 2013  The IPython Development Team
  #
  #  Distributed under the terms of the BSD License.  The full license is in
  #  the file COPYING, distributed as part of this software.
  #-----------------------------------------------------------------------------
  
  #-----------------------------------------------------------------------------
  # Imports
  #-----------------------------------------------------------------------------
  
  from __future__ import absolute_import
  
  import zmq
  from zmq.eventloop import ioloop
  
  
  from IPython.kernel.restarter import KernelRestarter
  from IPython.utils.traitlets import (
      Instance, Float, List,
  )
  
  #-----------------------------------------------------------------------------
  # Code
  #-----------------------------------------------------------------------------
  
  class IOLoopKernelRestarter(KernelRestarter):
      """Monitor and autorestart a kernel."""
  
      loop = Instance('zmq.eventloop.ioloop.IOLoop', allow_none=False)
      def _loop_default(self):
          return ioloop.IOLoop.instance()
  
      _pcallback = None
  
      def start(self):
          """Start the polling of the kernel."""
          if self._pcallback is None:
              self._pcallback = ioloop.PeriodicCallback(
                  self.poll, 1000*self.time_to_dead, self.loop
              )
              self._pcallback.start()
  
      def stop(self):
          """Stop the kernel polling."""
          if self._pcallback is not None:
              self._pcallback.stop()
              self._pcallback = None
  
  
subject: remove redundant time_to_dead from IOLoopKernelRestarter