@@ -136,11 +136,13 @@ async def _wait_for_result(self, message_id: str):
136136 yield output .model_dump (exclude_none = True )
137137
138138 async def set_env_vars (self , env_vars : Dict [StrictStr , str ]):
139- env_commands = []
139+ message_id = str (uuid .uuid4 ())
140+ self ._executions [message_id ] = Execution (in_background = True )
140141
142+ env_commands = []
141143 for k , v in env_vars .items ():
142144 if self .language == "python" :
143- env_commands .append (f"os.environ['{ k } '] = '{ v } '" )
145+ env_commands .append (f"import os; os.environ['{ k } '] = '{ v } '" )
144146 elif self .language in ["javascript" , "typescript" ]:
145147 env_commands .append (f"process.env['{ k } '] = '{ v } '" )
146148 elif self .language == "deno" :
@@ -151,13 +153,19 @@ async def set_env_vars(self, env_vars: Dict[StrictStr, str]):
151153 env_commands .append (f"System.setProperty('{ k } ', '{ v } ')" )
152154 elif self .language == "bash" :
153155 env_commands .append (f"export { k } ='{ v } '" )
156+ else :
157+ return
154158
155159 if env_commands :
156160 env_vars_snippet = "\n " .join (env_commands )
157161 print (f"Setting env vars: { env_vars_snippet } " )
158- request = self ._get_execute_request (str ( uuid . uuid4 ()) , env_vars_snippet , False )
162+ request = self ._get_execute_request (message_id , env_vars_snippet , True )
159163 await self ._ws .send (request )
160164
165+ async for item in self ._wait_for_result (message_id ):
166+ if item ["type" ] == "error" :
167+ raise ExecutionError (f"Error during execution: { item } " )
168+
161169 async def reset_env_vars (self , env_vars : Dict [StrictStr , str ]):
162170 global_env_vars = get_envs ()
163171
@@ -177,10 +185,13 @@ async def reset_env_vars(self, env_vars: Dict[StrictStr, str]):
177185
178186 # Remove vars that don't exist in global env vars
179187 if vars_to_remove :
188+ message_id = str (uuid .uuid4 ())
189+ self ._executions [message_id ] = Execution (in_background = True )
190+
180191 remove_commands = []
181192 for key in vars_to_remove :
182193 if self .language == "python" :
183- remove_commands .append (f"del os.environ['{ key } ']" )
194+ remove_commands .append (f"import os; del os.environ['{ key } ']" )
184195 elif self .language in ["javascript" , "typescript" ]:
185196 remove_commands .append (f"delete process.env['{ key } ']" )
186197 elif self .language == "deno" :
@@ -191,13 +202,19 @@ async def reset_env_vars(self, env_vars: Dict[StrictStr, str]):
191202 remove_commands .append (f"System.clearProperty('{ key } ')" )
192203 elif self .language == "bash" :
193204 remove_commands .append (f"unset { key } " )
205+ else :
206+ return
194207
195208 if remove_commands :
196209 remove_snippet = "\n " .join (remove_commands )
197210 print (f"Removing env vars: { remove_snippet } " )
198- request = self ._get_execute_request (str ( uuid . uuid4 ()) , remove_snippet , False )
211+ request = self ._get_execute_request (message_id , remove_snippet , True )
199212 await self ._ws .send (request )
200213
214+ async for item in self ._wait_for_result (message_id ):
215+ if item ["type" ] == "error" :
216+ raise ExecutionError (f"Error during execution: { item } " )
217+
201218 async def change_current_directory (
202219 self , path : Union [str , StrictStr ], language : str
203220 ):
0 commit comments