Fix the infeasible examples support
This commit is contained in:
@@ -26,11 +26,19 @@ Getter = Callable[[gym.Env, Dict[str, Any]], Any]
|
||||
|
||||
|
||||
def _execute_command(command: List[str]) -> None:
|
||||
if command[:4] == ["vmrun", "-T", "ws", "start"]:
|
||||
def _is_contained_in(a, b):
|
||||
for v in set(a):
|
||||
if a.count(v) > b.count(v):
|
||||
return False
|
||||
return True
|
||||
|
||||
# Specially handled for the `vmrun` command in Windows
|
||||
if _is_contained_in(["vmrun", "-T", "ws", "start"], command):
|
||||
p = subprocess.Popen(command)
|
||||
p.wait()
|
||||
else:
|
||||
result = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, timeout=60, text=True, encoding="utf-8")
|
||||
result = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, timeout=60, text=True,
|
||||
encoding="utf-8")
|
||||
if result.returncode != 0:
|
||||
raise Exception("\033[91m" + result.stdout + result.stderr + "\033[0m")
|
||||
return result.stdout
|
||||
@@ -132,7 +140,8 @@ class DesktopEnv(gym.Env):
|
||||
output = _execute_command(["vmrun", "-T", "ws", "getGuestIPAddress", self.path_to_vm]).strip()
|
||||
logger.info(f"IP address: {output}")
|
||||
return output
|
||||
except:
|
||||
except Exception as e:
|
||||
print(e)
|
||||
time.sleep(5)
|
||||
logger.info("Retrying...")
|
||||
raise Exception("Failed to get VM IP address!")
|
||||
@@ -175,14 +184,14 @@ class DesktopEnv(gym.Env):
|
||||
# even if one of the metrics does not need expected or options field, it should be included in the list with None
|
||||
self.evaluator = task_config["evaluator"]
|
||||
self.metric: Metric = [getattr(metrics, func) for func in self.evaluator["func"]] \
|
||||
if isinstance(self.evaluator["func"], list) \
|
||||
else getattr(metrics, self.evaluator["func"])
|
||||
if isinstance(self.evaluator["func"], list) \
|
||||
else getattr(metrics, self.evaluator["func"])
|
||||
self.metric_conj: str = self.evaluator.get("conj", "and") # take conjunction of multiple metrics
|
||||
if "result" in self.evaluator:
|
||||
self.result_getter: Getter = [getattr(getters, "get_{:}".format(res["type"])) for res in
|
||||
self.evaluator["result"]] \
|
||||
if isinstance(self.evaluator["result"], list) \
|
||||
else getattr(getters, "get_{:}".format(self.evaluator["result"]["type"]))
|
||||
self.evaluator["result"]] \
|
||||
if isinstance(self.evaluator["result"], list) \
|
||||
else getattr(getters, "get_{:}".format(self.evaluator["result"]["type"]))
|
||||
else:
|
||||
self.result_getter = [None] * len(self.metric) \
|
||||
if isinstance(self.metric, list) \
|
||||
@@ -302,8 +311,8 @@ class DesktopEnv(gym.Env):
|
||||
|
||||
self.setup_controller.setup(self.evaluator.get("postconfig", []))
|
||||
|
||||
if self.metric == "infeasible":
|
||||
if self.action_history[-1] == "FAIL":
|
||||
if self.evaluator['func'] == "infeasible":
|
||||
if len(self.action_history) > 0 and self.action_history[-1] == "FAIL":
|
||||
return 1
|
||||
else:
|
||||
return 0
|
||||
|
||||
@@ -121,3 +121,7 @@ from .vscode import (
|
||||
check_json_settings,
|
||||
check_json_keybindings
|
||||
)
|
||||
|
||||
|
||||
def infeasible():
|
||||
pass
|
||||
|
||||
@@ -10,10 +10,6 @@
|
||||
"chrome"
|
||||
],
|
||||
"evaluator": {
|
||||
"func": "infeasible",
|
||||
"result": {
|
||||
},
|
||||
"expected": {
|
||||
}
|
||||
"func": "infeasible"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,10 +10,6 @@
|
||||
"chrome"
|
||||
],
|
||||
"evaluator": {
|
||||
"func": "infeasible",
|
||||
"result": {
|
||||
},
|
||||
"expected": {
|
||||
}
|
||||
"func": "infeasible"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,10 +10,6 @@
|
||||
"chrome"
|
||||
],
|
||||
"evaluator": {
|
||||
"func": "infeasible",
|
||||
"result": {
|
||||
},
|
||||
"expected": {
|
||||
}
|
||||
"func": "infeasible"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,10 +21,6 @@
|
||||
"gimp"
|
||||
],
|
||||
"evaluator": {
|
||||
"func": "infeasible",
|
||||
"result": {
|
||||
},
|
||||
"expected": {
|
||||
}
|
||||
"func": "infeasible"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,10 +10,6 @@
|
||||
"gimp"
|
||||
],
|
||||
"evaluator": {
|
||||
"func": "infeasible",
|
||||
"result": {
|
||||
},
|
||||
"expected": {
|
||||
}
|
||||
"func": "infeasible"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,10 +21,6 @@
|
||||
"gimp"
|
||||
],
|
||||
"evaluator": {
|
||||
"func": "infeasible",
|
||||
"result": {
|
||||
},
|
||||
"expected": {
|
||||
}
|
||||
"func": "infeasible"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,10 +10,6 @@
|
||||
"gimp"
|
||||
],
|
||||
"evaluator": {
|
||||
"func": "infeasible",
|
||||
"result": {
|
||||
},
|
||||
"expected": {
|
||||
}
|
||||
"func": "infeasible"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,10 +10,6 @@
|
||||
"gimp"
|
||||
],
|
||||
"evaluator": {
|
||||
"func": "infeasible",
|
||||
"result": {
|
||||
},
|
||||
"expected": {
|
||||
}
|
||||
"func": "infeasible"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,8 +27,6 @@
|
||||
"libreoffice_writer"
|
||||
],
|
||||
"evaluator": {
|
||||
"func": "infeasible",
|
||||
"result": {
|
||||
}
|
||||
"func": "infeasible"
|
||||
}
|
||||
}
|
||||
@@ -27,10 +27,6 @@
|
||||
"os"
|
||||
],
|
||||
"evaluator": {
|
||||
"func": "infeasible",
|
||||
"result": {
|
||||
},
|
||||
"expected": {
|
||||
}
|
||||
"func": "infeasible"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,10 +27,6 @@
|
||||
"os"
|
||||
],
|
||||
"evaluator": {
|
||||
"func": "infeasible",
|
||||
"result": {
|
||||
},
|
||||
"expected": {
|
||||
}
|
||||
"func": "infeasible"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,10 +9,6 @@
|
||||
"os"
|
||||
],
|
||||
"evaluator": {
|
||||
"func": "infeasible",
|
||||
"result": {
|
||||
},
|
||||
"expected": {
|
||||
}
|
||||
"func": "infeasible"
|
||||
}
|
||||
}
|
||||
@@ -8,10 +8,6 @@
|
||||
"os"
|
||||
],
|
||||
"evaluator": {
|
||||
"func": "infeasible",
|
||||
"result": {
|
||||
},
|
||||
"expected": {
|
||||
}
|
||||
"func": "infeasible"
|
||||
}
|
||||
}
|
||||
@@ -10,10 +10,6 @@
|
||||
"os"
|
||||
],
|
||||
"evaluator": {
|
||||
"func": "infeasible",
|
||||
"result": {
|
||||
},
|
||||
"expected": {
|
||||
}
|
||||
"func": "infeasible"
|
||||
}
|
||||
}
|
||||
@@ -43,10 +43,6 @@
|
||||
"thunderbird"
|
||||
],
|
||||
"evaluator": {
|
||||
"func": "infeasible",
|
||||
"result": {
|
||||
},
|
||||
"expected": {
|
||||
}
|
||||
"func": "infeasible"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,10 +16,6 @@
|
||||
"vlc"
|
||||
],
|
||||
"evaluator": {
|
||||
"func": "infeasible",
|
||||
"result": {
|
||||
},
|
||||
"expected": {
|
||||
}
|
||||
"func": "infeasible"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,10 +16,6 @@
|
||||
"vlc"
|
||||
],
|
||||
"evaluator": {
|
||||
"func": "infeasible",
|
||||
"result": {
|
||||
},
|
||||
"expected": {
|
||||
}
|
||||
"func": "infeasible"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,10 +16,6 @@
|
||||
"vlc"
|
||||
],
|
||||
"evaluator": {
|
||||
"func": "infeasible",
|
||||
"result": {
|
||||
},
|
||||
"expected": {
|
||||
}
|
||||
"func": "infeasible"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,10 +36,6 @@
|
||||
"vscode"
|
||||
],
|
||||
"evaluator": {
|
||||
"func": "infeasible",
|
||||
"result": {
|
||||
},
|
||||
"expected": {
|
||||
}
|
||||
"func": "infeasible"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,10 +24,6 @@
|
||||
"vscode"
|
||||
],
|
||||
"evaluator": {
|
||||
"func": "infeasible",
|
||||
"result": {
|
||||
},
|
||||
"expected": {
|
||||
}
|
||||
"func": "infeasible"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -59,10 +59,6 @@
|
||||
"vscode"
|
||||
],
|
||||
"evaluator": {
|
||||
"func": "infeasible",
|
||||
"result": {
|
||||
},
|
||||
"expected": {
|
||||
}
|
||||
"func": "infeasible"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,10 +24,6 @@
|
||||
"vscode"
|
||||
],
|
||||
"evaluator": {
|
||||
"func": "infeasible",
|
||||
"result": {
|
||||
},
|
||||
"expected": {
|
||||
}
|
||||
"func": "infeasible"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,10 +24,6 @@
|
||||
"vscode"
|
||||
],
|
||||
"evaluator": {
|
||||
"func": "infeasible",
|
||||
"result": {
|
||||
},
|
||||
"expected": {
|
||||
}
|
||||
"func": "infeasible"
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user