1+ import logging
12import tempfile
23from pathlib import Path
34
78from debug_gym .gym .envs .env import RepoEnv
89from debug_gym .gym .terminals .docker import DockerTerminal
910from debug_gym .gym .terminals .terminal import Terminal
11+ from debug_gym .logger import DebugGymLogger
1012
1113DOCKER_MINI_NIGHTMARE_IMAGE_NAME = "debug-gym:mini-nightmare"
1214
1315
14- def build_docker_image (logger ):
16+ def build_docker_image (logger : logging . Logger | None = None ):
1517 """
1618 Build a Docker image for the Mini Nightmare environment.
1719 """
20+ logger = logger or DebugGymLogger ("debug-gym" )
1821 # Check if Docker image is built.
1922 import docker
2023
@@ -86,10 +89,9 @@ def __init__(
8689 if hasattr (terminal , "base_image" ) and terminal .base_image is None :
8790 terminal .base_image = DOCKER_MINI_NIGHTMARE_IMAGE_NAME
8891
89- self .task_data = task_data
90- self .task_name = task_data ["task_name" ]
91-
92- super ().__init__ (entrypoint = entrypoint , terminal = terminal , ** kwargs )
92+ super ().__init__ (
93+ task_data = task_data , entrypoint = entrypoint , terminal = terminal , ** kwargs
94+ )
9395
9496 @property
9597 def instructions (self ) -> str :
@@ -99,6 +101,10 @@ def instructions(self) -> str:
99101 " Beaware that the bug may not be in the code you initially see."
100102 )
101103
104+ @property
105+ def task_name (self ) -> str :
106+ return self .current_task ["task_name" ]
107+
102108 def calculate_max_score (self , eval_output : EvalOutput ) -> int :
103109 return utils .extract_max_score_from_pytest_output (eval_output .output )
104110
@@ -112,7 +118,7 @@ def eval(self, **kwargs) -> EvalOutput:
112118 return self .last_eval
113119
114120 def setup_task (self ):
115- pass
121+ self . current_task = self . task_data
116122
117123 def setup_workspace (self ):
118124 self .workspace .reset ()
@@ -144,8 +150,9 @@ def setup_terminal(self):
144150 def load_dataset (
145151 cls ,
146152 problems : str | list [str ] | None = None ,
147- build_image : bool = False ,
153+ build_image : bool = True ,
148154 logger : object = None ,
155+ ** kwargs ,
149156 ) -> dict :
150157 if build_image :
151158 build_docker_image (logger )
@@ -167,10 +174,16 @@ def load_dataset(
167174 assert (task_path / ".debugreadonly" ).exists ()
168175
169176 dataset [task_name ] = {
177+ "task_name" : task_name ,
170178 "codebase" : task_path ,
171179 "filename" : task_name + "_code.py" ,
172180 }
173181
174182 problems = utils .filter_problems (dataset , problems )
175183 dataset = {id : data for id , data in dataset .items () if id in problems }
184+
185+ # Add env_type to each task_data.
186+ for task_data in dataset .values ():
187+ task_data ["env_type" ] = "mini_nightmare"
188+
176189 return dataset
0 commit comments