mirror of https://github.com/pypa/pip
Adopt the use of OrderedDict (#4650)
This commit is contained in:
parent
d5402d33e1
commit
1443be07bb
|
@ -1,10 +1,10 @@
|
|||
from __future__ import absolute_import
|
||||
|
||||
from .req_install import InstallRequirement
|
||||
from .req_set import RequirementSet, Requirements
|
||||
from .req_set import RequirementSet
|
||||
from .req_file import parse_requirements
|
||||
|
||||
__all__ = [
|
||||
"RequirementSet", "Requirements", "InstallRequirement",
|
||||
"RequirementSet", "InstallRequirement",
|
||||
"parse_requirements",
|
||||
]
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
from __future__ import absolute_import
|
||||
|
||||
import logging
|
||||
from collections import defaultdict
|
||||
from collections import OrderedDict, defaultdict
|
||||
|
||||
from pip.exceptions import InstallationError
|
||||
from pip.utils.logging import indent_log
|
||||
|
@ -10,34 +10,6 @@ from pip.wheel import Wheel
|
|||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class Requirements(object):
|
||||
|
||||
def __init__(self):
|
||||
self._keys = []
|
||||
self._dict = {}
|
||||
|
||||
def keys(self):
|
||||
return self._keys
|
||||
|
||||
def values(self):
|
||||
return [self._dict[key] for key in self._keys]
|
||||
|
||||
def __contains__(self, item):
|
||||
return item in self._keys
|
||||
|
||||
def __setitem__(self, key, value):
|
||||
if key not in self._keys:
|
||||
self._keys.append(key)
|
||||
self._dict[key] = value
|
||||
|
||||
def __getitem__(self, key):
|
||||
return self._dict[key]
|
||||
|
||||
def __repr__(self):
|
||||
values = ['%s: %s' % (repr(k), repr(self[k])) for k in self.keys()]
|
||||
return 'Requirements({%s})' % ', '.join(values)
|
||||
|
||||
|
||||
class RequirementSet(object):
|
||||
|
||||
def __init__(self,
|
||||
|
@ -49,8 +21,7 @@ class RequirementSet(object):
|
|||
InstallRequirement.
|
||||
"""
|
||||
|
||||
self.requirements = Requirements()
|
||||
|
||||
self.requirements = OrderedDict()
|
||||
self.require_hashes = require_hashes
|
||||
|
||||
# Mapping of alias: real_name
|
||||
|
|
|
@ -75,7 +75,7 @@ class Resolver(object):
|
|||
# hash-checking mode, which requires hashes from all.
|
||||
root_reqs = (
|
||||
requirement_set.unnamed_requirements +
|
||||
requirement_set.requirements.values()
|
||||
list(requirement_set.requirements.values())
|
||||
)
|
||||
self.require_hashes = (
|
||||
requirement_set.require_hashes or
|
||||
|
|
|
@ -16,7 +16,7 @@ from pip.exceptions import (
|
|||
)
|
||||
from pip.index import PackageFinder
|
||||
from pip.operations.prepare import RequirementPreparer
|
||||
from pip.req import InstallRequirement, Requirements, RequirementSet
|
||||
from pip.req import InstallRequirement, RequirementSet
|
||||
from pip.req.req_file import process_line
|
||||
from pip.req.req_install import parse_editable
|
||||
from pip.resolve import Resolver
|
||||
|
@ -547,32 +547,6 @@ class TestInstallRequirement(object):
|
|||
assert "If that is the case, use the '-r' flag to install" in err_msg
|
||||
|
||||
|
||||
def test_requirements_data_structure_keeps_order():
|
||||
requirements = Requirements()
|
||||
requirements['pip'] = 'pip'
|
||||
requirements['nose'] = 'nose'
|
||||
requirements['coverage'] = 'coverage'
|
||||
|
||||
assert ['pip', 'nose', 'coverage'] == list(requirements.values())
|
||||
assert ['pip', 'nose', 'coverage'] == list(requirements.keys())
|
||||
|
||||
|
||||
def test_requirements_data_structure_implements__repr__():
|
||||
requirements = Requirements()
|
||||
requirements['pip'] = 'pip'
|
||||
requirements['nose'] = 'nose'
|
||||
|
||||
assert "Requirements({'pip': 'pip', 'nose': 'nose'})" == repr(requirements)
|
||||
|
||||
|
||||
def test_requirements_data_structure_implements__contains__():
|
||||
requirements = Requirements()
|
||||
requirements['pip'] = 'pip'
|
||||
|
||||
assert 'pip' in requirements
|
||||
assert 'nose' not in requirements
|
||||
|
||||
|
||||
@patch('pip.req.req_install.os.path.abspath')
|
||||
@patch('pip.req.req_install.os.path.exists')
|
||||
@patch('pip.req.req_install.os.path.isdir')
|
||||
|
|
Loading…
Reference in New Issue