[3.6] replace dynamic import with 'exec' with importlib.import_module (GH-5433) (GH-5440)

(cherry picked from commit 77526f05fa)
This commit is contained in:
Benjamin Peterson 2018-01-29 22:02:09 -08:00 committed by GitHub
parent 05f91a42cd
commit 88fa79a10a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -9,6 +9,7 @@
import array import array
from binascii import unhexlify from binascii import unhexlify
import hashlib import hashlib
import importlib
import itertools import itertools
import os import os
import sys import sys
@ -86,11 +87,11 @@ class HashLibTestCase(unittest.TestCase):
def _conditional_import_module(self, module_name): def _conditional_import_module(self, module_name):
"""Import a module and return a reference to it or None on failure.""" """Import a module and return a reference to it or None on failure."""
try: try:
exec('import '+module_name) return importlib.import_module(module_name)
except ImportError as error: except ModuleNotFoundError as error:
if self._warn_on_extension_import: if self._warn_on_extension_import:
warnings.warn('Did a C extension fail to compile? %s' % error) warnings.warn('Did a C extension fail to compile? %s' % error)
return locals().get(module_name) return None
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
algorithms = set() algorithms = set()