23.01.20 17:20, Victor Stinner пише:
Incompatible changes which require "if <python3>: (...) else: (...)" or "try: <python3 code> except (...): <python2 code>":
- Removed tostring/fromstring methods in array.array and base64 modules
- Removed collections aliases to ABC classes
- Removed fractions.gcd() function (which is similar to math.gcd())
- Remove "U" mode of open(): having to use io.open() just for Python 2
makes the code uglier
- Removed old plistlib API: 2.7 doesn't have the new API
You had years to fix deprecation warnings in your code. And many projects did this long ago. If revert these removals in 3.9 because they break existing code we will have the same problem with removing them in 3.10, 13.11, etc.
I consider breaking unmaintained code is an additional benefit of removing deprecated features. For example pycrypto was unmaintained and insecure for 6 years, but has 4 million downloads per month. It will not work in 3.9 because of removing time.clock. Other example is nose, unmaintained for 5 years, and superseded by nose2.