From dbc2c18b93a7847ebc0edca9e206e5a192046831 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Alexandre=20C=C3=B4t=C3=A9?= Date: Fri, 17 May 2024 14:52:39 -0400 Subject: [PATCH] Deal with tempfile on Windows --- scienceworld/scienceworld.jar | Bin 7784153 -> 7784194 bytes scienceworld/scienceworld.py | 12 +++++++----- .../runtime/pythonapi/PythonInterface.scala | 8 ++++---- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/scienceworld/scienceworld.jar b/scienceworld/scienceworld.jar index 706b7e4dd2025ec2c32dd53d026586139457ce7e..dc05e0b2cc0f7523d67882b720c83c34eaaae1d3 100644 GIT binary patch delta 15082 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 delta 15110 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 Y0z=I(1g8ef4uP2w9X`81d-m-A1ClD^t^fc4 diff --git a/scienceworld/scienceworld.py b/scienceworld/scienceworld.py index 9aae6d7..60b5847 100644 --- a/scienceworld/scienceworld.py +++ b/scienceworld/scienceworld.py @@ -4,6 +4,7 @@ import logging import tempfile from collections import OrderedDict +from os.path import join as pjoin from py4j.java_gateway import JavaGateway, GatewayParameters, launch_gateway, CallbackServerParameters @@ -80,7 +81,7 @@ def __init__(self, taskName: str = None, serverPath: str = None, envStepLimit: i # By default, set that the gold path was not generated unless the user asked for it self.goldPathGenerated = False - self._obj_tree_tempfile = tempfile.NamedTemporaryFile() + self._obj_tree_tempdir = tempfile.TemporaryDirectory() # Ask the simulator to load an environment from a script def load(self, taskName: str, variationIdx: int = 0, simplificationStr: str = "", @@ -276,14 +277,15 @@ def get_task_description(self) -> str: # Get the current game's task description def getObjectTree(self): - msg = self.server.getObjectTree(self._obj_tree_tempfile.name) + msg = self.server.getObjectTree(self._obj_tree_tempdir.name) if msg: # Game is not initialized. raise RuntimeError(msg) - self._obj_tree_tempfile.file.seek(0) - payload = self._obj_tree_tempfile.file.read() - return json.loads(payload) + with open(pjoin(self._obj_tree_tempdir.name, 'objectTree.json')) as f: + payload = json.load(f) + + return payload # # History diff --git a/simulator/src/main/scala/scienceworld/runtime/pythonapi/PythonInterface.scala b/simulator/src/main/scala/scienceworld/runtime/pythonapi/PythonInterface.scala index 313bbeb..59d294e 100644 --- a/simulator/src/main/scala/scienceworld/runtime/pythonapi/PythonInterface.scala +++ b/simulator/src/main/scala/scienceworld/runtime/pythonapi/PythonInterface.scala @@ -1,6 +1,6 @@ package scienceworld.runtime.pythonapi -import java.io.PrintWriter +import java.io.{File, FileOutputStream,PrintWriter} import main.scala.scienceworld.runtime.SimplifierProcessor import scienceworld.environments.EnvironmentMaker @@ -325,13 +325,13 @@ class PythonInterface() { agentInterface.get.getTaskDescription() } - def getObjectTree(path:String = ""):String = { + def getObjectTree(folderPath:String = ""):String = { if (agentInterface.isEmpty) return ERROR_MESSAGE_UNINITIALIZED val objTree = agentInterface.get.universe.toJSON() - if (path == "") return objTree + if (folderPath == "") return objTree - val pw = new PrintWriter(path) + var pw = new PrintWriter(folderPath + "/objectTree.json"); pw.print(objTree) pw.close() return ""