diff options
author | Marius Gedminas <marius@gedmin.as> | 2019-11-10 11:48:19 +0200 |
---|---|---|
committer | Marius Gedminas <marius@gedmin.as> | 2019-11-10 11:49:10 +0200 |
commit | 011eadf27740547469e691183ddaf15d1041da19 (patch) | |
tree | b349e088c4259e1c3583ce57e3ba844ae154f8ef | |
parent | 80f215d4026e579d63481654e8db10e10e7709ee (diff) | |
download | zope-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.py | 4 |
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 |