diff --git a/CHANGES.txt b/CHANGES.txt index df3e6c198a1092ac8af5e8d42c4769bf34e5d0e7_Q0hBTkdFUy50eHQ=..3e28c9467467d5d4383315345b2410933eaaef51_Q0hBTkdFUy50eHQ= 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,5 +1,7 @@ Version 2.1.2 released XXXX-XX-XX +* Correctly raise TypeError when non-string keys are used with speedups + http://code.google.com/p/simplejson/issues/detail?id=82 * Fix the endlineno, endcolno attributes of the JSONDecodeError exception. http://code.google.com/p/simplejson/issues/detail?id=81 diff --git a/simplejson/_speedups.c b/simplejson/_speedups.c index df3e6c198a1092ac8af5e8d42c4769bf34e5d0e7_c2ltcGxlanNvbi9fc3BlZWR1cHMuYw==..3e28c9467467d5d4383315345b2410933eaaef51_c2ltcGxlanNvbi9fc3BlZWR1cHMuYw== 100644 --- a/simplejson/_speedups.c +++ b/simplejson/_speedups.c @@ -2277,7 +2277,7 @@ } else { /* TODO: include repr of key */ - PyErr_SetString(PyExc_ValueError, "keys must be a string"); + PyErr_SetString(PyExc_TypeError, "keys must be a string"); goto bail; } diff --git a/simplejson/tests/test_errors.py b/simplejson/tests/test_errors.py index df3e6c198a1092ac8af5e8d42c4769bf34e5d0e7_c2ltcGxlanNvbi90ZXN0cy90ZXN0X2Vycm9ycy5weQ==..3e28c9467467d5d4383315345b2410933eaaef51_c2ltcGxlanNvbi90ZXN0cy90ZXN0X2Vycm9ycy5weQ== 100644 --- a/simplejson/tests/test_errors.py +++ b/simplejson/tests/test_errors.py @@ -3,6 +3,10 @@ import simplejson as json class TestErrors(TestCase): + def test_string_keys_error(self): + data = [{'a': 'A', 'b': (2, 4), 'c': 3.0, ('d',): 'D tuple'}] + self.assertRaises(TypeError, json.dumps, data) + def test_decode_error(self): err = None try: