lgaleana commited on
Commit
81c8197
1 Parent(s): e919533

Amend to run inputs with json

Browse files
Files changed (1) hide show
  1. components.py +21 -19
components.py CHANGED
@@ -57,7 +57,8 @@ class TaskComponent(Component, ABC):
57
 
58
  def format_input(self, input: str, vars_in_scope: Dict[str, Any]) -> str:
59
  try:
60
- return json.loads(input)
 
61
  except:
62
  input = input.strip()
63
  prompt_vars = [v for v in re.findall("{(.*)}", input)]
@@ -66,12 +67,7 @@ class TaskComponent(Component, ABC):
66
  raise KeyError(
67
  f"The variables :: {undefined_vars} are being used before being defined."
68
  )
69
- formatted_input = input.format(**vars_in_scope)
70
-
71
- try:
72
- return eval(formatted_input)
73
- except:
74
- return formatted_input
75
 
76
  @property
77
  def n_inputs(self) -> int:
@@ -276,23 +272,29 @@ Extract it. Remove anything after the function definition.""",
276
  import sys
277
 
278
  for p in eval(packages):
279
- print(f"Installing")
280
  subprocess.check_call([sys.executable, "-m", "pip", "install", p])
281
 
282
  function = f"import os\nos.environ = {{}}\n\n{function}"
283
  exec(function, locals())
284
- # Looking for the last defined function
285
- for var in reversed(locals().values()):
286
- if callable(var):
287
- self._toolkit_func = var
288
- break
289
 
290
- if len(inspect.getfullargspec(self._toolkit_func)[0]) > 0:
291
- formatted_input = self.format_input(input, vars_in_scope)
292
- if formatted_input:
293
- return self._toolkit_func(formatted_input)
294
- return None
295
- return self._toolkit_func()
 
 
 
 
 
 
 
 
 
 
 
 
296
 
297
 
298
  class Task(Component):
 
57
 
58
  def format_input(self, input: str, vars_in_scope: Dict[str, Any]) -> str:
59
  try:
60
+ json.loads(input)
61
+ return input
62
  except:
63
  input = input.strip()
64
  prompt_vars = [v for v in re.findall("{(.*)}", input)]
 
67
  raise KeyError(
68
  f"The variables :: {undefined_vars} are being used before being defined."
69
  )
70
+ return input.format(**vars_in_scope)
 
 
 
 
 
71
 
72
  @property
73
  def n_inputs(self) -> int:
 
272
  import sys
273
 
274
  for p in eval(packages):
 
275
  subprocess.check_call([sys.executable, "-m", "pip", "install", p])
276
 
277
  function = f"import os\nos.environ = {{}}\n\n{function}"
278
  exec(function, locals())
 
 
 
 
 
279
 
280
+ for var in reversed(list(locals().values())):
281
+ # Try to run all local functions
282
+ if callable(var):
283
+ print(var)
284
+ _toolkit_func = var
285
+ try:
286
+ if len(inspect.getfullargspec(_toolkit_func)[0]) > 0:
287
+ formatted_input = self.format_input(input, vars_in_scope)
288
+ if formatted_input:
289
+ try:
290
+ return _toolkit_func(eval(formatted_input))
291
+ except:
292
+ return _toolkit_func(formatted_input)
293
+ return None # No input, so it doesn't run
294
+ return _toolkit_func()
295
+ except:
296
+ pass
297
+ raise RuntimeError("Unable to run the code")
298
 
299
 
300
  class Task(Component):