Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
erp5
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Léo-Paul Géneau
erp5
Commits
d6827c79
Commit
d6827c79
authored
Aug 24, 2022
by
Jérome Perrin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
patches/Restricted: backport Restricted support for next(i, default)
parent
db5dbd7c
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
8 additions
and
23 deletions
+8
-23
product/ERP5Type/patches/Restricted.py
product/ERP5Type/patches/Restricted.py
+8
-23
No files found.
product/ERP5Type/patches/Restricted.py
View file @
d6827c79
...
...
@@ -85,31 +85,16 @@ add_builtins(bin=bin, classmethod=classmethod, format=format, object=object,
property
=
property
,
staticmethod
=
staticmethod
,
super
=
super
,
type
=
type
)
# XXX: backport of https://github.com/zopefoundation/AccessControl/pull/131
def
guarded_next
(
iterator
,
default
=
_marker
):
"""next(iterator[, default])
Return the next item from the iterator. If default is given
and the iterator is exhausted, it is returned instead of
raising StopIteration.
"""
try
:
iternext
=
guarded_getattr
(
iterator
,
'next'
).
__call__
# this way an AttributeError while executing next() isn't hidden
# (2.6 does this too)
except
AttributeError
:
raise
TypeError
(
"%s object is not an iterator"
%
type
(
iterator
).
__name__
)
try
:
return
iternext
()
except
StopIteration
:
if
default
is
_marker
:
raise
return
default
#if "next" not in safe_builtins: # BBB
# override the default next if exists
if
default
is
_marker
:
ob
=
next
(
iterator
)
else
:
ob
=
next
(
iterator
,
default
)
if
not
isinstance
(
iterator
,
SafeIter
):
guard
(
ob
,
ob
)
return
ob
safe_builtins
.
update
(
next
=
guarded_next
)
# add_builtins()
_safe_class_attribute_dict
=
{}
import
inspect
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment