When the globals argument to importlib.__import__() contained any value for

__package__, it was used. This was incorrect since it could be set to None to
represent the fact that a proper value was unknown. Now None will trigger the
calculation for __package__.

Discovered when running importlib against test_importhooks.
This commit is contained in:
Brett Cannon 2009-08-30 19:53:48 +00:00
parent ce7d4cbc3b
commit de4ebfe559
3 changed files with 20 additions and 11 deletions

View file

@ -922,10 +922,10 @@ def __import__(name, globals={}, locals={}, fromlist=[], level=0):
if level == 0:
module = _gcd_import(name)
else:
# __package__ is not guaranteed to be defined.
try:
package = globals['__package__']
except KeyError:
# __package__ is not guaranteed to be defined or could be set to None
# to represent that it's proper value is unknown
package = globals.get('__package__')
if package is None:
package = globals['__name__']
if '__path__' not in globals:
package = package.rpartition('.')[0]