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:
|
except ImportError:
|
||||||
from ordereddict import OrderedDict
|
from ordereddict import OrderedDict
|
||||||
|
|
||||||
|
try:
|
||||||
|
from collections.abc import Mapping
|
||||||
|
except ImportError:
|
||||||
|
from collections import Mapping
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from pip._internal.utils.misc import get_installed_distributions
|
from pip._internal.utils.misc import get_installed_distributions
|
||||||
from pip._internal.operations.freeze import FrozenRequirement
|
from pip._internal.operations.freeze import FrozenRequirement
|
||||||
|
@ -287,7 +292,7 @@ class ReqPackage(Package):
|
||||||
'required_version': self.version_spec}
|
'required_version': self.version_spec}
|
||||||
|
|
||||||
|
|
||||||
class Tree(object):
|
class Tree(Mapping):
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def from_pkgs(cls, pkgs):
|
def from_pkgs(cls, pkgs):
|
||||||
|
@ -369,6 +374,16 @@ class Tree(object):
|
||||||
rtree[k.as_requirement()] = []
|
rtree[k.as_requirement()] = []
|
||||||
return ReverseTree(dict(rtree), base=self._base or self)
|
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):
|
class ReverseTree(Tree):
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue