Skip to content

Commit 49d7438

Browse files
committed
Replace OrderedSet with dict
Since Python 3.7, ``dict`` preserve insertion order. This means that ``dict`` is a capable implementation of an ordered set, despite the method names not lining up completely.
1 parent 8bd9308 commit 49d7438

File tree

4 files changed

+6
-7
lines changed

4 files changed

+6
-7
lines changed

setuptools/dist.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
from typing import TYPE_CHECKING, MutableMapping
1212

1313
from more_itertools import partition, unique_everseen
14-
from ordered_set import OrderedSet
1514
from packaging.markers import InvalidMarker, Marker
1615
from packaging.specifiers import InvalidSpecifier, SpecifierSet
1716
from packaging.version import Version
@@ -251,7 +250,7 @@ class Distribution(_Distribution):
251250
_DISTUTILS_UNSUPPORTED_METADATA = {
252251
'long_description_content_type': lambda: None,
253252
'project_urls': dict,
254-
'provides_extras': OrderedSet,
253+
'provides_extras': dict, # behaves like an ordered set
255254
'license_file': lambda: None,
256255
'license_files': lambda: None,
257256
'install_requires': list,
@@ -349,7 +348,7 @@ def _finalize_requires(self):
349348
# Setuptools allows a weird "<name>:<env markers> syntax for extras
350349
extra = extra.split(':')[0]
351350
if extra:
352-
self.metadata.provides_extras.add(extra)
351+
self.metadata.provides_extras.setdefault(extra)
353352

354353
def _normalize_requires(self):
355354
"""Make sure requirement-related attributes exist and are normalized"""

setuptools/tests/config/test_setupcfg.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -675,7 +675,7 @@ def test_extras_require(self, tmpdir):
675675
'pdf': ['ReportLab>=1.2', 'RXP'],
676676
'rest': ['docutils>=0.3', 'pack==1.1,==1.3'],
677677
}
678-
assert dist.metadata.provides_extras == set(['pdf', 'rest'])
678+
assert set(dist.metadata.provides_extras) == {'pdf', 'rest'}
679679

680680
@pytest.mark.parametrize(
681681
"config",

setuptools/tests/test_core_metadata.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ def test_read_metadata(name, attrs):
188188
('requires', dist_class.get_requires),
189189
('classifiers', dist_class.get_classifiers),
190190
('project_urls', lambda s: getattr(s, 'project_urls', {})),
191-
('provides_extras', lambda s: getattr(s, 'provides_extras', set())),
191+
('provides_extras', lambda s: getattr(s, 'provides_extras', {})),
192192
]
193193

194194
for attr, getter in tested_attrs:

setuptools/tests/test_dist.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,12 +77,12 @@ def test_provides_extras_deterministic_order():
7777
extras['b'] = ['bar']
7878
attrs = dict(extras_require=extras)
7979
dist = Distribution(attrs)
80-
assert dist.metadata.provides_extras == ['a', 'b']
80+
assert list(dist.metadata.provides_extras) == ['a', 'b']
8181
attrs['extras_require'] = collections.OrderedDict(
8282
reversed(list(attrs['extras_require'].items()))
8383
)
8484
dist = Distribution(attrs)
85-
assert dist.metadata.provides_extras == ['b', 'a']
85+
assert list(dist.metadata.provides_extras) == ['b', 'a']
8686

8787

8888
CHECK_PACKAGE_DATA_TESTS = (

0 commit comments

Comments
 (0)