diff options
author | Brett Cannon <brett@python.org> | 2012-02-16 22:47:48 (GMT) |
---|---|---|
committer | Brett Cannon <brett@python.org> | 2012-02-16 22:47:48 (GMT) |
commit | 3b1a06c1eaec92242683b0a3460377e03cb6c214 (patch) | |
tree | a71d27d9d427a4061eefff835da8d9ae5890b0ae | |
parent | 7fab676e87302bb75a132ba0c1f7220e4702c16d (diff) | |
download | cpython-3b1a06c1eaec92242683b0a3460377e03cb6c214.zip cpython-3b1a06c1eaec92242683b0a3460377e03cb6c214.tar.gz cpython-3b1a06c1eaec92242683b0a3460377e03cb6c214.tar.bz2 |
importlib.__import__() now raises ValueError when level < 0.
This is to bring it more in line with what PEP 328 set out to do with
removing ambiguous absolute/relative import semantics.
-rw-r--r-- | Lib/importlib/_bootstrap.py | 2 | ||||
-rw-r--r-- | Lib/importlib/test/import_/test_api.py | 7 | ||||
-rw-r--r-- | Misc/NEWS | 3 |
3 files changed, 12 insertions, 0 deletions
diff --git a/Lib/importlib/_bootstrap.py b/Lib/importlib/_bootstrap.py index ad1561e..44349a8 100644 --- a/Lib/importlib/_bootstrap.py +++ b/Lib/importlib/_bootstrap.py @@ -1048,6 +1048,8 @@ def __import__(name, globals={}, locals={}, fromlist=[], level=0): raise TypeError("module name must be str, not {}".format(type(name))) if level == 0: module = _gcd_import(name) + elif level < 0: + raise ValueError('level must be >= 0') else: package = _calc___package__(globals) module = _gcd_import(name, package, level) diff --git a/Lib/importlib/test/import_/test_api.py b/Lib/importlib/test/import_/test_api.py index 9075d42..2fa1f90 100644 --- a/Lib/importlib/test/import_/test_api.py +++ b/Lib/importlib/test/import_/test_api.py @@ -12,6 +12,13 @@ class APITest(unittest.TestCase): with self.assertRaises(TypeError): util.import_(42) + def test_negative_level(self): + # Raise ValueError when a negative level is specified. + # PEP 328 did away with sys.module None entries and the ambiguity of + # absolute/relative imports. + with self.assertRaises(ValueError): + util.import_('os', globals(), level=-1) + def test_main(): from test.support import run_unittest @@ -466,6 +466,9 @@ Core and Builtins Library ------- +- Do away with ambiguous level values (as suggested by PEP 328) in + importlib.__import__() by raising ValueError when level < 0. + - Issue #2489: pty.spawn could consume 100% cpu when it encountered an EOF. - Issue #13014: Fix a possible reference leak in SSLSocket.getpeercert(). |