THRIFT-5777: python fix mismatched timeout exceptions

Client: ["python"]
diff --git a/lib/py/src/transport/TSocket.py b/lib/py/src/transport/TSocket.py
index 50ee67e..c8b4287 100644
--- a/lib/py/src/transport/TSocket.py
+++ b/lib/py/src/transport/TSocket.py
@@ -151,6 +151,8 @@
     def read(self, sz):
         try:
             buff = self.handle.recv(sz)
+        except socket.timeout as e:
+            raise TTransportException(type=TTransportException.TIMED_OUT, message="read timeout", inner=e)
         except socket.error as e:
             if (e.args[0] == errno.ECONNRESET and
                     (sys.platform == 'darwin' or sys.platform.startswith('freebsd'))):
@@ -161,8 +163,6 @@
                 self.close()
                 # Trigger the check to raise the END_OF_FILE exception below.
                 buff = ''
-            elif e.args[0] == errno.ETIMEDOUT:
-                raise TTransportException(type=TTransportException.TIMED_OUT, message="read timeout", inner=e)
             else:
                 raise TTransportException(message="unexpected exception", inner=e)
         if len(buff) == 0:
diff --git a/lib/py/test/test_socket.py b/lib/py/test/test_socket.py
index b732653..ab56a6e 100644
--- a/lib/py/test/test_socket.py
+++ b/lib/py/test/test_socket.py
@@ -11,6 +11,24 @@
 
 
 class TSocketTest(unittest.TestCase):
+    def test_socket_readtimeout_exception(self):
+        acc = ServerAcceptor(TServerSocket(port=0))
+        acc.start()
+
+        sock = TSocket(host="localhost", port=acc.port)
+        sock.open()
+        sock.setTimeout(1)
+        sock.write(b"sleep")
+
+        with self.assertRaises(TTransportException) as ctx:
+            sock.read(5)
+        exc = ctx.exception
+        self.assertEqual(exc.message, "read timeout")
+
+        acc.client.close() # this also blocks until the other thread is done
+        acc.close()
+        sock.close()
+
     def test_isOpen_checks_for_readability(self):
         # https://docs.python.org/3/library/socket.html#notes-on-socket-timeouts
         # https://docs.python.org/3/library/socket.html#socket.socket.settimeout
diff --git a/lib/py/test/test_sslsocket.py b/lib/py/test/test_sslsocket.py
index a5ea06a..2cbf5f8 100644
--- a/lib/py/test/test_sslsocket.py
+++ b/lib/py/test/test_sslsocket.py
@@ -19,6 +19,7 @@
 
 import inspect
 import logging
+import time
 import os
 import platform
 import ssl
@@ -76,7 +77,9 @@
         try:
             self._client = self._server.accept()
             if self._client:
-                self._client.read(5)  # hello
+                data = self._client.read(5)  # hello/sleep
+                if data == b"sleep":
+                    time.sleep(2)
                 self._client.write(b"there")
         except Exception:
             logging.exception('error on server side (%s):' % self.name)