Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

gh-133644: removePyWeakref_GetObject andPyWeakref_GET_OBJECT#133657

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 ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Open
picnixz wants to merge14 commits intopython:main
base:main
Choose a base branch
Loading
frompicnixz:cleanup/315/deprecated-weakrefs-133644

Conversation

picnixz
Copy link
Member

@picnixzpicnixz commentedMay 8, 2025
edited by github-actionsbot
Loading

@vstinner
Copy link
Member

vstinner commentedMay 8, 2025
edited
Loading

UPDATE: I excluded manually projects which refer to the functions without using them. I also excludedpythoncapi_compat.h file which excludes Pillow.

This change is a little bit scary:30 projects in PyPI top 8,000 projects refer to these 2 functions:

  • PyQt5 (5.15.11)
  • PyQt6 (6.8.0)
  • amplpy (0.14.0)
  • apsw (3.48.0.0)
  • awscrt (0.23.7)
  • casadi (3.6.7)
  • catboost (1.2.7)
  • cvxpy (1.6.0)
  • gdal (3.10.1)
  • igraph (0.11.8)
  • m2crypto (0.43.0)
  • mecab_python3 (1.0.10)
  • nanobind (2.4.0)
  • psycopg2 (2.9.10)
  • psycopg2-binary (2.9.10)
  • pyarrow (19.0.0)
  • pygame (2.6.1)
  • pygraphviz (1.14)
  • pyqt5_sip (12.16.1)
  • pysqlite3 (0.5.4)
  • python_crfsuite (0.9.11)
  • sentencepiece (0.2.0)
  • sip (6.9.1)
  • sqlean_py (3.47.0)
  • tensorstore (0.1.71)
  • ufal.udpipe (1.3.1.1)
  • wxPython (4.2.2)
amplpy-0.14.0.tar.gz: amplpy-0.14.0/amplpy/amplpython/cppinterface/amplpythonPYTHON_wrap.cxx: pyobj = PyWeakref_GET_OBJECT(pyobj);amplpy-0.14.0.tar.gz: amplpy-0.14.0/amplpy/amplpython/cppinterface/amplpythonPYTHON_wrap.cxx: PyObject *wobj = PyWeakref_GET_OBJECT(pyobj);apsw-3.48.0.0.tar.gz: apsw-3.48.0.0/src/faultinject.h: #undef PyWeakref_GetObjectapsw-3.48.0.0.tar.gz: apsw-3.48.0.0/src/faultinject.h: #define PyWeakref_GetObject(...) \apsw-3.48.0.0.tar.gz: apsw-3.48.0.0/src/faultinject.h: __auto_type _res_PyWeakref_GetObject = 0 ? PyWeakref_GetObject(__VA_ARGS__) : 0;                                                                          \apsw-3.48.0.0.tar.gz: apsw-3.48.0.0/src/faultinject.h: _res_PyWeakref_GetObject = (typeof (_res_PyWeakref_GetObject))APSW_FaultInjectControl("PyWeakref_GetObject", __FILE__, __func__, __LINE__, #__VA_ARGS__); \apsw-3.48.0.0.tar.gz: apsw-3.48.0.0/src/faultinject.h: if ((typeof (_res_PyWeakref_GetObject))0x1FACADE == _res_PyWeakref_GetObject)                                                                             \apsw-3.48.0.0.tar.gz: apsw-3.48.0.0/src/faultinject.h: _res_PyWeakref_GetObject = PyWeakref_GetObject(__VA_ARGS__);                                                                                           \apsw-3.48.0.0.tar.gz: apsw-3.48.0.0/src/faultinject.h: else if ((typeof(_res_PyWeakref_GetObject))0x2FACADE == _res_PyWeakref_GetObject)                                                                         \apsw-3.48.0.0.tar.gz: apsw-3.48.0.0/src/faultinject.h: PyWeakref_GetObject(__VA_ARGS__);                                                                                                                     \apsw-3.48.0.0.tar.gz: apsw-3.48.0.0/src/faultinject.h: _res_PyWeakref_GetObject = (typeof (_res_PyWeakref_GetObject))18;                                                                                     \apsw-3.48.0.0.tar.gz: apsw-3.48.0.0/src/faultinject.h: _res_PyWeakref_GetObject;                                                                                                                                 \apsw-3.48.0.0.tar.gz: apsw-3.48.0.0/src/pyutil.c: PyObject *obj = PyWeakref_GetObject(ref);awscrt-0.23.7.tar.gz: awscrt-0.23.7/source/module.c: /* Use PyWeakref_GetObject() (deprecated as of Python 3.13), which gets you:awscrt-0.23.7.tar.gz: awscrt-0.23.7/source/module.c: PyObject *obj = PyWeakref_GetObject(ref); /* borrowed reference */awscrt-0.23.7.tar.gz: awscrt-0.23.7/source/module.h: * This is a simplified version of PyWeakref_GetRef() / PyWeakref_GetObject().awscrt-0.23.7.tar.gz: awscrt-0.23.7/source/module.h: * - Python 3.13 adds PyWeakref_GetRef() and deprecates PyWeakref_GetObject().casadi-3.6.7.tar.gz: casadi-3.6.7/swig/python/target/source/casadiPYTHON_wrap.cxx: pyobj = PyWeakref_GET_OBJECT(pyobj);casadi-3.6.7.tar.gz: casadi-3.6.7/swig/python/target/source/casadiPYTHON_wrap.cxx: PyObject *wobj = PyWeakref_GET_OBJECT(pyobj);casadi-3.6.7.tar.gz: casadi-3.6.7/swig/python/target3/source/casadiPYTHON_wrap.cxx: pyobj = PyWeakref_GET_OBJECT(pyobj);casadi-3.6.7.tar.gz: casadi-3.6.7/swig/python/target3/source/casadiPYTHON_wrap.cxx: PyObject *wobj = PyWeakref_GET_OBJECT(pyobj);catboost-1.2.7.tar.gz: catboost-1.2.7/catboost_all_src/contrib/tools/swig/Lib/python/pyrun.swg: pyobj = PyWeakref_GET_OBJECT(pyobj);catboost-1.2.7.tar.gz: catboost-1.2.7/catboost_all_src/contrib/tools/swig/Lib/python/pyrun.swg: PyObject *wobj = PyWeakref_GET_OBJECT(pyobj);cvxpy-1.6.0.tar.gz: cvxpy-1.6.0/cvxpy/cvxcore/python/cvxcore_wrap.cxx: pyobj = PyWeakref_GET_OBJECT(pyobj);cvxpy-1.6.0.tar.gz: cvxpy-1.6.0/cvxpy/cvxcore/python/cvxcore_wrap.cxx: PyObject *wobj = PyWeakref_GET_OBJECT(pyobj);gdal-3.10.1.tar.gz: gdal-3.10.1/extensions/gdal_array_wrap.cpp: pyobj = PyWeakref_GET_OBJECT(pyobj);gdal-3.10.1.tar.gz: gdal-3.10.1/extensions/gdal_array_wrap.cpp: PyObject *wobj = PyWeakref_GET_OBJECT(pyobj);gdal-3.10.1.tar.gz: gdal-3.10.1/extensions/gdal_wrap.cpp: pyobj = PyWeakref_GET_OBJECT(pyobj);gdal-3.10.1.tar.gz: gdal-3.10.1/extensions/gdal_wrap.cpp: PyObject *wobj = PyWeakref_GET_OBJECT(pyobj);gdal-3.10.1.tar.gz: gdal-3.10.1/extensions/gdalconst_wrap.c: pyobj = PyWeakref_GET_OBJECT(pyobj);gdal-3.10.1.tar.gz: gdal-3.10.1/extensions/gdalconst_wrap.c: PyObject *wobj = PyWeakref_GET_OBJECT(pyobj);gdal-3.10.1.tar.gz: gdal-3.10.1/extensions/gnm_wrap.cpp: pyobj = PyWeakref_GET_OBJECT(pyobj);gdal-3.10.1.tar.gz: gdal-3.10.1/extensions/gnm_wrap.cpp: PyObject *wobj = PyWeakref_GET_OBJECT(pyobj);gdal-3.10.1.tar.gz: gdal-3.10.1/extensions/ogr_wrap.cpp: pyobj = PyWeakref_GET_OBJECT(pyobj);gdal-3.10.1.tar.gz: gdal-3.10.1/extensions/ogr_wrap.cpp: PyObject *wobj = PyWeakref_GET_OBJECT(pyobj);gdal-3.10.1.tar.gz: gdal-3.10.1/extensions/osr_wrap.cpp: pyobj = PyWeakref_GET_OBJECT(pyobj);gdal-3.10.1.tar.gz: gdal-3.10.1/extensions/osr_wrap.cpp: PyObject *wobj = PyWeakref_GET_OBJECT(pyobj);igraph-0.11.8.tar.gz: igraph-0.11.8/src/_igraph/common.c: o=PyWeakref_GetObject(ref);m2crypto-0.43.0.tar.gz: m2crypto-0.43.0/src/SWIG/_m2crypto_wrap.c: pyobj = PyWeakref_GET_OBJECT(pyobj);m2crypto-0.43.0.tar.gz: m2crypto-0.43.0/src/SWIG/_m2crypto_wrap.c: PyObject *wobj = PyWeakref_GET_OBJECT(pyobj);mecab_python3-1.0.10.tar.gz: mecab_python3-1.0.10/src/MeCab/MeCab_wrap.cpp: pyobj = PyWeakref_GET_OBJECT(pyobj);mecab_python3-1.0.10.tar.gz: mecab_python3-1.0.10/src/MeCab/MeCab_wrap.cpp: PyObject *wobj = PyWeakref_GET_OBJECT(pyobj);nanobind-2.4.0.tar.gz: nanobind-2.4.0/cmake/darwin-ld-cpython.sym: -U _PyWeakref_GetObjectnanobind-2.4.0.tar.gz: nanobind-2.4.0/cmake/darwin-ld-pypy.sym: -U _PyPyWeakref_GET_OBJECTnanobind-2.4.0.tar.gz: nanobind-2.4.0/cmake/darwin-ld-pypy.sym: -U _PyPyWeakref_GetObjectpsycopg2-2.9.10.tar.gz: psycopg2-2.9.10/psycopg/connection_int.c: if (!(py_curs = PyWeakref_GetObject(self->async_cursor))) {psycopg2-2.9.10.tar.gz: psycopg2-2.9.10/psycopg/cursor_type.c: && PyWeakref_GetObject(self->conn->async_cursor) == (PyObject*)self)psycopg2-2.9.10.tar.gz: psycopg2-2.9.10/psycopg/cursor_type.c: && PyWeakref_GetObject(self->conn->async_cursor) == (PyObject*)self)psycopg2-2.9.10.tar.gz: psycopg2-2.9.10/psycopg/cursor_type.c: && PyWeakref_GetObject(self->conn->async_cursor) == (PyObject*)self)psycopg2-2.9.10.tar.gz: psycopg2-2.9.10/psycopg/cursor_type.c: && PyWeakref_GetObject(self->conn->async_cursor) == (PyObject*)self)psycopg2-binary-2.9.10.tar.gz: psycopg2-binary-2.9.10/psycopg/connection_int.c: if (!(py_curs = PyWeakref_GetObject(self->async_cursor))) {psycopg2-binary-2.9.10.tar.gz: psycopg2-binary-2.9.10/psycopg/cursor_type.c: && PyWeakref_GetObject(self->conn->async_cursor) == (PyObject*)self)psycopg2-binary-2.9.10.tar.gz: psycopg2-binary-2.9.10/psycopg/cursor_type.c: && PyWeakref_GetObject(self->conn->async_cursor) == (PyObject*)self)psycopg2-binary-2.9.10.tar.gz: psycopg2-binary-2.9.10/psycopg/cursor_type.c: && PyWeakref_GetObject(self->conn->async_cursor) == (PyObject*)self)psycopg2-binary-2.9.10.tar.gz: psycopg2-binary-2.9.10/psycopg/cursor_type.c: && PyWeakref_GetObject(self->conn->async_cursor) == (PyObject*)self)pyarrow-19.0.0.tar.gz: pyarrow-19.0.0/pyarrow/src/arrow/python/extension_type.cc: PyObject* inst = PyWeakref_GET_OBJECT(type_instance_.obj());pygame-2.6.1.tar.gz: pygame-2.6.1/src_c/surface.c: tmp = PyWeakref_GetObject(PyList_GetItem(surf->locklist, i));pygame-2.6.1.tar.gz: pygame-2.6.1/src_c/surface.c: consumer = PyWeakref_GetObject(consumer_ref);pygame-2.6.1.tar.gz: pygame-2.6.1/src_c/surflock.c: ref = PyWeakref_GetObject(item);pygame-2.6.1.tar.gz: pygame-2.6.1/src_c/surflock.c: ref = PyWeakref_GetObject(item);pygraphviz-1.14.tar.gz: pygraphviz-1.14/pygraphviz/graphviz_wrap.c: pyobj = PyWeakref_GET_OBJECT(pyobj);pygraphviz-1.14.tar.gz: pygraphviz-1.14/pygraphviz/graphviz_wrap.c: PyObject *wobj = PyWeakref_GET_OBJECT(pyobj);PyQt5-5.15.11.tar.gz: PyQt5-5.15.11/qpy/QtCore/qpycore_pyqtslot.cpp: return PyWeakref_GetObject(mself_wr);pyqt5_sip-12.16.1.tar.gz: pyqt5_sip-12.16.1/qtlib.c: if ((sref = PyWeakref_GetObject(slot->weakSlot)) == NULL)PyQt6-6.8.0.tar.gz: PyQt6-6.8.0/qpy/QtCore/qpycore_pyqtslot.cpp: return PyWeakref_GetObject(mself_wr);pysqlite3-0.5.4.tar.gz: pysqlite3-0.5.4/src/util.h: obj = PyWeakref_GetObject(ref);python_crfsuite-0.9.11.tar.gz: python_crfsuite-0.9.11/crfsuite/swig/python/export_wrap.cpp: pyobj = PyWeakref_GET_OBJECT(pyobj);python_crfsuite-0.9.11.tar.gz: python_crfsuite-0.9.11/crfsuite/swig/python/export_wrap.cpp: PyObject *wobj = PyWeakref_GET_OBJECT(pyobj);sentencepiece-0.2.0.tar.gz: sentencepiece-0.2.0/src/sentencepiece/sentencepiece_wrap.cxx: pyobj = PyWeakref_GET_OBJECT(pyobj);sentencepiece-0.2.0.tar.gz: sentencepiece-0.2.0/src/sentencepiece/sentencepiece_wrap.cxx: PyObject *wobj = PyWeakref_GET_OBJECT(pyobj);sip-6.9.1.tar.gz: sip-6.9.1/sipbuild/module/source/12/qtlib.c: if ((sref = PyWeakref_GetObject(slot->weakSlot)) == NULL)sqlean_py-3.47.0.tar.gz: sqlean_py-3.47.0/src/util.h: obj = PyWeakref_GetObject(ref);tensorstore-0.1.71.tar.gz: tensorstore-0.1.71/python/tensorstore/garbage_collection.cc: PyObject* python_obj = PyWeakref_GET_OBJECT(weak_ref.get());tensorstore-0.1.71.tar.gz: tensorstore-0.1.71/python/tensorstore/garbage_collection.cc: PyObject* obj = PyWeakref_GET_OBJECT(weak_ref.get());ufal.udpipe-1.3.1.1.tar.gz: ufal.udpipe-1.3.1.1/ufal/udpipe/udpipe_python.cpp: pyobj = PyWeakref_GET_OBJECT(pyobj);ufal.udpipe-1.3.1.1.tar.gz: ufal.udpipe-1.3.1.1/ufal/udpipe/udpipe_python.cpp: PyObject *wobj = PyWeakref_GET_OBJECT(pyobj);wxPython-4.2.2.tar.gz: wxPython-4.2.2/sip/siplib/qtlib.c: if ((sref = PyWeakref_GetObject(slot->weakSlot)) == NULL)

@hugovk
Copy link
Member

  • pillow (11.1.0)

Pillow only usesPyWeakref_GetObject inpythoncapi_compat.h, where it's only used for 3.12 and older.

How does the list change if you excludepythoncapi_compat.h?

@vstinner
Copy link
Member

Pillow only uses PyWeakref_GetObject in pythoncapi_compat.h, where it's only used for 3.12 and older.

Oh correct, I modified my script to excludepythoncapi_compat.h.

How does the list change if you exclude pythoncapi_compat.h?

I modified the list to manually exclude projects which only refer to these functions without using them. I also used the updated script to exclude pythoncapi_compat.h which excludes Pillow.

The number of impacts projects moved from 38 to 27, it's better!

hugovk reacted with thumbs up emoji

@kumaraditya303kumaraditya303 removed their request for reviewMay 21, 2025 09:40
Sign up for freeto join this conversation on GitHub. Already have an account?Sign in to comment
Reviewers

@vstinnervstinnervstinner left review comments

@zoobazoobazooba left review comments

@encukouencukouAwaiting requested review from encukouencukou is a code owner

Assignees
No one assigned
Projects
None yet
Milestone
No milestone
Development

Successfully merging this pull request may close these issues.

4 participants
@picnixz@vstinner@hugovk@zooba

[8]ページ先頭

©2009-2025 Movatter.jp