[PATCH 1/6] morph2: Improve compatibility with python < 2.7

Javier Jardón javier.jardon at codethink.co.uk
Fri Jan 18 18:30:53 GMT 2013


---
 morphlib/morph2.py | 29 +++++++++--------------------
 1 file changed, 9 insertions(+), 20 deletions(-)

diff --git a/morphlib/morph2.py b/morphlib/morph2.py
index 73d55d1..6af9e9e 100644
--- a/morphlib/morph2.py
+++ b/morphlib/morph2.py
@@ -14,16 +14,16 @@
 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 
 
-import sys
-have_python27 = sys.version_info >= (2,7)
-
-import collections
-if not hasattr(collections, 'OrderedDict'): # pragma: no cover
-    collections.OrderedDict = dict
 import copy
-import json
 import re
 
+try:
+    from collections import OrderedDict
+    import json
+except ImportError: # pragma: no cover
+    from ordereddict import OrderedDict
+    import simplejson as json
+
 
 class Morphology(object):
 
@@ -58,19 +58,8 @@ class Morphology(object):
         ]
     }
 
-    if have_python27: # pragma: no cover
-        @staticmethod
-        def _order_keys(pairs):
-            result = collections.OrderedDict()
-            for k,v in pairs:
-                result[k] = v
-            return result
-
     def __init__(self, text):
-        if have_python27: # pragma: no cover
-            self._dict = json.loads(text, object_pairs_hook=self._order_keys)
-        else: # pragma: no cover
-            self._dict = json.loads(text)
+        self._dict = json.loads(text, object_pairs_hook=OrderedDict)
         self._set_defaults()
         self._validate_children()
 
@@ -158,7 +147,7 @@ class Morphology(object):
         # Recreate dict without the empty default values, with a few kind
         # specific hacks to try and edit standard morphologies as
         # non-destructively as possible
-        as_dict = collections.OrderedDict()
+        as_dict = OrderedDict()
         for key in self.keys():
             if self['kind'] == 'stratum' and key == 'chunks':
                 value = copy.copy(self[key])
-- 
1.8.0.2





More information about the baserock-dev mailing list