Inherit the Tree class from Mapping (abstract base class)
This allows us to use tree directly in existing functions that expect a dict as input.
This commit is contained in:
parent
3b6fad3111
commit
29f78ca989
|
@ -13,6 +13,11 @@ try:
|
|||
except ImportError:
|
||||
from ordereddict import OrderedDict
|
||||
|
||||
try:
|
||||
from collections.abc import Mapping
|
||||
except ImportError:
|
||||
from collections import Mapping
|
||||
|
||||
try:
|
||||
from pip._internal.utils.misc import get_installed_distributions
|
||||
from pip._internal.operations.freeze import FrozenRequirement
|
||||
|
@ -287,7 +292,7 @@ class ReqPackage(Package):
|
|||
'required_version': self.version_spec}
|
||||
|
||||
|
||||
class Tree(object):
|
||||
class Tree(Mapping):
|
||||
|
||||
@classmethod
|
||||
def from_pkgs(cls, pkgs):
|
||||
|
@ -369,6 +374,16 @@ class Tree(object):
|
|||
rtree[k.as_requirement()] = []
|
||||
return ReverseTree(dict(rtree), base=self._base or self)
|
||||
|
||||
# Methods required by the abstract base class Mapping
|
||||
def __getitem__(self, *args):
|
||||
return self._obj.get(*args)
|
||||
|
||||
def __iter__(self):
|
||||
return self._obj.__iter__()
|
||||
|
||||
def __len__(self):
|
||||
return len(self._obj)
|
||||
|
||||
|
||||
class ReverseTree(Tree):
|
||||
|
||||
|
|
Loading…
Reference in New Issue