Skip to content

gh-91896: Revert some very noisy DeprecationWarnings for ByteString #104424

New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Merged
merged 3 commits into from
May 13, 2023

Conversation

AlexWaygood
Copy link
Member

@AlexWaygood AlexWaygood commented May 12, 2023

Emitting a DeprecationWarning every time ByteString is accessed or imported from collections.abc or typing is too noisy, as it effectively forbids anybody from doing from collections.abc import * or from typing import * if they want to avoid DeprecationWarnings. from typing import *, in particular, appears to be a common idiom so this looks as though it would be too disruptive. This was an error on my part; I'm sorry for the code churn here.

This PR reverts most of #104294, most of #104422, and all of #104416.


📚 Documentation preview 📚: https://cpython-previews--104424.org.readthedocs.build/

Copy link
Member

@JelleZijlstra JelleZijlstra left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!

I tried to think of ideas to do this better and couldn't think of anything:

  • Remove ByteString from __all__ for 3.12: this would be a backward compatibility break
  • Change the import * code to suppress DeprecationWarnings: way too magical
  • In the module __getattr__, somehow detect that we're being called from import *: no idea how to do that elegantly

@AlexWaygood
Copy link
Member Author

AlexWaygood commented May 12, 2023

Yeah, it's pretty frustrating that there isn't a better way of doing this :(

And this only happens because collections.abc and typing are following "best practices" and defining __all__. from ast import * doesn't cause any deprecation warnings to be emitted, even after 376137f, because ast doesn't define __all__, so the * import just looks at what's in globals(), and the module-level __getattr__ method is never triggered.

It feels somewhat perverse that defining __all__ makes life more difficult here :(

@AlexWaygood AlexWaygood requested a review from hauntsaninja May 12, 2023 15:17
@AlexWaygood AlexWaygood merged commit c527eb1 into python:main May 13, 2023
@AlexWaygood AlexWaygood deleted the too-noisy branch May 13, 2023 08:55
carljm added a commit to carljm/cpython that referenced this pull request May 15, 2023
* main: (29 commits)
  pythongh-101819: Fix _io clinic input for unused base class method stubs (python#104418)
  pythongh-101819: Isolate `_io` (python#101948)
  Bump mypy from 1.2.0 to 1.3.0 in /Tools/clinic (python#104501)
  pythongh-104494: Update certain Tkinter pack/place tests for Tk 8.7 errors (python#104495)
  pythongh-104050: Run mypy on `clinic.py` in CI (python#104421)
  pythongh-104490: Consistently define phony make targets (python#104491)
  pythongh-67056: document that registering/unregistering an atexit func from within an atexit func is undefined (python#104473)
  pythongh-104487: PYTHON_FOR_REGEN must be minimum Python 3.10 (python#104488)
  pythongh-101282: move BOLT config after PGO (pythongh-104493)
  pythongh-104469 Convert _testcapi/float.c to use AC (pythongh-104470)
  pythongh-104456: Fix ref leak in _ctypes.COMError (python#104457)
  pythongh-98539: Make _SSLTransportProtocol.abort() safe to call when closed (python#104474)
  pythongh-104337: Clarify random.gammavariate doc entry  (python#104410)
  Minor improvements to typing docs (python#104465)
  pythongh-87092: avoid gcc warning on uninitialized struct field in assemble.c (python#104460)
  pythonGH-71383: IDLE - Document testing subsets of modules (python#104463)
  pythongh-104454: Fix refleak in AttributeError_reduce (python#104455)
  pythongh-75710: IDLE - add docstrings and comments to editor module (python#104446)
  pythongh-91896: Revert some very noisy DeprecationWarnings for `ByteString` (python#104424)
  Add a mention of PYTHONBREAKPOINT to breakpoint() docs (python#104430)
  ...
carljm added a commit to carljm/cpython that referenced this pull request May 15, 2023
* main: (204 commits)
  pythongh-101819: Fix _io clinic input for unused base class method stubs (python#104418)
  pythongh-101819: Isolate `_io` (python#101948)
  Bump mypy from 1.2.0 to 1.3.0 in /Tools/clinic (python#104501)
  pythongh-104494: Update certain Tkinter pack/place tests for Tk 8.7 errors (python#104495)
  pythongh-104050: Run mypy on `clinic.py` in CI (python#104421)
  pythongh-104490: Consistently define phony make targets (python#104491)
  pythongh-67056: document that registering/unregistering an atexit func from within an atexit func is undefined (python#104473)
  pythongh-104487: PYTHON_FOR_REGEN must be minimum Python 3.10 (python#104488)
  pythongh-101282: move BOLT config after PGO (pythongh-104493)
  pythongh-104469 Convert _testcapi/float.c to use AC (pythongh-104470)
  pythongh-104456: Fix ref leak in _ctypes.COMError (python#104457)
  pythongh-98539: Make _SSLTransportProtocol.abort() safe to call when closed (python#104474)
  pythongh-104337: Clarify random.gammavariate doc entry  (python#104410)
  Minor improvements to typing docs (python#104465)
  pythongh-87092: avoid gcc warning on uninitialized struct field in assemble.c (python#104460)
  pythonGH-71383: IDLE - Document testing subsets of modules (python#104463)
  pythongh-104454: Fix refleak in AttributeError_reduce (python#104455)
  pythongh-75710: IDLE - add docstrings and comments to editor module (python#104446)
  pythongh-91896: Revert some very noisy DeprecationWarnings for `ByteString` (python#104424)
  Add a mention of PYTHONBREAKPOINT to breakpoint() docs (python#104430)
  ...
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
3.12 only security fixes skip news
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants