]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Issue #16880: _imp.load_dynamic() is not defined on a platform that
authorBrett Cannon <brett@python.org>
Sun, 17 Mar 2013 22:48:16 +0000 (15:48 -0700)
committerBrett Cannon <brett@python.org>
Sun, 17 Mar 2013 22:48:16 +0000 (15:48 -0700)
does not support dynamic loading (e.g. Atari), so make sure that imp
doesn't assume it always exists.

Patch by Christian Heimes.

Lib/imp.py
Misc/NEWS

index da9c84ee39d962ad32637a9488bf895950713290..7a7079f71d587aea34d45f284b25c3df04e85f21 100644 (file)
@@ -7,9 +7,14 @@ functionality over this module.
 """
 # (Probably) need to stay in _imp
 from _imp import (lock_held, acquire_lock, release_lock,
-                  load_dynamic, get_frozen_object, is_frozen_package,
+                  get_frozen_object, is_frozen_package,
                   init_builtin, init_frozen, is_builtin, is_frozen,
                   _fix_co_filename)
+try:
+    from _imp import load_dynamic
+except ImportError:
+    # Platform doesn't support dynamic loading.
+    load_dynamic = None
 
 # Directly exposed by this module
 from importlib._bootstrap import new_module
@@ -160,7 +165,7 @@ def load_module(name, file, filename, details):
             return load_source(name, filename, file)
         elif type_ == PY_COMPILED:
             return load_compiled(name, filename, file)
-        elif type_ == C_EXTENSION:
+        elif type_ == C_EXTENSION and load_dynamic is not None:
             return load_dynamic(name, filename, file)
         elif type_ == PKG_DIRECTORY:
             return load_package(name, filename)
index 2cdb4915e23afee347b9158843ceeafbf2d91df4..a92caf21fba5a96ec93eca93a5162dea63432d86 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -193,6 +193,8 @@ Core and Builtins
 Library
 -------
 
+Issue #16880: Do not assume _imp.load_dynamic() is defined in the imp module.
+
 - Issue #16389: Fixed a performance regression relative to Python 3.1 in the
   caching of compiled regular expressions.