Closed vstinner closed 4 years ago
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/python-dev@python.org/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.
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.
New changeset af5ee3ff610377ef446c2d88bbfcbb3dffaaf0c9 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) https://github.com/python/cpython/commit/af5ee3ff610377ef446c2d88bbfcbb3dffaaf0c9
PR 18552 adds a section to What's New In Python 3.9 to strongly advice to check for DeprecationWarning in your Python projects.
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.
Another candidate is to revert the ignored "U" mode in open(): commit e471e72977c83664f13d041c78549140c86c92de 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
New changeset 91fe4142642286b65c166f7b6e27de16f42b1286 by Victor Stinner in branch 'master': bpo-39674: Update collections ABC deprecation doc (GH-18747) https://github.com/python/cpython/commit/91fe4142642286b65c166f7b6e27de16f42b1286
New changeset 2aa694dd55202eb6d062fdf49c07cf95f8520f2d by Victor Stinner in branch '3.8': bpo-39674: Update collections ABC deprecation doc (GH-18748) https://github.com/python/cpython/commit/2aa694dd55202eb6d062fdf49c07cf95f8520f2d
New changeset 116fd4af7370706d0d99ac7c70541ef965672d4e by Victor Stinner in branch 'master': bpo-39674: Suggest to test with DeprecationWarning (GH-18552) https://github.com/python/cpython/commit/116fd4af7370706d0d99ac7c70541ef965672d4e
New changeset a6d3546d003d9873de0f71b319ad79d203374bf0 by Victor Stinner in branch 'master': bpo-39674: Fix typo in What's New In Python 3.9 (GH-18776) https://github.com/python/cpython/commit/a6d3546d003d9873de0f71b319ad79d203374bf0
New changeset 942f7a2dea2e95a0fa848329565c0d0288d92e47 by Victor Stinner in branch 'master': bpo-39674: Revert "bpo-37330: open() no longer accept 'U' in file mode (GH-16959)" (GH-18767) https://github.com/python/cpython/commit/942f7a2dea2e95a0fa848329565c0d0288d92e47
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.
New changeset 20d56bd41b56023ce9fa3739c0c9aa8be8d48bfa by Markus Gerstel in branch '3.8': bpo-39674: Fix collections ABC deprecation notice (GH-25281) https://github.com/python/cpython/commit/20d56bd41b56023ce9fa3739c0c9aa8be8d48bfa
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: ```python assignee = None closed_at =
created_at =
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 =
user = 'https://github.com/vstinner'
```
bugs.python.org fields:
```python
activity =
actor = 'vstinner'
assignee = 'none'
closed = True
closed_date =
closer = 'vstinner'
components = ['Unicode']
creation =
creator = 'vstinner'
dependencies = []
files = []
hgrepos = []
issue_num = 39674
keywords = ['patch']
message_count = 13.0
messages = ['362196', '362220', '362222', '362225', '363195', '363263', '363276', '363277', '363308', '363350', '363367', '367159', '390571']
nosy_count = 6.0
nosy_names = ['gvanrossum', 'vstinner', 'ezio.melotti', 'python-dev', 'jmadden', 'xtreak']
pr_nums = ['18545', '18552', '18747', '18748', '18767', '18776', '25280', '25281']
priority = 'normal'
resolution = 'fixed'
stage = 'resolved'
status = 'closed'
superseder = None
type = None
url = 'https://bugs.python.org/issue39674'
versions = ['Python 3.10']
```