[Python-checkins] cpython (merge 3.4 -> default): Issue20386: SocketType is again socket.socket; the IntEnum SOCK constants are

ethan.furman python-checkins at python.org
Wed Oct 15 03:58:20 CEST 2014


https://hg.python.org/cpython/rev/ef24851f340f
changeset:   93064:ef24851f340f
parent:      93062:111d535b52e8
parent:      93063:613c30ffd344
user:        Ethan Furman <ethan at stoneleaf.us>
date:        Tue Oct 14 18:57:58 2014 -0700
summary:
  Issue20386: SocketType is again socket.socket; the IntEnum SOCK constants are SocketKind

files:
  Doc/library/socket.rst  |   5 +++++
  Lib/socket.py           |  12 +++++++-----
  Lib/test/test_socket.py |  11 +++++++++--
  3 files changed, 21 insertions(+), 7 deletions(-)


diff --git a/Doc/library/socket.rst b/Doc/library/socket.rst
--- a/Doc/library/socket.rst
+++ b/Doc/library/socket.rst
@@ -192,6 +192,11 @@
 Constants
 ^^^^^^^^^
 
+   The AF_* and SOCK_* constants are now :class:`AddressFamily` and
+   :class:`SocketKind` :class:`.IntEnum` collections.
+
+   .. versionadded:: 3.4
+
 .. data:: AF_UNIX
           AF_INET
           AF_INET6
diff --git a/Lib/socket.py b/Lib/socket.py
--- a/Lib/socket.py
+++ b/Lib/socket.py
@@ -35,11 +35,13 @@
 error -- exception raised for I/O errors
 has_ipv6 -- boolean value indicating if IPv6 is supported
 
-Integer constants:
+IntEnum constants:
 
 AF_INET, AF_UNIX -- socket domains (first argument to socket() call)
 SOCK_STREAM, SOCK_DGRAM, SOCK_RAW -- socket types (second argument)
 
+Integer constants:
+
 Many other constants may be defined; these may be used in calls to
 the setsockopt() and getsockopt() methods.
 """
@@ -71,10 +73,10 @@
                          if name.isupper() and name.startswith('AF_')})
 globals().update(AddressFamily.__members__)
 
-SocketType = IntEnum('SocketType',
+SocketKind = IntEnum('SocketKind',
                      {name: value for name, value in globals().items()
                       if name.isupper() and name.startswith('SOCK_')})
-globals().update(SocketType.__members__)
+globals().update(SocketKind.__members__)
 
 
 _LOCALHOST    = '127.0.0.1'
@@ -420,7 +422,7 @@
     def type(self):
         """Read-only access to the socket type.
         """
-        return _intenum_converter(super().type, SocketType)
+        return _intenum_converter(super().type, SocketKind)
 
     if os.name == 'nt':
         def get_inheritable(self):
@@ -727,6 +729,6 @@
     for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
         af, socktype, proto, canonname, sa = res
         addrlist.append((_intenum_converter(af, AddressFamily),
-                         _intenum_converter(socktype, SocketType),
+                         _intenum_converter(socktype, SocketKind),
                          proto, canonname, sa))
     return addrlist
diff --git a/Lib/test/test_socket.py b/Lib/test/test_socket.py
--- a/Lib/test/test_socket.py
+++ b/Lib/test/test_socket.py
@@ -651,6 +651,13 @@
 
 class GeneralModuleTests(unittest.TestCase):
 
+    def test_SocketType_is_socketobject(self):
+        import _socket
+        self.assertTrue(socket.SocketType is _socket.socket)
+        s = socket.socket()
+        self.assertIsInstance(s, socket.SocketType)
+        s.close()
+
     def test_repr(self):
         s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
         with s:
@@ -1226,7 +1233,7 @@
             self.assertEqual(family, socket.AF_INET)
             self.assertEqual(str(family), 'AddressFamily.AF_INET')
             self.assertEqual(type, socket.SOCK_STREAM)
-            self.assertEqual(str(type), 'SocketType.SOCK_STREAM')
+            self.assertEqual(str(type), 'SocketKind.SOCK_STREAM')
         infos = socket.getaddrinfo(HOST, None, 0, socket.SOCK_STREAM)
         for _, socktype, _, _, _ in infos:
             self.assertEqual(socktype, socket.SOCK_STREAM)
@@ -1401,7 +1408,7 @@
         # reprs.
         with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
             self.assertEqual(str(s.family), 'AddressFamily.AF_INET')
-            self.assertEqual(str(s.type), 'SocketType.SOCK_STREAM')
+            self.assertEqual(str(s.type), 'SocketKind.SOCK_STREAM')
 
     @unittest.skipIf(os.name == 'nt', 'Will not work on Windows')
     def test_uknown_socket_family_repr(self):

-- 
Repository URL: https://hg.python.org/cpython


More information about the Python-checkins mailing list