mirror of https://github.com/python/cpython
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.
This commit is contained in:
parent
7fab676e87
commit
3b1a06c1ea
|
@ -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)
|
||||
|
|
|
@ -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().
|
||||
|
|
Loading…
Reference in New Issue