Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 4 additions & 7 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -586,10 +586,10 @@ Lib/test/test_string/test_templatelib.py @lysnikolaou @AA-Turner
**/*sysconfig* @FFY00

# SQLite 3
Doc/library/sqlite3.rst @berkerpeksag @erlend-aasland
Lib/sqlite3/ @berkerpeksag @erlend-aasland
Lib/test/test_sqlite3/ @berkerpeksag @erlend-aasland
Modules/_sqlite/ @berkerpeksag @erlend-aasland
Doc/library/sqlite3.rst @erlend-aasland
Lib/sqlite3/ @erlend-aasland
Lib/test/test_sqlite3/ @erlend-aasland
Modules/_sqlite/ @erlend-aasland

# Subprocess
Lib/subprocess.py @gpshead
Expand Down Expand Up @@ -622,9 +622,6 @@ Modules/_typesmodule.c @AA-Turner
Lib/unittest/mock.py @cjw296
Lib/test/test_unittest/testmock/ @cjw296

# Urllib
**/*robotparser* @berkerpeksag

# Venv
**/*venv* @vsajip @FFY00

Expand Down
2 changes: 1 addition & 1 deletion Doc/deprecations/pending-removal-in-3.16.rst
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ Pending removal in Python 3.16

* :mod:`sys`:

* The :func:`~sys._enablelegacywindowsfsencoding` function
* The :func:`!_enablelegacywindowsfsencoding` function
has been deprecated since Python 3.13.
Use the :envvar:`PYTHONLEGACYWINDOWSFSENCODING` environment variable instead.

Expand Down
8 changes: 8 additions & 0 deletions Doc/library/mimetypes.rst
Original file line number Diff line number Diff line change
Expand Up @@ -129,10 +129,18 @@ behavior of the module.
Add a mapping from the MIME type *type* to the extension *ext*. When the
extension is already known, the new type will replace the old one. When the type
is already known the extension will be added to the list of known extensions.
Valid extensions are empty or start with a ``'.'``.

When *strict* is ``True`` (the default), the mapping will be added to the
official MIME types, otherwise to the non-standard ones.

.. deprecated:: 3.14
*ext* values that do not start with ``'.'`` are deprecated.

.. versionchanged:: next
*ext* now must start with ``'.'``. Otherwise :exc:`ValueError` is raised.



.. data:: inited

Expand Down
27 changes: 1 addition & 26 deletions Doc/library/sys.rst
Original file line number Diff line number Diff line change
Expand Up @@ -879,7 +879,7 @@ always available. Unless explicitly noted otherwise, all variables are read-only

.. versionchanged:: 3.6
Windows is no longer guaranteed to return ``'mbcs'``. See :pep:`529`
and :func:`_enablelegacywindowsfsencoding` for more information.
for more information.

.. versionchanged:: 3.7
Return ``'utf-8'`` if the :ref:`Python UTF-8 Mode <utf8-mode>` is
Expand Down Expand Up @@ -2107,31 +2107,6 @@ always available. Unless explicitly noted otherwise, all variables are read-only
See :pep:`768` for more details.


.. function:: _enablelegacywindowsfsencoding()

Changes the :term:`filesystem encoding and error handler` to 'mbcs' and
'replace' respectively, for consistency with versions of Python prior to
3.6.

This is equivalent to defining the :envvar:`PYTHONLEGACYWINDOWSFSENCODING`
environment variable before launching Python.

See also :func:`sys.getfilesystemencoding` and
:func:`sys.getfilesystemencodeerrors`.

.. availability:: Windows.

.. note::
Changing the filesystem encoding after Python startup is risky because
the old fsencoding or paths encoded by the old fsencoding may be cached
somewhere. Use :envvar:`PYTHONLEGACYWINDOWSFSENCODING` instead.

.. versionadded:: 3.6
See :pep:`529` for more details.

.. deprecated-removed:: 3.13 3.16
Use :envvar:`PYTHONLEGACYWINDOWSFSENCODING` instead.

.. data:: stdin
stdout
stderr
Expand Down
3 changes: 2 additions & 1 deletion Doc/tools/removed-ids.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,5 @@ c-api/file.html: deprecated-api
library/asyncio-task.html: terminating-a-task-group

# Removed APIs
library/symtable.html: symtable.Class.get_methods
library/symtable.html: symtable.Class.get_methods
library/sys.html: sys._enablelegacywindowsfsencoding
3 changes: 0 additions & 3 deletions Doc/using/cmdline.rst
Original file line number Diff line number Diff line change
Expand Up @@ -1154,9 +1154,6 @@ conflict.
'replace', respectively. Otherwise, the new defaults 'utf-8' and
'surrogatepass' are used.

This may also be enabled at runtime with
:func:`sys._enablelegacywindowsfsencoding`.

.. availability:: Windows.

.. versionadded:: 3.6
Expand Down
2 changes: 1 addition & 1 deletion Doc/whatsnew/3.13.rst
Original file line number Diff line number Diff line change
Expand Up @@ -1958,7 +1958,7 @@ New Deprecations

* :mod:`sys`:

* Deprecate the :func:`~sys._enablelegacywindowsfsencoding` function,
* Deprecate the :func:`!_enablelegacywindowsfsencoding` function,
to be removed in Python 3.16.
Use the :envvar:`PYTHONLEGACYWINDOWSFSENCODING` environment variable instead.
(Contributed by Inada Naoki in :gh:`73427`.)
Expand Down
22 changes: 22 additions & 0 deletions Doc/whatsnew/3.16.rst
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,13 @@ annotationlib
Use :meth:`annotationlib.ForwardRef.evaluate`
or :func:`typing.evaluate_forward_ref` instead.

asyncio
-------

* The :func:`!asyncio.iscoroutinefunction`
which has been deprecated since Python 3.14.
Use :func:`inspect.iscoroutinefunction` instead.

functools
---------

Expand All @@ -127,12 +134,27 @@ logging
and scheduled for removal in Python 3.16. Define handlers with the *stream*
argument instead.

mimetypes
---------

* Valid extensions start with a '.' or are empty for
:meth:`mimetypes.MimeTypes.add_type`.
Undotted extensions now raise a :exc:`ValueError`.

symtable
--------

* The :meth:`!symtable.Class.get_methods` method
which has been deprecated since Python 3.14.

sys
---

* The :func:`!_enablelegacywindowsfsencoding` function
which has been deprecated since Python 3.13.
Use the :envvar:`PYTHONLEGACYWINDOWSFSENCODING` environment variable instead.
(Contributed by Stan Ulbrych in :gh:`149595`.)

sysconfig
---------

Expand Down
2 changes: 1 addition & 1 deletion Doc/whatsnew/3.6.rst
Original file line number Diff line number Diff line change
Expand Up @@ -517,7 +517,7 @@ Applications that do not use str to represent paths should use
:func:`os.fsencode` and :func:`os.fsdecode` to ensure their bytes are
correctly encoded. To revert to the previous behaviour, set
:envvar:`PYTHONLEGACYWINDOWSFSENCODING` or call
:func:`sys._enablelegacywindowsfsencoding`.
:func:`!sys._enablelegacywindowsfsencoding`.

See :pep:`529` for more information and discussion of code modifications that
may be required.
Expand Down
3 changes: 0 additions & 3 deletions Include/internal/pycore_pylifecycle.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,6 @@ extern int _Py_SetFileSystemEncoding(
const char *errors);
extern void _Py_ClearFileSystemEncoding(void);
extern PyStatus _PyUnicode_InitEncodings(PyThreadState *tstate);
#ifdef MS_WINDOWS
extern int _PyUnicode_EnableLegacyWindowsFSEncoding(void);
#endif

extern int _Py_IsLocaleCoercionTarget(const char *ctype_loc);

Expand Down
3 changes: 2 additions & 1 deletion Lib/asyncio/base_events.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
import traceback
import warnings
import weakref
import inspect

try:
import ssl
Expand Down Expand Up @@ -840,7 +841,7 @@ def call_soon(self, callback, *args, context=None):

def _check_callback(self, callback, method):
if (coroutines.iscoroutine(callback) or
coroutines._iscoroutinefunction(callback)):
inspect.iscoroutinefunction(callback)):
raise TypeError(
f"coroutines cannot be used with {method}()")
if not callable(callback):
Expand Down
21 changes: 1 addition & 20 deletions Lib/asyncio/coroutines.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
__all__ = 'iscoroutinefunction', 'iscoroutine'
__all__ = ('iscoroutine',)

import collections.abc
import inspect
Expand All @@ -13,25 +13,6 @@ def _is_debug_mode():
bool(os.environ.get('PYTHONASYNCIODEBUG')))


# A marker for iscoroutinefunction.
_is_coroutine = object()


def iscoroutinefunction(func):
import warnings
"""Return True if func is a decorated coroutine function."""
warnings._deprecated("asyncio.iscoroutinefunction",
f"{warnings._DEPRECATED_MSG}; "
"use inspect.iscoroutinefunction() instead",
remove=(3,16))
return _iscoroutinefunction(func)


def _iscoroutinefunction(func):
return (inspect.iscoroutinefunction(func) or
getattr(func, '_is_coroutine', None) is _is_coroutine)


# Prioritize native coroutine check to speed-up
# asyncio.iscoroutine.
_COROUTINE_TYPES = (types.CoroutineType, collections.abc.Coroutine)
Expand Down
3 changes: 2 additions & 1 deletion Lib/asyncio/unix_events.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import sys
import threading
import warnings
import inspect

from . import base_events
from . import base_subprocess
Expand Down Expand Up @@ -94,7 +95,7 @@ def add_signal_handler(self, sig, callback, *args):
Raise RuntimeError if there is a problem setting up the handler.
"""
if (coroutines.iscoroutine(callback) or
coroutines._iscoroutinefunction(callback)):
inspect.iscoroutinefunction(callback)):
raise TypeError("coroutines cannot be used "
"with add_signal_handler()")
self._check_signal(sig)
Expand Down
9 changes: 1 addition & 8 deletions Lib/mimetypes.py
Original file line number Diff line number Diff line change
Expand Up @@ -93,14 +93,7 @@ def add_type(self, type, ext, strict=True):
Valid extensions are empty or start with a '.'.
"""
if ext and not ext.startswith('.'):
from warnings import _deprecated

_deprecated(
"Undotted extensions",
"Using undotted extensions is deprecated and "
"will raise a ValueError in Python {remove}",
remove=(3, 16),
)
raise ValueError(f"Extension {ext!r} must start with '.'")

if not type:
return
Expand Down
Loading
Loading