| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
Sorry, something went wrong.
There was a problem hiding this comment.
SocketType isn't deprecated right now, so we can't remove it yet.
Please update the PR to raise a DeprecationWarning when accessing a SocketType (you can do this via a PEP-562 __getattr__), and then add the documentation notes.
Sorry, something went wrong.
|
Maybe we can wait for the promoter to answer. I won't open this PR before I decide whether to abandon or remove it. |
Sorry, something went wrong.
|
I looked at the code again and agree with my opinion from 2021: it should be deprecated and eventually removed. It could be useful to do a code search (e.g., GitHub code search, Hugo's top 5k pypi packages tool) to see how the name is being used. A possible approach to deprecation could be to remove the current line adding it to _socket, and add a module __getattr__ to both the _socket and socket modules that raises a DeprecationWarning and then returns _socket.socket. |
Sorry, something went wrong.
|
Okay, I'll re-revise this PR so that it throws a warning when calling this type. Call me back in this PR when we consider removing it in the future :) |
Sorry, something went wrong.
|
It seems that the module __getattr__ only works for attributes that do not exist, which makes it necessary to remove the export in socketmodule. But it triggers a deprecation warning. Emmm... |
Sorry, something went wrong.
It works for any kind of attributes. Please, read PEP-562 for examples on how to use it. |
Sorry, something went wrong.
I read the document and modified it. But why does it trigger this Traceback (most recent call last):
File "D:\a\cpython\cpython\Lib\test\pythoninfo.py", line 1062, in collect_info
collect_func(info_add)
~~~~~~~~~~~~^^^^^^^^^^
File "D:\a\cpython\cpython\Lib\test\pythoninfo.py", line 727, in collect_test_socket
from test import test_socket
File "D:\a\cpython\cpython\Lib\test\test_socket.py", line 201, in <module>
HAVE_SOCKET_CAN = _have_socket_can()
File "D:\a\cpython\cpython\Lib\test\test_socket.py", line 104, in _have_socket_can
s = socket.socket(socket.PF_CAN, socket.SOCK_RAW, socket.CAN_RAW)
File "D:\a\cpython\cpython\Lib\socket.py", line 242, in __init__
_socket.socket.__init__(self, family, type, proto, fileno)
~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: 'NoneType' object cannot be interpreted as an integer
Edit |
Sorry, something went wrong.
|
I think you need to raise an AttributeError from the __getattr__ if it isn't SocketType. |
Sorry, something went wrong.
There was a problem hiding this comment.
@rruuaanng: Did you try your change before updating the PR? It doesn't work, no warning is emitted:
$ ./python >>> import _socket >>> _socket.SocketType <class '_socket.socket'>
I suggest to mark the PR as a draft since it changes many times in a short time.
Sorry, something went wrong.
|
@vstinner >>> import _socket >>> _socket.SocketType <python-input-1>:1: DeprecationWarning: It will be removed in 3.16. Use socket.socket type instead _socket.SocketType <class '_socket.socket'> |
Sorry, something went wrong.
Right. Please test your change before publishing it. |
Sorry, something went wrong.
|
Please allow me to check again to see if there are any unresolved comments to decide whether we should remove the DO_NOT_MERGE tag. |
Sorry, something went wrong.
|
test_socket and test_pickle are failing on the CI Ubuntu. |
Sorry, something went wrong.
|
Oh.... I don't understand, I was looking for what was throwing the error so I ran the failing tests locally and it seemed like they all worked fine on my computer. test_socket.py PS E:\code\github\cpython\alpha\cpython-main> ./python -m unittest Lib\test\test_socket.py Running Release|x64 interpreter... .ss.sssssssss.......sssssssss.......................sss...ssss........ssssss.....................s...........................E:\code\github\cpython\alpha\cpython-main\Lib\socket.py:74: DeprecationWarning: _socket.SocketType is deprecated and will be removed in Python 3.16. Use socket.socket instead return _socket.SocketType .s........s...s............sss.......s..........ssssss..s.s.ssssssssssss..........sssssss...............s..ss.....sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss...........ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss...........s..ss..ssssss.s.....sssssssss............................................... ---------------------------------------------------------------------- Ran 732 tests in 69.918s OK (skipped=485) test_pickle.py PS E:\code\github\cpython\alpha\cpython-main> ./python -m unittest Lib\test\test_pickle.py Running Release|x64 interpreter... ...........s.................................................................................................................................s...........................................................................................................................................................s........................sss..............sss.......Can't import module 'multiprocessing.popen_fork': module 'os' has no attribute 'WNOHANG' No module named '_gdbm' No module named '_gdbm' No module named 'dbm.bsd' No module named '_dummy_thread' No module named '_dbm' No module named '_dbm' .No module named '_dummy_thread' No module named 'dbm.bsd' No module named '_dbm' No module named '_gdbm' No module named '_dbm' No module named '_gdbm' ..Can't import module 'multiprocessing.popen_fork': module 'os' has no attribute 'WNOHANG' E:\code\github\cpython\alpha\cpython-main\Lib\socket.py:74: DeprecationWarning: _socket.SocketType is deprecated and will be removed in Python 3.16. Use socket.socket instead return _socket.SocketType .No module named '_dummy_thread' No module named '_dummy_thread' No module named 'dbm.bsd' No module named 'dbm.bsd' No module named '_dbm' No module named '_dbm' No module named '_gdbm' No module named '_gdbm' .Can't import module 'multiprocessing.popen_fork': module 'os' has no attribute 'WNOHANG' E:\code\github\cpython\alpha\cpython-main\Lib\socket.py:74: DeprecationWarning: _socket.SocketType is deprecated and will be removed in Python 3.16. Use socket.socket instead return _socket.SocketType ....s..........................................................................................................................s...............................sssss....sss......................sss...........................................................................................................s............................................................................................................................s......................................................sss..............sss........ ---------------------------------------------------------------------- Ran 865 tests in 13.836s OK (skipped=30) I tried removing my changes and ran test_pickle.py again, but the only difference was that the deprecation was gone. PS E:\code\github\cpython\alpha\cpython-main> ./python -m unittest Lib\test\test_pickle.py Running Release|x64 interpreter... ...........s.................................................................................................................................s...........................................................................................................................................................s........................sss..............sss.......No module named '_gdbm' Can't import module 'multiprocessing.popen_fork': module 'os' has no attribute 'WNOHANG' No module named '_dbm' No module named 'dbm.bsd' No module named '_dummy_thread' No module named '_gdbm' No module named '_dbm' .No module named '_dummy_thread' No module named 'dbm.bsd' No module named '_dbm' No module named '_gdbm' No module named '_dbm' No module named '_gdbm' ..Can't import module 'multiprocessing.popen_fork': module 'os' has no attribute 'WNOHANG' .No module named '_dummy_thread' No module named '_dummy_thread' No module named 'dbm.bsd' No module named 'dbm.bsd' No module named '_dbm' No module named '_dbm' No module named '_gdbm' No module named '_gdbm' .Can't import module 'multiprocessing.popen_fork': module 'os' has no attribute 'WNOHANG' ....s..........................................................................................................................s...............................sssss....sss......................sss...........................................................................................................s............................................................................................................................s......................................................sss..............sss........ ---------------------------------------------------------------------- Ran 865 tests in 15.947s OK (skipped=30) test_socket.py passes the test perfectly fine and throws the deprecation, but test_pickle.py seems to throw an error that seems unrelated to the PR. But it is undeniable that my CI did not pass :( Edit test_pickle.py threw the same exception as my local test results on all three platforms. |
Sorry, something went wrong.
| PyErr_Warn(PyExc_DeprecationWarning, "_socket.SocketType is deprecated and " | ||
| "will be removed in Python 3.16. " | ||
| "Use socket.socket instead"); | ||
| return state != NULL ? (PyObject *)state->sock_type : NULL; |
There was a problem hiding this comment.
Should sock_type get INCREF'd? I'm assuming its a static type and therefore immortal, but we should add a comment clarifying that.
Sorry, something went wrong.
There was a problem hiding this comment.
I tried to search for situations where sock_type is used in socketmodule.c. In the scenario where Py_DECREF is used, only socket_clear uses Py_DECREF. And sock_type does not use Py_INCREF. And in other parts, it seems that there is no special comment.
Sorry, something went wrong.
|
This PR is stale because it has been open for 30 days with no activity. |
Sorry, something went wrong.
| Back | FazBrowse Home | New Git URL |
cc @JelleZijlstra