Hi Inada-san,

I'm +0 on removing again the flag, but I would prefer to not endorse
the responsibility. I am already responsible for enough incompatible
changes in Python 3.10 :-D

Some context on this "U" open mode. The flag is accepted by many
functions opening files. It is deprecated (emit DeprecationWarning)
for 9 years (Python 3.3, 2012).

The flag is currently ignored and is basically only kept for backward
compatibility with Python 2, whereas Python 2.7 support ended in
January 2020 (1 year ago).

I removed the flag in Python 3.9:

* https://bugs.python.org/issue37330
* 
https://github.com/python/cpython/commit/e471e72977c83664f13d041c78549140c86c92de

The removal broke the Waf build system used by the Samba project. Waf
code is copied into Samba source code (as Python copies
autoconf/automake files). So even if Waf and then the Waf copy in
Samba are updated to not pass the "U" flag, trying to build an old
Samba version will fail if the flag is removed. Andrew Bartlett
explained that it's a practical issue when bisecting a bug in Samba.
It's annoying, but likely easy to workaround (fix the local waf copy
temporarily).

Moreover, the removal broke 11 packages in Fedora:

* aubio
* openvswitch
* python-SALib
* python-altgraph
* python-apsw
* python-magic-wormhole-mailbox-server
* python-munch
* python-parameterized
* python-pylibmc
* python-sphinx-testing
* veusz

Miro Hrončok and me proposed to revert the removal in Python 3.9:
https://mail.python.org/archives/list/python-dev@python.org/thread/EYLXCGGJOUMZSE5X35ILW3UNTJM3MCRE/

The removal was reverted (accept again the flag) in Python 3.9:

* https://bugs.python.org/issue39674#msg363195
* 
https://github.com/python/cpython/commit/942f7a2dea2e95a0fa848329565c0d0288d92e47

LWN article summarizing the issue: https://lwn.net/Articles/811369/

I added a section at the very beginning of What's New in Python 3.9 to
request developers to check for DeprecationWarning in their project:
https://docs.python.org/dev/whatsnew/3.9.html#you-should-check-for-deprecationwarning-in-your-code

The idea was that Python 3.9 is the last version supporting the flag,
developers are now warned, and so the flag should be removed from
Python 3.10.

That being said, I'm kind of cautious. Each time I introduce a minor
incompatible change breaking a few projects (say 5 projects or less),
many people get angry and complain without trying to understand the
rationale. Moreover, they are silent when I say that there was a
DeprecationWarning for 9 years.

I didn't check if the 11 projects + waf + samba have been updated to
no longer pass the deprecated "U" flag.

Victor
-- 
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/AAPTZUY46IG2H75TQKMWHOQBVTOCXN2K/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to