Amend to run inputs with json
Browse files- 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 |
-
|
|
|
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 |
-
|
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 |
-
|
291 |
-
|
292 |
-
if
|
293 |
-
|
294 |
-
|
295 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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):
|