8000 gh-118761: Add test_lazy_import for more modules by danielhollas · Pull Request #133057 · python/cpython · GitHub
[go: up one dir, main page]

Skip to content

gh-118761: Add test_lazy_import for more modules #133057

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 9 commits into from
May 5, 2025
7 changes: 7 additions & 0 deletions Lib/test/test_ast/test_ast.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
from test.support import os_helper
from test.support import skip_emscripten_stack_overflow, skip_wasi_stack_overflow
from test.support.ast_helper import ASTTestMixin
from test.support.import_helper import ensure_lazy_imports
from test.test_ast.utils import to_tuple
from test.test_ast.snippets import (
eval_tests, eval_results, exec_tests, exec_results, single_tests, single_results
Expand All @@ -47,6 +48,12 @@ def ast_repr_update_snapshots() -> None:
AST_REPR_DATA_FILE.write_text("\n".join(data))


class LazyImportTest(unittest.TestCase):
@support.cpython_only
def test_lazy_import(self):
ensure_lazy_imports("ast", {"contextlib", "enum", "inspect", "re", "collections", "argparse"})


class AST_Tests(unittest.TestCase):
maxDiff = None

Expand Down
8 changes: 8 additions & 0 deletions Lib/test/test_base64.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,16 @@
import binascii
import os
from array import array
from test.support import cpython_only
from test.support import os_helper
from test.support import script_helper
from test.support.import_helper import ensure_lazy_imports


class LazyImportTest(unittest.TestCase):
@cpython_only
def test_lazy_import(self):
ensure_lazy_imports("base64", {"re", "getopt"})


class LegacyBase64TestCase(unittest.TestCase):
Expand Down
8 changes: 7 additions & 1 deletion Lib/test/test_cmd.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,15 @@
import io
import textwrap
from test import support
from test.support.import_helper import import_module
from test.support.import_helper import ensure_lazy_imports, import_module
from test.support.pty_helper import run_pty

class LazyImportTest(unittest.TestCase):
@support.cpython_only
def test_lazy_import(self):
ensure_lazy_imports("cmd", {"inspect", "string"})


class samplecmdclass(cmd.Cmd):
"""
Instance the sampleclass:
Expand Down
7 changes: 6 additions & 1 deletion Lib/test/test_csv.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@
import gc
import pickle
from test import support
from test.support import import_helper, check_disallow_instantiation
from test.support import cpython_only, import_helper, check_disallow_instantiation
from test.support.import_helper import ensure_lazy_imports
from itertools import permutations
from textwrap import dedent
from collections import OrderedDict
Expand Down Expand Up @@ -1565,6 +1566,10 @@ class MiscTestCase(unittest.TestCase):
def test__all__(self):
support.check__all__(self, csv, ('csv', '_csv'))

@cpython_only
def test_lazy_import(self):
ensure_lazy_imports("csv", {"re"})

def test_subclassable(self):
# issue 44089
class Foo(csv.Error): ...
Expand Down
10 changes: 10 additions & 0 deletions Lib/test/test_email/test_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,16 @@
import time
import unittest

from test.support import cpython_only
from test.support.import_helper import ensure_lazy_imports


class TestImportTime(unittest.TestCase):

@cpython_only
def test_lazy_import(self):
ensure_lazy_imports("email.utils", {"random", "socket"})


class DateTimeTests(unittest.TestCase):

Expand Down
7 changes: 6 additions & 1 deletion Lib/test/test_enum.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,8 @@
from pickle import dumps, loads, PicklingError, HIGHEST_PROTOCOL
from test import support
from test.support import ALWAYS_EQ, REPO_ROOT
from test.support import threading_helper
from test.support import threading_helper, cpython_only
from test.support.import_helper import ensure_lazy_imports
from datetime import timedelta

python_version = sys.version_info[:2]
Expand Down Expand Up @@ -5288,6 +5289,10 @@ class MiscTestCase(unittest.TestCase):
def test__all__(self):
support.check__all__(self, enum, not_exported={'bin', 'show_flag_values'})

@cpython_only
def test_lazy_import(self):
ensure_lazy_imports("enum", {"functools", "warnings", "inspect", "re"})

def test_doc_1(self):
class Single(Enum):
ONE = 1
Expand Down
9 changes: 9 additions & 0 deletions Lib/test/test_functools.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@

from test.support import import_helper
from test.support import threading_helper
from test.support import cpython_only
from test.support import EqualToForwardRef

import functools
Expand Down Expand Up @@ -63,6 +64,14 @@ def __add__(self, other):
class MyDict(dict):
pass

class TestImportTime(unittest.TestCase):

@cpython_only
def test_lazy_import(self):
import_helper.ensure_lazy_imports(
"functools", {"os", "weakref", "typing", "annotationlib", "warnings"}
)


class TestPartial:

Expand Down
7 changes: 6 additions & 1 deletion Lib/test/test_gettext.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@
from functools import partial

from test import support
from test.support import os_helper
from test.support import cpython_only, os_helper
from test.support.import_helper import ensure_lazy_imports


# TODO:
Expand Down Expand Up @@ -931,6 +932,10 @@ def test__all__(self):
support.check__all__(self, gettext,
not_exported={'c2py', 'ENOENT'})

@cpython_only
def test_lazy_import(self):
ensure_lazy_imports("gettext", {"re", "warnings", "locale"})


if __name__ == '__main__':
unittest.main()
Expand Down
9 changes: 7 additions & 2 deletions Lib/test/test_locale.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,18 @@
from decimal import Decimal
from test.support import verbose, is_android, linked_to_musl, os_helper
from test.support import cpython_only, verbose, is_android, linked_to_musl, os_helper
from test.support.warnings_helper import check_warnings
from test.support.import_helper import import_fresh_module
from test.support.import_helper import ensure_lazy_imports, import_fresh_module
from unittest import mock
import unittest
import locale
import sys
import codecs

class LazyImportTest(unittest.TestCase):
@cpython_only
def test_lazy_import(self):
ensure_lazy_imports("locale", {"re", "warnings"})


class BaseLocalizedTest(unittest.TestCase):
#
Expand Down
7 changes: 6 additions & 1 deletion Lib/test/test_mimetypes.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@
import unittest.mock
from platform import win32_edition
from test import support
from test.support import force_not_colorized, os_helper
from test.support import cpython_only, force_not_colorized, os_helper
from test.support.import_helper import ensure_lazy_imports

try:
import _winapi
Expand Down Expand Up @@ -435,6 +436,10 @@ class MiscTestCase(unittest.TestCase):
def test__all__(self):
support.check__all__(self, mimetypes)

@cpython_only
def test_lazy_import(self):
ensure_lazy_imports("mimetypes", {"os", "posixpath", "urllib.parse", "argparse"})


class CommandLineTest(unittest.TestCase):
@force_not_colorized
Expand Down
7 changes: 6 additions & 1 deletion Lib/test/test_optparse.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,9 @@

from io import StringIO
from test import support
from test.support import os_helper
from test.support import cpython_only, os_helper
from test.support.i18n_helper import TestTranslationsBase, update_translation_snapshots
from test.support.import_helper import ensure_lazy_imports

import optparse
from optparse import make_option, Option, \
Expand Down Expand Up @@ -1655,6 +1656,10 @@ def test__all__(self):
not_exported = {'check_builtin', 'AmbiguousOptionError', 'NO_DEFAULT'}
support.check__all__(self, optparse, not_exported=not_exported)

@cpython_only
def test_lazy_import(self):
ensure_lazy_imports("optparse", {"textwrap"})


class TestTranslations(TestTranslationsBase):
def test_translations(self):
Expand Down
7 changes: 7 additions & 0 deletions Lib/test/test_pathlib/test_pathlib.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
from urllib.request import pathname2url

from test.support import import_helper
from test.support import cpython_only
from test.support import is_emscripten, is_wasi
from test.support import infinite_recursion
from test.support import os_helper
Expand Down Expand Up @@ -80,6 +81,12 @@ def test_is_notimplemented(self):
self.assertTrue(isinstance(pathlib.UnsupportedOperation(), NotImplementedError))


class LazyImportTest(unittest.TestCase):
@cpython_only
def test_lazy_import(self):
import_helper.ensure_lazy_imports("pathlib", {"shutil"})


#
# Tests for the pure classes.
#
Expand Down
9 changes: 8 additions & 1 deletion Lib/test/test_pickle.py
B41A
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,8 @@
import doctest
import unittest
from test import support
from test.support import import_helper, os_helper
from test.support import cpython_only, import_helper, os_helper
from test.support.import_helper import ensure_lazy_imports

from test.pickletester import AbstractHookTests
from test.pickletester import AbstractUnpickleTests
Expand All @@ -36,6 +37,12 @@
has_c_implementation = False


class LazyImportTest(unittest.TestCase):
@cpython_only
def test_lazy_import(self):
ensure_lazy_imports("pickle", {"re"})


class PyPickleTests(AbstractPickleModuleTests, unittest.TestCase):
dump = staticmethod(pickle._dump)
dumps = staticmethod(pickle._dumps)
Expand Down
7 changes: 7 additions & 0 deletions Lib/test/test_pprint.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@
import types
import unittest

from test.support import cpython_only
from test.support.import_helper import ensure_lazy_imports

# list, tuple and dict subclasses that do or don't overwrite __repr__
class list2(list):
pass
Expand Down Expand Up @@ -129,6 +132,10 @@ def setUp(self):
self.b = list(range(200))
self.a[-12] = self.b

@cpython_only
def test_lazy_import(self):
ensure_lazy_imports("pprint", {"dataclasses", "re"})

def test_init(self):
pp = pprint.PrettyPrinter()
pp = pprint.PrettyPrinter(indent=4, width=40, depth=5,
Expand Down
7 changes: 7 additions & 0 deletions Lib/test/test_pstats.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import unittest

from test import support
from test.support.import_helper import ensure_lazy_imports
from io import StringIO
from pstats import SortKey
from enum import StrEnum, _test_simple_enum
Expand All @@ -10,6 +11,12 @@
import tempfile
import cProfile

class LazyImportTest(unittest.TestCase):
@support.cpython_only
def test_lazy_import(self):
ensure_lazy_imports("pstats", {"typing"})


class AddCallersTestCase(unittest.TestCase):
"""Tests for pstats.add_callers helper."""

Expand Down
2 changes: 2 additions & 0 deletions Lib/test/test_shlex.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import shlex
import string
import unittest
from test.support import cpython_only
from test.support import import_helper


Expand Down Expand Up @@ -364,6 +365,7 @@ def testPunctuationCharsReadOnly(self):
with self.assertRaises(AttributeError):
shlex_instance.punctuation_chars = False

@cpython_only
def test_lazy_imports(self):
import_helper.ensure_lazy_imports('shlex', {'collections', 're', 'os'})

Expand Down
9 changes: 8 additions & 1 deletion Lib/test/test_socket.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,9 @@
from unittest import mock
from test import support
from test.support import (
is_apple, os_helper, refleak_helper, socket_helper, threading_helper
cpython_only, is_apple, os_helper, refleak_helper, socket_helper, threading_helper
)
from test.support.import_helper import ensure_lazy_imports
import _thread as thread
import array
import contextlib
Expand Down Expand Up @@ -257,6 +258,12 @@ def downgrade_malformed_data_warning():
# Size in bytes of the int type
SIZEOF_INT = array.array("i").itemsize

class TestLazyImport(unittest.TestCase):
@cpython_only
def test_lazy_import(self):
ensure_lazy_imports("socket", {"array", "selectors"})


class SocketTCPTest(unittest.TestCase):

def setUp(self):
Expand Down
8 changes: 8 additions & 0 deletions Lib/test/test_string/test_string.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,14 @@
import string
from string import Template
import types
from test.support import cpython_only
from test.support.import_helper import ensure_lazy_imports


class LazyImportTest(unittest.TestCase):
@cpython_only
def test_lazy_import(self):
ensure_lazy_imports("base64", {"re", "collections"})


class ModuleTest(unittest.TestCase):
Expand Down
6 changes: 5 additions & 1 deletion Lib/test/test_threading.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import test.support
from test.support import threading_helper, requires_subprocess, requires_gil_enabled
from test.support import verbose, cpython_only, os_helper
from test.support.import_helper import import_module
from test.support.import_helper import ensure_lazy_imports, import_module
from test.support.script_helper import assert_python_ok, assert_python_failure
from test.support import force_not_colorized

Expand Down Expand Up @@ -120,6 +120,10 @@ def tearDown(self):
class ThreadTests(BaseTestCase):
maxDiff = 9999

@cpython_only
def test_lazy_import(self):
ensure_lazy_imports("threading", {"functools", "warnings"})

@cpython_only
def test_name(self):
def func(): pass
Expand Down
Loading
Loading
0