You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Keep deprecated features in Python 3.9 to ease migration from Python 2.7, but remove in Python 3.10 #83855
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
assignee=Noneclosed_at=<Date2020-04-23.23:04:03.240>created_at=<Date2020-02-18.11:26:29.040>labels= ['3.10', 'expert-unicode']
title='Keep deprecated features in Python 3.9 to ease migration from Python 2.7, but remove in Python 3.10'updated_at=<Date2021-04-08.23:29:27.595>user='https://github.com/vstinner'
Following discussion on python-dev, I propose to revert the removal of a few deprecated functions to keep them in Python 3.9, and only remove them in Python 3.10. Please see the following email for the longer rationale, and the discussion for further details:
With Python 3.8, it was possible to have a single code base working on Python 2.7 and 3.8. Some functions emits DeprecationWarning, but these warnings are ignored (silent) by default. With removed deprecated functions in Python 3.9, *new* code is required to support Python 2.7. The problem is that Python 2.7 is no longer supported. Adding new code to support Python 2.7 sounds painful. Dropping Python 2.7 support isn't free. Projects have to drop Python 2 code, drop CI tests on Python 2, warn users, etc.
The idea is to give maintainers one more year (until Python 3.10) to organize their project to schedule properly the removal of Python 2 support. The first motivation is to ease adoption of Python 3.9.
--
I propose to start with reverting the removal of collections aliases to Abstract Base Classes (ABC) like collections.Mapping alias to collections.abc.Mapping. Removing these aliases is the change which caused most issues when testing Python projects on Python 3.9.
I also propose to modify the What's New In Python 3.9 document to strongly suggest to test your applications with -W default or even -W error to see DeprecationWarning and PendingDeprecationWarning.
So far, it seems like the number of incompatible changes in Python 3.9 is reasonable. If more incompatible changes should be reverted, I suggest to open new issues.
Activity
vstinner commentedon Feb 18, 2020
Following discussion on python-dev, I propose to revert the removal of a few deprecated functions to keep them in Python 3.9, and only remove them in Python 3.10. Please see the following email for the longer rationale, and the discussion for further details:
https://mail.python.org/archives/list/[email protected]/thread/EYLXCGGJOUMZSE5X35ILW3UNTJM3MCRE/
With Python 3.8, it was possible to have a single code base working on Python 2.7 and 3.8. Some functions emits DeprecationWarning, but these warnings are ignored (silent) by default. With removed deprecated functions in Python 3.9, *new* code is required to support Python 2.7. The problem is that Python 2.7 is no longer supported. Adding new code to support Python 2.7 sounds painful. Dropping Python 2.7 support isn't free. Projects have to drop Python 2 code, drop CI tests on Python 2, warn users, etc.
The idea is to give maintainers one more year (until Python 3.10) to organize their project to schedule properly the removal of Python 2 support. The first motivation is to ease adoption of Python 3.9.
--
I propose to start with reverting the removal of collections aliases to Abstract Base Classes (ABC) like collections.Mapping alias to collections.abc.Mapping. Removing these aliases is the change which caused most issues when testing Python projects on Python 3.9.
I also propose to modify the What's New In Python 3.9 document to strongly suggest to test your applications with -W default or even -W error to see DeprecationWarning and PendingDeprecationWarning.
gvanrossum commentedon Feb 18, 2020
Yes please.
I have one exception. I f we manage to get the new parser (pegen) in, we have to remove the old parser module.
vstinner commentedon Feb 18, 2020
New changeset af5ee3f by Victor Stinner in branch 'master':
bpo-39674: Revert "bpo-25988: Do not expose abstract collection classes in the collections module. (GH-10596)" (GH-18545)
af5ee3f
vstinner commentedon Feb 18, 2020
PR 18552 adds a section to What's New In Python 3.9 to strongly advice to check for DeprecationWarning in your Python projects.
vstinner commentedon Mar 2, 2020
Andrew Bartlett of the Samba project asked to revert the removal of the "U" mode:
https://bugs.python.org/issue37330#msg362362
We should consider to revert the removal, and only remove the "U" mode in Python 3.10.
vstinner commentedon Mar 3, 2020
Another candidate is to revert the ignored "U" mode in open(): commit e471e72 of bpo-37330.
Removing "U" mode of open() broke 11 packages in Fedora:
Keeping "U" mode in Python 3.9 is also a formal request from Andrew Bartlett of the Samba project: https://bugs.python.org/issue37330#msg362362
vstinner commentedon Mar 3, 2020
New changeset 91fe414 by Victor Stinner in branch 'master':
bpo-39674: Update collections ABC deprecation doc (GH-18747)
91fe414
vstinner commentedon Mar 3, 2020
New changeset 2aa694d by Victor Stinner in branch '3.8':
bpo-39674: Update collections ABC deprecation doc (GH-18748)
2aa694d
vstinner commentedon Mar 3, 2020
New changeset 116fd4a by Victor Stinner in branch 'master':
bpo-39674: Suggest to test with DeprecationWarning (GH-18552)
116fd4a
vstinner commentedon Mar 4, 2020
New changeset a6d3546 by Victor Stinner in branch 'master':
bpo-39674: Fix typo in What's New In Python 3.9 (GH-18776)
a6d3546
vstinner commentedon Mar 4, 2020
New changeset 942f7a2 by Victor Stinner in branch 'master':
bpo-39674: Revert "bpo-37330: open() no longer accept 'U' in file mode (GH-16959)" (GH-18767)
942f7a2
vstinner commentedon Apr 23, 2020
I close this issue.
So far, it seems like the number of incompatible changes in Python 3.9 is reasonable. If more incompatible changes should be reverted, I suggest to open new issues.
vstinner commentedon Apr 8, 2021
New changeset 20d56bd by Markus Gerstel in branch '3.8':
bpo-39674: Fix collections ABC deprecation notice (GH-25281)
20d56bd