This reverts commit fd0351aef246f5d36e641209429e2ec093d325f8 and 9869e771704ada62bab001e729c52a36525ef081. The built-in module is a lot slower in Python 2.6.
Signed-off-by: Michael Hanselmann <[email protected]> --- lib/serializer.py | 32 +++----------------------------- test/ganeti.serializer_unittest.py | 21 --------------------- 2 files changed, 3 insertions(+), 50 deletions(-) diff --git a/lib/serializer.py b/lib/serializer.py index 090ae00..ff27261 100644 --- a/lib/serializer.py +++ b/lib/serializer.py @@ -29,18 +29,8 @@ backend (currently json). # C0103: Invalid name, since pylint doesn't see that Dump points to a # function and not a constant -_OLD_SIMPLEJSON = False - -try: - import json -except ImportError: - # The "json" module was only added in Python 2.6. Earlier versions must use - # the separate "simplejson" module. - import simplejson as json - _OLD_SIMPLEJSON = True - +import simplejson import re -import logging from ganeti import errors from ganeti import utils @@ -51,23 +41,7 @@ _JSON_INDENT = 2 _RE_EOLSP = re.compile("[ \t]+$", re.MULTILINE) -class _CustomJsonEncoder(json.JSONEncoder): - if __debug__ and not _OLD_SIMPLEJSON: - try: - _orig_fn = json.JSONEncoder._iterencode_dict - except AttributeError: - raise Exception("Can't override JSONEncoder's '_iterencode_dict'") - else: - def _iterencode_dict(self, data, *args, **kwargs): - for key in data.keys(): - if not (key is None or isinstance(key, (basestring, bool))): - raise ValueError("Key '%s' is of disallowed type '%s'" % - (key, type(key))) - - return self._orig_fn(data, *args, **kwargs) - - -def _GetJsonDumpers(_encoder_class=_CustomJsonEncoder): +def _GetJsonDumpers(_encoder_class=simplejson.JSONEncoder): """Returns two JSON functions to serialize data. @rtype: (callable, callable) @@ -119,7 +93,7 @@ def LoadJson(txt): @return: the original data """ - return json.loads(txt) + return simplejson.loads(txt) def DumpSignedJson(data, key, salt=None, key_selector=None): diff --git a/test/ganeti.serializer_unittest.py b/test/ganeti.serializer_unittest.py index 3e68efa..9d8d656 100755 --- a/test/ganeti.serializer_unittest.py +++ b/test/ganeti.serializer_unittest.py @@ -23,11 +23,9 @@ import unittest -import warnings from ganeti import serializer from ganeti import errors -from ganeti import compat import testutils @@ -109,24 +107,5 @@ class TestSerializer(testutils.GanetiTestCase): serializer.DumpJson(tdata), "mykey") -class TestInvalidDictionaryKey(unittest.TestCase): - def _Test(self, data): - if serializer._OLD_SIMPLEJSON: - # Using old "simplejson", can't really test - warnings.warn("This test requires Python 2.6 or above to function" - " correctly") - self.assertTrue(serializer.DumpJson(data)) - else: - self.assertRaises(ValueError, serializer.DumpJson, data) - - def test(self): - for value in [123, 1.1, -1, -9492.1123, -3234e-4]: - self._Test({value: ""}) - - def testAllowed(self): - for value in ["", "Hello World", None, True, False]: - self.assertTrue(serializer.DumpJson({value: ""})) - - if __name__ == '__main__': testutils.GanetiTestProgram() -- 1.7.6
