Skip to content

Commit 6036a37

Browse files
committed
Avoid relying on new-style normalization for legacy eggs.
1 parent 4098b51 commit 6036a37

File tree

1 file changed

+13
-6
lines changed

1 file changed

+13
-6
lines changed

importlib_metadata/__init__.py

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -475,20 +475,16 @@ class Prepared:
475475
A prepared search for metadata on a possibly-named package.
476476
"""
477477
normalized = None
478-
prefix = ''
479478
suffixes = '.dist-info', '.egg-info'
480479
exact_matches = [''][:0]
481-
versionless_egg_name = ''
482480

483481
def __init__(self, name):
484482
self.name = name
485483
if name is None:
486484
return
487485
self.normalized = self.normalize(name)
488-
self.prefix = self.normalized + '-'
489486
self.exact_matches = [
490487
self.normalized + suffix for suffix in self.suffixes]
491-
self.versionless_egg_name = self.normalized + '.egg'
492488

493489
@staticmethod
494490
def normalize(name):
@@ -497,6 +493,14 @@ def normalize(name):
497493
"""
498494
return re.sub(r"[-_.]+", "-", name).lower().replace('-', '_')
499495

496+
@staticmethod
497+
def legacy_normalize(name):
498+
"""
499+
Normalize the package name as found in the convention in
500+
older packaging tools versions and specs.
501+
"""
502+
return name.lower().replace('-', '_')
503+
500504
def matches(self, cand, base):
501505
low = cand.lower()
502506
pre, ext = os.path.splitext(low)
@@ -512,9 +516,12 @@ def matches(self, cand, base):
512516
)
513517

514518
def is_egg(self, base):
519+
normalized = self.legacy_normalize(self.name or '')
520+
prefix = normalized + '-' if normalized else ''
521+
versionless_egg_name = normalized + '.egg' if self.name else ''
515522
return (
516-
base == self.versionless_egg_name
517-
or base.startswith(self.prefix)
523+
base == versionless_egg_name
524+
or base.startswith(prefix)
518525
and base.endswith('.egg'))
519526

520527

0 commit comments

Comments
 (0)