On 02.12.2015 13:29, Serhiy Storchaka wrote: > On 02.12.15 12:06, Victor Stinner wrote: >> 2015-12-02 9:42 GMT+01:00 Serhiy Storchaka <storch...@gmail.com>: >>> You have enough time to update your projects, and you can update them >>> uniformly for all versions. And may be you will found few weird bugs related >>> to misuse of Set* API. >> >> Did you check popular projects using C extensions to check if they >> call Set*() functions to delete attributes/items? > > I have checked following projects. > > regex, simplejson, Pillow, PyQt4, LibreOffice, PyGTK, PyICU, pyOpenSSL, > libxml2, Boost, psutil, > mercurial don't use PyObject_SetAttr at all. > > NumPy, pgobject don't use PyObject_SetAttr for deleting. > > PyYAML and lxml use PyObject_SetAttr only in code generated by Cython and > never use it for deleting.
While I don't think deleting attributes is a very common thing to do in any Python code base (unless you need to break circular references or explicitly want to free resources), the fact that PyObject_DelAttr() itself is implemented as macro using the NULL attribute value clearly creates an API incompatibility when removing this functionality or generating warnings, since all code using the correct PyObject_DelAttr() at the moment, would then trigger the warning as well. As a result, the deprecation would have to be extended across more releases than the usual cycle. A first step would be to replace the macro with a proper function to avoid false positive warnings, even when using the correct API. Then we could add a warning to the PyObject_SetAttr() function and hope that not too many projects use the stable ABI as basis to have C extensions work across several releases. Overall, I'm not sure whether it's worth the trouble. Documenting the feature and adding a deprecation notice to just the documentation would likely be better. We could then remove the functionality in Python 4. -- Marc-Andre Lemburg eGenix.com Professional Python Services directly from the Experts (#1, Dec 02 2015) >>> Python Projects, Coaching and Consulting ... http://www.egenix.com/ >>> Python Database Interfaces ... http://products.egenix.com/ >>> Plone/Zope Database Interfaces ... http://zope.egenix.com/ ________________________________________________________________________ ::: We implement business ideas - efficiently in both time and costs ::: eGenix.com Software, Skills and Services GmbH Pastor-Loeh-Str.48 D-40764 Langenfeld, Germany. CEO Dipl.-Math. Marc-Andre Lemburg Registered at Amtsgericht Duesseldorf: HRB 46611 http://www.egenix.com/company/contact/ http://www.malemburg.com/ _______________________________________________ Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com