changeset 21:ce290b10dac5

Better Py2/Py3 compatibility: mark some strings explicitly as Unicode
author Franz Glasner <f.glasner@feldmann-mg.com>
date Thu, 10 Mar 2016 13:28:09 +0100
parents 9bdc4e421415
children 6a91db2c2469
files configmix/ini.py configmix/yaml.py
diffstat 2 files changed, 24 insertions(+), 16 deletions(-) [+]
line wrap: on
line diff
--- a/configmix/ini.py	Thu Mar 10 13:06:31 2016 +0100
+++ b/configmix/ini.py	Thu Mar 10 13:28:09 2016 +0100
@@ -21,7 +21,7 @@
     except ImportError:
         DictImpl = dict
 
-from .compat import PY2
+from .compat import PY2, u
 
 
 __all__ = ["INIConfigParser", "NoSectionError", "NoOptionError",
@@ -68,9 +68,9 @@
         if PY2:
             if isinstance(filename, str):
                 filename = filename.decode(locale.getpreferredencoding())
-        self.set(None, "self", filename)
-        self.set(None, "here", os.path.dirname(filename))
-        self.set(None, "root", os.path.dirname(self.executable))
+        self.set(None, u("self"), filename)
+        self.set(None, u("here"), os.path.dirname(filename))
+        self.set(None, u("root"), os.path.dirname(self.executable))
         SafeConfigParser.readfp(self, fp, filename=filename)
         self.filename = filename
         self.root = os.path.dirname(self.executable)
@@ -86,20 +86,26 @@
 
         """
         v = self.get(section, option)
-        if v.startswith(":bool:"):
+        if v.startswith(u(":bool:")):
             v = v[6:].lower()
             if v not in self._BOOL_CVT:
-                raise ValueError("Not a boolean: %s" % (v, ))
+                raise ValueError("Not a boolean: %r" % v)
             return self._BOOL_CVT[v]
-        elif v.startswith(":int:"):
+        elif v.startswith(u(":int:")):
             return int(v[5:], 0)
-        elif v.startswith(":float:"):
+        elif v.startswith(u(":float:")):
             return float(v[7:])
         else:
             return v
 
-    _BOOL_CVT = {'1': True, 'yes': True, 'true': True, 'on': True,
-                 '0': False, 'no': False, 'false': False, 'off': False}
+    _BOOL_CVT = {u('1'): True,
+                 u('yes'): True,
+                 u('true'): True,
+                 u('on'): True,
+                 u('0'): False,
+                 u('no'): False,
+                 u('false'): False,
+                 u('off'): False}
 
 
 def load(filename, extract=["config"]):
--- a/configmix/yaml.py	Thu Mar 10 13:06:31 2016 +0100
+++ b/configmix/yaml.py	Thu Mar 10 13:28:09 2016 +0100
@@ -16,6 +16,8 @@
 import yaml
 import yaml.constructor
 
+from .compat import u
+
 
 __all__ = ["safe_load", "safe_load_all", "load", "load_all"]
 
@@ -71,14 +73,14 @@
 
 
 ConfigLoader.add_constructor(
-    "tag:yaml.org,2002:str",
+    u("tag:yaml.org,2002:str"),
     ConfigLoader.construct_yaml_str)
 if OrderedDict:
     ConfigLoader.add_constructor(
-        "tag:yaml.org,2002:map",
+        u("tag:yaml.org,2002:map"),
         ConfigLoader.construct_yaml_map)
     ConfigLoader.add_constructor(
-        "tag:yaml.org,2002:omap",
+        u("tag:yaml.org,2002:omap"),
         ConfigLoader.construct_yaml_map)
 
 
@@ -133,14 +135,14 @@
 
 
 ConfigSafeLoader.add_constructor(
-    "tag:yaml.org,2002:str",
+    u("tag:yaml.org,2002:str"),
     ConfigSafeLoader.construct_yaml_str)
 if OrderedDict:
     ConfigSafeLoader.add_constructor(
-        "tag:yaml.org,2002:map",
+        u("tag:yaml.org,2002:map"),
         ConfigSafeLoader.construct_yaml_map)
     ConfigSafeLoader.add_constructor(
-        "tag:yaml.org,2002:omap",
+        u("tag:yaml.org,2002:omap"),
         ConfigSafeLoader.construct_yaml_map)