diff -r 7ed9c601accd Lib/socket.py --- a/Lib/socket.py Fri Feb 06 09:59:05 2015 -0800 +++ b/Lib/socket.py Mon Feb 09 01:11:24 2015 +0200 @@ -79,6 +79,11 @@ SocketKind = IntEnum('SocketKind', if name.isupper() and name.startswith('SOCK_')}) globals().update(SocketKind.__members__) +def __reduce_ex__(self, proto): + return self.name +AddressFamily.__reduce_ex__ = __reduce_ex__ +SocketKind.__reduce_ex__ = __reduce_ex__ +del __reduce_ex__ _LOCALHOST = '127.0.0.1' _LOCALHOST_V6 = '::1' diff -r 7ed9c601accd Lib/test/test_socket.py --- a/Lib/test/test_socket.py Fri Feb 06 09:59:05 2015 -0800 +++ b/Lib/test/test_socket.py Mon Feb 09 01:11:24 2015 +0200 @@ -1377,6 +1377,11 @@ class GeneralModuleTests(unittest.TestCa with sock: for protocol in range(pickle.HIGHEST_PROTOCOL + 1): self.assertRaises(TypeError, pickle.dumps, sock, protocol) + for protocol in range(pickle.HIGHEST_PROTOCOL + 1): + family = pickle.loads(pickle.dumps(socket.AF_INET, protocol)) + self.assertEqual(family, socket.AF_INET) + type = pickle.loads(pickle.dumps(socket.SOCK_STREAM, protocol)) + self.assertEqual(type, socket.SOCK_STREAM) def test_listen_backlog(self): for backlog in 0, -1: