New submission from Martin Panter: In the documentation for Python 2 and 3, socket.SocketType is defined as:
This is a Python type object that represents the socket object type. It is the same as “type(socket(...))”. In Python 2 it is a standalone “socket._socketobject” class, which holds a “_socket.socket” instance as an internal “_sock” attribute. So the documentation and implementation are consistent. But since revision 8e062e572ea4, Python 3 no longer defines SocketType directly, and just imports the “_socket.SocketType” definition, which is an alias of “_socket.socket”. The change also defines “socket.socket” as a subclass of this low-level class. The result is that SocketType is not the exact type, but only a base class: >>> s = socket.socket() >>> type(s) <class 'socket.socket' at 0x2347d48> >>> SocketType <class '_socket.socket' at 0x7ff9e2522280> >>> type(s) is SocketType # Should be true according to documentation False >>> isinstance(s, SocketType) True Should the documentation just be amended, or should SocketType be changed? If SocketType is not changed, perhaps we should document that socket.socket() is a class, not just a function, and maybe deprecate SocketType. ---------- messages: 269153 nosy: martin.panter priority: normal severity: normal status: open title: SocketType changed in Python 3 versions: Python 3.5, Python 3.6 _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue27379> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com