# 计划在 Python 3.17 中移除

- `datetime`:

  - 使用不带年份的包含 `%e` (月份日期序号) 的格式字符串的 `strptime()` 调用自 Python 3.15 起已被弃用。 （由 Stan Ulbrych 在 gh-70647 中贡献。）

- `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 中贡献。）

- `encodings`:

  - 将非 ascii encoding 名称传给 `encodings.normalize_encoding()` 的做法已被弃用并计划在 Python 3.17 中移除。 （由 Stan Ulbrych 在 gh-136702 中贡献。）

- `webbrowser`:

  - `webbrowser.MacOSXOSAScript` 已被弃用并改用 `webbrowser.MacOS`。 (gh-137586)

- `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 中贡献。）