Adopt the use of OrderedDict (#4650)

This commit is contained in:
Pradyun S. Gedam 2017-08-16 22:27:11 +05:30 committed by Donald Stufft
parent d5402d33e1
commit 1443be07bb
4 changed files with 6 additions and 61 deletions

View File

@ -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",
]

View File

@ -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

View File

@ -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

View File

@ -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')