diff -r cf70f030a744 Lib/multiprocessing/connection.py --- a/Lib/multiprocessing/connection.py Wed Jun 18 23:07:46 2014 -0400 +++ b/Lib/multiprocessing/connection.py Mon Jun 23 22:01:21 2014 +0300 @@ -453,12 +453,22 @@ s = self._conn.recv_bytes() return self._loads(s) -def _xml_dumps(obj): - return xmlrpclib.dumps((obj,), None, None, None, 1).encode('utf8') +try: + unicode +except NameError: + def _xml_dumps(obj): + return xmlrpclib.dumps((obj,), None, None, None, 1) -def _xml_loads(s): - (obj,), method = xmlrpclib.loads(s.decode('utf8')) - return obj + def _xml_loads(s): + (obj,), method = xmlrpclib.loads(s) + return obj +else: + def _xml_dumps(obj): + return xmlrpclib.dumps((obj,), None, None, None, 1).encode('utf8') + + def _xml_loads(s): + (obj,), method = xmlrpclib.loads(s.decode('utf8')) + return obj class XmlListener(Listener): def accept(self): diff -r cf70f030a744 Lib/multiprocessing/sharedctypes.py --- a/Lib/multiprocessing/sharedctypes.py Wed Jun 18 23:07:46 2014 -0400 +++ b/Lib/multiprocessing/sharedctypes.py Mon Jun 23 22:01:21 2014 +0300 @@ -46,13 +46,18 @@ # typecode_to_type = { - 'c': ctypes.c_char, 'u': ctypes.c_wchar, + 'c': ctypes.c_char, 'b': ctypes.c_byte, 'B': ctypes.c_ubyte, 'h': ctypes.c_short, 'H': ctypes.c_ushort, 'i': ctypes.c_int, 'I': ctypes.c_uint, 'l': ctypes.c_long, 'L': ctypes.c_ulong, 'f': ctypes.c_float, 'd': ctypes.c_double } +try: + typecode_to_type['u'] = ctypes.c_wchar +except AttributeError: + pass + # # diff -r cf70f030a744 Lib/test/test_multiprocessing.py --- a/Lib/test/test_multiprocessing.py Wed Jun 18 23:07:46 2014 -0400 +++ b/Lib/test/test_multiprocessing.py Mon Jun 23 22:01:21 2014 +0300 @@ -2392,12 +2392,12 @@ name = os.path.join(os.path.dirname(__file__), 'mp_fork_bomb.py') if WIN32: rc, out, err = test.script_helper.assert_python_failure(name) - self.assertEqual('', out.decode('ascii')) - self.assertIn('RuntimeError', err.decode('ascii')) + self.assertEqual('', out) + self.assertIn('RuntimeError', err) else: rc, out, err = test.script_helper.assert_python_ok(name) - self.assertEqual('123', out.decode('ascii').rstrip()) - self.assertEqual('', err.decode('ascii')) + self.assertEqual('123', out.rstrip()) + self.assertEqual('', err) # # Issue 12098: check sys.flags of child matches that for parent @@ -2421,6 +2421,7 @@ flags = (tuple(sys.flags), grandchild_flags) print(json.dumps(flags)) + @test_support.requires_unicode # XXX json needs unicode support def test_flags(self): import json, subprocess # start child process using unusual flags