summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarius Gedminas <marius@gedmin.as>2019-11-10 11:48:19 +0200
committerMarius Gedminas <marius@gedmin.as>2019-11-10 11:49:10 +0200
commit011eadf27740547469e691183ddaf15d1041da19 (patch)
treeb349e088c4259e1c3583ce57e3ba844ae154f8ef
parent80f215d4026e579d63481654e8db10e10e7709ee (diff)
downloadzope-security-more-wheels.tar.gz
Allow iter({}.items()) on PyPy3more-wheels
Dict item iterators use a special type (builtins.dict_itemiterator) on recent versions of PyPy3. Fixes zope.security.interfaces.ForbiddenAttribute: ('__next__', <dict_itemiterator object at 0x00007f7c9c107320>)
-rw-r--r--src/zope/security/checker.py4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/zope/security/checker.py b/src/zope/security/checker.py
index 818ee72..f5541a7 100644
--- a/src/zope/security/checker.py
+++ b/src/zope/security/checker.py
@@ -886,6 +886,10 @@ def _fixup_dictlike(dict_type):
o_type = type(obj)
if o_type not in _default_checkers:
_default_checkers[o_type] = _iteratorChecker
+ # PyPy3 has special types for iter({}.items()) etc.
+ iter_type = type(iter(obj))
+ if iter_type not in _default_checkers:
+ _default_checkers[iter_type] = _iteratorChecker
def _fixup_odict():
# OrderedDicts have three different implementations: Python 2 (pure