mirror of
https://github.com/kennethreitz/pipenv.git
synced 2026-06-05 22:50:18 +00:00
Implement __iter__ to make AbstractTable a mapping
This supplements #2101 and makes the check more idiomatic.
This commit is contained in:
@@ -1,8 +1,13 @@
|
||||
try:
|
||||
from collections.abc import Mapping
|
||||
except ImportError:
|
||||
from collections import Mapping
|
||||
|
||||
from prettytoml.elements.common import ContainerElement
|
||||
from prettytoml.elements import traversal
|
||||
|
||||
|
||||
class AbstractTable(ContainerElement, traversal.TraversalMixin):
|
||||
class AbstractTable(ContainerElement, traversal.TraversalMixin, Mapping):
|
||||
"""
|
||||
Common code for handling tables as key-value pairs with metadata elements sprinkled all over.
|
||||
|
||||
@@ -37,6 +42,9 @@ class AbstractTable(ContainerElement, traversal.TraversalMixin):
|
||||
def __len__(self):
|
||||
return len(tuple(self._enumerate_items()))
|
||||
|
||||
def __iter__(self):
|
||||
return (key for key, _ in self.items())
|
||||
|
||||
def __contains__(self, item):
|
||||
return item in self.keys()
|
||||
|
||||
|
||||
+1
-2
@@ -47,7 +47,6 @@ from contextlib import contextmanager
|
||||
from .pep508checker import lookup
|
||||
from .environments import PIPENV_MAX_ROUNDS, PIPENV_CACHE_DIR
|
||||
|
||||
from prettytoml.elements.abstracttable import AbstractTable
|
||||
try:
|
||||
from collections.abc import Mapping
|
||||
except ImportError:
|
||||
@@ -646,7 +645,7 @@ def is_star(val):
|
||||
|
||||
|
||||
def is_pinned(val):
|
||||
if isinstance(val, Mapping) or isinstance(val, AbstractTable):
|
||||
if isinstance(val, Mapping):
|
||||
val = val.get('version')
|
||||
return isinstance(val, six.string_types) and val.startswith('==')
|
||||
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
diff --git a/pipenv/patched/prettytoml/elements/abstracttable.py b/pipenv/patched/prettytoml/elements/abstracttable.py
|
||||
index 59fd5748..48663aed 100644
|
||||
--- a/pipenv/patched/prettytoml/elements/abstracttable.py
|
||||
+++ b/pipenv/patched/prettytoml/elements/abstracttable.py
|
||||
@@ -1,8 +1,13 @@
|
||||
+try:
|
||||
+ from collections.abc import Mapping
|
||||
+except ImportError:
|
||||
+ from collections import Mapping
|
||||
+
|
||||
from prettytoml.elements.common import ContainerElement
|
||||
from prettytoml.elements import traversal
|
||||
|
||||
|
||||
-class AbstractTable(ContainerElement, traversal.TraversalMixin):
|
||||
+class AbstractTable(ContainerElement, traversal.TraversalMixin, Mapping):
|
||||
"""
|
||||
Common code for handling tables as key-value pairs with metadata elements sprinkled all over.
|
||||
|
||||
@@ -37,6 +42,9 @@ class AbstractTable(ContainerElement, traversal.TraversalMixin):
|
||||
def __len__(self):
|
||||
return len(tuple(self._enumerate_items()))
|
||||
|
||||
+ def __iter__(self):
|
||||
+ return (key for key, _ in self.items())
|
||||
+
|
||||
def __contains__(self, item):
|
||||
return item in self.keys()
|
||||
Reference in New Issue
Block a user