mirror of
https://github.com/python/cpython.git
synced 2025-08-30 05:35:08 +00:00
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:
parent
ce7d4cbc3b
commit
de4ebfe559
3 changed files with 20 additions and 11 deletions
|
@ -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]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue