> And proposed a first pull request to add again collections.Mapping:

https://github.com/python/cpython/pull/18245

FYI, this patch is adding a fixer to handling abstract base classes.
It will be helpful for the migration to new changes.
I hope someone reviews this.


2020년 2월 18일 (화) 오후 8:44, Victor Stinner <vstin...@python.org>님이 작성:
>
> Hi,
>
> I created an issue:
>
> "Keep deprecated features in Python 3.9 to ease migration from Python
> 2.7, but remove in Python 3.10"
> https://bugs.python.org/issue39674
>
> And proposed a first pull request to add again collections.Mapping:
>
> https://github.com/python/cpython/pull/18545
>
> Victor
>
> Le jeu. 23 janv. 2020 à 16:20, Victor Stinner <vstin...@python.org> a écrit :
> >
> > Hi,
> >
> > Python 3.9 introduces many small incompatible changes which broke tons
> > of Python projects, including popular projects, some of them being
> > unmaintained but still widely used (like nose, last release in 2015).
> >
> > Miro and me consider that Python 3.9 is pushing too much pressure on
> > projects maintainers to either abandon Python 2.7 right now (need to
> > update the CI, the documentation, warn users, etc.), or to introduce a
> > *new* compatibility layer to support Python 3.9: layer which would be
> > dropped as soon as Python 2.7 support will be dropped (soon-ish).
> >
> > Python 3.9 is too early to accumulate so many incompatible changes on
> > purpose, some incompatible changes like the removal of collections
> > aliases to ABC should be reverted, and reapplied on Python 3.10.
> > Python 3.9 would be the last release which still contain compatibility
> > layers for Python 2.7.
> >
> > Said differently, we request to maintain the small compatibility layer
> > in Python for one more cycle, instead of requesting every single
> > project maintainer to maintain it on their side. We consider that the
> > general maintenance burden is lower if it's kept in Python for now.
> >
> >
> > == Fedora COPR notify packages broken by Python 3.9 ==
> >
> > In Python 3.9, Victor introduced tons of incompatible changes at the
> > beginning of the devcycle. His plan was to push as many as possible,
> > and later decide what to do... This time has come :-) He wrote PEP 606
> > "Python Compatibility Version" and we wrote PEP 608 "Coordinated
> > Python release", but both have been rejected. At least, it seems like
> > most people agreed that having a CI to get notified of broken projects
> > should help.
> >
> > We are updating the future Fedora 33 to replace Python 3.8 with Python
> > 3.9. We are using a tool called "COPR" which is like a sandbox and can
> > be seen as the CI discussed previously. It rebuilds Fedora using
> > Python 3.9 as /usr/bin/python3 (and /usr/bin/python !). We now have a
> > good overview of broken packages and which incompatible changes broke
> > most packages.
> >
> > https://fedoraproject.org/wiki/Changes/Python3.9
> > - Describes the Fedora change.
> >
> > https://copr.fedorainfracloud.org/coprs/g/python/python3.9/monitor/
> > - Has package failures. Some packages fail because of broken dependencies.
> >
> > https://bugzilla.redhat.com/showdependencytree.cgi?id=PYTHON39
> > - Has open Python 3.9 bug reports for Fedora packages. Some problems
> > have been fixed upstream already before reaching Fedora, most are only
> > fixed when the Fedora maintainers report the problems back to upstream
> > maintainers.
> >
> > Right now, there are 150+ packages broken by Python 3.9 incompatible 
> > changes.
> >
> >
> > == Maintenance burden ==
> >
> > Many Python projects have not yet removed Python 2 support and Python
> > 2 CI. It's not that they would be in the "we will not drop Python 2
> > support ever" camp, it's just that they have not done it yet. Removing
> > Python 2 compatibility code from the codebase and removing it from the
> > documentation and metadata and CI is a boring task, doesn't bring
> > anything to users, and it might take a new major release of the
> > library. At this point, we are very early in 2020 to expect most
> > projects to have already done this.
> >
> > At the same time, we would like them to support Python 3.9 as soon in
> > the release cycle as possible. By removing Python 2 compatibility
> > layers from the 3.9 standard library, we are forcing the projects
> > maintainers to re-invent their own compatibility layers and copy-paste
> > stuff like this around. Example:
> >
> > try:
> >     from collections.abc import Sequence
> > except ImprotError:
> >     # Python 2.7 doesn't have collections.abc
> >     from collections import Sequence
> >
> > While if we remove collections.Sequence in 3.10, they will face this
> > decision early in 2021 and they will simply fix their code by adding
> > ".abc" at the proper places, not needing any more compatibility
> > layers. Of course, there will be projects that will still have
> > declared Python 2 support in 2021, but it will arguably not be that
> > many.
> >
> > While it's certainly tempting to have "more pure" code in the standard
> > library, maintaining the compatibility shims for one more release
> > isn't really that big of a maintenance burden, especially when
> > comparing with dozens (hundreds?) of third party libraries essentially
> > maintaining their own.
> >
> > An good example of a broken package is the nose project which is no
> > longer maintained (according to their website): the last release was
> > in 2015. It remains a very popular test runner. According to
> > libraries.io, it has with 3 million downloads per month, 41.7K
> > dependent repositories and 325 dependent packages. We patched nose in
> > Fedora to fix Python 3.5, 3.6, 3.8 and now 3.9 compatibility issues.
> > People installing nose from PyPI with "pip install" get the
> > unmaintained flavor which is currently completely broken on Python
> > 3.9.
> >
> > Someone should take over the nose project and maintain it again, or
> > every single project using nose should pick another tool (unittest,
> > nose2, pytest, whatever else). Both options will take a lot of time.
> >
> >
> > == Request to revert some incompatible changes ==
> >
> > See https://docs.python.org/dev/whatsnew/3.9.html#removed
> >
> > 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
> >
> >
> > == Kept incompatible changes ==
> >
> > Ok-ish incompatible changes (mostly only affects compatiblity
> > libraries like six):
> >
> > * _dummy_thread and dummy_threading modules removed: broke six, nine
> > and future projects. six and nine are already fixed for 3.9.
> >
> >
> > OK incompatible changes (can be replaced by the same code on 2.7 and 3.9):
> >
> > * isAlive() method of threading.Thread has been removed:
> > Thread.is_alive() method is available in 2.7 and 3.9
> > * xml.etree.ElementTree.getchildren() and
> > xml.etree.ElementTree.getiterator() methods are removed from 3.9, but
> > list()/iter() works in 2.7 and 3.9
> >
> >
> > == Call to check for DeprecationWarning in your own projects ==
> >
> > You must pay attention to DeprecationWarning in Python 3.9: it will be
> > the last "compatibility layer" release, incompatible changes will be
> > reapplied to Python 3.10.
> >
> > For example, you can use the development mode to see
> > DeprecationWarning and ResourceWarning: use the "-X dev" command line
> > option or set the PYTHONDEVMODE=1 environment variable. Or you can use
> > the PYTHONWARNINGS=default environment variable to see
> > DeprecationWarning.
> >
> > You might even want to treat all warnings as errors to ensure that you
> > don't miss any when you run your test suite in your CI. You can use
> > PYTHONWARNINGS=error, and combine it with PYTHONDEVMODE=1.
> >
> > Warnings filters can be used to ignore warnings in third party code,
> > see the documentation:
> > https://docs.python.org/dev/library/warnings.html#the-warnings-filter
> >
> > -- Victor Stinner and Miro Hrončok for Fedora
>
>
>
> --
> 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/AOEVRTYSL5JVT532ACLFRGR5H5G3WQTN/
> Code of Conduct: http://python.org/psf/codeofconduct/



-- 
Software Development Engineer at Kakao corp.

Tel: +82 010-3353-9127
Email: donghee.n...@gmail.com | denn...@kakaocorp.com
Linkedin: https://www.linkedin.com/in/dong-hee-na-2b713b49/
_______________________________________________
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/VMC3R5BEONBAXSLG3HGVKZVIW3YZQHFV/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to