From f4da38a7336e77b39bda793ef4675cdd3e133947 Mon Sep 17 00:00:00 2001
From: Kamran Melikov <melikovk@gmail.com>
Date: Mon, 20 Jan 2020 02:16:24 -0500
Subject: [PATCH] Add ability to overwite existing module in Registry (#1982)

Changes to be committed:
modified:   mmdet/utils/registry.py
---
 mmdet/utils/registry.py | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/mmdet/utils/registry.py b/mmdet/utils/registry.py
index a1cc87d..4ad9f87 100644
--- a/mmdet/utils/registry.py
+++ b/mmdet/utils/registry.py
@@ -1,4 +1,5 @@
 import inspect
+from functools import partial
 
 import mmcv
 
@@ -25,7 +26,7 @@ class Registry(object):
     def get(self, key):
         return self._module_dict.get(key, None)
 
-    def _register_module(self, module_class):
+    def _register_module(self, module_class, force=False):
         """Register a module.
 
         Args:
@@ -35,13 +36,15 @@ class Registry(object):
             raise TypeError('module must be a class, but got {}'.format(
                 type(module_class)))
         module_name = module_class.__name__
-        if module_name in self._module_dict:
+        if not force and module_name in self._module_dict:
             raise KeyError('{} is already registered in {}'.format(
                 module_name, self.name))
         self._module_dict[module_name] = module_class
 
-    def register_module(self, cls):
-        self._register_module(cls)
+    def register_module(self, cls=None, force=False):
+        if cls is None:
+            return partial(self.register_module, force=force)
+        self._register_module(cls, force=force)
         return cls
 
 
-- 
GitLab