Back to Cpython

Pending removal in Python 3.15

Doc/deprecations/pending-removal-in-3.15.rst

3.15.0a83.7 KB
Original Source

Pending removal in Python 3.15

  • The import system:

    • Setting __cached__ on a module while failing to set :attr:__spec__.cached <importlib.machinery.ModuleSpec.cached> is deprecated. In Python 3.15, __cached__ will cease to be set or take into consideration by the import system or standard library. (:gh:97879)

    • Setting :attr:~module.__package__ on a module while failing to set :attr:__spec__.parent <importlib.machinery.ModuleSpec.parent> is deprecated. In Python 3.15, :attr:!__package__ will cease to be set or take into consideration by the import system or standard library. (:gh:97879)

  • :mod:ctypes:

    • The undocumented :func:!ctypes.SetPointerType function has been deprecated since Python 3.13.
  • :mod:http.server:

    • The obsolete and rarely used :class:!CGIHTTPRequestHandler has been deprecated since Python 3.13. No direct replacement exists. Anything is better than CGI to interface a web server with a request handler.

    • The :option:!--cgi flag to the :program:python -m http.server command-line interface has been deprecated since Python 3.13.

  • :mod:importlib:

    • load_module() method: use exec_module() instead.
  • :mod:pathlib:

    • :meth:!.PurePath.is_reserved has been deprecated since Python 3.13. Use :func:os.path.isreserved to detect reserved paths on Windows.
  • :mod:platform:

    • :func:!platform.java_ver has been deprecated since Python 3.13. This function is only useful for Jython support, has a confusing API, and is largely untested.
  • :mod:sysconfig:

    • The check_home argument of :func:sysconfig.is_python_build has been deprecated since Python 3.12.
  • :mod:threading:

    • :func:~threading.RLock will take no arguments in Python 3.15. Passing any arguments has been deprecated since Python 3.14, as the Python version does not permit any arguments, but the C version allows any number of positional or keyword arguments, ignoring every argument.
  • :mod:types:

    • :class:types.CodeType: Accessing :attr:~codeobject.co_lnotab was deprecated in :pep:626 since 3.10 and was planned to be removed in 3.12, but it only got a proper :exc:DeprecationWarning in 3.12. May be removed in 3.15. (Contributed by Nikita Sobolev in :gh:101866.)
  • :mod:typing:

    • The undocumented keyword argument syntax for creating :class:~typing.NamedTuple classes (for example, Point = NamedTuple("Point", x=int, y=int)) has been deprecated since Python 3.13. Use the class-based syntax or the functional syntax instead.

    • When using the functional syntax of :class:~typing.TypedDict\s, failing to pass a value to the fields parameter (TD = TypedDict("TD")) or passing None (TD = TypedDict("TD", None)) has been deprecated since Python 3.13. Use class TD(TypedDict): pass or TD = TypedDict("TD", {}) to create a TypedDict with zero field.

    • The :func:!typing.no_type_check_decorator decorator function has been deprecated since Python 3.13. After eight years in the :mod:typing module, it has yet to be supported by any major type checker.

  • :mod:!sre_compile, :mod:!sre_constants and :mod:!sre_parse modules.

  • :mod:wave:

    • The getmark(), setmark() and getmarkers() methods of the :class:~wave.Wave_read and :class:~wave.Wave_write classes have been deprecated since Python 3.13.
  • :mod:zipimport:

    • :meth:!zipimport.zipimporter.load_module has been deprecated since Python 3.10. Use :meth:~zipimport.zipimporter.exec_module instead. (:gh:125746.)