hgdemandimport/demandimportpy2.py
changeset 33531 9cbbf9118c6c
parent 33530 05e3fa254b6b
child 33859 8fb5212652ec
--- a/hgdemandimport/demandimportpy2.py	Sun Jul 16 17:19:22 2017 +0900
+++ b/hgdemandimport/demandimportpy2.py	Sun Jul 16 17:38:39 2017 +0900
@@ -227,10 +227,14 @@
             # recurse down the module chain, and return the leaf module
             mod = rootmod
             for comp in modname.split('.')[1:]:
-                if getattr(mod, comp, nothing) is nothing:
-                    setattr(mod, comp, _demandmod(comp, mod.__dict__,
-                                                  mod.__dict__, level=1))
-                mod = getattr(mod, comp)
+                obj = getattr(mod, comp, nothing)
+                if obj is nothing:
+                    obj = _demandmod(comp, mod.__dict__, mod.__dict__, level=1)
+                    setattr(mod, comp, obj)
+                elif mod.__name__ + '.' + comp in sys.modules:
+                    # prefer loaded module over attribute (issue5617)
+                    obj = sys.modules[mod.__name__ + '.' + comp]
+                mod = obj
             return mod
 
         if level >= 0: