gh-109653: Defer importing `warnings` in several modules (#110286)

This commit is contained in:
Alex Waygood 2023-10-04 06:09:43 +01:00 committed by GitHub
parent f02f26e293
commit bfe7e72522
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 10 additions and 6 deletions

View File

@ -89,8 +89,6 @@ import os as _os
import re as _re
import sys as _sys
import warnings
from gettext import gettext as _, ngettext
SUPPRESS = '==SUPPRESS=='
@ -910,6 +908,7 @@ class BooleanOptionalAction(Action):
# parser.add_argument('-f', action=BooleanOptionalAction, type=int)
for field_name in ('type', 'choices', 'metavar'):
if locals()[field_name] is not _deprecated_default:
import warnings
warnings._deprecated(
field_name,
"{name!r} is deprecated as of Python 3.12 and will be "
@ -1700,6 +1699,7 @@ class _ArgumentGroup(_ActionsContainer):
self._group_actions.remove(action)
def add_argument_group(self, *args, **kwargs):
import warnings
warnings.warn(
"Nesting argument groups is deprecated.",
category=DeprecationWarning,
@ -1728,6 +1728,7 @@ class _MutuallyExclusiveGroup(_ArgumentGroup):
self._group_actions.remove(action)
def add_mutually_exclusive_group(self, *args, **kwargs):
import warnings
warnings.warn(
"Nesting mutually exclusive groups is deprecated.",
category=DeprecationWarning,

View File

@ -10,7 +10,6 @@ import datetime
from enum import IntEnum, global_enum
import locale as _locale
from itertools import repeat
import warnings
__all__ = ["IllegalMonthError", "IllegalWeekdayError", "setfirstweekday",
"firstweekday", "isleap", "leapdays", "weekday", "monthrange",
@ -44,6 +43,7 @@ class IllegalWeekdayError(ValueError):
def __getattr__(name):
if name in ('January', 'February'):
import warnings
warnings.warn(f"The '{name}' attribute is deprecated, use '{name.upper()}' instead",
DeprecationWarning, stacklevel=2)
if name == 'January':

View File

@ -18,7 +18,6 @@ import contextlib
import io
import os
import sys
import warnings
__all__ = ["getpass","getuser","GetPassWarning"]
@ -118,6 +117,7 @@ def win_getpass(prompt='Password: ', stream=None):
def fallback_getpass(prompt='Password: ', stream=None):
import warnings
warnings.warn("Can not control echo on the terminal.", GetPassWarning,
stacklevel=2)
if not stream:

View File

@ -10,7 +10,6 @@ import stat
import fnmatch
import collections
import errno
import warnings
try:
import zlib
@ -723,6 +722,7 @@ def rmtree(path, ignore_errors=False, onerror=None, *, onexc=None, dir_fd=None):
"""
if onerror is not None:
import warnings
warnings.warn("onerror argument is deprecated, use onexc instead",
DeprecationWarning, stacklevel=2)

View File

@ -46,7 +46,6 @@ import time
import struct
import copy
import re
import warnings
try:
import pwd
@ -2219,6 +2218,7 @@ class TarFile(object):
if filter is None:
filter = self.extraction_filter
if filter is None:
import warnings
warnings.warn(
'Python 3.14 will, by default, filter extracted tar '
+ 'archives and reject files or modify their metadata. '

View File

@ -0,0 +1,3 @@
Slightly improve the import time of several standard-library modules by
deferring imports of :mod:`warnings` within those modules. Patch by Alex
Waygood.