Spaces:
Sleeping
Sleeping
Added a couple of additional restricted globals
Browse files
restrictedpython_code_eval.py
CHANGED
|
@@ -38,7 +38,7 @@ import datasets
|
|
| 38 |
import numpy as np
|
| 39 |
from RestrictedPython import compile_restricted, safe_builtins, limited_builtins, utility_builtins
|
| 40 |
from RestrictedPython.Eval import default_guarded_getiter, default_guarded_getitem
|
| 41 |
-
from RestrictedPython.Guards import guarded_iter_unpack_sequence, safer_getattr
|
| 42 |
|
| 43 |
|
| 44 |
# TODO: Add BibTeX citation
|
|
@@ -372,6 +372,9 @@ def _unsafe_execute(check_program, result, timeout,
|
|
| 372 |
if '_iter_unpack_sequence_' not in exec_globals:
|
| 373 |
exec_globals['_iter_unpack_sequence_'] = guarded_iter_unpack_sequence # type: ignore
|
| 374 |
|
|
|
|
|
|
|
|
|
|
| 375 |
if '_getitem_' not in exec_globals:
|
| 376 |
exec_globals['_getitem_'] = default_guarded_getitem # type: ignore
|
| 377 |
|
|
@@ -387,6 +390,9 @@ def _unsafe_execute(check_program, result, timeout,
|
|
| 387 |
if '_print_' not in exec_globals:
|
| 388 |
exec_globals['_print_'] = DefaultPrinter # type: ignore
|
| 389 |
|
|
|
|
|
|
|
|
|
|
| 390 |
with swallow_io():
|
| 391 |
with time_limit(timeout):
|
| 392 |
byte_code = compile_restricted(check_program, filename="<model output>", mode="exec")
|
|
@@ -669,3 +675,6 @@ def protected_inplacevar(op, var, expr):
|
|
| 669 |
"Augmented assignment to %s objects is not allowed"
|
| 670 |
" in untrusted code" % cls.__name__)
|
| 671 |
return inplace_ops[op](var, expr)
|
|
|
|
|
|
|
|
|
|
|
|
| 38 |
import numpy as np
|
| 39 |
from RestrictedPython import compile_restricted, safe_builtins, limited_builtins, utility_builtins
|
| 40 |
from RestrictedPython.Eval import default_guarded_getiter, default_guarded_getitem
|
| 41 |
+
from RestrictedPython.Guards import guarded_iter_unpack_sequence, safer_getattr, guarded_unpack_sequence
|
| 42 |
|
| 43 |
|
| 44 |
# TODO: Add BibTeX citation
|
|
|
|
| 372 |
if '_iter_unpack_sequence_' not in exec_globals:
|
| 373 |
exec_globals['_iter_unpack_sequence_'] = guarded_iter_unpack_sequence # type: ignore
|
| 374 |
|
| 375 |
+
if '_unpack_sequence_' not in exec_globals:
|
| 376 |
+
exec_globals['_unpack_sequence_'] = guarded_unpack_sequence # type: ignore
|
| 377 |
+
|
| 378 |
if '_getitem_' not in exec_globals:
|
| 379 |
exec_globals['_getitem_'] = default_guarded_getitem # type: ignore
|
| 380 |
|
|
|
|
| 390 |
if '_print_' not in exec_globals:
|
| 391 |
exec_globals['_print_'] = DefaultPrinter # type: ignore
|
| 392 |
|
| 393 |
+
if '_apply_' not in exec_globals:
|
| 394 |
+
exec_globals['_apply_'] = _apply # type: ignore
|
| 395 |
+
|
| 396 |
with swallow_io():
|
| 397 |
with time_limit(timeout):
|
| 398 |
byte_code = compile_restricted(check_program, filename="<model output>", mode="exec")
|
|
|
|
| 675 |
"Augmented assignment to %s objects is not allowed"
|
| 676 |
" in untrusted code" % cls.__name__)
|
| 677 |
return inplace_ops[op](var, expr)
|
| 678 |
+
|
| 679 |
+
def _apply(f, *a, **kw):
|
| 680 |
+
return f(*a, **kw)
|