diff options
author | Thomas Grainger <tagrain@gmail.com> | 2021-07-21 11:47:44 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-07-21 11:47:44 (GMT) |
commit | ab7fcc8fbdc11091370deeb000a787fb02f9b13d (patch) | |
tree | 65c03b95e2e331d79311c39a872ed11c14e3893c /Lib | |
parent | 64f54b7ccd49764b0304e076bfd79b5482988f53 (diff) | |
download | cpython-ab7fcc8fbdc11091370deeb000a787fb02f9b13d.zip cpython-ab7fcc8fbdc11091370deeb000a787fb02f9b13d.tar.gz cpython-ab7fcc8fbdc11091370deeb000a787fb02f9b13d.tar.bz2 |
bpo-44686 replace unittest.mock._importer with pkgutil.resolve_name (GH-18544)
Automerge-Triggered-By: GH:cjw296
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/unittest/mock.py | 27 |
1 files changed, 4 insertions, 23 deletions
diff --git a/Lib/unittest/mock.py b/Lib/unittest/mock.py index 5be9120..ecf84d2 100644 --- a/Lib/unittest/mock.py +++ b/Lib/unittest/mock.py @@ -30,6 +30,7 @@ import inspect import pprint import sys import builtins +import pkgutil from asyncio import iscoroutinefunction from types import CodeType, ModuleType, MethodType from unittest.util import safe_repr @@ -1239,25 +1240,6 @@ class Mock(CallableMixin, NonCallableMock): """ -def _dot_lookup(thing, comp, import_path): - try: - return getattr(thing, comp) - except AttributeError: - __import__(import_path) - return getattr(thing, comp) - - -def _importer(target): - components = target.split('.') - import_path = components.pop(0) - thing = __import__(import_path) - - for comp in components: - import_path += ".%s" % comp - thing = _dot_lookup(thing, comp, import_path) - return thing - - # _check_spec_arg_typos takes kwargs from commands like patch and checks that # they don't contain common misspellings of arguments related to autospeccing. def _check_spec_arg_typos(kwargs_to_check): @@ -1611,8 +1593,7 @@ def _get_target(target): except (TypeError, ValueError): raise TypeError("Need a valid target to patch. You supplied: %r" % (target,)) - getter = lambda: _importer(target) - return getter, attribute + return partial(pkgutil.resolve_name, target), attribute def _patch_object( @@ -1667,7 +1648,7 @@ def _patch_multiple(target, spec=None, create=False, spec_set=None, for choosing which methods to wrap. """ if type(target) is str: - getter = lambda: _importer(target) + getter = partial(pkgutil.resolve_name, target) else: getter = lambda: target @@ -1847,7 +1828,7 @@ class _patch_dict(object): def _patch_dict(self): values = self.values if isinstance(self.in_dict, str): - self.in_dict = _importer(self.in_dict) + self.in_dict = pkgutil.resolve_name(self.in_dict) in_dict = self.in_dict clear = self.clear |