计划在 Python 3.17 中移除
*************************

* "collections.abc":

  * "collections.abc.ByteString" 计划在 Python 3.17 中移除。

    使用 "isinstance(obj, collections.abc.Buffer)" 来在运行时测试
    "obj" 是否实现了 缓冲区协议。要用于类型标注，则使用 "Buffer" 或者
    显式指明你的代码所支持的类型的并集 (例如 "bytes | bytearray |
    memoryview")。

    "ByteString" 原本是想作为 "bytes" 和 "bytearray" 的超类型的抽象基
    类提供。 不过，由于该 ABC 从未有过任何方法，知道一个对象是
    "ByteString" 的实例并不能真正告诉你有关该对象的任何有用信息。 其他
    常见缓冲区类型如 "memoryview" 同样不能被当作是 "ByteString" 的子类
    型（无论是在运行时还是对于静态类型检查器）。

    请参阅 **PEP 688** 了解详情。 （由 Shantanu Jain 在 gh-91896 中贡
    献。）

* "typing":

  * 在 Python 3.14 之前，旧式的联合是通过私有类
    "typing._UnionGenericAlias" 实现的。 实现已不再需要该类，但为向后
    兼容性保留了该类，并计划在 Python 3.17 中删除。用户应使用已写入文
    档的内省助手函数，如 "typing.get_origin()" 和 "typing.get_args()"
    ，而不是依赖于私有的实现细节。

  * "typing.ByteString" 自 Python 3.9 起已被弃用，计划在 Python 3.17
    中移除。

    使用 "isinstance(obj, collections.abc.Buffer)" 来在运行时测试
    "obj" 是否实现了 缓冲区协议。要用于类型标注，则使用 "Buffer" 或者
    显式指明你的代码所支持的类型的并集 (例如 "bytes | bytearray |
    memoryview")。

    "ByteString" 原本是想作为 "bytes" 和 "bytearray" 的超类型的抽象基
    类提供。 不过，由于该 ABC 从未有过任何方法，知道一个对象是
    "ByteString" 的实例并不能真正告诉你有关该对象的任何有用信息。 其他
    常见缓冲区类型如 "memoryview" 同样不能被当作是 "ByteString" 的子类
    型（无论是在运行时还是对于静态类型检查器）。

    请参阅 **PEP 688** 了解详情。 （由 Shantanu Jain 在 gh-91896 中贡
    献。）
