mtimedb: enable JSON write support v2.2.0_alpha94
authorZac Medico <zmedico@gentoo.org>
Thu, 22 Mar 2012 21:36:36 +0000 (14:36 -0700)
committerZac Medico <zmedico@gentoo.org>
Thu, 22 Mar 2012 21:36:36 +0000 (14:36 -0700)
JSON read support has been available since portage-2.1.10.49.

pym/portage/util/mtimedb.py

index 4ccea2438e0dbabfee6fc9936c30ad16eb436228..736e314d5fb1e36934c8d2429498d0495e07c605 100644 (file)
@@ -24,8 +24,8 @@ from portage.util import apply_secpass_permissions, atomic_ofstream, writemsg
 
 class MtimeDB(dict):
 
-       # Enable this after JSON read has been supported for some time.
-       _json_write = False
+       # JSON read support has been available since portage-2.1.10.49.
+       _json_write = True
 
        _json_write_opts = {
                "ensure_ascii": False,
@@ -60,19 +60,19 @@ class MtimeDB(dict):
                d = None
                if content:
                        try:
-                               mypickle = pickle.Unpickler(io.BytesIO(content))
-                               try:
-                                       mypickle.find_global = None
-                               except AttributeError:
-                                       # TODO: If py3k, override Unpickler.find_class().
-                                       pass
-                               d = mypickle.load()
+                               d = json.loads(_unicode_decode(content,
+                                       encoding=_encodings['repo.content'], errors='strict'))
                        except SystemExit:
                                raise
                        except Exception as e:
                                try:
-                                       d = json.loads(_unicode_decode(content,
-                                               encoding=_encodings['repo.content'], errors='strict'))
+                                       mypickle = pickle.Unpickler(io.BytesIO(content))
+                                       try:
+                                               mypickle.find_global = None
+                                       except AttributeError:
+                                               # Python >=3
+                                               pass
+                                       d = mypickle.load()
                                except SystemExit:
                                        raise
                                except Exception: