Skip to content

Commit 257b0c0

Browse files
ShaharNavehyouknowone
authored andcommitted
Update pkgutil.py from 3.14.3
1 parent 2ca3275 commit 257b0c0

File tree

2 files changed

+4
-126
lines changed

2 files changed

+4
-126
lines changed

Lib/pkgutil.py

Lines changed: 1 addition & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,9 @@
88
import os
99
import os.path
1010
import sys
11-
from types import ModuleType
12-
import warnings
1311

1412
__all__ = [
15-
'get_importer', 'iter_importers', 'get_loader', 'find_loader',
13+
'get_importer', 'iter_importers',
1614
'walk_packages', 'iter_modules', 'get_data',
1715
'read_code', 'extend_path',
1816
'ModuleInfo',
@@ -263,59 +261,6 @@ def iter_importers(fullname=""):
263261
yield get_importer(item)
264262

265263

266-
def get_loader(module_or_name):
267-
"""Get a "loader" object for module_or_name
268-
269-
Returns None if the module cannot be found or imported.
270-
If the named module is not already imported, its containing package
271-
(if any) is imported, in order to establish the package __path__.
272-
"""
273-
warnings._deprecated("pkgutil.get_loader",
274-
f"{warnings._DEPRECATED_MSG}; "
275-
"use importlib.util.find_spec() instead",
276-
remove=(3, 14))
277-
if module_or_name in sys.modules:
278-
module_or_name = sys.modules[module_or_name]
279-
if module_or_name is None:
280-
return None
281-
if isinstance(module_or_name, ModuleType):
282-
module = module_or_name
283-
loader = getattr(module, '__loader__', None)
284-
if loader is not None:
285-
return loader
286-
if getattr(module, '__spec__', None) is None:
287-
return None
288-
fullname = module.__name__
289-
else:
290-
fullname = module_or_name
291-
return find_loader(fullname)
292-
293-
294-
def find_loader(fullname):
295-
"""Find a "loader" object for fullname
296-
297-
This is a backwards compatibility wrapper around
298-
importlib.util.find_spec that converts most failures to ImportError
299-
and only returns the loader rather than the full spec
300-
"""
301-
warnings._deprecated("pkgutil.find_loader",
302-
f"{warnings._DEPRECATED_MSG}; "
303-
"use importlib.util.find_spec() instead",
304-
remove=(3, 14))
305-
if fullname.startswith('.'):
306-
msg = "Relative module name {!r} not supported".format(fullname)
307-
raise ImportError(msg)
308-
try:
309-
spec = importlib.util.find_spec(fullname)
310-
except (ImportError, AttributeError, TypeError, ValueError) as ex:
311-
# This hack fixes an impedance mismatch between pkgutil and
312-
# importlib, where the latter raises other errors for cases where
313-
# pkgutil previously raised ImportError
314-
msg = "Error while finding loader for {!r} ({}: {})"
315-
raise ImportError(msg.format(fullname, type(ex), ex)) from ex
316-
return spec.loader if spec is not None else None
317-
318-
319264
def extend_path(path, name):
320265
"""Extend a package's path.
321266

Lib/test/test_pkgutil.py

Lines changed: 3 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from pathlib import Path
2-
from test.support.import_helper import unload, CleanImport
3-
from test.support.warnings_helper import check_warnings, ignore_warnings
2+
from test.support.import_helper import unload
3+
from test.support.warnings_helper import check_warnings
44
import unittest
55
import sys
66
import importlib
@@ -231,7 +231,7 @@ def test_walk_packages_raises_on_string_or_bytes_input(self):
231231
with self.assertRaises((TypeError, ValueError)):
232232
list(pkgutil.walk_packages(bytes_input))
233233

234-
@unittest.expectedFailure # TODO: RUSTPYTHON
234+
@unittest.expectedFailure # TODO: RUSTPYTHON
235235
def test_name_resolution(self):
236236
import logging
237237
import logging.handlers
@@ -608,73 +608,6 @@ class ImportlibMigrationTests(unittest.TestCase):
608608
# PEP 302 emulation in this module is in the process of being
609609
# deprecated in favour of importlib proper
610610

611-
@unittest.skipIf(__name__ == '__main__', 'not compatible with __main__')
612-
@ignore_warnings(category=DeprecationWarning)
613-
def test_get_loader_handles_missing_loader_attribute(self):
614-
global __loader__
615-
this_loader = __loader__
616-
del __loader__
617-
try:
618-
self.assertIsNotNone(pkgutil.get_loader(__name__))
619-
finally:
620-
__loader__ = this_loader
621-
622-
@ignore_warnings(category=DeprecationWarning)
623-
def test_get_loader_handles_missing_spec_attribute(self):
624-
name = 'spam'
625-
mod = type(sys)(name)
626-
del mod.__spec__
627-
with CleanImport(name):
628-
try:
629-
sys.modules[name] = mod
630-
loader = pkgutil.get_loader(name)
631-
finally:
632-
sys.modules.pop(name, None)
633-
self.assertIsNone(loader)
634-
635-
@ignore_warnings(category=DeprecationWarning)
636-
def test_get_loader_handles_spec_attribute_none(self):
637-
name = 'spam'
638-
mod = type(sys)(name)
639-
mod.__spec__ = None
640-
with CleanImport(name):
641-
try:
642-
sys.modules[name] = mod
643-
loader = pkgutil.get_loader(name)
644-
finally:
645-
sys.modules.pop(name, None)
646-
self.assertIsNone(loader)
647-
648-
@ignore_warnings(category=DeprecationWarning)
649-
def test_get_loader_None_in_sys_modules(self):
650-
name = 'totally bogus'
651-
sys.modules[name] = None
652-
try:
653-
loader = pkgutil.get_loader(name)
654-
finally:
655-
del sys.modules[name]
656-
self.assertIsNone(loader)
657-
658-
def test_get_loader_is_deprecated(self):
659-
with check_warnings(
660-
(r".*\bpkgutil.get_loader\b.*", DeprecationWarning),
661-
):
662-
res = pkgutil.get_loader("sys")
663-
self.assertIsNotNone(res)
664-
665-
def test_find_loader_is_deprecated(self):
666-
with check_warnings(
667-
(r".*\bpkgutil.find_loader\b.*", DeprecationWarning),
668-
):
669-
res = pkgutil.find_loader("sys")
670-
self.assertIsNotNone(res)
671-
672-
@ignore_warnings(category=DeprecationWarning)
673-
def test_find_loader_missing_module(self):
674-
name = 'totally bogus'
675-
loader = pkgutil.find_loader(name)
676-
self.assertIsNone(loader)
677-
678611
def test_get_importer_avoids_emulation(self):
679612
# We use an illegal path so *none* of the path hooks should fire
680613
with check_warnings() as w:

0 commit comments

Comments
 (0)