From 5897b39c49349686b5e5e80338aee781da84ec15 2013-04-24 04:47:48
From: MinRK <benjaminrk@gmail.com>
Date: 2013-04-24 04:47:48
Subject: [PATCH] add MKM.remove_kernel

so that shutdown_kernel is not the only mechanism for removing kernels

---

diff --git a/IPython/kernel/multikernelmanager.py b/IPython/kernel/multikernelmanager.py
index 9fc5707..063aaf8 100644
--- a/IPython/kernel/multikernelmanager.py
+++ b/IPython/kernel/multikernelmanager.py
@@ -128,7 +128,17 @@ class MultiKernelManager(LoggingConfigurable):
             Should the kernel be shutdown forcibly using a signal.
         """
         self.log.info("Kernel shutdown: %s" % kernel_id)
-        del self._kernels[kernel_id]
+        self.remove_kernel(kernel_id)
+
+    def remove_kernel(self, kernel_id):
+        """remove a kernel from our mapping.
+
+        Mainly so that a kernel can be removed if it is already dead,
+        without having to call shutdown_kernel.
+
+        The kernel object is returned.
+        """
+        return self._kernels.pop(kernel_id)
 
     def shutdown_all(self, now=False):
         """Shutdown all kernels."""