Skip to content

Commit

Permalink
gh-109653: Defer importing warnings in several modules (#110286)
Browse files Browse the repository at this point in the history
  • Loading branch information
AlexWaygood authored Oct 4, 2023
1 parent f02f26e commit bfe7e72
Show file tree
Hide file tree
Showing 6 changed files with 10 additions and 6 deletions.
5 changes: 3 additions & 2 deletions Lib/argparse.py
Original file line number Diff line number Diff line change
Expand Up @@ -89,8 +89,6 @@
import re as _re
import sys as _sys

import warnings

from gettext import gettext as _, ngettext

SUPPRESS = '==SUPPRESS=='
Expand Down Expand Up @@ -910,6 +908,7 @@ def __init__(self,
# 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 "
Expand Down Expand Up @@ -1700,6 +1699,7 @@ def _remove_action(self, action):
self._group_actions.remove(action)

def add_argument_group(self, *args, **kwargs):
import warnings
warnings.warn(
"Nesting argument groups is deprecated.",
category=DeprecationWarning,
Expand Down Expand Up @@ -1728,6 +1728,7 @@ def _remove_action(self, action):
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,
Expand Down
2 changes: 1 addition & 1 deletion Lib/calendar.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
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",
Expand Down Expand Up @@ -44,6 +43,7 @@ def __str__(self):

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':
Expand Down
2 changes: 1 addition & 1 deletion Lib/getpass.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
import io
import os
import sys
import warnings

__all__ = ["getpass","getuser","GetPassWarning"]

Expand Down Expand Up @@ -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:
Expand Down
2 changes: 1 addition & 1 deletion Lib/shutil.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
import fnmatch
import collections
import errno
import warnings

try:
import zlib
Expand Down Expand Up @@ -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)

Expand Down
2 changes: 1 addition & 1 deletion Lib/tarfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,6 @@
import struct
import copy
import re
import warnings

try:
import pwd
Expand Down Expand Up @@ -2219,6 +2218,7 @@ def _get_filter_function(self, filter):
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. '
Expand Down
Original file line number Diff line number Diff line change
@@ -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.

0 comments on commit bfe7e72

Please sign in to comment.