RFE #567972: Socket objects' family, type and proto properties are
now exposed via new get...() methods.
diff --git a/Lib/socket.py b/Lib/socket.py
index ee2457f..3dc59c4 100644
--- a/Lib/socket.py
+++ b/Lib/socket.py
@@ -183,6 +183,24 @@
and bufsize arguments are as for the built-in open() function."""
return _fileobject(self._sock, mode, bufsize)
+ def getfamily(self):
+ """getfamily() -> socket family
+
+ Return the socket family."""
+ return self._sock.family
+
+ def gettype(self):
+ """gettype() -> socket type
+
+ Return the socket type."""
+ return self._sock.type
+
+ def getproto(self):
+ """getproto() -> socket protocol
+
+ Return the socket protocol."""
+ return self._sock.proto
+
_s = ("def %s(self, *args): return self._sock.%s(*args)\n\n"
"%s.__doc__ = _realsocket.%s.__doc__\n")
for _m in _socketmethods:
diff --git a/Lib/test/test_socket.py b/Lib/test/test_socket.py
index 1899e78..5a851fc 100644
--- a/Lib/test/test_socket.py
+++ b/Lib/test/test_socket.py
@@ -469,6 +469,14 @@
sock.close()
self.assertRaises(socket.error, sock.send, "spam")
+ def testNewGetMethods(self):
+ # testing getfamily(), gettype() and getprotocol()
+ sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+ self.assertEqual(sock.getfamily(), socket.AF_INET)
+ self.assertEqual(sock.gettype(), socket.SOCK_STREAM)
+ self.assertEqual(sock.getproto(), 0)
+ sock.close()
+
class BasicTCPTest(SocketConnectedTest):
def __init__(self, methodName='runTest'):