Import a correct configparser for the interpreter
[mudpy.git] / lib / mudpy / data.py
index 243a28b..de76416 100644 (file)
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 """Data interface functions for the mudpy engine."""
 
-# Copyright (c) 2004-2011 Jeremy Stanley <fungi@yuggoth.org>. Permission
+# Copyright (c) 2004-2013 Jeremy Stanley <fungi@yuggoth.org>. Permission
 # to use, copy, modify, and distribute this software is granted under
 # terms provided in the LICENSE file distributed with this software.
 
@@ -17,11 +17,15 @@ class DataFile:
 
     def load(self):
         """Read a file and create elements accordingly."""
-        import ConfigParser
-        import misc
+        import mudpy.misc
         import os
         import os.path
-        self.data = ConfigParser.RawConfigParser()
+        # TODO: remove this check after the switch to py3k
+        try:
+            import configparser
+        except ImportError:
+            import ConfigParser as configparser
+        self.data = configparser.RawConfigParser()
         self.modified = False
         if os.access(self.filename, os.R_OK):
             self.data.read(self.filename)
@@ -83,7 +87,7 @@ class DataFile:
                     self.universe.private_files.append(item)
         for section in self.data.sections():
             if section != "__control__":
-                misc.Element(section, self.universe, self.filename)
+                mudpy.misc.Element(section, self.universe, self.filename)
         for include_file in includes:
             if not os.path.isabs(include_file):
                 include_file = find_file(
@@ -151,10 +155,10 @@ class DataFile:
             # if it's marked private, chmod it appropriately
             if self.filename in self.universe.private_files and oct(
                stat.S_IMODE(os.stat(self.filename)[stat.ST_MODE])
-               ) != 0600:
-                os.chmod(self.filename, 0600)
+               ) != 0o0600:
+                os.chmod(self.filename, 0o0600)
 
-            # write it back sorted, instead of using ConfigParser
+            # write it back sorted, instead of using configparser
             sections = self.data.sections()
             sections.sort()
             for section in sections:
@@ -227,8 +231,9 @@ def find_file(
         # if there's only one file loaded, try to work around a chicken<egg
         elif hasattr(universe, "files") and len(
             universe.files
-        ) == 1 and not universe.files[universe.files.keys()[0]].is_writeable():
-            data_file = universe.files[universe.files.keys()[0]].data
+        ) == 1 and not universe.files[
+                list(universe.files.keys())[0]].is_writeable():
+            data_file = universe.files[list(universe.files.keys())[0]].data
 
             # try for a fallback default directory
             if not default_dir and data_file.has_option(