diff options
Diffstat (limited to 'dev-python/ujson/files/ujson-1.35-fix-ordering-of-orderdict.patch')
-rw-r--r-- | dev-python/ujson/files/ujson-1.35-fix-ordering-of-orderdict.patch | 122 |
1 files changed, 0 insertions, 122 deletions
diff --git a/dev-python/ujson/files/ujson-1.35-fix-ordering-of-orderdict.patch b/dev-python/ujson/files/ujson-1.35-fix-ordering-of-orderdict.patch deleted file mode 100644 index 37270d41e3b1..000000000000 --- a/dev-python/ujson/files/ujson-1.35-fix-ordering-of-orderdict.patch +++ /dev/null @@ -1,122 +0,0 @@ -commit c9f8318bd823ae9d44797b6b881a2b3e22cdbade -Author: Joakim Hamren <joakim.hamren@gmail.com> -Date: Tue Feb 7 02:02:38 2017 +0100 - - Fix for incorrect order when using OrderedDict - -diff --git a/python/objToJSON.c b/python/objToJSON.c -index abe6588..9e6a390 100644 ---- a/python/objToJSON.c -+++ b/python/objToJSON.c -@@ -253,8 +253,13 @@ static int Dict_iterNext(JSOBJ obj, JSONTypeContext *tc) - GET_TC(tc)->itemName = NULL; - } - -+ if (!(GET_TC(tc)->itemName = PyIter_Next(GET_TC(tc)->iterator))) -+ { -+ PRINTMARK(); -+ return 0; -+ } - -- if (!PyDict_Next ( (PyObject *)GET_TC(tc)->dictObj, &GET_TC(tc)->index, &GET_TC(tc)->itemName, &GET_TC(tc)->itemValue)) -+ if (!(GET_TC(tc)->itemValue = PyObject_GetItem(GET_TC(tc)->dictObj, GET_TC(tc)->itemName))) - { - PRINTMARK(); - return 0; -@@ -295,6 +300,7 @@ static void Dict_iterEnd(JSOBJ obj, JSONTypeContext *tc) - Py_DECREF(GET_TC(tc)->itemName); - GET_TC(tc)->itemName = NULL; - } -+ Py_CLEAR(GET_TC(tc)->iterator); - Py_DECREF(GET_TC(tc)->dictObj); - PRINTMARK(); - } -@@ -425,20 +431,23 @@ static char *SortedDict_iterGetName(JSOBJ obj, JSONTypeContext *tc, size_t *outL - - static void SetupDictIter(PyObject *dictObj, TypeContext *pc, JSONObjectEncoder *enc) - { -- if (enc->sortKeys) { -+ pc->dictObj = dictObj; -+ if (enc->sortKeys) -+ { - pc->iterEnd = SortedDict_iterEnd; - pc->iterNext = SortedDict_iterNext; - pc->iterGetValue = SortedDict_iterGetValue; - pc->iterGetName = SortedDict_iterGetName; -+ pc->index = 0; - } -- else { -+ else -+ { - pc->iterEnd = Dict_iterEnd; - pc->iterNext = Dict_iterNext; - pc->iterGetValue = Dict_iterGetValue; - pc->iterGetName = Dict_iterGetName; -+ pc->iterator = PyObject_GetIter(dictObj); - } -- pc->dictObj = dictObj; -- pc->index = 0; - } - - static void Object_beginTypeContext (JSOBJ _obj, JSONTypeContext *tc, JSONObjectEncoder *enc) -@@ -446,7 +455,8 @@ static void Object_beginTypeContext (JSOBJ _obj, JSONTypeContext *tc, JSONObject - PyObject *obj, *objRepr, *exc; - TypeContext *pc; - PRINTMARK(); -- if (!_obj) { -+ if (!_obj) -+ { - tc->type = JT_INVALID; - return; - } -diff --git a/tests/tests.py b/tests/tests.py -index cd928e6..b7e46af 100644 ---- a/tests/tests.py -+++ b/tests/tests.py -@@ -10,6 +10,8 @@ import json - import math - import time - import pytz -+from collections import OrderedDict -+ - if six.PY2: - import unittest2 as unittest - else: -@@ -383,6 +385,10 @@ class UltraJSONTests(unittest.TestCase): - input = -float('inf') - self.assertRaises(OverflowError, ujson.encode, input) - -+ def test_encodeOrderedDict(self): -+ input = OrderedDict([(1, 1), (0, 0), (8, 8), (2, 2)]) -+ self.assertEqual('{"1":1,"0":0,"8":8,"2":2}', ujson.encode(input)) -+ - def test_decodeJibberish(self): - input = "fdsa sda v9sa fdsa" - self.assertRaises(ValueError, ujson.decode, input) -@@ -668,7 +674,7 @@ class UltraJSONTests(unittest.TestCase): - d = {u'key': JSONTest()} - output = ujson.encode(d) - dec = ujson.decode(output) -- self.assertEquals(dec, {u'key': output_text}) -+ self.assertEqual(dec, {u'key': output_text}) - - def test_object_with_json_unicode(self): - # If __json__ returns a string, then that string -@@ -681,7 +687,7 @@ class UltraJSONTests(unittest.TestCase): - d = {u'key': JSONTest()} - output = ujson.encode(d) - dec = ujson.decode(output) -- self.assertEquals(dec, {u'key': output_text}) -+ self.assertEqual(dec, {u'key': output_text}) - - def test_object_with_complex_json(self): - # If __json__ returns a string, then that string -@@ -694,7 +700,7 @@ class UltraJSONTests(unittest.TestCase): - d = {u'key': JSONTest()} - output = ujson.encode(d) - dec = ujson.decode(output) -- self.assertEquals(dec, {u'key': obj}) -+ self.assertEqual(dec, {u'key': obj}) - - def test_object_with_json_type_error(self): - # __json__ must return a string, otherwise it should raise an error. |