diff --git a/IPython/html/static/services/kernels/js/comm.js b/IPython/html/static/services/kernels/js/comm.js
index 3351e42..91760ac 100644
--- a/IPython/html/static/services/kernels/js/comm.js
+++ b/IPython/html/static/services/kernels/js/comm.js
@@ -45,6 +45,11 @@ var IPython = (function (IPython) {
this.targets[target_name] = f;
};
+ CommManager.prototype.unregister_target = function (target_name, f) {
+ // Unregister a target function for a given target name
+ delete this.targets[target_name];
+ };
+
CommManager.prototype.register_comm = function (comm) {
// Register a comm in the mapping
this.comms[comm.comm_id] = comm;
diff --git a/IPython/kernel/comm/manager.py b/IPython/kernel/comm/manager.py
index 315209f..14fbdd7 100644
--- a/IPython/kernel/comm/manager.py
+++ b/IPython/kernel/comm/manager.py
@@ -89,6 +89,10 @@ class CommManager(LoggingConfigurable):
self.targets[target_name] = f
+ def unregister_target(self, target_name, f):
+ """Unregister a callable registered with register_target"""
+ return self.targets.pop(target_name);
+
def register_comm(self, comm):
"""Register a new comm"""
comm_id = comm.comm_id