mirror of https://github.com/python/cpython
bpo-42089: Sync with current cpython branch of importlib_metadata (GH-22775)
~~The only differences are in the test files.~~ Automerge-Triggered-By: @jaraco
This commit is contained in:
parent
95ad890a7b
commit
96ddc58281
|
@ -37,6 +37,15 @@ __all__ = [
|
|||
class PackageNotFoundError(ModuleNotFoundError):
|
||||
"""The package was not found."""
|
||||
|
||||
def __str__(self):
|
||||
tmpl = "No package metadata was found for {self.name}"
|
||||
return tmpl.format(**locals())
|
||||
|
||||
@property
|
||||
def name(self):
|
||||
name, = self.args
|
||||
return name
|
||||
|
||||
|
||||
class EntryPoint(
|
||||
collections.namedtuple('EntryPointBase', 'name value group')):
|
||||
|
|
|
@ -6,6 +6,8 @@ import tempfile
|
|||
import textwrap
|
||||
import contextlib
|
||||
|
||||
from test.support.os_helper import FS_NONASCII
|
||||
|
||||
|
||||
@contextlib.contextmanager
|
||||
def tempdir():
|
||||
|
@ -212,12 +214,7 @@ def build_files(file_defs, prefix=pathlib.Path()):
|
|||
|
||||
class FileBuilder:
|
||||
def unicode_filename(self):
|
||||
try:
|
||||
from test.support import os_helper
|
||||
except ImportError:
|
||||
# outside CPython, hard-code a unicode snowman
|
||||
return '☃'
|
||||
return os_helper.FS_NONASCII or \
|
||||
return FS_NONASCII or \
|
||||
self.skip("File system does not support non-ascii.")
|
||||
|
||||
|
||||
|
|
|
@ -32,6 +32,18 @@ class BasicTests(fixtures.DistInfoPkg, unittest.TestCase):
|
|||
with self.assertRaises(PackageNotFoundError):
|
||||
Distribution.from_name('does-not-exist')
|
||||
|
||||
def test_package_not_found_mentions_metadata(self):
|
||||
"""
|
||||
When a package is not found, that could indicate that the
|
||||
packgae is not installed or that it is installed without
|
||||
metadata. Ensure the exception mentions metadata to help
|
||||
guide users toward the cause. See #124.
|
||||
"""
|
||||
with self.assertRaises(PackageNotFoundError) as ctx:
|
||||
Distribution.from_name('does-not-exist')
|
||||
|
||||
assert "metadata" in str(ctx.exception)
|
||||
|
||||
def test_new_style_classes(self):
|
||||
self.assertIsInstance(Distribution, type)
|
||||
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
In ``importlib.metadata.PackageNotFoundError``, make reference to the
|
||||
package metadata being missing to improve the user experience.
|
Loading…
Reference in New Issue