Use importlib in place of imp
authorJeremy Stanley <fungi@yuggoth.org>
Sat, 29 Jul 2017 15:01:08 +0000 (15:01 +0000)
committerJeremy Stanley <fungi@yuggoth.org>
Sat, 29 Jul 2017 15:01:08 +0000 (15:01 +0000)
As of Python 3.4, the newer importlib module supports the reload()
function we need. Switch from the deprecated imp module, except
before 3.4 where we will simply pretend imp is importlib for
readability.

mudpy/__init__.py
mudpy/daemon.py

index 2f1bed5..29cb472 100644 (file)
@@ -4,10 +4,16 @@
 # to use, copy, modify, and distribute this software is granted under
 # terms provided in the LICENSE file distributed with this software.
 
-import imp  # noqa (referenced via exec of string literal below)
+import sys
 
 import mudpy  # noqa (referenced via exec of string literal below)
 
+if sys.version_info >= (3, 4):
+    import importlib  # noqa (referenced via exec of string literal below)
+else:
+    # Python 3.3 lacks importlib.reload()
+    import imp as importlib  # noqa (referenced via exec of string literal)
+
 
 def load():
     """Import/reload some modules (be careful, as this can result in loops)."""
@@ -21,7 +27,7 @@ def load():
         # attempt to reload the module, assuming it was probably imported
         # earlier
         try:
-            exec("imp.reload(%s)" % module)
+            exec("importlib.reload(%s)" % module)
 
         # must not have been, so import it now
         except NameError:
index 2413204..4bc111f 100644 (file)
@@ -3,11 +3,16 @@
 # terms provided in the LICENSE file distributed with this software.
 
 # core objects for the mudpy engine
-import imp
 import sys
 
 import mudpy
 
+if sys.version_info >= (3, 4):
+    import importlib
+else:
+    # Python 3.3 lacks importlib.reload()
+    import imp as importlib
+
 
 def main():
 
@@ -21,7 +26,7 @@ def main():
 
         # the world was flagged for a reload of all code/data
         if mudpy.misc.universe.reload_flag:
-            imp.reload(mudpy)
+            importlib.reload(mudpy)
             mudpy.misc.reload_data()
             mudpy.misc.universe.reload_flag = False