guydav commited on
Commit
c01ed19
·
1 Parent(s): 1f0b3da

Updated `return_output` logic

Browse files
Files changed (1) hide show
  1. restrictedpython_code_eval.py +6 -7
restrictedpython_code_eval.py CHANGED
@@ -525,7 +525,6 @@ def _unsafe_execute(check_program, result, timeout,
525
  allow_underscore_variable_names: bool = False, return_output: bool = False, output_variable: str = "output"):
526
 
527
  with create_tempdir():
528
-
529
  # These system calls are needed when cleaning up tempdir.
530
  import os
531
  import shutil
@@ -537,9 +536,6 @@ def _unsafe_execute(check_program, result, timeout,
537
  # Disable functionalities that can make destructive changes to the test.
538
  reliability_guard()
539
 
540
- if return_output and additional_locals is None:
541
- additional_locals = {}
542
-
543
  # Run program.
544
  try:
545
  builtins = {}
@@ -606,12 +602,15 @@ def _unsafe_execute(check_program, result, timeout,
606
  if '_apply_' not in exec_globals:
607
  exec_globals['_apply_'] = _apply # type: ignore
608
 
 
 
 
609
  with swallow_io():
610
  policy_class = AllowAugmentedAssignAndUnderscoreVariableNamesRestrictingTransformer if allow_underscore_variable_names else AllowAugmentedAssignRestrictingTransformer
611
 
612
  with time_limit(timeout):
613
  byte_code = compile_restricted(check_program, filename="<model output>", mode="exec", policy=policy_class)
614
- exec(byte_code, exec_globals, additional_locals)
615
 
616
  result['result'] = "passed"
617
 
@@ -623,8 +622,8 @@ def _unsafe_execute(check_program, result, timeout,
623
  result['result'] = f"failed ({type(e)}): {str(e)}"
624
  result['exception'] = e
625
 
626
- if return_output and output_variable in additional_locals: # type: ignore
627
- result[output_variable] = additional_locals[output_variable] # type: ignore
628
 
629
  # Needed for cleaning up.
630
  shutil.rmtree = rmtree
 
525
  allow_underscore_variable_names: bool = False, return_output: bool = False, output_variable: str = "output"):
526
 
527
  with create_tempdir():
 
528
  # These system calls are needed when cleaning up tempdir.
529
  import os
530
  import shutil
 
536
  # Disable functionalities that can make destructive changes to the test.
537
  reliability_guard()
538
 
 
 
 
539
  # Run program.
540
  try:
541
  builtins = {}
 
602
  if '_apply_' not in exec_globals:
603
  exec_globals['_apply_'] = _apply # type: ignore
604
 
605
+ if additional_locals is not None:
606
+ additional_globals.update(additional_locals)
607
+
608
  with swallow_io():
609
  policy_class = AllowAugmentedAssignAndUnderscoreVariableNamesRestrictingTransformer if allow_underscore_variable_names else AllowAugmentedAssignRestrictingTransformer
610
 
611
  with time_limit(timeout):
612
  byte_code = compile_restricted(check_program, filename="<model output>", mode="exec", policy=policy_class)
613
+ exec(byte_code, exec_globals, None)
614
 
615
  result['result'] = "passed"
616
 
 
622
  result['result'] = f"failed ({type(e)}): {str(e)}"
623
  result['exception'] = e
624
 
625
+ if return_output and output_variable in exec_globals: # type: ignore
626
+ result[output_variable] = exec_globals[output_variable] # type: ignore
627
 
628
  # Needed for cleaning up.
629
  shutil.rmtree = rmtree