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
Labels
Merge Requests
138
Merge Requests
138
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
Jobs
Commits
Open sidebar
nexedi
erp5
Commits
ffab40ea
Commit
ffab40ea
authored
Aug 24, 2022
by
Jérome Perrin
Committed by
Aurel
Feb 01, 2023
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
patches/Restricted: backport Restricted support for next(i, default)
parent
a7875d47
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 @
ffab40ea
...
...
@@ -87,31 +87,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