summaryrefslogtreecommitdiff
path: root/pip/_vendor/distlib/metadata.py
diff options
context:
space:
mode:
Diffstat (limited to 'pip/_vendor/distlib/metadata.py')
-rw-r--r--pip/_vendor/distlib/metadata.py13
1 files changed, 12 insertions, 1 deletions
diff --git a/pip/_vendor/distlib/metadata.py b/pip/_vendor/distlib/metadata.py
index ef3b1d6b3..8441d8fef 100644
--- a/pip/_vendor/distlib/metadata.py
+++ b/pip/_vendor/distlib/metadata.py
@@ -1006,7 +1006,18 @@ class Metadata(object):
if self._legacy:
self._legacy.add_requirements(requirements)
else:
- self._data.setdefault('run_requires', []).extend(requirements)
+ run_requires = self._data.setdefault('run_requires', [])
+ always = None
+ for entry in run_requires:
+ if 'environment' not in entry and 'extra' not in entry:
+ always = entry
+ break
+ if always is None:
+ always = { 'requires': requirements }
+ run_requires.insert(0, always)
+ else:
+ rset = set(always['requires']) | set(requirements)
+ always['requires'] = sorted(rset)
def __repr__(self):
name = self.name or '(no name)'