Browse Source
Issue #17117: Have both import itself and importlib.util.set_loader()
Issue #17117: Have both import itself and importlib.util.set_loader()
set __loader__ on a module when set to None. Thanks to Gökcen Eraslan for the fix.pull/224/head
8 changed files with 3417 additions and 3349 deletions
-
4Doc/library/importlib.rst
-
16Doc/reference/import.rst
-
9Lib/importlib/_bootstrap.py
-
44Lib/test/test_importlib/import_/test___loader__.py
-
42Lib/test/test_importlib/test_util.py
-
1Misc/ACKS
-
3Misc/NEWS
-
6647Python/importlib.h
@ -0,0 +1,44 @@ |
|||
import imp |
|||
import sys |
|||
import unittest |
|||
|
|||
from .. import util |
|||
from . import util as import_util |
|||
|
|||
|
|||
class LoaderMock: |
|||
|
|||
def find_module(self, fullname, path=None): |
|||
return self |
|||
|
|||
def load_module(self, fullname): |
|||
sys.modules[fullname] = self.module |
|||
return self.module |
|||
|
|||
|
|||
class LoaderAttributeTests(unittest.TestCase): |
|||
|
|||
def test___loader___missing(self): |
|||
module = imp.new_module('blah') |
|||
try: |
|||
del module.__loader__ |
|||
except AttributeError: |
|||
pass |
|||
loader = LoaderMock() |
|||
loader.module = module |
|||
with util.uncache('blah'), util.import_state(meta_path=[loader]): |
|||
module = import_util.import_('blah') |
|||
self.assertEqual(loader, module.__loader__) |
|||
|
|||
def test___loader___is_None(self): |
|||
module = imp.new_module('blah') |
|||
module.__loader__ = None |
|||
loader = LoaderMock() |
|||
loader.module = module |
|||
with util.uncache('blah'), util.import_state(meta_path=[loader]): |
|||
returned_module = import_util.import_('blah') |
|||
self.assertEqual(loader, module.__loader__) |
|||
|
|||
|
|||
if __name__ == '__main__': |
|||
unittest.main() |
|||
6647
Python/importlib.h
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
Write
Preview
Loading…
Cancel
Save
Reference in new issue