-
-
Notifications
You must be signed in to change notification settings - Fork 30.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
gh-91896: Improve visibility of ByteString
deprecation warnings
#104294
gh-91896: Improve visibility of ByteString
deprecation warnings
#104294
Conversation
(Skipping news as I think the news entry in #102096 should be enough) |
8c469cf
to
8015ba3
Compare
I'm not opposed to this but think it isn't necessary. We aren't required to emit warnings. The deprecation notices in whatsnew and the docs will suffice. This doubly true for ByteString which like has low use. |
I don't feel strongly about this, and perhaps it isn't strictly necessary, but I would prefer maximum visibility, personally. I think it will help users if they get a clear runtime warning when they use the symbol in a type annotation, before the symbol is removed. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks! While collections.abc.ByteString
is extremely low use, there is some use of typing.ByteString
as an annotation out there, for which this could help.
Either way we should lean on type checkers for this deprecation as well, since we won't get warnings in stub files or some from __future__ import annotations
scenarios.
* main: pythongh-91896: Fixup some docs issues following ByteString deprecation (python#104422) pythonGH-104371: check return value of calling `mv.release` (python#104417) pythongh-104415: Fix refleak tests for `typing.ByteString` deprecation (python#104416) pythonGH-86275: Implementation of hypothesis stubs for property-based tests, with zoneinfo tests (python#22863) pythonGH-103082: Filter LINE events in VM, to simplify tool implementation. (pythonGH-104387) pythongh-93649: Split gc- and allocation tests from _testcapimodule.c (pythonGH-104403) pythongh-104389: Add 'unused' keyword to Argument Clinic C converters (python#104390) pythongh-101819: Prepare _io._IOBase for module state (python#104386) pythongh-104413: Fix refleak when super attribute throws AttributeError (python#104414) Fix refleak in `super_descr_get` (python#104408) pythongh-87526: Remove dead initialization from _zoneinfo parse_abbr() (python#24700) pythongh-91896: Improve visibility of `ByteString` deprecation warnings (python#104294) pythongh-104371: Fix calls to `__release_buffer__` while an exception is active (python#104378) pythongh-104377: fix cell in comprehension that is free in outer scope (python#104394) pythongh-104392: Remove _paramspec_tvars from typing (python#104393) pythongh-104396: uuid.py to skip platform check for emscripten and wasi (pythongh-104397) pythongh-99108: Refresh HACL* from upstream (python#104401) pythongh-104301: Allow leading whitespace in disambiguated pdb statements (python#104342)
#102096 added deprecation warnings for
collections.abc.ByteString
, but these warnings are currently only emitted on subclassingByteString
or callingisinstance()
against it. ImportingByteString
or accessing it viaimport collections.abc; collections.abc.ByteString
does not currently trigger any warnings, meaning somebody who's just using the class for type annotations might not get any warning that the class will be removed in 3.14. Moreover, theisinstance()
deprecation warnings are only emitted onisinstance()
checks againstcollections.abc.ByteString
, not onisinstance()
checks againsttyping.ByteString
. The docs update that we just made in 1f56795 says thattyping.ByteString
will also be removed in Python 3.14, so we should emit the same deprecation warnings fortyping.ByteString
.This PR adds deprecation warnings for:
from collections.abc import ByteString
import collections.abc; collections.abc.ByteString
from typing import ByteString
import typing; typing.ByteString
isinstance(b"", typing.ByteString)