| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -90,7 +90,7 @@ Improved Modules | |||
| 90 | 90 | array | |
| 91 | 91 | ----- | |
| 92 | 92 | ||
| 93 | - * Add ``'w'`` type code that can be used for Unicode strings. | ||
| 93 | + * Add ``'w'`` type code (``Py_UCS4``) that can be used for Unicode strings. | ||
| 94 | 94 | It can be used instead of ``'u'`` type code, which is deprecated. | |
| 95 | 95 | (Contributed by Inada Naoki in :gh:`80480`.) | |
| 96 | 96 | ||
@@ -146,11 +146,11 @@ Deprecated | |||
| 146 | 146 | methods of the :class:`wave.Wave_read` and :class:`wave.Wave_write` classes. | |
| 147 | 147 | They will be removed in Python 3.15. | |
| 148 | 148 | (Contributed by Victor Stinner in :gh:`105096`.) | |
| 149 | - * Creating a :class:`typing.NamedTuple` class using keyword arguments to denote | ||
| 149 | + * :mod:`typing`: Creating a :class:`typing.NamedTuple` class using keyword arguments to denote | ||
| 150 | 150 | the fields (``NT = NamedTuple("NT", x=int, y=int)``) is deprecated, and will | |
| 151 | 151 | be disallowed in Python 3.15. Use the class-based syntax or the functional | |
| 152 | 152 | syntax instead. (Contributed by Alex Waygood in :gh:`105566`.) | |
| 153 | - * When using the functional syntax to create a :class:`typing.NamedTuple` | ||
| 153 | + * :mod:`typing`: When using the functional syntax to create a :class:`typing.NamedTuple` | ||
| 154 | 154 | class or a :class:`typing.TypedDict` class, failing to pass a value to the | |
| 155 | 155 | 'fields' parameter (``NT = NamedTuple("NT")`` or ``TD = TypedDict("TD")``) is | |
| 156 | 156 | deprecated. Passing ``None`` to the 'fields' parameter | |
@@ -172,6 +172,297 @@ Deprecated | |||
| 172 | 172 | Replace ``ctypes.SetPointerType(item_type, size)`` with ``item_type * size``. | |
| 173 | 173 | (Contributed by Victor Stinner in :gh:`105733`.) | |
| 174 | 174 | ||
| 175 | + Pending Removal in Python 3.14 | ||
| 176 | + ------------------------------ | ||
| 177 | + | ||
| 178 | + * :mod:`argparse`: The *type*, *choices*, and *metavar* parameters | ||
| 179 | + of :class:`!argparse.BooleanOptionalAction` are deprecated | ||
| 180 | + and will be removed in 3.14. | ||
| 181 | + (Contributed by Nikita Sobolev in :gh:`92248`.) | ||
| 182 | + | ||
| 183 | + * :mod:`ast`: The following features have been deprecated in documentation | ||
| 184 | + since Python 3.8, now cause a :exc:`DeprecationWarning` to be emitted at | ||
| 185 | + runtime when they are accessed or used, and will be removed in Python 3.14: | ||
| 186 | + | ||
| 187 | + * :class:`!ast.Num` | ||
| 188 | + * :class:`!ast.Str` | ||
| 189 | + * :class:`!ast.Bytes` | ||
| 190 | + * :class:`!ast.NameConstant` | ||
| 191 | + * :class:`!ast.Ellipsis` | ||
| 192 | + | ||
| 193 | + Use :class:`ast.Constant` instead. | ||
| 194 | + (Contributed by Serhiy Storchaka in :gh:`90953`.) | ||
| 195 | + | ||
| 196 | + * :mod:`collections.abc`: Deprecated :class:`~collections.abc.ByteString`. | ||
| 197 | + Prefer :class:`!Sequence` or :class:`~collections.abc.Buffer`. | ||
| 198 | + For use in typing, prefer a union, like ``bytes | bytearray``, | ||
| 199 | + or :class:`collections.abc.Buffer`. | ||
| 200 | + (Contributed by Shantanu Jain in :gh:`91896`.) | ||
| 201 | + | ||
| 202 | + * :mod:`email`: Deprecated the *isdst* parameter in :func:`email.utils.localtime`. | ||
| 203 | + (Contributed by Alan Williams in :gh:`72346`.) | ||
| 204 | + | ||
| 205 | + * :mod:`importlib`: ``__package__`` and ``__cached__`` will cease to be set or | ||
| 206 | + taken into consideration by the import system (:gh:`97879`). | ||
| 207 | + | ||
| 208 | + * :mod:`importlib.abc` deprecated classes: | ||
| 209 | + | ||
| 210 | + * :class:`!importlib.abc.ResourceReader` | ||
| 211 | + * :class:`!importlib.abc.Traversable` | ||
| 212 | + * :class:`!importlib.abc.TraversableResources` | ||
| 213 | + | ||
| 214 | + Use :mod:`importlib.resources.abc` classes instead: | ||
| 215 | + | ||
| 216 | + * :class:`importlib.resources.abc.Traversable` | ||
| 217 | + * :class:`importlib.resources.abc.TraversableResources` | ||
| 218 | + | ||
| 219 | + (Contributed by Jason R. Coombs and Hugo van Kemenade in :gh:`93963`.) | ||
| 220 | + | ||
| 221 | + * :mod:`itertools` had undocumented, inefficient, historically buggy, | ||
| 222 | + and inconsistent support for copy, deepcopy, and pickle operations. | ||
| 223 | + This will be removed in 3.14 for a significant reduction in code | ||
| 224 | + volume and maintenance burden. | ||
| 225 | + (Contributed by Raymond Hettinger in :gh:`101588`.) | ||
| 226 | + | ||
| 227 | + * :mod:`multiprocessing`: The default start method will change to a safer one on | ||
| 228 | + Linux, BSDs, and other non-macOS POSIX platforms where ``'fork'`` is currently | ||
| 229 | + the default (:gh:`84559`). Adding a runtime warning about this was deemed too | ||
| 230 | + disruptive as the majority of code is not expected to care. Use the | ||
| 231 | + :func:`~multiprocessing.get_context` or | ||
| 232 | + :func:`~multiprocessing.set_start_method` APIs to explicitly specify when | ||
| 233 | + your code *requires* ``'fork'``. See :ref:`multiprocessing-start-methods`. | ||
| 234 | + | ||
| 235 | + * :mod:`pathlib`: :meth:`~pathlib.PurePath.is_relative_to`, | ||
| 236 | + :meth:`~pathlib.PurePath.relative_to`: passing additional arguments is | ||
| 237 | + deprecated. | ||
| 238 | + | ||
| 239 | + * :func:`pkgutil.find_loader` and :func:`pkgutil.get_loader` | ||
| 240 | + now raise :exc:`DeprecationWarning`; | ||
| 241 | + use :func:`importlib.util.find_spec` instead. | ||
| 242 | + (Contributed by Nikita Sobolev in :gh:`97850`.) | ||
| 243 | + | ||
| 244 | + * :mod:`pty`: | ||
| 245 | + | ||
| 246 | + * ``master_open()``: use :func:`pty.openpty`. | ||
| 247 | + * ``slave_open()``: use :func:`pty.openpty`. | ||
| 248 | + | ||
| 249 | + * :func:`shutil.rmtree` *onerror* parameter is deprecated in 3.12, | ||
| 250 | + and will be removed in 3.14: use the *onexc* parameter instead. | ||
| 251 | + | ||
| 252 | + * :mod:`sqlite3`: | ||
| 253 | + | ||
| 254 | + * :data:`~sqlite3.version` and :data:`~sqlite3.version_info`. | ||
| 255 | + | ||
| 256 | + * :meth:`~sqlite3.Cursor.execute` and :meth:`~sqlite3.Cursor.executemany` | ||
| 257 | + if :ref:`named placeholders <sqlite3-placeholders>` are used and | ||
| 258 | + *parameters* is a sequence instead of a :class:`dict`. | ||
| 259 | + | ||
| 260 | + * date and datetime adapter, date and timestamp converter: | ||
| 261 | + see the :mod:`sqlite3` documentation for suggested replacement recipes. | ||
| 262 | + | ||
| 263 | + * :class:`types.CodeType`: Accessing ``co_lnotab`` was deprecated in :pep:`626` | ||
| 264 | + since 3.10 and was planned to be removed in 3.12, | ||
| 265 | + but it only got a proper :exc:`DeprecationWarning` in 3.12. | ||
| 266 | + May be removed in 3.14. | ||
| 267 | + (Contributed by Nikita Sobolev in :gh:`101866`.) | ||
| 268 | + | ||
| 269 | + * :mod:`typing`: :class:`~typing.ByteString`, deprecated since Python 3.9, | ||
| 270 | + now causes a :exc:`DeprecationWarning` to be emitted when it is used. | ||
| 271 | + | ||
| 272 | + * :class:`!urllib.parse.Quoter`. | ||
| 273 | + | ||
| 274 | + * :mod:`xml.etree.ElementTree`: Testing the truth value of an | ||
| 275 | + :class:`~xml.etree.ElementTree.Element` is deprecated and will raise an | ||
| 276 | + exception in Python 3.14. | ||
| 277 | + | ||
| 278 | + Pending Removal in Python 3.15 | ||
| 279 | + ------------------------------ | ||
| 280 | + | ||
| 281 | + * :class:`typing.NamedTuple`: | ||
| 282 | + | ||
| 283 | + * The undocumented keyword argument syntax for creating NamedTuple classes | ||
| 284 | + (``NT = NamedTuple("NT", x=int)``) is deprecated, and will be disallowed in | ||
| 285 | + 3.15. Use the class-based syntax or the functional syntax instead. | ||
| 286 | + | ||
| 287 | + * When using the functional syntax to create a NamedTuple class, failing to | ||
| 288 | + pass a value to the 'fields' parameter (``NT = NamedTuple("NT")``) is | ||
| 289 | + deprecated. Passing ``None`` to the 'fields' parameter | ||
| 290 | + (``NT = NamedTuple("NT", None)``) is also deprecated. Both will be | ||
| 291 | + disallowed in Python 3.15. To create a NamedTuple class with 0 fields, use | ||
| 292 | + ``class NT(NamedTuple): pass`` or ``NT = NamedTuple("NT", [])``. | ||
| 293 | + | ||
| 294 | + * :class:`typing.TypedDict`: When using the functional syntax to create a | ||
| 295 | + TypedDict class, failing to pass a value to the 'fields' parameter (``TD = | ||
| 296 | + TypedDict("TD")``) is deprecated. Passing ``None`` to the 'fields' parameter | ||
| 297 | + (``TD = TypedDict("TD", None)``) is also deprecated. Both will be disallowed | ||
| 298 | + in Python 3.15. To create a TypedDict class with 0 fields, use ``class | ||
| 299 | + TD(TypedDict): pass`` or ``TD = TypedDict("TD", {})``. | ||
| 300 | + | ||
| 301 | + * :mod:`wave`: Deprecate the ``getmark()``, ``setmark()`` and ``getmarkers()`` | ||
| 302 | + methods of the :class:`wave.Wave_read` and :class:`wave.Wave_write` classes. | ||
| 303 | + They will be removed in Python 3.15. | ||
| 304 | + (Contributed by Victor Stinner in :gh:`105096`.) | ||
| 305 | + | ||
| 306 | + Pending Removal in Python 3.16 | ||
| 307 | + ------------------------------ | ||
| 308 | + | ||
| 309 | + * :class:`array.array` ``'u'`` type (``wchar_t``): | ||
| 310 | + use the ``'w'`` type instead (``Py_UCS4``). | ||
| 311 | + | ||
| 312 | + Pending Removal in Future Versions | ||
| 313 | + ---------------------------------- | ||
| 314 | + | ||
| 315 | + The following APIs were deprecated in earlier Python versions and will be removed, | ||
| 316 | + although there is currently no date scheduled for their removal. | ||
| 317 | + | ||
| 318 | + * :mod:`argparse`: Nesting argument groups and nesting mutually exclusive | ||
| 319 | + groups are deprecated. | ||
| 320 | + | ||
| 321 | + * :mod:`builtins`: | ||
| 322 | + | ||
| 323 | + * ``~bool``, bitwise inversion on bool. | ||
| 324 | + * ``bool(NotImplemented)``. | ||
| 325 | + * Generators: ``throw(type, exc, tb)`` and ``athrow(type, exc, tb)`` | ||
| 326 | + signature is deprecated: use ``throw(exc)`` and ``athrow(exc)`` instead, | ||
| 327 | + the single argument signature. | ||
| 328 | + * Currently Python accepts numeric literals immediately followed by keywords, | ||
| 329 | + for example ``0in x``, ``1or x``, ``0if 1else 2``. It allows confusing and | ||
| 330 | + ambiguous expressions like ``[0x1for x in y]`` (which can be interpreted as | ||
| 331 | + ``[0x1 for x in y]`` or ``[0x1f or x in y]``). A syntax warning is raised | ||
| 332 | + if the numeric literal is immediately followed by one of keywords | ||
| 333 | + :keyword:`and`, :keyword:`else`, :keyword:`for`, :keyword:`if`, | ||
| 334 | + :keyword:`in`, :keyword:`is` and :keyword:`or`. In a future release it | ||
| 335 | + will be changed to a syntax error. (:gh:`87999`) | ||
| 336 | + * Support for ``__index__()`` and ``__int__()`` method returning non-int type: | ||
| 337 | + these methods will be required to return an instance of a strict subclass of | ||
| 338 | + :class:`int`. | ||
| 339 | + * Support for ``__float__()`` method returning a strict subclass of | ||
| 340 | + :class:`float`: these methods will be required to return an instance of | ||
| 341 | + :class:`float`. | ||
| 342 | + * Support for ``__complex__()`` method returning a strict subclass of | ||
| 343 | + :class:`complex`: these methods will be required to return an instance of | ||
| 344 | + :class:`complex`. | ||
| 345 | + * Delegation of ``int()`` to ``__trunc__()`` method. | ||
| 346 | + | ||
| 347 | + * :mod:`calendar`: ``calendar.January`` and ``calendar.February`` constants are | ||
| 348 | + deprecated and replaced by :data:`calendar.Month.JANUARY` and | ||
| 349 | + :data:`calendar.Month.FEBRUARY`. | ||
| 350 | + (Contributed by Prince Roshan in :gh:`103636`.) | ||
| 351 | + | ||
| 352 | + * :mod:`datetime`: | ||
| 353 | + | ||
| 354 | + * :meth:`~datetime.datetime.utcnow`: | ||
| 355 | + use ``datetime.datetime.now(tz=datetime.UTC)``. | ||
| 356 | + * :meth:`~datetime.datetime.utcfromtimestamp`: | ||
| 357 | + use ``datetime.datetime.fromtimestamp(timestamp, tz=datetime.UTC)``. | ||
| 358 | + | ||
| 359 | + * :mod:`gettext`: Plural value must be an integer. | ||
| 360 | + | ||
| 361 | + * :mod:`importlib`: | ||
| 362 | + | ||
| 363 | + * ``load_module()`` method: use ``exec_module()`` instead. | ||
| 364 | + * :func:`~importlib.util.cache_from_source` *debug_override* parameter is | ||
| 365 | + deprecated: use the *optimization* parameter instead. | ||
| 366 | + | ||
| 367 | + * :mod:`importlib.metadata`: | ||
| 368 | + | ||
| 369 | + * ``EntryPoints`` tuple interface. | ||
| 370 | + * Implicit ``None`` on return values. | ||
| 371 | + | ||
| 372 | + * :mod:`importlib.resources`: First parameter to files is renamed to 'anchor'. | ||
| 373 | + * :mod:`importlib.resources` deprecated methods: | ||
| 374 | + | ||
| 375 | + * ``contents()`` | ||
| 376 | + * ``is_resource()`` | ||
| 377 | + * ``open_binary()`` | ||
| 378 | + * ``open_text()`` | ||
| 379 | + * ``path()`` | ||
| 380 | + * ``read_binary()`` | ||
| 381 | + * ``read_text()`` | ||
| 382 | + | ||
| 383 | + Use ``files()`` instead. Refer to `importlib-resources: Migrating from Legacy | ||
| 384 | + <https://importlib-resources.readthedocs.io/en/latest/using.html#migrating-from-legacy>`_ | ||
| 385 | + for migration advice. | ||
| 386 | + | ||
| 387 | + * :func:`locale.getdefaultlocale`: use :func:`locale.setlocale()`, | ||
| 388 | + :func:`locale.getencoding()` and :func:`locale.getlocale()` instead | ||
| 389 | + (:gh:`90817`) | ||
| 390 | + | ||
| 391 | + * :mod:`mailbox`: Use of StringIO input and text mode is deprecated, use | ||
| 392 | + BytesIO and binary mode instead. | ||
| 393 | + | ||
| 394 | + * :mod:`os`: Calling :func:`os.register_at_fork` in multi-threaded process. | ||
| 395 | + | ||
| 396 | + * :class:`!pydoc.ErrorDuringImport`: A tuple value for *exc_info* parameter is | ||
| 397 | + deprecated, use an exception instance. | ||
| 398 | + | ||
| 399 | + * :mod:`re`: bad character in group name. | ||
| 400 | + | ||
| 401 | + * :mod:`ssl` options and protocols: | ||
| 402 | + | ||
| 403 | + * :class:`ssl.SSLContext` without protocol argument is deprecated. | ||
| 404 | + * :class:`ssl.SSLContext`: :meth:`~ssl.SSLContext.set_npn_protocols` and | ||
| 405 | + :meth:`!~ssl.SSLContext.selected_npn_protocol` are deprecated: use ALPN | ||
| 406 | + instead. | ||
| 407 | + * ``ssl.OP_NO_SSL*`` options | ||
| 408 | + * ``ssl.OP_NO_TLS*`` options | ||
| 409 | + * ``ssl.PROTOCOL_SSLv3`` | ||
| 410 | + * ``ssl.PROTOCOL_TLS`` | ||
| 411 | + * ``ssl.PROTOCOL_TLSv1`` | ||
| 412 | + * ``ssl.PROTOCOL_TLSv1_1`` | ||
| 413 | + * ``ssl.PROTOCOL_TLSv1_2`` | ||
| 414 | + * ``ssl.TLSVersion.SSLv3`` | ||
| 415 | + * ``ssl.TLSVersion.TLSv1`` | ||
| 416 | + * ``ssl.TLSVersion.TLSv1_1`` | ||
| 417 | + | ||
| 418 | + * :mod:`!sre_compile`, :mod:`!sre_constants` and :mod:`!sre_parse` modules. | ||
| 419 | + | ||
| 420 | + * ``types.CodeType.co_lnotab``: use the ``co_lines`` attribute instead. | ||
| 421 | + | ||
| 422 | + * :class:`typing.Text` (:gh:`92332`). | ||
| 423 | + | ||
| 424 | + * :func:`sysconfig.is_python_build` *check_home* parameter is deprecated and | ||
| 425 | + ignored. | ||
| 426 | + | ||
| 427 | + * :mod:`threading` methods: | ||
| 428 | + | ||
| 429 | + * :meth:`!threading.Condition.notifyAll`: use :meth:`~threading.Condition.notify_all`. | ||
| 430 | + * :meth:`!threading.Event.isSet`: use :meth:`~threading.Event.is_set`. | ||
| 431 | + * :meth:`!threading.Thread.isDaemon`, :meth:`threading.Thread.setDaemon`: | ||
| 432 | + use :attr:`threading.Thread.daemon` attribute. | ||
| 433 | + * :meth:`!threading.Thread.getName`, :meth:`threading.Thread.setName`: | ||
| 434 | + use :attr:`threading.Thread.name` attribute. | ||
| 435 | + * :meth:`!threading.currentThread`: use :meth:`threading.current_thread`. | ||
| 436 | + * :meth:`!threading.activeCount`: use :meth:`threading.active_count`. | ||
| 437 | + | ||
| 438 | + * :class:`unittest.IsolatedAsyncioTestCase`: it is deprecated to return a value | ||
| 439 | + that is not None from a test case. | ||
| 440 | + | ||
| 441 | + * :mod:`urllib.request`: :class:`~urllib.request.URLopener` and | ||
| 442 | + :class:`~urllib.request.FancyURLopener` style of invoking requests is | ||
| 443 | + deprecated. Use newer :func:`~urllib.request.urlopen` functions and methods. | ||
| 444 | + | ||
| 445 | + * :func:`!urllib.parse.to_bytes`. | ||
| 446 | + | ||
| 447 | + * :mod:`urllib.parse` deprecated functions: :func:`~urllib.parse.urlparse` instead | ||
| 448 | + | ||
| 449 | + * ``splitattr()`` | ||
| 450 | + * ``splithost()`` | ||
| 451 | + * ``splitnport()`` | ||
| 452 | + * ``splitpasswd()`` | ||
| 453 | + * ``splitport()`` | ||
| 454 | + * ``splitquery()`` | ||
| 455 | + * ``splittag()`` | ||
| 456 | + * ``splittype()`` | ||
| 457 | + * ``splituser()`` | ||
| 458 | + * ``splitvalue()`` | ||
| 459 | + | ||
| 460 | + * :mod:`wsgiref`: ``SimpleHandler.stdout.write()`` should not do partial | ||
| 461 | + writes. | ||
| 462 | + | ||
| 463 | + * :meth:`zipimport.zipimporter.load_module` is deprecated: | ||
| 464 | + use :meth:`~zipimport.zipimporter.exec_module` instead. | ||
| 465 | + | ||
| 175 | 466 | ||
| 176 | 467 | Removed | |
| 177 | 468 | ======= | |
@@ -618,6 +909,8 @@ Removed | |||
| 618 | 909 | Pending Removal in Python 3.14 | |
| 619 | 910 | ------------------------------ | |
| 620 | 911 | ||
| 912 | + * Creating immutable types (:data:`Py_TPFLAGS_IMMUTABLETYPE`) with mutable | ||
| 913 | + bases using the C API. | ||
| 621 | 914 | * Global configuration variables: | |
| 622 | 915 | ||
| 623 | 916 | * :c:var:`Py_DebugFlag`: use :c:member:`PyConfig.parser_debug` | |
| Back | FazBrowse Home | New Git URL |
0 commit comments