Skip to content

Commit

Permalink
Adopt the use of OrderedDict (#4650)
Browse files Browse the repository at this point in the history
  • Loading branch information
pradyunsg authored and dstufft committed Aug 16, 2017
1 parent d5402d3 commit 1443be0
Show file tree
Hide file tree
Showing 4 changed files with 6 additions and 61 deletions.
4 changes: 2 additions & 2 deletions pip/req/__init__.py
Original file line number Diff line number Diff line change
@@ -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",
]
33 changes: 2 additions & 31 deletions pip/req/req_set.py
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -10,34 +10,6 @@
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,
Expand All @@ -49,8 +21,7 @@ def __init__(self,
InstallRequirement.
"""

self.requirements = Requirements()

self.requirements = OrderedDict()
self.require_hashes = require_hashes

# Mapping of alias: real_name
Expand Down
2 changes: 1 addition & 1 deletion pip/resolve.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ def resolve(self, requirement_set):
# 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
Expand Down
28 changes: 1 addition & 27 deletions tests/unit/test_req.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
)
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
Expand Down Expand Up @@ -547,32 +547,6 @@ def test_requirement_file(self):
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')
Expand Down

0 comments on commit 1443be0

Please sign in to comment.