A PR was proposed to document the removal of the loop parameter: https://github.com/python/cpython/pull/24256
Victor On Tue, Jan 19, 2021 at 1:34 PM Victor Stinner <vstin...@python.org> wrote: > > Hi, > > We are working on upgrading Python from 3.9 to 3.10 in Fedora and we > are facing many Python 3.10 incompatible changes. Most changes were > planned with a deprecation period, but, as usual, projects are not > tested with DeprecationWarning treated as errors, and so tons of > packages now fail to build. > > I'm not here to talk about DeprecationWarning, but how we communicate > on incompatible changes made on purpose. For example, What's New in > Python 3.8 announces: "In asyncio, the explicit passing of a loop > argument has been deprecated and will be removed in version 3.10". As > expected, the parameter was removed in Python 3.10 (bpo-42392), but I > cannot see anything in What's New in Python 3.10. The problem is that > I don't know how to fix projects broken by this change. I'm not > complaining about this specific change, but more generally. > > I strongly suggest to well document incompatible changes. The bare > minimum is to mention them in "Porting to Python 3.10" section: > https://docs.python.org/dev/whatsnew/3.10.html#porting-to-python-3-10 > > A link to the bpo sometimes helps to understand how to port code. But > I would really appreciate if authors of incompatible changes would > explain how to add Python 3.10 support to existing projects, without > losing support for older Python versions. Not just "this function is > now removed, good luck!" :-) > > I didn't touch asyncio for at least 1 year, so I don't know what > happens if I remove a loop argument. Does an application remain > compatible with Python 3.6 without passing loop? > > I know that I made multiple incompatible changes myself and I'm sure > that the documentation should probably be enhanced, but I also expect > others to help on that! ;-) > > Please think about people who have to port 4000 Python projects to Python > 3.10! > > --- > > The best would be to ship a tool which adds Python 3.10 support to > existing projects without losing support with Python 3.6. Maybe > something like https://github.com/asottile/pyupgrade could be used for > that? pyupgrade looks more specific to the Python syntax, than the > usage of the stdlib. > > I wrote such tool to add Python 3.10 support to C extensions without > losing support with Python 2.7. It relies on a header file > (pythoncapi_compat.h) which provides new C API functions on old Python > versions. > https://github.com/pythoncapi/pythoncapi_compat > > For example, it replaces "obj->ob_refcnt = refcnt;" with > "Py_SET_REFCNT(obj, refcnt);" and provides Py_SET_REFCNT() to Python > 3.8 and older (function added to Python 3.9) > > Victor > -- > Night gathers, and now my watch begins. It shall not end until my death. -- Night gathers, and now my watch begins. It shall not end until my death. _______________________________________________ Python-Dev mailing list -- python-dev@python.org To unsubscribe send an email to python-dev-le...@python.org https://mail.python.org/mailman3/lists/python-dev.python.org/ Message archived at https://mail.python.org/archives/list/python-dev@python.org/message/CVLDV7VIVENV6HMQ4PRAN3VRFU26CMJI/ Code of Conduct: http://python.org/psf/codeofconduct/