--- omnijson/packages/simplejson/decoder.py.orig	2011-06-19 16:43:47 UTC
+++ omnijson/packages/simplejson/decoder.py
@@ -87,8 +87,8 @@ _CONSTANTS = {
 
 STRINGCHUNK = re.compile(r'(.*?)(["\\\x00-\x1f])', FLAGS)
 BACKSLASH = {
-    '"': u'"', '\\': u'\\', '/': u'/',
-    'b': u'\b', 'f': u'\f', 'n': u'\n', 'r': u'\r', 't': u'\t',
+    '"': '"', '\\': '\\', '/': '/',
+    'b': '\b', 'f': '\f', 'n': '\n', 'r': '\r', 't': '\t',
 }
 
 DEFAULT_ENCODING = "utf-8"
@@ -117,8 +117,8 @@ def py_scanstring(s, end, encoding=None, strict=True,
         content, terminator = chunk.groups()
         # Content is contains zero or more unescaped string characters
         if content:
-            if not isinstance(content, unicode):
-                content = unicode(content, encoding)
+            if not isinstance(content, str):
+                content = str(content, encoding)
             _append(content)
         # Terminator is the end of string, a literal control character,
         # or a backslash denoting that an escape sequence follows
@@ -164,11 +164,11 @@ def py_scanstring(s, end, encoding=None, strict=True,
                 uni2 = int(esc2, 16)
                 uni = 0x10000 + (((uni - 0xd800) << 10) | (uni2 - 0xdc00))
                 next_end += 6
-            char = unichr(uni)
+            char = chr(uni)
             end = next_end
         # Append the unescaped character
         _append(char)
-    return u''.join(chunks), end
+    return ''.join(chunks), end
 
 
 # Use speedup if available
@@ -177,10 +177,11 @@ scanstring = c_scanstring or py_scanstring
 WHITESPACE = re.compile(r'[ \t\n\r]*', FLAGS)
 WHITESPACE_STR = ' \t\n\r'
 
-def JSONObject((s, end), encoding, strict, scan_once, object_hook,
+def JSONObject(xxx_todo_changeme, encoding, strict, scan_once, object_hook,
         object_pairs_hook, memo=None,
         _w=WHITESPACE.match, _ws=WHITESPACE_STR):
     # Backwards compatibility
+    (s, end) = xxx_todo_changeme
     if memo is None:
         memo = {}
     memo_get = memo.setdefault
@@ -269,7 +270,8 @@ def JSONObject((s, end), encoding, strict, scan_once, 
         pairs = object_hook(pairs)
     return pairs, end
 
-def JSONArray((s, end), scan_once, _w=WHITESPACE.match, _ws=WHITESPACE_STR):
+def JSONArray(xxx_todo_changeme1, scan_once, _w=WHITESPACE.match, _ws=WHITESPACE_STR):
+    (s, end) = xxx_todo_changeme1
     values = []
     nextchar = s[end:end + 1]
     if nextchar in _ws:
--- omnijson/packages/simplejson/encoder.py.orig	2011-06-19 16:43:47 UTC
+++ omnijson/packages/simplejson/encoder.py
@@ -39,7 +39,7 @@ def encode_basestring(s):
         s = s.decode('utf-8')
     def replace(match):
         return ESCAPE_DCT[match.group(0)]
-    return u'"' + ESCAPE.sub(replace, s) + u'"'
+    return '"' + ESCAPE.sub(replace, s) + '"'
 
 
 def py_encode_basestring_ascii(s):
@@ -160,7 +160,7 @@ class JSONEncoder(object):
         self.allow_nan = allow_nan
         self.sort_keys = sort_keys
         self.use_decimal = use_decimal
-        if isinstance(indent, (int, long)):
+        if isinstance(indent, int):
             indent = ' ' * indent
         self.indent = indent
         if separators is not None:
@@ -200,7 +200,7 @@ class JSONEncoder(object):
 
         """
         # This is for extremely simple cases and benchmarks.
-        if isinstance(o, basestring):
+        if isinstance(o, str):
             if isinstance(o, str):
                 _encoding = self.encoding
                 if (_encoding is not None
@@ -219,7 +219,7 @@ class JSONEncoder(object):
         if self.ensure_ascii:
             return ''.join(chunks)
         else:
-            return u''.join(chunks)
+            return ''.join(chunks)
 
     def iterencode(self, o, _one_shot=False):
         """Encode the given object and yield each string
@@ -302,7 +302,7 @@ class JSONEncoderForHTML(JSONEncoder):
         if self.ensure_ascii:
             return ''.join(chunks)
         else:
-            return u''.join(chunks)
+            return ''.join(chunks)
 
     def iterencode(self, o, _one_shot=False):
         chunks = super(JSONEncoderForHTML, self).iterencode(o, _one_shot)
@@ -317,10 +317,8 @@ def _make_iterencode(markers, _default, _encoder, _ind
         _key_separator, _item_separator, _sort_keys, _skipkeys, _one_shot,
         _use_decimal,
         ## HACK: hand-optimized bytecode; turn globals into locals
-        False=False,
-        True=True,
         ValueError=ValueError,
-        basestring=basestring,
+        str=str,
         Decimal=Decimal,
         dict=dict,
         float=float,
@@ -328,8 +326,7 @@ def _make_iterencode(markers, _default, _encoder, _ind
         int=int,
         isinstance=isinstance,
         list=list,
-        long=long,
-        str=str,
+        long=int,
         tuple=tuple,
     ):
 
@@ -357,7 +354,7 @@ def _make_iterencode(markers, _default, _encoder, _ind
                 first = False
             else:
                 buf = separator
-            if isinstance(value, basestring):
+            if isinstance(value, str):
                 yield buf + _encoder(value)
             elif value is None:
                 yield buf + 'null'
@@ -365,7 +362,7 @@ def _make_iterencode(markers, _default, _encoder, _ind
                 yield buf + 'true'
             elif value is False:
                 yield buf + 'false'
-            elif isinstance(value, (int, long)):
+            elif isinstance(value, int):
                 yield buf + str(value)
             elif isinstance(value, float):
                 yield buf + _floatstr(value)
@@ -408,12 +405,12 @@ def _make_iterencode(markers, _default, _encoder, _ind
             item_separator = _item_separator
         first = True
         if _sort_keys:
-            items = dct.items()
+            items = list(dct.items())
             items.sort(key=lambda kv: kv[0])
         else:
-            items = dct.iteritems()
+            items = iter(dct.items())
         for key, value in items:
-            if isinstance(key, basestring):
+            if isinstance(key, str):
                 pass
             # JavaScript is weakly typed for these, so it makes sense to
             # also allow them.  Many encoders seem to do something like this.
@@ -425,7 +422,7 @@ def _make_iterencode(markers, _default, _encoder, _ind
                 key = 'false'
             elif key is None:
                 key = 'null'
-            elif isinstance(key, (int, long)):
+            elif isinstance(key, int):
                 key = str(key)
             elif _skipkeys:
                 continue
@@ -437,7 +434,7 @@ def _make_iterencode(markers, _default, _encoder, _ind
                 yield item_separator
             yield _encoder(key)
             yield _key_separator
-            if isinstance(value, basestring):
+            if isinstance(value, str):
                 yield _encoder(value)
             elif value is None:
                 yield 'null'
@@ -445,7 +442,7 @@ def _make_iterencode(markers, _default, _encoder, _ind
                 yield 'true'
             elif value is False:
                 yield 'false'
-            elif isinstance(value, (int, long)):
+            elif isinstance(value, int):
                 yield str(value)
             elif isinstance(value, float):
                 yield _floatstr(value)
@@ -468,7 +465,7 @@ def _make_iterencode(markers, _default, _encoder, _ind
             del markers[markerid]
 
     def _iterencode(o, _current_indent_level):
-        if isinstance(o, basestring):
+        if isinstance(o, str):
             yield _encoder(o)
         elif o is None:
             yield 'null'
@@ -476,7 +473,7 @@ def _make_iterencode(markers, _default, _encoder, _ind
             yield 'true'
         elif o is False:
             yield 'false'
-        elif isinstance(o, (int, long)):
+        elif isinstance(o, int):
             yield str(o)
         elif isinstance(o, float):
             yield _floatstr(o)
