Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[doc] SocketType changed in Python 3 #71566

Open
vadmium opened this issue Jun 24, 2016 · 6 comments
Open

[doc] SocketType changed in Python 3 #71566

vadmium opened this issue Jun 24, 2016 · 6 comments
Labels
3.10 only security fixes 3.11 only security fixes 3.12 bugs and security fixes docs Documentation in the Doc dir easy

Comments

@vadmium
Copy link
Member

vadmium commented Jun 24, 2016

BPO 27379
Nosy @vadmium, @shihai1991
PRs
  • bpo-27379: In order to keep backward compatibility, update SocketType's type #14710
  • Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.

    Show more details

    GitHub fields:

    assignee = None
    closed_at = None
    created_at = <Date 2016-06-24.03:19:57.757>
    labels = ['3.8', '3.9']
    title = 'SocketType changed in Python 3'
    updated_at = <Date 2020-01-17.12:28:51.267>
    user = 'https://github.com/vadmium'

    bugs.python.org fields:

    activity = <Date 2020-01-17.12:28:51.267>
    actor = 'cheryl.sabella'
    assignee = 'none'
    closed = False
    closed_date = None
    closer = None
    components = []
    creation = <Date 2016-06-24.03:19:57.757>
    creator = 'martin.panter'
    dependencies = []
    files = []
    hgrepos = []
    issue_num = 27379
    keywords = ['patch']
    message_count = 3.0
    messages = ['269153', '347691', '349126']
    nosy_count = 2.0
    nosy_names = ['martin.panter', 'shihai1991']
    pr_nums = ['14710']
    priority = 'normal'
    resolution = None
    stage = 'patch review'
    status = 'open'
    superseder = None
    type = None
    url = 'https://bugs.python.org/issue27379'
    versions = ['Python 3.8', 'Python 3.9']

    @vadmium
    Copy link
    Member Author

    vadmium commented Jun 24, 2016

    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.

    @shihai1991
    Copy link
    Member

    In order to keep back compatible, I would prefer to update SocketType ;)

    @shihai1991
    Copy link
    Member

    ping

    @csabella csabella added 3.8 only security fixes 3.9 only security fixes labels Jan 17, 2020
    @ezio-melotti ezio-melotti transferred this issue from another repository Apr 10, 2022
    @iritkatriel
    Copy link
    Member

    I don't think backwards compatibility with python 2 matters anymore. A doc fix should do.

    @iritkatriel iritkatriel changed the title SocketType changed in Python 3 [doc] SocketType changed in Python 3 May 19, 2022
    @iritkatriel iritkatriel added docs Documentation in the Doc dir 3.11 only security fixes 3.10 only security fixes 3.12 bugs and security fixes and removed 3.9 only security fixes 3.8 only security fixes labels May 19, 2022
    @shihai1991
    Copy link
    Member

    I don't think backwards compatibility with python 2 matters anymore. A doc fix should do.

    Agree. I closed #14710.

    @xiaochen7
    Copy link
    Contributor

    In the previous commit, the SocketType was changed to the base class for the Socket object type. I created a PR to update the SocketType documentation. Please correct me if there is a different opinion.

    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
    Labels
    3.10 only security fixes 3.11 only security fixes 3.12 bugs and security fixes docs Documentation in the Doc dir easy
    Projects
    None yet
    Development

    No branches or pull requests

    5 participants