Title: SocketType changed in Python 3
Type: Stage: patch review
Components: Versions: Python 3.9, Python 3.8
Status: open Resolution:
Dependencies: Superseder:
Assigned To: Nosy List: martin.panter, shihai1991
Priority: normal Keywords: patch

Created on 2016-06-24 03:19 by martin.panter, last changed 2020-01-17 12:28 by cheryl.sabella.

Pull Requests
URL Status Linked Edit
PR 14710 open shihai1991, 2019-07-11 17:06
Messages (3)
msg269153 - (view) Author: Martin Panter (martin.panter) * (Python committer) Date: 2016-06-24 03:19
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
>>> isinstance(s, SocketType)

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.
msg347691 - (view) Author: hai shi (shihai1991) * Date: 2019-07-11 17:09
In order to keep back compatible, I would prefer to update SocketType ;)
msg349126 - (view) Author: hai shi (shihai1991) * Date: 2019-08-06 17:48
Date User Action Args
2020-01-17 12:28:51cheryl.sabellasetversions: + Python 3.8, Python 3.9, - Python 3.5, Python 3.6
2019-08-06 17:48:34shihai1991setmessages: + msg349126
2019-07-11 17:09:09shihai1991setnosy: + shihai1991
messages: + msg347691
2019-07-11 17:06:52shihai1991setkeywords: + patch
stage: patch review
pull_requests: + pull_request14510
2016-06-24 03:19:57martin.pantercreate