diff options
| author | Jason R. Coombs <jaraco@jaraco.com> | 2016-10-14 13:47:31 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2016-10-14 13:47:31 -0400 |
| commit | 72cc77c65a7c64489e23c6bf3a4219137ad48dac (patch) | |
| tree | 971bf8e03537aae67bf50dce2bcac7d4d5b5bf48 /pkg_resources | |
| parent | b2205e843dd54d2511844a906b6f2496314ef8b2 (diff) | |
| parent | 452e13ce06ca0cdebebc61c9326a2db184095353 (diff) | |
| download | external_python_setuptools-72cc77c65a7c64489e23c6bf3a4219137ad48dac.tar.gz external_python_setuptools-72cc77c65a7c64489e23c6bf3a4219137ad48dac.tar.bz2 external_python_setuptools-72cc77c65a7c64489e23c6bf3a4219137ad48dac.zip | |
Merge pull request #732 from mindw/fix_extra_names_dash
fix for extra names containing '-'
Diffstat (limited to 'pkg_resources')
| -rw-r--r-- | pkg_resources/__init__.py | 6 | ||||
| -rw-r--r-- | pkg_resources/tests/test_resources.py | 18 |
2 files changed, 21 insertions, 3 deletions
diff --git a/pkg_resources/__init__.py b/pkg_resources/__init__.py index 37bf1482..1b8d02f5 100644 --- a/pkg_resources/__init__.py +++ b/pkg_resources/__init__.py @@ -1398,7 +1398,7 @@ def safe_extra(extra): Any runs of non-alphanumeric characters are replaced with a single '_', and the result is always lowercased. """ - return re.sub('[^A-Za-z0-9.]+', '_', extra).lower() + return re.sub('[^A-Za-z0-9.-]+', '_', extra).lower() def to_filename(name): @@ -2790,8 +2790,8 @@ class DistInfoDistribution(Distribution): dm[None].extend(common) for extra in self._parsed_pkg_info.get_all('Provides-Extra') or []: - extra = safe_extra(extra.strip()) - dm[extra] = list(frozenset(reqs_for_extra(extra)) - common) + s_extra = safe_extra(extra.strip()) + dm[s_extra] = list(frozenset(reqs_for_extra(extra)) - common) return dm diff --git a/pkg_resources/tests/test_resources.py b/pkg_resources/tests/test_resources.py index 2ed56233..3b13884b 100644 --- a/pkg_resources/tests/test_resources.py +++ b/pkg_resources/tests/test_resources.py @@ -221,6 +221,24 @@ class TestDistro: res = list(ws.resolve(parse_requirements("Foo[baz]"), ad)) assert res == [Foo, quux] + def test_marker_evaluation_with_extras_normlized(self): + """Extras are also evaluated as markers at resolution time.""" + ad = pkg_resources.Environment([]) + ws = WorkingSet([]) + # Metadata needs to be native strings due to cStringIO behaviour in + # 2.6, so use str(). + Foo = Distribution.from_filename( + "/foo_dir/Foo-1.2.dist-info", + metadata=Metadata(("METADATA", str("Provides-Extra: baz-lightyear\n" + "Requires-Dist: quux; extra=='baz-lightyear'"))) + ) + ad.add(Foo) + assert list(ws.resolve(parse_requirements("Foo"), ad)) == [Foo] + quux = Distribution.from_filename("/foo_dir/quux-1.0.dist-info") + ad.add(quux) + res = list(ws.resolve(parse_requirements("Foo[baz-lightyear]"), ad)) + assert res == [Foo, quux] + def test_marker_evaluation_with_multiple_extras(self): ad = pkg_resources.Environment([]) ws = WorkingSet([]) |
