File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -456,6 +456,8 @@ def get_loader(module_or_name):
456456 """
457457 if module_or_name in sys .modules :
458458 module_or_name = sys .modules [module_or_name ]
459+ if module_or_name is None :
460+ return None
459461 if isinstance (module_or_name , ModuleType ):
460462 module = module_or_name
461463 loader = getattr (module , '__loader__' , None )
@@ -487,7 +489,7 @@ def find_loader(fullname):
487489 # pkgutil previously raised ImportError
488490 msg = "Error while finding loader for {!r} ({}: {})"
489491 raise ImportError (msg .format (fullname , type (ex ), ex )) from ex
490- return spec .loader
492+ return spec .loader if spec is not None else None
491493
492494
493495def extend_path (path , name ):
Original file line number Diff line number Diff line change @@ -363,6 +363,20 @@ def test_get_loader_handles_spec_attribute_none(self):
363363 loader = pkgutil .get_loader (name )
364364 self .assertIsNone (loader )
365365
366+ def test_get_loader_None_in_sys_modules (self ):
367+ name = 'totally bogus'
368+ sys .modules [name ] = None
369+ try :
370+ loader = pkgutil .get_loader (name )
371+ finally :
372+ del sys .modules [name ]
373+ self .assertIsNone (loader )
374+
375+ def test_find_loader_missing_module (self ):
376+ name = 'totally bogus'
377+ loader = pkgutil .find_loader (name )
378+ self .assertIsNone (loader )
379+
366380 def test_find_loader_avoids_emulation (self ):
367381 with check_warnings () as w :
368382 self .assertIsNotNone (pkgutil .find_loader ("sys" ))
Original file line number Diff line number Diff line change @@ -18,6 +18,12 @@ Core and Builtins
1818Library
1919-------
2020
21+ - Issue #14710: pkgutil.get_loader() no longer raises an exception when None is
22+ found in sys.modules.
23+
24+ - Issue #14710: pkgutil.find_loader() no longer raises an exception when a
25+ module doesn't exist.
26+
2127- Issue #21538: The plistlib module now supports loading of binary plist files
2228 when reference or offset size is not a power of two.
2329
You can’t perform that action at this time.
0 commit comments