Skip to content

Commit e4c9340

Browse files
authored
fix: excluded context from task in json option manager (#45)
1 parent 60a4f65 commit e4c9340

2 files changed

Lines changed: 14 additions & 8 deletions

File tree

src/hydrodiy/io/hyruns.py

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ def search(self, siteid):
104104
class OptionTask():
105105
def __init__(self, taskid, context, options):
106106
self.taskid = taskid
107-
self.context = context
107+
self.context = {} if context is None else context
108108
self.options = options
109109

110110
def __str__(self):
@@ -135,18 +135,20 @@ def __getitem__(self, key):
135135
return self.options[key]
136136
return self.context[key]
137137

138-
def to_dict(self):
138+
def to_dict(self, prefix="", include_context=True):
139139
dd = {
140140
"taskid": self.taskid,
141-
_DICT_KEYNAMES["context_name"]: self.context,
142141
_DICT_KEYNAMES["task_options_name"]: self.options
143142
}
143+
if include_context:
144+
dd[_DICT_KEYNAMES["context_name"]] = self.context
145+
144146
return dd
145147

146148
@classmethod
147149
def from_dict(cls, dd):
148150
return OptionTask(dd["taskid"],
149-
dd[_DICT_KEYNAMES["context_name"]],
151+
dd.get(_DICT_KEYNAMES["context_name"], None),
150152
dd[_DICT_KEYNAMES["task_options_name"]])
151153

152154
def log(self, logger):
@@ -259,21 +261,22 @@ def from_file(cls, path, wait_secs=2):
259261

260262
return cls.from_dict(js)
261263

262-
def to_dict(self):
264+
def to_dict(self, prefix=""):
263265
dd = {
264266
"name": self.name,
265267
_DICT_KEYNAMES["context_name"]: self.context,
266268
_DICT_KEYNAMES["manager_options_name"]: self.options,
267-
"tasks": [self.get_task(taskid).to_dict()
269+
"tasks": [self.get_task(taskid).to_dict(prefix,
270+
include_context=False)
268271
for taskid in range(self.ntasks)]
269272
}
270273
return dd
271274

272-
def save(self, filename, overwrite=False):
275+
def save(self, filename, prefix="", overwrite=False):
273276
""" Save option manager to disk.
274277
Overwrite existing one if different.
275278
"""
276-
dd = self.to_dict()
279+
dd = self.to_dict(prefix)
277280
filename = Path(filename)
278281

279282
if filename.exists() and not overwrite:

src/hydrodiy/io/tests/test_hyio_hyruns.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,9 @@ def test_option_manager():
141141
js = json.load(fo)
142142
assert not set(list(js.keys())) ^ set(["name", "tasks", "context", "options"])
143143

144+
# Ensures json tasks do not contain context
145+
assert not set(js["tasks"][0].keys()) ^ set(["taskid", "options"])
146+
144147
fout.unlink()
145148

146149

0 commit comments

Comments
 (0)